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