comparison src/share/vm/code/nmethod.cpp @ 10390:28e5aed7f3a6

8009981: nashorn tests fail with -XX:+VerifyStack Summary: nmethod::preserve_callee_argument_oops() must take appendix into account. Reviewed-by: kvn, twisti
author roland
date Fri, 31 May 2013 14:40:26 +0200
parents 4674e409a9e6
children 836a62f43af9 ef57c43512d6
comparison
equal deleted inserted replaced
10389:f15fe46d8c00 10390:28e5aed7f3a6
1974 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { 1974 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
1975 #ifndef SHARK 1975 #ifndef SHARK
1976 if (!method()->is_native()) { 1976 if (!method()->is_native()) {
1977 SimpleScopeDesc ssd(this, fr.pc()); 1977 SimpleScopeDesc ssd(this, fr.pc());
1978 Bytecode_invoke call(ssd.method(), ssd.bci()); 1978 Bytecode_invoke call(ssd.method(), ssd.bci());
1979 // compiled invokedynamic call sites have an implicit receiver at 1979 bool has_receiver = call.has_receiver();
1980 // resolution time, so make sure it gets GC'ed. 1980 bool has_appendix = call.has_appendix();
1981 bool has_receiver = !call.is_invokestatic();
1982 Symbol* signature = call.signature(); 1981 Symbol* signature = call.signature();
1983 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f); 1982 fr.oops_compiled_arguments_do(signature, has_receiver, has_appendix, reg_map, f);
1984 } 1983 }
1985 #endif // !SHARK 1984 #endif // !SHARK
1986 } 1985 }
1987 1986
1988 1987