1 /* 2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 3 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 */ 24 25 package sun.jvm.hotspot.oops; 26 27 import java.io.*; 28 import java.util.*; 29 import sun.jvm.hotspot.debugger.*; 30 import sun.jvm.hotspot.runtime.*; 31 import sun.jvm.hotspot.types.*; 32 import sun.jvm.hotspot.utilities.*; 33 34 // JumpData 35 // 36 // A JumpData is used to access profiling information for a direct 37 // branch. It is a counter, used for counting the number of branches, 38 // plus a data displacement, used for realigning the data pointer to 39 // the corresponding target bci. 40 public class JumpData extends ProfileData { 41 static final int takenOffSet = 0; 42 static final int displacementOffSet = 1; 43 static final int jumpCellCount = 2; 44 45 public JumpData(DataLayout layout) { 46 super(layout); 47 //assert(layout.tag() == DataLayout.jumpDataTag || 48 // layout.tag() == DataLayout.branchDataTag, "wrong type"); 49 } 50 51 static int staticCellCount() { 52 return jumpCellCount; 53 } 54 55 public int cellCount() { 56 return staticCellCount(); 57 } 58 59 // Direct accessor 60 int taken() { 61 return uintAt(takenOffSet); 62 } 63 64 int displacement() { 65 return intAt(displacementOffSet); 66 } 67 68 // Code generation support 69 static int takenOffset() { 70 return cellOffset(takenOffSet); 71 } 72 73 static int displacementOffset() { 74 return cellOffset(displacementOffSet); 75 } 76 77 public void printDataOn(PrintStream st) { 78 printShared(st, "JumpData"); 79 st.println("taken(" + taken() + ") displacement(" + displacement() + ")"); 80 } 81 }