Backed out value_to_iter inline method extraction.

This commit is contained in:
Andreas Gal 2008-06-09 14:47:14 -07:00
parent 8d20524c9b
commit 0077c6a422

View File

@ -2519,17 +2519,6 @@ default_value(JSContext* cx, JSFrameRegs& regs, int n, JSType hint,
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, &regs.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 POP_STACK(v) prim_pop_stack(regs, (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_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
* 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)
BEGIN_CASE(JSOP_FOREACH)
VALUE_TO_ITER(JSITER_ENUMERATE | JSITER_FOREACH);
END_CASE(JSOP_FOREACH);
flags = JSITER_ENUMERATE | JSITER_FOREACH;
goto value_to_iter;
#if JS_HAS_DESTRUCTURING
BEGIN_CASE(JSOP_FOREACHKEYVAL)
VALUE_TO_ITER(JSITER_ENUMERATE | JSITER_FOREACH | JSITER_KEYVALUE);
END_CASE(JSOP_FOREACHKEYVAL)
flags = JSITER_ENUMERATE | JSITER_FOREACH | JSITER_KEYVALUE;
goto value_to_iter;
#endif
BEGIN_CASE(JSOP_FORIN)
@ -3377,7 +3364,14 @@ JS_INTERPRET(JSContext *cx)
* explicit iterator is not given via the optional __iterator__
* method.
*/
VALUE_TO_ITER(JSITER_ENUMERATE);
flags = JSITER_ENUMERATE;
value_to_iter:
JS_ASSERT(regs.sp > fp->spbase);
if (!js_ValueToIterator(cx, flags, &regs.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)
BEGIN_CASE(JSOP_FORPROP)