Mercurial > hg > graal-compiler
diff agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecode.java @ 3838:6a991dcb52bb
7012081: JSR 292: SA-JDI can't read MH/MT/Indy ConstantPool entries
Reviewed-by: kvn, twisti, jrose
author | never |
---|---|
date | Thu, 21 Jul 2011 08:38:25 -0700 |
parents | c18cbe5936b8 |
children |
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecode.java Wed Jul 20 18:04:17 2011 -0700 +++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecode.java Thu Jul 21 08:38:25 2011 -0700 @@ -26,6 +26,7 @@ import sun.jvm.hotspot.oops.*; import sun.jvm.hotspot.utilities.*; +import sun.jvm.hotspot.runtime.VM; public class Bytecode { Method method; @@ -45,6 +46,23 @@ return Bits.roundTo(bci + offset, jintSize) - bci; } + public int getIndexU1() { return method.getBytecodeOrBPAt(bci() + 1) & 0xFF; } + public int getIndexU2(int bc, boolean isWide) { + if (can_use_native_byte_order(bc, isWide)) { + return method.getNativeShortArg(bci() + (isWide ? 2 : 1)) & 0xFFFF; + } + return method.getBytecodeShortArg(bci() + (isWide ? 2 : 1)) & 0xFFFF; + } + public int getIndexU4() { return method.getNativeIntArg(bci() + 1); } + public boolean hasIndexU4() { return code() == Bytecodes._invokedynamic; } + + public int getIndexU1Cpcache() { return method.getBytecodeOrBPAt(bci() + 1) & 0xFF; } + public int getIndexU2Cpcache() { return method.getNativeShortArg(bci() + 1) & 0xFFFF; } + + static boolean can_use_native_byte_order(int bc, boolean is_wide) { + return (VM.getVM().isBigEndian() || Bytecodes.native_byte_order(bc /*, is_wide*/)); + } + int javaSignedWordAt(int offset) { return method.getBytecodeIntArg(bci + offset); }