< prev index next >
src/hotspot/share/opto/parse1.cpp
Print this page
rev 47415 : Add Thread Local handshakes and thread local polling
*** 2284,2294 ****
sfpnt->init_req(TypeFunc::ReturnAdr, top() );
sfpnt->init_req(TypeFunc::FramePtr , top() );
// Create a node for the polling address
if( add_poll_param ) {
! Node *polladr = ConPNode::make((address)os::get_polling_page());
sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr));
}
// Fix up the JVM State edges
add_safepoint_edges(sfpnt);
--- 2284,2301 ----
sfpnt->init_req(TypeFunc::ReturnAdr, top() );
sfpnt->init_req(TypeFunc::FramePtr , top() );
// Create a node for the polling address
if( add_poll_param ) {
! 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));
}
// Fix up the JVM State edges
add_safepoint_edges(sfpnt);
< prev index next >