src/share/vm/opto/matcher.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/matcher.cpp Wed Apr 22 15:01:17 2009
--- new/src/share/vm/opto/matcher.cpp Wed Apr 22 15:01:17 2009
*** 273,282 ****
--- 273,288 ----
find_shared( C->root() );
find_shared( C->top() );
C->print_method("Before Matching");
+ // Create new ideal node ConP #NULL even if it does exist in old space
+ // to avoid false sharing if the corresponding mach node is not used.
+ // The corresponding mach node is only used in rare cases for derived
+ // pointers.
+ Node* new_ideal_null = ConNode::make(C, TypePtr::NULL_PTR);
+
// Swap out to old-space; emptying new-space
Arena *old = C->node_arena()->move_contents(C->old_arena());
// Save debug and profile information for nodes in old space:
_old_node_note_array = C->node_note_array();
*** 314,324 ****
--- 320,339 ----
--j;
--jmax;
}
}
+ // Generate new mach node for ConP #NULL
+ assert(new_ideal_null != NULL, "sanity");
+ _mach_null = match_tree(new_ideal_null);
+ // Don't set control, it will confuse GCM since there are no uses.
+ // The control will be set when this node is used first time
+ // in find_base_for_derived().
+ assert(_mach_null != NULL, "");
+
C->set_root(xroot->is_Root() ? xroot->as_Root() : NULL);
+
#ifdef ASSERT
verify_new_nodes_only(xroot);
#endif
}
}
src/share/vm/opto/matcher.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File