src/share/vm/ci/ciMethod.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7092712 Cdiff src/share/vm/ci/ciMethod.cpp

src/share/vm/ci/ciMethod.cpp

Print this page

        

*** 147,170 **** // ciMethod::ciMethod // // Unloaded method. ciMethod::ciMethod(ciInstanceKlass* holder, ciSymbol* name, ! ciSymbol* signature) : ciObject(ciMethodKlass::make()) { ! // These fields are always filled in. ! _name = name; ! _holder = holder; ! _signature = new (CURRENT_ENV->arena()) ciSignature(_holder, constantPoolHandle(), signature); ! _intrinsic_id = vmIntrinsics::_none; ! _liveness = NULL; ! _can_be_statically_bound = false; ! _method_blocks = NULL; ! _method_data = NULL; #if defined(COMPILER2) || defined(SHARK) ! _flow = NULL; ! _bcea = NULL; #endif // COMPILER2 || SHARK } // ------------------------------------------------------------------ // ciMethod::load_code --- 147,176 ---- // ciMethod::ciMethod // // Unloaded method. ciMethod::ciMethod(ciInstanceKlass* holder, ciSymbol* name, ! ciSymbol* signature, ! ciInstanceKlass* accessor) : ! ciObject(ciMethodKlass::make()), ! _name( name), ! _holder( holder), ! _intrinsic_id( vmIntrinsics::_none), ! _liveness( NULL), ! _can_be_statically_bound(false), ! _method_blocks( NULL), ! _method_data( NULL) #if defined(COMPILER2) || defined(SHARK) ! , ! _flow( NULL), ! _bcea( NULL) #endif // COMPILER2 || SHARK + { + // Usually holder and accessor are the same type but in some cases + // the holder has the wrong class loader (e.g. invokedynamic call + // sites) so we pass the accessor. + _signature = new (CURRENT_ENV->arena()) ciSignature(accessor, constantPoolHandle(), signature); } // ------------------------------------------------------------------ // ciMethod::load_code
src/share/vm/ci/ciMethod.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File