--- old/src/hotspot/share/opto/parse1.cpp 2017-10-11 15:25:32.641203802 +0200 +++ new/src/hotspot/share/opto/parse1.cpp 2017-10-11 15:25:32.397193326 +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)); }