src/hotspot/share/opto/parse1.cpp
changeset 47881 0ce0ac68ace7
parent 47216 71c04702a3d5
child 48002 0c88cd009b5f
--- a/src/hotspot/share/opto/parse1.cpp	Sat Nov 11 01:21:09 2017 +0100
+++ b/src/hotspot/share/opto/parse1.cpp	Thu Aug 31 10:00:28 2017 +0200
@@ -2286,7 +2286,14 @@
 
   // Create a node for the polling address
   if( add_poll_param ) {
-    Node *polladr = ConPNode::make((address)os::get_polling_page());
+    Node *polladr;
+    if (SafepointMechanism::uses_thread_local_poll()) {
+      Node *thread = _gvn.transform(new ThreadLocalNode());
+      Node *polling_page_load_addr = _gvn.transform(basic_plus_adr(top(), thread, in_bytes(Thread::polling_page_offset())));
+      polladr = make_load(control(), polling_page_load_addr, TypeRawPtr::BOTTOM, T_ADDRESS, Compile::AliasIdxRaw, MemNode::unordered);
+    } else {
+      polladr = ConPNode::make((address)os::get_polling_page());
+    }
     sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr));
   }