[INFER] Don't immediately evict data register when storing top frame entry, bug 643653.

This commit is contained in:
Brian Hackett 2011-03-22 16:54:15 -07:00
parent 7933449143
commit 732fe004fb
2 changed files with 15 additions and 3 deletions

View File

@ -0,0 +1,10 @@
function f(x) {
var a;
var b = [1].length;
var c = x;
var d = b + 1;
AA = x;
a = d;
assertEq(b + d, 3);
}
f();

View File

@ -2074,9 +2074,11 @@ FrameState::storeTop(FrameEntry *target, JSValueType type, bool popGuaranteed)
if (backing->isTypeKnown()) {
target->setType(backing->getKnownType());
} else {
RegisterID reg = tempRegForType(backing);
target->type.setRegister(reg);
regstate(reg).reassociate(target);
pinReg(reg);
RegisterID typeReg = tempRegForType(backing);
unpinReg(reg);
target->type.setRegister(typeReg);
regstate(typeReg).reassociate(target);
}
} else if (type != JSVAL_TYPE_DOUBLE || backing->isType(JSVAL_TYPE_INT32)) {
/*