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