equal
deleted
inserted
replaced
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(); |