Mercurial > hg > truffle
comparison src/share/vm/opto/divnode.cpp @ 294:616a07a75c3c
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
author | rasbold |
---|---|
date | Thu, 14 Aug 2008 10:15:29 -0700 |
parents | d1605aabd0a1 |
children | ab075d07f1ba |
comparison
equal
deleted
inserted
replaced
293:c3e045194476 | 294:616a07a75c3c |
---|---|
262 Node *lohi_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_hi)); | 262 Node *lohi_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_hi)); |
263 Node *lolo_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_lo)); | 263 Node *lolo_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_lo)); |
264 | 264 |
265 Node *t1 = phase->transform(new (phase->C, 3) URShiftLNode(lolo_product, phase->intcon(N / 2))); | 265 Node *t1 = phase->transform(new (phase->C, 3) URShiftLNode(lolo_product, phase->intcon(N / 2))); |
266 Node *t2 = phase->transform(new (phase->C, 3) AddLNode(hilo_product, t1)); | 266 Node *t2 = phase->transform(new (phase->C, 3) AddLNode(hilo_product, t1)); |
267 Node *t3 = phase->transform(new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2))); | 267 |
268 Node *t4 = phase->transform(new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF))); | 268 // Construct both t3 and t4 before transforming so t2 doesn't go dead |
269 // prematurely. | |
270 Node *t3 = new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2)); | |
271 Node *t4 = new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF)); | |
272 t3 = phase->transform(t3); | |
273 t4 = phase->transform(t4); | |
274 | |
269 Node *t5 = phase->transform(new (phase->C, 3) AddLNode(t4, lohi_product)); | 275 Node *t5 = phase->transform(new (phase->C, 3) AddLNode(t4, lohi_product)); |
270 Node *t6 = phase->transform(new (phase->C, 3) RShiftLNode(t5, phase->intcon(N / 2))); | 276 Node *t6 = phase->transform(new (phase->C, 3) RShiftLNode(t5, phase->intcon(N / 2))); |
271 Node *t7 = phase->transform(new (phase->C, 3) AddLNode(t3, hihi_product)); | 277 Node *t7 = phase->transform(new (phase->C, 3) AddLNode(t3, hihi_product)); |
272 | 278 |
273 return new (phase->C, 3) AddLNode(t7, t6); | 279 return new (phase->C, 3) AddLNode(t7, t6); |