src/hotspot/share/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Frames
Patch
New
Old
Previous File
Next File
open Cdiff src/hotspot/share/opto/graphKit.cpp
src/hotspot/share/opto/graphKit.cpp
Print this page
*** 2114,2125 ****
// Report the object that was just allocated.
// It must be the case that there are no intervening safepoints.
// We use this to determine if an object is so "fresh" that
// it does not require card marks.
Node* GraphKit::just_allocated_object(Node* current_control) {
! if (C->recent_alloc_ctl() == current_control)
return C->recent_alloc_obj();
return NULL;
}
void GraphKit::round_double_arguments(ciMethod* dest_method) {
--- 2114,2134 ----
// Report the object that was just allocated.
// It must be the case that there are no intervening safepoints.
// We use this to determine if an object is so "fresh" that
// it does not require card marks.
Node* GraphKit::just_allocated_object(Node* current_control) {
! Node* ctrl = current_control;
! // Object::<init> is invoked after allocation, most of invoke nodes
! // will be reduced, but a region node is kept in parse time, we check
! // the pattern and skip the region node if it degraded to a copy.
! if (ctrl != NULL && ctrl->is_Region() && ctrl->req() == 2 &&
! ctrl->as_Region()->is_copy()) {
! ctrl = ctrl->as_Region()->is_copy();
! }
! if (C->recent_alloc_ctl() == ctrl) {
return C->recent_alloc_obj();
+ }
return NULL;
}
void GraphKit::round_double_arguments(ciMethod* dest_method) {
src/hotspot/share/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Frames
Patch
New
Old
Previous File
Next File