284 add(temp, cpool, index, LSL, LogBytesPerWord); |
284 add(temp, cpool, index, LSL, LogBytesPerWord); |
285 ldrh(temp, Address(temp, sizeof(ConstantPool))); // temp = resolved_klass_index |
285 ldrh(temp, Address(temp, sizeof(ConstantPool))); // temp = resolved_klass_index |
286 ldr(klass, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes())); // klass = cpool->_resolved_klasses |
286 ldr(klass, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes())); // klass = cpool->_resolved_klasses |
287 add(klass, klass, temp, LSL, LogBytesPerWord); |
287 add(klass, klass, temp, LSL, LogBytesPerWord); |
288 ldr(klass, Address(klass, Array<Klass*>::base_offset_in_bytes())); |
288 ldr(klass, Address(klass, Array<Klass*>::base_offset_in_bytes())); |
|
289 } |
|
290 |
|
291 void InterpreterMacroAssembler::load_resolved_method_at_index(int byte_no, |
|
292 Register method, |
|
293 Register cache) { |
|
294 const int method_offset = in_bytes( |
|
295 ConstantPoolCache::base_offset() + |
|
296 ((byte_no == TemplateTable::f2_byte) |
|
297 ? ConstantPoolCacheEntry::f2_offset() |
|
298 : ConstantPoolCacheEntry::f1_offset())); |
|
299 |
|
300 ldr(method, Address(cache, method_offset)); // get f1 Method* |
289 } |
301 } |
290 |
302 |
291 // Generate a subtype check: branch to ok_is_subtype if sub_klass is a |
303 // Generate a subtype check: branch to ok_is_subtype if sub_klass is a |
292 // subtype of super_klass. |
304 // subtype of super_klass. |
293 // |
305 // |