comparison graal/GraalCompiler/src/com/sun/c1x/value/FrameState.java @ 2768:43ffa0e47a46

Towards removing stateAfter on BlockEnd.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Mon, 23 May 2011 19:21:53 +0200
parents 99912abb3ff7
children dd6419f4bfe2
comparison
equal deleted inserted replaced
2767:cc2b98e2b832 2768:43ffa0e47a46
329 checkSize(other); 329 checkSize(other);
330 for (int i = 0; i < valuesSize(); i++) { 330 for (int i = 0; i < valuesSize(); i++) {
331 Value x = valueAt(i); 331 Value x = valueAt(i);
332 if (x != null) { 332 if (x != null) {
333 Value y = other.valueAt(i); 333 Value y = other.valueAt(i);
334 if (x != y) { 334 if (x != y || ((x instanceof Phi) && ((Phi) x).block() == block)) {
335 if (typeMismatch(x, y)) { 335 if (typeMismatch(x, y)) {
336 if (x instanceof Phi) { 336 if (x instanceof Phi) {
337 Phi phi = (Phi) x; 337 Phi phi = (Phi) x;
338 if (phi.block() == block) { 338 if (phi.block() == block) {
339 phi.makeDead(); 339 phi.makeDead();
358 size--; 358 size--;
359 } 359 }
360 for (int j = 0; j < size; ++j) { 360 for (int j = 0; j < size; ++j) {
361 phi = phi.addInput(x); 361 phi = phi.addInput(x);
362 } 362 }
363 phi = phi.addInput(y); 363 phi = phi.addInput((x == y) ? phi : y);
364 } else { 364 } else {
365 phi = phi.addInput(y); 365 phi = phi.addInput((x == y) ? phi : y);
366 } 366 }
367 if (originalPhi != phi) { 367 /*if (originalPhi != phi) {
368 for (int j = 0; j < other.localsSize() + other.stackSize(); ++j) { 368 for (int j = 0; j < other.localsSize() + other.stackSize(); ++j) {
369 if (other.valueAt(j) == originalPhi) { 369 if (other.valueAt(j) == originalPhi) {
370 other.setValueAt(j, phi); 370 other.setValueAt(j, phi);
371 } 371 }
372 } 372 }
373 } 373 }*/
374 } 374
375 //assert phi.valueCount() == block.predecessors().size() + (blockAppended ? 0 : 1) : "valueCount=" + phi.valueCount() + " predSize= " + block.predecessors().size();
376 }
375 } 377 }
376 } 378 }
377 } 379 }
378 380
379 381