Bug 1147371: Implement IteratorClose for for-of

Issue #74
This commit is contained in:
janekptacijarabaci 2018-03-24 12:09:30 +01:00 committed by Roy Tam
commit 5f3e5dc3fb
13 changed files with 704 additions and 203 deletions

View file

@ -2589,7 +2589,8 @@ JS_STATIC_ASSERT(JSTRY_CATCH == 0);
JS_STATIC_ASSERT(JSTRY_FINALLY == 1);
JS_STATIC_ASSERT(JSTRY_FOR_IN == 2);
static const char* const TryNoteNames[] = { "catch", "finally", "for-in", "for-of", "loop" };
static const char* const TryNoteNames[] = { "catch", "finally", "for-in", "for-of", "loop",
"iterclose" };
static MOZ_MUST_USE bool
TryNotes(JSContext* cx, HandleScript script, Sprinter* sp)
@ -2597,15 +2598,15 @@ TryNotes(JSContext* cx, HandleScript script, Sprinter* sp)
if (!script->hasTrynotes())
return true;
if (sp->put("\nException table:\nkind stack start end\n") < 0)
if (sp->put("\nException table:\nkind stack start end\n") < 0)
return false;
JSTryNote* tn = script->trynotes()->vector;
JSTryNote* tnlimit = tn + script->trynotes()->length;
do {
MOZ_ASSERT(tn->kind < ArrayLength(TryNoteNames));
uint8_t startOff = script->pcToOffset(script->main()) + tn->start;
if (!sp->jsprintf(" %-7s %6u %8u %8u\n",
uint32_t startOff = script->pcToOffset(script->main()) + tn->start;
if (!sp->jsprintf(" %-9s %6u %8u %8u\n",
TryNoteNames[tn->kind], tn->stackDepth,
startOff, startOff + tn->length))
{