mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[JAEGER] Merge from Tracemonkey.
This commit is contained in:
commit
7f4571bf6a
@ -1132,6 +1132,7 @@ FreeContext(JSContext *cx)
|
|||||||
cx->regExpStatics.clear();
|
cx->regExpStatics.clear();
|
||||||
VOUCH_DOES_NOT_REQUIRE_STACK();
|
VOUCH_DOES_NOT_REQUIRE_STACK();
|
||||||
JS_FinishArenaPool(&cx->tempPool);
|
JS_FinishArenaPool(&cx->tempPool);
|
||||||
|
JS_FinishArenaPool(&cx->regExpPool);
|
||||||
|
|
||||||
if (cx->lastMessage)
|
if (cx->lastMessage)
|
||||||
js_free(cx->lastMessage);
|
js_free(cx->lastMessage);
|
||||||
|
@ -2777,13 +2777,14 @@ Assembler::asm_cmov(LIns* ins)
|
|||||||
|
|
||||||
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
||||||
|
|
||||||
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
|
||||||
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
|
||||||
|
|
||||||
if (ins->isop(LIR_cmovd)) {
|
if (ins->isop(LIR_cmovd)) {
|
||||||
NIns* target = _nIns;
|
NIns* target = _nIns;
|
||||||
asm_nongp_copy(rr, rf);
|
asm_nongp_copy(rr, rf);
|
||||||
asm_branch(false, condval, target);
|
asm_branch(false, condval, target);
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
if (rr != rt)
|
if (rr != rt)
|
||||||
asm_nongp_copy(rr, rt);
|
asm_nongp_copy(rr, rt);
|
||||||
freeResourcesOf(ins);
|
freeResourcesOf(ins);
|
||||||
@ -2794,6 +2795,9 @@ Assembler::asm_cmov(LIns* ins)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
// WARNING: We cannot generate any code that affects the condition
|
// WARNING: We cannot generate any code that affects the condition
|
||||||
// codes between the MRcc generation here and the asm_cmp() call
|
// codes between the MRcc generation here and the asm_cmp() call
|
||||||
// below. See asm_cmp() for more details.
|
// below. See asm_cmp() for more details.
|
||||||
|
@ -1119,13 +1119,14 @@ namespace nanojit
|
|||||||
|
|
||||||
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
||||||
|
|
||||||
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
|
||||||
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
|
||||||
|
|
||||||
if (ins->isop(LIR_cmovd)) {
|
if (ins->isop(LIR_cmovd)) {
|
||||||
NIns* target = _nIns;
|
NIns* target = _nIns;
|
||||||
asm_nongp_copy(rr, rf);
|
asm_nongp_copy(rr, rf);
|
||||||
asm_branch(false, cond, target);
|
asm_branch(false, cond, target);
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
if (rr != rt)
|
if (rr != rt)
|
||||||
asm_nongp_copy(rr, rt);
|
asm_nongp_copy(rr, rt);
|
||||||
freeResourcesOf(ins);
|
freeResourcesOf(ins);
|
||||||
@ -1136,6 +1137,9 @@ namespace nanojit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
// WARNING: We cannot generate any code that affects the condition
|
// WARNING: We cannot generate any code that affects the condition
|
||||||
// codes between the MRcc generation here and the asm_cmp() call
|
// codes between the MRcc generation here and the asm_cmp() call
|
||||||
// below. See asm_cmp() for more details.
|
// below. See asm_cmp() for more details.
|
||||||
|
@ -2059,13 +2059,14 @@ namespace nanojit
|
|||||||
|
|
||||||
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
Register rf = findRegFor(iffalse, allow & ~rmask(rr));
|
||||||
|
|
||||||
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
|
||||||
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
|
||||||
|
|
||||||
if (ins->isop(LIR_cmovd)) {
|
if (ins->isop(LIR_cmovd)) {
|
||||||
NIns* target = _nIns;
|
NIns* target = _nIns;
|
||||||
asm_nongp_copy(rr, rf);
|
asm_nongp_copy(rr, rf);
|
||||||
asm_branch(false, condval, target);
|
asm_branch(false, condval, target);
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
if (rr != rt)
|
if (rr != rt)
|
||||||
asm_nongp_copy(rr, rt);
|
asm_nongp_copy(rr, rt);
|
||||||
freeResourcesOf(ins);
|
freeResourcesOf(ins);
|
||||||
@ -2076,6 +2077,9 @@ namespace nanojit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If 'iftrue' isn't in a register, it can be clobbered by 'ins'.
|
||||||
|
Register rt = iftrue->isInReg() ? iftrue->getReg() : rr;
|
||||||
|
|
||||||
NanoAssert(ins->isop(LIR_cmovi));
|
NanoAssert(ins->isop(LIR_cmovi));
|
||||||
|
|
||||||
// WARNING: We cannot generate any code that affects the condition
|
// WARNING: We cannot generate any code that affects the condition
|
||||||
|
Loading…
Reference in New Issue
Block a user