< prev index next >
src/cpu/aarch64/vm/interp_masm_aarch64.cpp
Print this page
@@ -277,10 +277,19 @@
// Add in the index
add(result, result, tmp);
load_heap_oop(result, Address(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
}
+void InterpreterMacroAssembler::load_resolved_klass_at_offset(
+ Register cpool, Register index, Register klass, Register temp) {
+ add(temp, cpool, index, LSL, LogBytesPerWord);
+ ldrh(temp, Address(temp, sizeof(ConstantPool))); // temp = resolved_klass_index
+ ldr(klass, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes())); // klass = cpool->_resolved_klasses
+ add(klass, klass, temp, LSL, LogBytesPerWord);
+ ldr(klass, Address(klass, Array<Klass*>::base_offset_in_bytes()));
+}
+
// Generate a subtype check: branch to ok_is_subtype if sub_klass is a
// subtype of super_klass.
//
// Args:
// r0: superklass
< prev index next >