mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
[JAEGER] Added JSOP_INSTANCEOF.
This commit is contained in:
parent
a385f71677
commit
f251a97d3c
@ -896,6 +896,14 @@ mjit::Compiler::generateMethod()
|
||||
frame.pop();
|
||||
END_CASE(JSOP_THROW)
|
||||
|
||||
BEGIN_CASE(JSOP_INSTANCEOF)
|
||||
prepareStubCall();
|
||||
stubCall(stubs::InstanceOf, Uses(2), Defs(1));
|
||||
frame.popn(2);
|
||||
frame.takeReg(Registers::ReturnReg);
|
||||
frame.pushTypedPayload(JSVAL_MASK32_BOOLEAN, Registers::ReturnReg);
|
||||
END_CASE(JSOP_INSTANCEOF)
|
||||
|
||||
BEGIN_CASE(JSOP_LINENO)
|
||||
END_CASE(JSOP_LINENO)
|
||||
|
||||
|
@ -2473,3 +2473,24 @@ stubs::Arguments(VMFrame &f)
|
||||
THROW();
|
||||
}
|
||||
|
||||
JSBool JS_FASTCALL
|
||||
stubs::InstanceOf(VMFrame &f)
|
||||
{
|
||||
JSContext *cx = f.cx;
|
||||
JSFrameRegs ®s = f.regs;
|
||||
|
||||
const Value &rref = regs.sp[-1];
|
||||
JSObject *obj;
|
||||
if (rref.isPrimitive() ||
|
||||
!(obj = &rref.asObject())->map->ops->hasInstance) {
|
||||
js_ReportValueError(cx, JSMSG_BAD_INSTANCEOF_RHS,
|
||||
-1, rref, NULL);
|
||||
THROWV(JS_FALSE);
|
||||
}
|
||||
const Value &lref = regs.sp[-2];
|
||||
JSBool cond = JS_FALSE;
|
||||
if (!obj->map->ops->hasInstance(cx, obj, lref, &cond))
|
||||
THROWV(JS_FALSE);
|
||||
return cond;
|
||||
}
|
||||
|
||||
|
@ -128,6 +128,7 @@ void JS_FASTCALL ForName(VMFrame &f, JSAtom *atom);
|
||||
|
||||
JSBool JS_FASTCALL ValueToBoolean(VMFrame &f);
|
||||
JSString * JS_FASTCALL TypeOf(VMFrame &f);
|
||||
JSBool JS_FASTCALL InstanceOf(VMFrame &f);
|
||||
|
||||
}}} /* namespace stubs,mjit,js */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user