mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[INFER] Rejoin during CALLPROP if either compilation did a GETPROP for string accesses, bug 643669.
This commit is contained in:
parent
bd9e58285b
commit
989848101e
3
js/src/jit-test/tests/jaeger/recompile/bug643669.js
Normal file
3
js/src/jit-test/tests/jaeger/recompile/bug643669.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
try {(function () {
|
||||||
|
eval("gc().l()")
|
||||||
|
})() } catch (e) {}
|
@ -3383,6 +3383,16 @@ mjit::Compiler::jsop_callprop_slow(JSAtom *atom)
|
|||||||
frame.pop();
|
frame.pop();
|
||||||
pushSyncedEntry(0);
|
pushSyncedEntry(0);
|
||||||
pushSyncedEntry(1);
|
pushSyncedEntry(1);
|
||||||
|
|
||||||
|
if (recompiling) {
|
||||||
|
OOL_STUBCALL(stubs::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(ic::CallProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(ic::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3669,6 +3679,10 @@ mjit::Compiler::jsop_callprop_generic(JSAtom *atom)
|
|||||||
if (recompiling) {
|
if (recompiling) {
|
||||||
OOL_STUBCALL(stubs::CallProp);
|
OOL_STUBCALL(stubs::CallProp);
|
||||||
stubcc.rejoin(Changes(2));
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(stubs::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(ic::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -3724,6 +3738,13 @@ mjit::Compiler::jsop_callprop_str(JSAtom *atom)
|
|||||||
frame.pushTypedPayload(JSVAL_TYPE_STRING, strReg);
|
frame.pushTypedPayload(JSVAL_TYPE_STRING, strReg);
|
||||||
frame.forgetType(frame.peek(-1));
|
frame.forgetType(frame.peek(-1));
|
||||||
|
|
||||||
|
if (recompiling) {
|
||||||
|
OOL_STUBCALL(stubs::CallProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(ic::CallProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3818,6 +3839,15 @@ mjit::Compiler::jsop_callprop_obj(JSAtom *atom)
|
|||||||
stubcc.rejoin(Changes(2));
|
stubcc.rejoin(Changes(2));
|
||||||
pics.append(pic);
|
pics.append(pic);
|
||||||
|
|
||||||
|
if (recompiling) {
|
||||||
|
OOL_STUBCALL(stubs::CallProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(stubs::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
OOL_STUBCALL(ic::GetProp);
|
||||||
|
stubcc.rejoin(Changes(2));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user