hotspot/src/share/vm/runtime/javaCalls.cpp
changeset 39390 edf6a424a8b7
parent 38719 133bf85c3f36
child 42307 cefc81dc1d52
--- a/hotspot/src/share/vm/runtime/javaCalls.cpp	Tue Jun 14 19:38:44 2016 +0200
+++ b/hotspot/src/share/vm/runtime/javaCalls.cpp	Mon Jun 13 09:28:25 2016 +0200
@@ -372,14 +372,16 @@
   }
 
   // Check that there are shadow pages available before changing thread state
-  // to Java
-  if (!os::stack_shadow_pages_available(THREAD, method)) {
+  // to Java. Calculate current_stack_pointer here to make sure
+  // stack_shadow_pages_available() and bang_stack_shadow_pages() use the same sp.
+  address sp = os::current_stack_pointer();
+  if (!os::stack_shadow_pages_available(THREAD, method, sp)) {
     // Throw stack overflow exception with preinitialized exception.
     Exceptions::throw_stack_overflow_exception(THREAD, __FILE__, __LINE__, method);
     return;
   } else {
     // Touch pages checked if the OS needs them to be touched to be mapped.
-    os::map_stack_shadow_pages();
+    os::map_stack_shadow_pages(sp);
   }
 
 #if INCLUDE_JVMCI