src/share/vm/code/nmethod.cpp

Print this page
rev 4267 : 8009981: nashorn tests fail with -XX:+VerifyStack
Summary: nmethod::preserve_callee_argument_oops() must take appendix into account.
Reviewed-by:

*** 1955,1969 **** void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { #ifndef SHARK if (!method()->is_native()) { SimpleScopeDesc ssd(this, fr.pc()); Bytecode_invoke call(ssd.method(), ssd.bci()); ! // compiled invokedynamic call sites have an implicit receiver at ! // resolution time, so make sure it gets GC'ed. ! bool has_receiver = !call.is_invokestatic(); Symbol* signature = call.signature(); ! fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f); } #endif // !SHARK } --- 1955,1968 ---- void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { #ifndef SHARK if (!method()->is_native()) { SimpleScopeDesc ssd(this, fr.pc()); Bytecode_invoke call(ssd.method(), ssd.bci()); ! bool has_receiver = call.has_receiver(); ! bool has_appendix = call.has_appendix(); Symbol* signature = call.signature(); ! fr.oops_compiled_arguments_do(signature, has_receiver, has_appendix, reg_map, f); } #endif // !SHARK }