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);
|
||||
}
|
||||
} else if (type == JSVAL_TYPE_DOUBLE) {
|
||||
JS_ASSERT(backing->isType(JSVAL_TYPE_INT32));
|
||||
|
||||
FPRegisterID fpreg = allocFPReg();
|
||||
masm.convertInt32ToDouble(reg, fpreg);
|
||||
if (backing->isTypeKnown()) {
|
||||
JS_ASSERT(backing->isType(JSVAL_TYPE_INT32));
|
||||
masm.convertInt32ToDouble(reg, fpreg);
|
||||
} else {
|
||||
syncFe(backing);
|
||||
masm.moveInt32OrDouble(addressOf(backing), fpreg);
|
||||
}
|
||||
|
||||
target->setType(JSVAL_TYPE_DOUBLE);
|
||||
target->data.setFPRegister(fpreg);
|
||||
regstate(fpreg).associate(target, RematInfo::DATA);
|
||||
|
||||
forgetReg(reg);
|
||||
forgetAllRegs(backing);
|
||||
} else {
|
||||
/*
|
||||
* The backing should normally already be the type we are storing. However,
|
||||
|
Loading…
Reference in New Issue
Block a user