< prev index next >
src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp
Print this page
rev 48405 : 8194258: PPC64 safepoint mechanism: Fix initialization on AIX and support SIGTRAP
Summary: Use mmap on AIX to allocate protected page. Use trap instructions for polling if UseSIGTRAP is enabled.
Reviewed-by:
@@ -45,10 +45,11 @@
#include "runtime/interfaceSupport.hpp"
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/osThread.hpp"
+#include "runtime/safepointMechanism.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/stubRoutines.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/timer.hpp"
#include "utilities/events.hpp"
@@ -372,13 +373,16 @@
}
stub = SharedRuntime::get_handle_wrong_method_stub();
goto run_stub;
}
- else if (sig == SIGSEGV && os::is_poll_address(addr)) {
+ else if ((SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY)
+ ? (sig == SIGTRAP && ((NativeInstruction*)pc)->is_safepoint_poll())
+ : (sig == SIGSEGV && os::is_poll_address(addr))) {
if (TraceTraps) {
- tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", pc);
+ tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (%s)", p2i(pc),
+ (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) ? "SIGTRAP" : "SIGSEGV");
}
stub = SharedRuntime::get_poll_stub(pc);
goto run_stub;
}
< prev index next >