Mercurial > hg > truffle
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; |