# HG changeset patch # User twisti # Date 1354578529 28800 # Node ID e377574462e942e86ccfc39943689b5aecef18ca # Parent 0cf4eccf130fd38084b28434dfa21be34e5164a8 8004319: test/gc/7168848/HumongousAlloc.java fails after 7172640 Reviewed-by: kvn, johnc diff -r 0cf4eccf130f -r e377574462e9 hotspot/src/share/vm/opto/library_call.cpp --- a/hotspot/src/share/vm/opto/library_call.cpp Fri Nov 30 15:23:16 2012 -0800 +++ b/hotspot/src/share/vm/opto/library_call.cpp Mon Dec 03 15:48:49 2012 -0800 @@ -79,14 +79,19 @@ _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; }