changeset 22821:93c6b977591b

8071302: assert(!_reg_node[reg_lo] || edge_from_to(_reg_node[reg_lo], def)) failed: after block local Summary: Add merge nodes to node to block mapping Reviewed-by: kvn, vlivanov
author iveresov
date Thu, 22 Jan 2015 11:25:23 -0800
parents 4011ee1230e3
children d9c03a9ead96
files src/share/vm/opto/output.cpp src/share/vm/opto/postaloc.cpp
diffstat 2 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/output.cpp	Fri Jan 23 15:18:50 2015 -0800
+++ b/src/share/vm/opto/output.cpp	Thu Jan 22 11:25:23 2015 -0800
@@ -2473,7 +2473,7 @@
       if( iop == Op_Con ) continue;      // Do not schedule Top
       if( iop == Op_Node &&     // Do not schedule PhiNodes, ProjNodes
           mach->pipeline() == MachNode::pipeline_class() &&
-          !n->is_SpillCopy() )  // Breakpoints, Prolog, etc
+          !n->is_SpillCopy() && !n->is_MachMerge() )  // Breakpoints, Prolog, etc
         continue;
       break;                    // Funny loop structure to be sure...
     }
--- a/src/share/vm/opto/postaloc.cpp	Fri Jan 23 15:18:50 2015 -0800
+++ b/src/share/vm/opto/postaloc.cpp	Thu Jan 22 11:25:23 2015 -0800
@@ -428,6 +428,7 @@
         // Insert the merge node into the block before the first use.
         uint use_index = block->find_node(reg2defuse.at(reg).first_use());
         block->insert_node(merge, use_index++);
+        _cfg.map_node_to_block(merge, block);
 
         // Let the allocator know about the new node, use the same lrg
         _lrg_map.extend(merge->_idx, lrg);