--- 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