Mercurial > hg > truffle
comparison agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethod.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 | 2fe087c3e814 |
comparison
equal
deleted
inserted
replaced
3837:43f9d800f276 | 3838:6a991dcb52bb |
---|---|
162 int hi = getBytecodeOrBPAt(bci); | 162 int hi = getBytecodeOrBPAt(bci); |
163 int lo = getBytecodeOrBPAt(bci + 1); | 163 int lo = getBytecodeOrBPAt(bci + 1); |
164 return (short) ((hi << 8) | lo); | 164 return (short) ((hi << 8) | lo); |
165 } | 165 } |
166 | 166 |
167 /** Fetches a 16-bit native ordered value from the | |
168 bytecode stream */ | |
169 public short getNativeShortArg(int bci) { | |
170 int hi = getBytecodeOrBPAt(bci); | |
171 int lo = getBytecodeOrBPAt(bci + 1); | |
172 if (VM.getVM().isBigEndian()) { | |
173 return (short) ((hi << 8) | lo); | |
174 } else { | |
175 return (short) ((lo << 8) | hi); | |
176 } | |
177 } | |
178 | |
167 /** Fetches a 32-bit big-endian ("Java ordered") value from the | 179 /** Fetches a 32-bit big-endian ("Java ordered") value from the |
168 bytecode stream */ | 180 bytecode stream */ |
169 public int getBytecodeIntArg(int bci) { | 181 public int getBytecodeIntArg(int bci) { |
170 int b4 = getBytecodeOrBPAt(bci); | 182 int b4 = getBytecodeOrBPAt(bci); |
171 int b3 = getBytecodeOrBPAt(bci + 1); | 183 int b3 = getBytecodeOrBPAt(bci + 1); |
172 int b2 = getBytecodeOrBPAt(bci + 2); | 184 int b2 = getBytecodeOrBPAt(bci + 2); |
173 int b1 = getBytecodeOrBPAt(bci + 3); | 185 int b1 = getBytecodeOrBPAt(bci + 3); |
174 | 186 |
175 return (b4 << 24) | (b3 << 16) | (b2 << 8) | b1; | 187 return (b4 << 24) | (b3 << 16) | (b2 << 8) | b1; |
188 } | |
189 | |
190 /** Fetches a 32-bit native ordered value from the | |
191 bytecode stream */ | |
192 public int getNativeIntArg(int bci) { | |
193 int b4 = getBytecodeOrBPAt(bci); | |
194 int b3 = getBytecodeOrBPAt(bci + 1); | |
195 int b2 = getBytecodeOrBPAt(bci + 2); | |
196 int b1 = getBytecodeOrBPAt(bci + 3); | |
197 | |
198 if (VM.getVM().isBigEndian()) { | |
199 return (b4 << 24) | (b3 << 16) | (b2 << 8) | b1; | |
200 } else { | |
201 return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; | |
202 } | |
176 } | 203 } |
177 | 204 |
178 public byte[] getByteCode() { | 205 public byte[] getByteCode() { |
179 byte[] bc = new byte[ (int) getCodeSize() ]; | 206 byte[] bc = new byte[ (int) getCodeSize() ]; |
180 for( int i=0; i < bc.length; i++ ) | 207 for( int i=0; i < bc.length; i++ ) |