comparison src/share/vm/opto/coalesce.cpp @ 295:ea18057223c4

6732194: Data corruption dependent on -server/-client/-Xbatch Summary: rematerializing nodes results in incorrect inputs Reviewed-by: rasbold
author never
date Mon, 18 Aug 2008 23:17:51 -0700
parents a61af66fc99e
children 9ee9cf798b59
comparison
equal deleted inserted replaced
294:616a07a75c3c 295:ea18057223c4
602 602
603 // Single-def live range ONLY if both live ranges are single-def. 603 // Single-def live range ONLY if both live ranges are single-def.
604 // If both are single def, then src_def powers one live range 604 // If both are single def, then src_def powers one live range
605 // and def_copy powers the other. After merging, src_def powers 605 // and def_copy powers the other. After merging, src_def powers
606 // the combined live range. 606 // the combined live range.
607 lrgs(lr1)._def = (lrgs(lr1)._def == NodeSentinel || 607 lrgs(lr1)._def = (lrgs(lr1).is_multidef() ||
608 lrgs(lr2)._def == NodeSentinel ) 608 lrgs(lr2).is_multidef() )
609 ? NodeSentinel : src_def; 609 ? NodeSentinel : src_def;
610 lrgs(lr2)._def = NULL; // No def for lrg 2 610 lrgs(lr2)._def = NULL; // No def for lrg 2
611 lrgs(lr2).Clear(); // Force empty mask for LRG 2 611 lrgs(lr2).Clear(); // Force empty mask for LRG 2
612 //lrgs(lr2)._size = 0; // Live-range 2 goes dead 612 //lrgs(lr2)._size = 0; // Live-range 2 goes dead
613 lrgs(lr1)._is_oop |= lrgs(lr2)._is_oop; 613 lrgs(lr1)._is_oop |= lrgs(lr2)._is_oop;