equal
deleted
inserted
replaced
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) { |