< 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 >