equal
deleted
inserted
replaced
2284 sfpnt->init_req(TypeFunc::ReturnAdr, top() ); |
2284 sfpnt->init_req(TypeFunc::ReturnAdr, top() ); |
2285 sfpnt->init_req(TypeFunc::FramePtr , top() ); |
2285 sfpnt->init_req(TypeFunc::FramePtr , top() ); |
2286 |
2286 |
2287 // Create a node for the polling address |
2287 // Create a node for the polling address |
2288 if( add_poll_param ) { |
2288 if( add_poll_param ) { |
2289 Node *polladr = ConPNode::make((address)os::get_polling_page()); |
2289 Node *polladr; |
|
2290 if (SafepointMechanism::uses_thread_local_poll()) { |
|
2291 Node *thread = _gvn.transform(new ThreadLocalNode()); |
|
2292 Node *polling_page_load_addr = _gvn.transform(basic_plus_adr(top(), thread, in_bytes(Thread::polling_page_offset()))); |
|
2293 polladr = make_load(control(), polling_page_load_addr, TypeRawPtr::BOTTOM, T_ADDRESS, Compile::AliasIdxRaw, MemNode::unordered); |
|
2294 } else { |
|
2295 polladr = ConPNode::make((address)os::get_polling_page()); |
|
2296 } |
2290 sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr)); |
2297 sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr)); |
2291 } |
2298 } |
2292 |
2299 |
2293 // Fix up the JVM State edges |
2300 // Fix up the JVM State edges |
2294 add_safepoint_edges(sfpnt); |
2301 add_safepoint_edges(sfpnt); |