src/hotspot/share/opto/graphKit.cpp
changeset 52331 8d8702585652
parent 52224 4f2215a00ed1
child 52424 e3d79743f57d
equal deleted inserted replaced
52330:df10a0cacf3e 52331:8d8702585652
  2114 // Report the object that was just allocated.
  2114 // Report the object that was just allocated.
  2115 // It must be the case that there are no intervening safepoints.
  2115 // It must be the case that there are no intervening safepoints.
  2116 // We use this to determine if an object is so "fresh" that
  2116 // We use this to determine if an object is so "fresh" that
  2117 // it does not require card marks.
  2117 // it does not require card marks.
  2118 Node* GraphKit::just_allocated_object(Node* current_control) {
  2118 Node* GraphKit::just_allocated_object(Node* current_control) {
  2119   if (C->recent_alloc_ctl() == current_control)
  2119   Node* ctrl = current_control;
  2120     return C->recent_alloc_obj();
  2120   // Object::<init> is invoked after allocation, most of invoke nodes
       
  2121   // will be reduced, but a region node is kept in parse time, we check
       
  2122   // the pattern and skip the region node if it degraded to a copy.
       
  2123   if (ctrl != NULL && ctrl->is_Region() && ctrl->req() == 2 &&
       
  2124       ctrl->as_Region()->is_copy()) {
       
  2125     ctrl = ctrl->as_Region()->is_copy();
       
  2126   }
       
  2127   if (C->recent_alloc_ctl() == ctrl) {
       
  2128    return C->recent_alloc_obj();
       
  2129   }
  2121   return NULL;
  2130   return NULL;
  2122 }
  2131 }
  2123 
  2132 
  2124 
  2133 
  2125 void GraphKit::round_double_arguments(ciMethod* dest_method) {
  2134 void GraphKit::round_double_arguments(ciMethod* dest_method) {