Mercurial > hg > graal-jvmci-8
diff src/share/vm/ci/ciMethod.cpp @ 20670:6a528388c7da
8060147: SIGSEGV in Metadata::mark_on_stack() while marking metadata in ciEnv
Reviewed-by: kvn, roland, coleenp, mgerdin
author | vlivanov |
---|---|
date | Tue, 11 Nov 2014 04:46:13 -0800 |
parents | 119875f0fc67 |
children | 7848fc12602b eb8b5cc64669 |
line wrap: on
line diff
--- a/src/share/vm/ci/ciMethod.cpp Fri Oct 24 09:13:12 2014 -0700 +++ b/src/share/vm/ci/ciMethod.cpp Tue Nov 11 04:46:13 2014 -0800 @@ -68,7 +68,10 @@ // ciMethod::ciMethod // // Loaded method. -ciMethod::ciMethod(methodHandle h_m) : ciMetadata(h_m()) { +ciMethod::ciMethod(methodHandle h_m, ciInstanceKlass* holder) : + ciMetadata(h_m()), + _holder(holder) +{ assert(h_m() != NULL, "no null method"); // These fields are always filled in in loaded methods. @@ -124,7 +127,6 @@ // generating _signature may allow GC and therefore move m. // These fields are always filled in. _name = env->get_symbol(h_m()->name()); - _holder = env->get_instance_klass(h_m()->method_holder()); ciSymbol* sig_symbol = env->get_symbol(h_m()->signature()); constantPoolHandle cpool = h_m()->constants(); _signature = new (env->arena()) ciSignature(_holder, cpool, sig_symbol);