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();