mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out value_to_iter inline method extraction.
This commit is contained in:
parent
8d20524c9b
commit
0077c6a422
@ -2519,17 +2519,6 @@ default_value(JSContext* cx, JSFrameRegs& regs, int n, JSType hint,
|
|||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool
|
|
||||||
value_to_iter(JSContext* cx, JSFrameRegs& regs, JSStackFrame *fp, JSOp op, uintN flags)
|
|
||||||
{
|
|
||||||
JS_ASSERT(regs.sp > fp->spbase);
|
|
||||||
if (!js_ValueToIterator(cx, flags, ®s.sp[-1]))
|
|
||||||
return false;
|
|
||||||
JS_ASSERT(!JSVAL_IS_PRIMITIVE(regs.sp[-1]));
|
|
||||||
JS_ASSERT(JSOP_FORIN_LENGTH == js_CodeSpec[op].length);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define PUSH_STACK(v) prim_push_stack(regs, (v))
|
#define PUSH_STACK(v) prim_push_stack(regs, (v))
|
||||||
#define POP_STACK(v) prim_pop_stack(regs, (v))
|
#define POP_STACK(v) prim_pop_stack(regs, (v))
|
||||||
#define STORE_STACK(n,v) prim_store_stack(regs, (n), (v))
|
#define STORE_STACK(n,v) prim_store_stack(regs, (n), (v))
|
||||||
@ -2545,8 +2534,6 @@ value_to_iter(JSContext* cx, JSFrameRegs& regs, JSStackFrame *fp, JSOp op, uintN
|
|||||||
#define STORE_STACK_STRING(n, str) store_stack_string(regs, (n), (str))
|
#define STORE_STACK_STRING(n, str) store_stack_string(regs, (n), (str))
|
||||||
#define STORE_STACK_OBJECT(n, obj) store_stack_object(regs, (n), (obj))
|
#define STORE_STACK_OBJECT(n, obj) store_stack_object(regs, (n), (obj))
|
||||||
|
|
||||||
#define VALUE_TO_ITER(flags) value_to_iter(cx, regs, fp, op, flags)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Push the double d using regs from the lexical environment. Try to convert d
|
* Push the double d using regs from the lexical environment. Try to convert d
|
||||||
* to a jsint that fits in a jsval, otherwise GC-alloc space for it and push a
|
* to a jsint that fits in a jsval, otherwise GC-alloc space for it and push a
|
||||||
@ -3361,13 +3348,13 @@ JS_INTERPRET(JSContext *cx)
|
|||||||
END_CASE(JSOP_IN)
|
END_CASE(JSOP_IN)
|
||||||
|
|
||||||
BEGIN_CASE(JSOP_FOREACH)
|
BEGIN_CASE(JSOP_FOREACH)
|
||||||
VALUE_TO_ITER(JSITER_ENUMERATE | JSITER_FOREACH);
|
flags = JSITER_ENUMERATE | JSITER_FOREACH;
|
||||||
END_CASE(JSOP_FOREACH);
|
goto value_to_iter;
|
||||||
|
|
||||||
#if JS_HAS_DESTRUCTURING
|
#if JS_HAS_DESTRUCTURING
|
||||||
BEGIN_CASE(JSOP_FOREACHKEYVAL)
|
BEGIN_CASE(JSOP_FOREACHKEYVAL)
|
||||||
VALUE_TO_ITER(JSITER_ENUMERATE | JSITER_FOREACH | JSITER_KEYVALUE);
|
flags = JSITER_ENUMERATE | JSITER_FOREACH | JSITER_KEYVALUE;
|
||||||
END_CASE(JSOP_FOREACHKEYVAL)
|
goto value_to_iter;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BEGIN_CASE(JSOP_FORIN)
|
BEGIN_CASE(JSOP_FORIN)
|
||||||
@ -3377,7 +3364,14 @@ JS_INTERPRET(JSContext *cx)
|
|||||||
* explicit iterator is not given via the optional __iterator__
|
* explicit iterator is not given via the optional __iterator__
|
||||||
* method.
|
* method.
|
||||||
*/
|
*/
|
||||||
VALUE_TO_ITER(JSITER_ENUMERATE);
|
flags = JSITER_ENUMERATE;
|
||||||
|
|
||||||
|
value_to_iter:
|
||||||
|
JS_ASSERT(regs.sp > fp->spbase);
|
||||||
|
if (!js_ValueToIterator(cx, flags, ®s.sp[-1]))
|
||||||
|
goto error;
|
||||||
|
JS_ASSERT(!JSVAL_IS_PRIMITIVE(regs.sp[-1]));
|
||||||
|
JS_ASSERT(JSOP_FORIN_LENGTH == js_CodeSpec[op].length);
|
||||||
END_CASE(JSOP_FORIN)
|
END_CASE(JSOP_FORIN)
|
||||||
|
|
||||||
BEGIN_CASE(JSOP_FORPROP)
|
BEGIN_CASE(JSOP_FORPROP)
|
||||||
|
Loading…
Reference in New Issue
Block a user