src/hotspot/share/opto/parse1.cpp
changeset 47881 0ce0ac68ace7
parent 47216 71c04702a3d5
child 48002 0c88cd009b5f
equal deleted inserted replaced
47824:cf127be65014 47881:0ce0ac68ace7
  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);