Skip to content

Commit 8ed9f83

Browse files
committed
8270086: ARM32-softfp: Do not load CONSTANT_double using the condy helper methods in the interpreter
Backport-of: a066c7bed0f9aa45fb9384f75ae84943548cd859
1 parent aec0884 commit 8ed9f83

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/hotspot/cpu/arm/templateTable_arm.cpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -490,29 +490,30 @@ void TemplateTable::ldc2_w() {
490490
__ add(Rtemp, Rtags, tags_offset);
491491
__ ldrb(Rtemp, Address(Rtemp, Rindex));
492492

493-
Label Condy, exit;
494-
#ifdef __ABI_HARD__
495-
Label NotDouble;
493+
Label Done, NotLong, NotDouble;
496494
__ cmp(Rtemp, JVM_CONSTANT_Double);
497495
__ b(NotDouble, ne);
496+
#ifdef __SOFTFP__
497+
__ ldr(R0_tos_lo, Address(Rbase, base_offset + 0 * wordSize));
498+
__ ldr(R1_tos_hi, Address(Rbase, base_offset + 1 * wordSize));
499+
#else // !__SOFTFP__
498500
__ ldr_double(D0_tos, Address(Rbase, base_offset));
499-
501+
#endif // __SOFTFP__
500502
__ push(dtos);
501-
__ b(exit);
503+
__ b(Done);
502504
__ bind(NotDouble);
503-
#endif
504505

505506
__ cmp(Rtemp, JVM_CONSTANT_Long);
506-
__ b(Condy, ne);
507+
__ b(NotLong, ne);
507508
__ ldr(R0_tos_lo, Address(Rbase, base_offset + 0 * wordSize));
508509
__ ldr(R1_tos_hi, Address(Rbase, base_offset + 1 * wordSize));
509510
__ push(ltos);
510-
__ b(exit);
511+
__ b(Done);
512+
__ bind(NotLong);
511513

512-
__ bind(Condy);
513-
condy_helper(exit);
514+
condy_helper(Done);
514515

515-
__ bind(exit);
516+
__ bind(Done);
516517
}
517518

518519

0 commit comments

Comments
 (0)