< prev index next >
src/cpu/arm/vm/templateTable_arm.cpp
Print this page
*** 4370,4383 ****
// use Rklass as a scratch
volatile_barrier(MacroAssembler::LoadLoad, Rklass);
#endif // AARCH64
// get InstanceKlass
- __ add(Rklass, Rcpool, AsmOperand(Rindex, lsl, LogBytesPerWord));
- __ ldr(Rklass, Address(Rklass, sizeof(ConstantPool)));
__ cmp(Rtemp, JVM_CONSTANT_Class);
__ b(slow_case, ne);
// make sure klass is initialized & doesn't have finalizer
// make sure klass is fully initialized
__ ldrb(Rtemp, Address(Rklass, InstanceKlass::init_state_offset()));
__ cmp(Rtemp, InstanceKlass::fully_initialized);
--- 4370,4382 ----
// use Rklass as a scratch
volatile_barrier(MacroAssembler::LoadLoad, Rklass);
#endif // AARCH64
// get InstanceKlass
__ cmp(Rtemp, JVM_CONSTANT_Class);
__ b(slow_case, ne);
+ __ load_resolved_klass_at_offset(Rcpool, Rindex, Rklass);
// make sure klass is initialized & doesn't have finalizer
// make sure klass is fully initialized
__ ldrb(Rtemp, Address(Rklass, InstanceKlass::init_state_offset()));
__ cmp(Rtemp, InstanceKlass::fully_initialized);
*** 4645,4656 ****
__ mov(R2_ClassCastException_obj, Robj); // convention with generate_ClassCastException_handler()
__ b(Interpreter::_throw_ClassCastException_entry);
// Get superklass in Rsuper and subklass in Rsub
__ bind(quicked);
! __ add(Rtemp, Rcpool, AsmOperand(Rindex, lsl, LogBytesPerWord));
! __ ldr(Rsuper, Address(Rtemp, sizeof(ConstantPool)));
__ bind(resolved);
__ load_klass(Rsub, Robj);
// Generate subtype check. Blows both tmps and Rtemp.
--- 4644,4654 ----
__ mov(R2_ClassCastException_obj, Robj); // convention with generate_ClassCastException_handler()
__ b(Interpreter::_throw_ClassCastException_entry);
// Get superklass in Rsuper and subklass in Rsub
__ bind(quicked);
! __ load_resolved_klass_at_offset(Rcpool, Rindex, Rsuper);
__ bind(resolved);
__ load_klass(Rsub, Robj);
// Generate subtype check. Blows both tmps and Rtemp.
*** 4719,4730 ****
__ pop_ptr(Robj);
__ b(resolved);
// Get superklass in Rsuper and subklass in Rsub
__ bind(quicked);
! __ add(Rtemp, Rcpool, AsmOperand(Rindex, lsl, LogBytesPerWord));
! __ ldr(Rsuper, Address(Rtemp, sizeof(ConstantPool)));
__ bind(resolved);
__ load_klass(Rsub, Robj);
// Generate subtype check. Blows both tmps and Rtemp.
--- 4717,4727 ----
__ pop_ptr(Robj);
__ b(resolved);
// Get superklass in Rsuper and subklass in Rsub
__ bind(quicked);
! __ load_resolved_klass_at_offset(Rcpool, Rindex, Rsuper);
__ bind(resolved);
__ load_klass(Rsub, Robj);
// Generate subtype check. Blows both tmps and Rtemp.
< prev index next >