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();
|
||||
pushSyncedEntry(0);
|
||||
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;
|
||||
}
|
||||
|
||||
@ -3669,6 +3679,10 @@ mjit::Compiler::jsop_callprop_generic(JSAtom *atom)
|
||||
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;
|
||||
@ -3724,6 +3738,13 @@ mjit::Compiler::jsop_callprop_str(JSAtom *atom)
|
||||
frame.pushTypedPayload(JSVAL_TYPE_STRING, strReg);
|
||||
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;
|
||||
}
|
||||
|
||||
@ -3818,6 +3839,15 @@ mjit::Compiler::jsop_callprop_obj(JSAtom *atom)
|
||||
stubcc.rejoin(Changes(2));
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user