changeset 4124:d075d420d60e

8004319: test/gc/7168848/HumongousAlloc.java fails after 7172640 Reviewed-by: kvn, johnc
author twisti
date Mon, 03 Dec 2012 15:48:49 -0800
parents 733356efcc6e
children 9180a0168de8
files src/share/vm/opto/library_call.cpp
diffstat 1 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/library_call.cpp	Tue Nov 27 17:24:15 2012 -0800
+++ b/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; }