From a6cd8c3349011ef90cad50533b860082d9eb2988 Mon Sep 17 00:00:00 2001 From: twisti Date: Mon, 3 Dec 2012 15:48:49 -0800 Subject: [PATCH] 8004319: test/gc/7168848/HumongousAlloc.java fails after 7172640 Reviewed-by: kvn, johnc --- src/share/vm/opto/library_call.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/share/vm/opto/library_call.cpp b/src/share/vm/opto/library_call.cpp index 822f863bf..43d4d0502 100644 --- a/src/share/vm/opto/library_call.cpp +++ b/src/share/vm/opto/library_call.cpp @@ -79,14 +79,19 @@ class LibraryCallKit : public GraphKit { _intrinsic(intrinsic), _result(NULL) { - // Find out how many arguments the interpreter needs when deoptimizing - // and save the stack pointer value so it can used by uncommon_trap. - // We find the argument count by looking at the declared signature. - bool ignored_will_link; - ciSignature* declared_signature = NULL; - ciMethod* ignored_callee = caller()->get_method_at_bci(bci(), ignored_will_link, &declared_signature); - const int nargs = declared_signature->arg_size_for_bc(caller()->java_code_at_bci(bci())); - _reexecute_sp = sp() + nargs; // "push" arguments back on stack + // Check if this is a root compile. In that case we don't have a caller. + if (!jvms->has_method()) { + _reexecute_sp = sp(); + } else { + // Find out how many arguments the interpreter needs when deoptimizing + // and save the stack pointer value so it can used by uncommon_trap. + // We find the argument count by looking at the declared signature. + bool ignored_will_link; + ciSignature* declared_signature = NULL; + ciMethod* ignored_callee = caller()->get_method_at_bci(bci(), ignored_will_link, &declared_signature); + const int nargs = declared_signature->arg_size_for_bc(caller()->java_code_at_bci(bci())); + _reexecute_sp = sp() + nargs; // "push" arguments back on stack + } } virtual LibraryCallKit* is_LibraryCallKit() const { return (LibraryCallKit*)this; } -- GitLab