556 void InterpreterRuntime::resolve_get_put(JavaThread* thread, Bytecodes::Code bytecode) { |
556 void InterpreterRuntime::resolve_get_put(JavaThread* thread, Bytecodes::Code bytecode) { |
557 Thread* THREAD = thread; |
557 Thread* THREAD = thread; |
558 // resolve field |
558 // resolve field |
559 fieldDescriptor info; |
559 fieldDescriptor info; |
560 constantPoolHandle pool(thread, method(thread)->constants()); |
560 constantPoolHandle pool(thread, method(thread)->constants()); |
|
561 methodHandle m(thread, method(thread)); |
561 bool is_put = (bytecode == Bytecodes::_putfield || bytecode == Bytecodes::_nofast_putfield || |
562 bool is_put = (bytecode == Bytecodes::_putfield || bytecode == Bytecodes::_nofast_putfield || |
562 bytecode == Bytecodes::_putstatic); |
563 bytecode == Bytecodes::_putstatic); |
563 bool is_static = (bytecode == Bytecodes::_getstatic || bytecode == Bytecodes::_putstatic); |
564 bool is_static = (bytecode == Bytecodes::_getstatic || bytecode == Bytecodes::_putstatic); |
564 |
565 |
565 { |
566 { |
566 JvmtiHideSingleStepping jhss(thread); |
567 JvmtiHideSingleStepping jhss(thread); |
567 LinkResolver::resolve_field_access(info, pool, get_index_u2_cpcache(thread, bytecode), |
568 LinkResolver::resolve_field_access(info, pool, get_index_u2_cpcache(thread, bytecode), |
568 bytecode, CHECK); |
569 m, bytecode, CHECK); |
569 } // end JvmtiHideSingleStepping |
570 } // end JvmtiHideSingleStepping |
570 |
571 |
571 // check if link resolution caused cpCache to be updated |
572 // check if link resolution caused cpCache to be updated |
572 ConstantPoolCacheEntry* cp_cache_entry = cache_entry(thread); |
573 ConstantPoolCacheEntry* cp_cache_entry = cache_entry(thread); |
573 if (cp_cache_entry->is_resolved(bytecode)) return; |
574 if (cp_cache_entry->is_resolved(bytecode)) return; |