< prev index next >

src/cpu/arm/vm/templateTable_arm.cpp

Print this page

@@ -4370,14 +4370,13 @@
   // 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);
+  __ 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,12 +4644,11 @@
   __ 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)));
+  __ load_resolved_klass_at_offset(Rcpool, Rindex, Rsuper);
 
   __ bind(resolved);
   __ load_klass(Rsub, Robj);
 
   // Generate subtype check. Blows both tmps and Rtemp.

@@ -4719,12 +4717,11 @@
   __ 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)));
+  __ 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 >