mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[INFER] More robust handling when storing an unknown value to a known double, bug 617450.
This commit is contained in:
parent
915e45dac7
commit
de02bee6d5
11
js/src/jit-test/tests/jaeger/bug617440.js
Normal file
11
js/src/jit-test/tests/jaeger/bug617440.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
function f() {
|
||||||
|
var x = 1.23;
|
||||||
|
function g() {
|
||||||
|
var y = x++;
|
||||||
|
assertEq(y, 1.23);
|
||||||
|
}
|
||||||
|
g();
|
||||||
|
assertEq(x, 2.23);
|
||||||
|
}
|
||||||
|
f();
|
@ -2101,16 +2101,20 @@ FrameState::storeTop(FrameEntry *target, bool popGuaranteed, JSValueType type)
|
|||||||
regstate(reg).reassociate(target);
|
regstate(reg).reassociate(target);
|
||||||
}
|
}
|
||||||
} else if (type == JSVAL_TYPE_DOUBLE) {
|
} else if (type == JSVAL_TYPE_DOUBLE) {
|
||||||
JS_ASSERT(backing->isType(JSVAL_TYPE_INT32));
|
|
||||||
|
|
||||||
FPRegisterID fpreg = allocFPReg();
|
FPRegisterID fpreg = allocFPReg();
|
||||||
|
if (backing->isTypeKnown()) {
|
||||||
|
JS_ASSERT(backing->isType(JSVAL_TYPE_INT32));
|
||||||
masm.convertInt32ToDouble(reg, fpreg);
|
masm.convertInt32ToDouble(reg, fpreg);
|
||||||
|
} else {
|
||||||
|
syncFe(backing);
|
||||||
|
masm.moveInt32OrDouble(addressOf(backing), fpreg);
|
||||||
|
}
|
||||||
|
|
||||||
target->setType(JSVAL_TYPE_DOUBLE);
|
target->setType(JSVAL_TYPE_DOUBLE);
|
||||||
target->data.setFPRegister(fpreg);
|
target->data.setFPRegister(fpreg);
|
||||||
regstate(fpreg).associate(target, RematInfo::DATA);
|
regstate(fpreg).associate(target, RematInfo::DATA);
|
||||||
|
|
||||||
forgetReg(reg);
|
forgetAllRegs(backing);
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* The backing should normally already be the type we are storing. However,
|
* The backing should normally already be the type we are storing. However,
|
||||||
|
Loading…
Reference in New Issue
Block a user