Mercurial > hg > graal-compiler
diff agent/src/share/classes/sun/jvm/hotspot/oops/JumpData.java @ 3939:f6f3bb0ee072
7088955: add C2 IR support to the SA
Reviewed-by: kvn
author | never |
---|---|
date | Sun, 11 Sep 2011 14:48:24 -0700 |
parents | |
children | 4bec1b1f7b33 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/share/classes/sun/jvm/hotspot/oops/JumpData.java Sun Sep 11 14:48:24 2011 -0700 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +package sun.jvm.hotspot.oops; + +import java.io.*; +import java.util.*; +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.runtime.*; +import sun.jvm.hotspot.types.*; +import sun.jvm.hotspot.utilities.*; + +// JumpData +// +// A JumpData is used to access profiling information for a direct +// branch. It is a counter, used for counting the number of branches, +// plus a data displacement, used for realigning the data pointer to +// the corresponding target bci. +public class JumpData extends ProfileData { + static final int takenOffSet = 0; + static final int displacementOffSet = 1; + static final int jumpCellCount = 2; + + public JumpData(DataLayout layout) { + super(layout); + //assert(layout.tag() == DataLayout.jumpDataTag || + // layout.tag() == DataLayout.branchDataTag, "wrong type"); + } + + static int staticCellCount() { + return jumpCellCount; + } + + public int cellCount() { + return staticCellCount(); + } + + // Direct accessor + int taken() { + return uintAt(takenOffSet); + } + + int displacement() { + return intAt(displacementOffSet); + } + + // Code generation support + static int takenOffset() { + return cellOffset(takenOffSet); + } + + static int displacementOffset() { + return cellOffset(displacementOffSet); + } + + public void printDataOn(PrintStream st) { + printShared(st, "JumpData"); + st.println("taken(" + taken() + ") displacement(" + displacement() + ")"); + } +}