Major and winning overhaul to for-in codegen (mad props to Andreas for advice).

This commit is contained in:
Brendan Eich
2008-08-13 14:02:35 -07:00
parent 93e2546c1e
commit 6a1a322196
4 changed files with 60 additions and 147 deletions

View File

@@ -367,13 +367,22 @@ js_Any_setelem(JSContext* cx, JSObject* obj, JSString* idstr, jsval v)
}
JSObject* FASTCALL
js_ValueToEnumerator(JSContext* cx, jsval v)
js_FastValueToIterator(JSContext* cx, jsuint flags, jsval v)
{
if (!js_ValueToIterator(cx, JSITER_ENUMERATE, &v))
if (!js_ValueToIterator(cx, flags, &v))
return NULL;
return JSVAL_TO_OBJECT(v);
}
jsval FASTCALL
js_FastCallIteratorNext(JSContext* cx, JSObject* iterobj)
{
jsval v;
if (!js_CallIteratorNext(cx, iterobj, &v))
return JSVAL_ERROR_COOKIE;
return v;
}
GuardRecord* FASTCALL
js_CallTree(InterpState* state, Fragment* f)
{