298 |
298 |
299 Register cache = result; |
299 Register cache = result; |
300 // load pointer for resolved_references[] objArray |
300 // load pointer for resolved_references[] objArray |
301 ldr(cache, Address(result, ConstantPool::cache_offset_in_bytes())); |
301 ldr(cache, Address(result, ConstantPool::cache_offset_in_bytes())); |
302 ldr(cache, Address(result, ConstantPoolCache::resolved_references_offset_in_bytes())); |
302 ldr(cache, Address(result, ConstantPoolCache::resolved_references_offset_in_bytes())); |
303 // JNIHandles::resolve(result) |
303 resolve_oop_handle(cache); |
304 ldr(cache, Address(cache, 0)); |
|
305 // Add in the index |
304 // Add in the index |
306 // convert from field index to resolved_references() index and from |
305 // convert from field index to resolved_references() index and from |
307 // word index to byte offset. Since this is a java object, it can be compressed |
306 // word index to byte offset. Since this is a java object, it can be compressed |
308 add(cache, cache, AsmOperand(index, lsl, LogBytesPerHeapOop)); |
307 add(cache, cache, AsmOperand(index, lsl, LogBytesPerHeapOop)); |
309 load_heap_oop(result, Address(cache, arrayOopDesc::base_offset_in_bytes(T_OBJECT))); |
308 load_heap_oop(result, Address(cache, arrayOopDesc::base_offset_in_bytes(T_OBJECT))); |