Thu, 14 Aug 2008 10:15:29 -0700
6732154: REG: Printing an Image using image/gif doc flavor crashes the VM, Solsparc
Summary: delay transform call until uses of t2 are constructed
Reviewed-by: never
src/share/vm/opto/divnode.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/opto/divnode.cpp Fri Aug 01 10:06:45 2008 -0700 1.2 +++ b/src/share/vm/opto/divnode.cpp Thu Aug 14 10:15:29 2008 -0700 1.3 @@ -264,8 +264,14 @@ 1.4 1.5 Node *t1 = phase->transform(new (phase->C, 3) URShiftLNode(lolo_product, phase->intcon(N / 2))); 1.6 Node *t2 = phase->transform(new (phase->C, 3) AddLNode(hilo_product, t1)); 1.7 - Node *t3 = phase->transform(new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2))); 1.8 - Node *t4 = phase->transform(new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF))); 1.9 + 1.10 + // Construct both t3 and t4 before transforming so t2 doesn't go dead 1.11 + // prematurely. 1.12 + Node *t3 = new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2)); 1.13 + Node *t4 = new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF)); 1.14 + t3 = phase->transform(t3); 1.15 + t4 = phase->transform(t4); 1.16 + 1.17 Node *t5 = phase->transform(new (phase->C, 3) AddLNode(t4, lohi_product)); 1.18 Node *t6 = phase->transform(new (phase->C, 3) RShiftLNode(t5, phase->intcon(N / 2))); 1.19 Node *t7 = phase->transform(new (phase->C, 3) AddLNode(t3, hihi_product));