Mercurial > hg > truffle
comparison src/cpu/sparc/vm/templateTable_sparc.cpp @ 3785:ddd894528dbc
7056328: JSR 292 invocation sometimes fails in adapters for types not on boot class path
Reviewed-by: never
author | jrose |
---|---|
date | Thu, 23 Jun 2011 17:14:06 -0700 |
parents | 286c498ae0d4 |
children | 3d42f82cd811 |
comparison
equal
deleted
inserted
replaced
3784:aabf25fa3f05 | 3785:ddd894528dbc |
---|---|
264 __ get_2_byte_integer_at_bcp(1, G3_scratch, Otos_i, InterpreterMacroAssembler::Signed); | 264 __ get_2_byte_integer_at_bcp(1, G3_scratch, Otos_i, InterpreterMacroAssembler::Signed); |
265 } | 265 } |
266 | 266 |
267 void TemplateTable::ldc(bool wide) { | 267 void TemplateTable::ldc(bool wide) { |
268 transition(vtos, vtos); | 268 transition(vtos, vtos); |
269 Label call_ldc, notInt, notString, notClass, exit; | 269 Label call_ldc, notInt, isString, notString, notClass, exit; |
270 | 270 |
271 if (wide) { | 271 if (wide) { |
272 __ get_2_byte_integer_at_bcp(1, G3_scratch, O1, InterpreterMacroAssembler::Unsigned); | 272 __ get_2_byte_integer_at_bcp(1, G3_scratch, O1, InterpreterMacroAssembler::Unsigned); |
273 } else { | 273 } else { |
274 __ ldub(Lbcp, 1, O1); | 274 __ ldub(Lbcp, 1, O1); |
315 __ ba(false, exit); | 315 __ ba(false, exit); |
316 __ delayed()->nop(); | 316 __ delayed()->nop(); |
317 | 317 |
318 __ bind(notInt); | 318 __ bind(notInt); |
319 // __ cmp(O2, JVM_CONSTANT_String); | 319 // __ cmp(O2, JVM_CONSTANT_String); |
320 __ brx(Assembler::equal, true, Assembler::pt, isString); | |
321 __ delayed()->cmp(O2, JVM_CONSTANT_Object); | |
320 __ brx(Assembler::notEqual, true, Assembler::pt, notString); | 322 __ brx(Assembler::notEqual, true, Assembler::pt, notString); |
321 __ delayed()->ldf(FloatRegisterImpl::S, O0, O1, Ftos_f); | 323 __ delayed()->ldf(FloatRegisterImpl::S, O0, O1, Ftos_f); |
324 __ bind(isString); | |
322 __ ld_ptr(O0, O1, Otos_i); | 325 __ ld_ptr(O0, O1, Otos_i); |
323 __ verify_oop(Otos_i); | 326 __ verify_oop(Otos_i); |
324 __ push(atos); | 327 __ push(atos); |
325 __ ba(false, exit); | 328 __ ba(false, exit); |
326 __ delayed()->nop(); | 329 __ delayed()->nop(); |