hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 39421 a9652c919db8
parent 37480 291ee208fb72
child 39699 7a2a49fd5ee0
equal deleted inserted replaced
39420:987528901b83 39421:a9652c919db8
   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;