Bug 884794 - Rename JS1.7+ generators to "legacy generators". r=Waldo, r=jorendorff

This commit is contained in:
Andy Wingo
2013-07-31 16:48:49 +02:00
parent e49944480f
commit 9abbb590a0
9 changed files with 68 additions and 31 deletions

View File

@@ -1023,6 +1023,7 @@ js::CloseIterator(JSContext *cx, HandleObject obj)
ni->props_cursor = ni->props_array;
}
} else if (obj->is<GeneratorObject>()) {
// FIXME: Only close legacy generators.
return CloseGenerator(cx, obj);
}
return true;
@@ -1625,6 +1626,8 @@ CloseGenerator(JSContext *cx, HandleObject obj)
return true;
}
// FIXME: Assert that gen is a legacy generator.
if (gen->state == JSGEN_CLOSED)
return true;
@@ -1640,6 +1643,7 @@ IsGenerator(const Value &v)
JS_ALWAYS_INLINE bool
generator_send_impl(JSContext *cx, CallArgs args)
{
// FIXME: Change assertion to IsLegacyGenerator().
JS_ASSERT(IsGenerator(args.thisv()));
RootedObject thisObj(cx, &args.thisv().toObject());
@@ -1657,6 +1661,8 @@ generator_send_impl(JSContext *cx, CallArgs args)
return false;
}
// FIXME: next() takes the send value as an optional argument in ES6
// generator objects.
if (!SendToGenerator(cx, JSGENOP_SEND, thisObj, gen, args.get(0)))
return false;
@@ -1667,6 +1673,7 @@ generator_send_impl(JSContext *cx, CallArgs args)
JSBool
generator_send(JSContext *cx, unsigned argc, Value *vp)
{
// FIXME: send() is only a method on legacy generator objects.
CallArgs args = CallArgsFromVp(argc, vp);
return CallNonGenericMethod<IsGenerator, generator_send_impl>(cx, args);
}
@@ -1729,6 +1736,7 @@ generator_throw(JSContext *cx, unsigned argc, Value *vp)
JS_ALWAYS_INLINE bool
generator_close_impl(JSContext *cx, CallArgs args)
{
// FIXME: Change assertion to IsLegacyGenerator().
JS_ASSERT(IsGenerator(args.thisv()));
RootedObject thisObj(cx, &args.thisv().toObject());
@@ -1756,6 +1764,7 @@ generator_close_impl(JSContext *cx, CallArgs args)
JSBool
generator_close(JSContext *cx, unsigned argc, Value *vp)
{
// FIXME: close() is only a method on legacy generator objects.
CallArgs args = CallArgsFromVp(argc, vp);
return CallNonGenericMethod<IsGenerator, generator_close_impl>(cx, args);
}