فهرست منبع

OS#17530048 - AssertMsg(i < this->Length(), "index out of bound") -- Chakra!BVFixed::AssertRange

Function count saved in the serialized bytecode is computed based on the total number of functions we visit and add to the bytecode. It is possible, though, for us to have a higher function id after defer parsing due to the reparse scenario we have for lambda argument lists. We avoid lambda parameter reparse when using the parser state cache except in the presence of default arguments. So serializing and running bytecode containing a lambda function with a default argument containing another function will increment the next function id to be greater than the size of the startup functions array in SourceDynamicProfileManager which will hit this assert.

Example:
```js
(a = () => 1) => 2;
(function(){})(); // <-- function id of this function is equal to the size of startupFunctions array
```

Fix by serializing the function count from the source info instead of counting the functions we add to the bytecode one-by-one.

Fixes:
https://microsoft.visualstudio.com/_workitems/edit/17530048
https://microsoft.visualstudio.com/_workitems/edit/17529917
Taylor Woll 7 سال پیش
والد
کامیت
9195b94de5
3فایلهای تغییر یافته به همراه268 افزوده شده و 271 حذف شده
  1. 2 0
      lib/Jsrt/Jsrt.cpp
  2. 1 6
      lib/Runtime/ByteCode/ByteCodeSerializer.cpp
  3. 265 265
      test/Basics/VerifyParserState.baseline

+ 2 - 0
lib/Jsrt/Jsrt.cpp

@@ -3756,6 +3756,7 @@ JsErrorCode JsSerializeScriptCore(const byte *script, size_t cb,
 
         SourceContextInfo * sourceContextInfo = scriptContext->GetSourceContextInfo(JS_SOURCE_CONTEXT_NONE, nullptr);
         Assert(sourceContextInfo != nullptr);
+        sourceContextInfo->nextLocalFunctionId = 0;
 
         const int chsize = (loadScriptFlag & LoadScriptFlag_Utf8Source) ? sizeof(utf8char_t) : sizeof(WCHAR);
         SRCINFO si = {
@@ -5536,6 +5537,7 @@ CHAKRA_API JsSerializeParserStateCore(
 
         SourceContextInfo * sourceContextInfo = scriptContext->GetSourceContextInfo(JS_SOURCE_CONTEXT_NONE, nullptr);
         Assert(sourceContextInfo != nullptr);
+        sourceContextInfo->nextLocalFunctionId = 0;
 
         const int chsize = (loadScriptFlag & LoadScriptFlag_Utf8Source) ?
             sizeof(utf8char_t) : sizeof(WCHAR);

+ 1 - 6
lib/Runtime/ByteCode/ByteCodeSerializer.cpp

@@ -2378,9 +2378,6 @@ public:
 #endif
         }
 
-        // Increment the function count
-        ++functionCount.value;
-
         // Reverse to put prepended items in correct order
         builder.list = builder.list->ReverseCurrentList();
         PrependStruct<SerializedFieldList>(builder, _u("Serialized Field List"), &definedFields);
@@ -2391,6 +2388,7 @@ public:
     HRESULT AddTopFunctionBody(FunctionBody * function, SRCINFO const * srcInfo, ByteCodeCache* cache)
     {
         topFunctionId = function->GetLocalFunctionId();
+        functionCount.value = srcInfo->sourceContextInfo->nextLocalFunctionId;
         return AddFunction(functionsTable, function, srcInfo, cache);
     }
 
@@ -2576,9 +2574,6 @@ public:
             {
                 AddDeferredStubs(builder, currentStub->deferredStubs, currentStub->nestedCount, cache, recursive);
             }
-
-            // Each deferred stub will turn into a function after we defer-parse the parent of the stub.
-            ++functionCount.value;
         }
 
         return S_OK;

+ 265 - 265
test/Basics/VerifyParserState.baseline

@@ -1,302 +1,302 @@
 nested function capturing var decl
 CreateParserState: Function 2 captured name "a1"
-CreateParserState: Function 5 captured name "a1"
+CreateParserState: Function 2 captured name "a1"
 
 nested function capturing a let decl
-CreateParserState: Function 8 captured name "a2"
-CreateParserState: Function 11 captured name "a2"
+CreateParserState: Function 2 captured name "a2"
+CreateParserState: Function 2 captured name "a2"
 
 nested function capturing a const decl
-CreateParserState: Function 14 captured name "a3"
-CreateParserState: Function 17 captured name "a3"
+CreateParserState: Function 2 captured name "a3"
+CreateParserState: Function 2 captured name "a3"
 
 nested function capturing non-decl names
-CreateParserState: Function 20 captured name "a4"
-CreateParserState: Function 20 captured name "b4"
-CreateParserState: Function 19 captured name "a4"
-CreateParserState: Function 19 captured name "b4"
-CreateParserState: Function 23 captured name "a4"
-CreateParserState: Function 23 captured name "b4"
-CreateParserState: Function 22 captured name "a4"
-CreateParserState: Function 22 captured name "b4"
+CreateParserState: Function 2 captured name "a4"
+CreateParserState: Function 2 captured name "b4"
+CreateParserState: Function 1 captured name "a4"
+CreateParserState: Function 1 captured name "b4"
+CreateParserState: Function 2 captured name "a4"
+CreateParserState: Function 2 captured name "b4"
+CreateParserState: Function 1 captured name "a4"
+CreateParserState: Function 1 captured name "b4"
 
 nested function referencing a local shadowing formal
 
 nested function capturing a named formal
-CreateParserState: Function 32 captured name "a6"
-CreateParserState: Function 35 captured name "a6"
+CreateParserState: Function 2 captured name "a6"
+CreateParserState: Function 2 captured name "a6"
 
 nested functions capturing global declarations
-CreateParserState: Function 39 captured name "a7"
-CreateParserState: Function 39 captured name "b7"
-CreateParserState: Function 39 captured name "c7"
-CreateParserState: Function 39 captured name "d7"
-CreateParserState: Function 39 captured name "l7"
-CreateParserState: Function 39 captured name "v7"
-CreateParserState: Function 38 captured name "a7"
-CreateParserState: Function 38 captured name "c7"
-CreateParserState: Function 38 captured name "d7"
-CreateParserState: Function 38 captured name "l7"
-CreateParserState: Function 38 captured name "v7"
-CreateParserState: Function 37 captured name "b7"
-CreateParserState: Function 37 captured name "c7"
-CreateParserState: Function 37 captured name "d7"
-CreateParserState: Function 37 captured name "l7"
-CreateParserState: Function 37 captured name "v7"
-CreateParserState: Function 43 captured name "a7"
-CreateParserState: Function 43 captured name "b7"
-CreateParserState: Function 43 captured name "c7"
-CreateParserState: Function 43 captured name "d7"
-CreateParserState: Function 43 captured name "l7"
-CreateParserState: Function 43 captured name "v7"
-CreateParserState: Function 42 captured name "a7"
-CreateParserState: Function 42 captured name "c7"
-CreateParserState: Function 42 captured name "d7"
-CreateParserState: Function 42 captured name "l7"
-CreateParserState: Function 42 captured name "v7"
-CreateParserState: Function 41 captured name "b7"
-CreateParserState: Function 41 captured name "c7"
-CreateParserState: Function 41 captured name "d7"
-CreateParserState: Function 41 captured name "l7"
-CreateParserState: Function 41 captured name "v7"
+CreateParserState: Function 3 captured name "a7"
+CreateParserState: Function 3 captured name "b7"
+CreateParserState: Function 3 captured name "c7"
+CreateParserState: Function 3 captured name "d7"
+CreateParserState: Function 3 captured name "l7"
+CreateParserState: Function 3 captured name "v7"
+CreateParserState: Function 2 captured name "a7"
+CreateParserState: Function 2 captured name "c7"
+CreateParserState: Function 2 captured name "d7"
+CreateParserState: Function 2 captured name "l7"
+CreateParserState: Function 2 captured name "v7"
+CreateParserState: Function 1 captured name "b7"
+CreateParserState: Function 1 captured name "c7"
+CreateParserState: Function 1 captured name "d7"
+CreateParserState: Function 1 captured name "l7"
+CreateParserState: Function 1 captured name "v7"
+CreateParserState: Function 3 captured name "a7"
+CreateParserState: Function 3 captured name "b7"
+CreateParserState: Function 3 captured name "c7"
+CreateParserState: Function 3 captured name "d7"
+CreateParserState: Function 3 captured name "l7"
+CreateParserState: Function 3 captured name "v7"
+CreateParserState: Function 2 captured name "a7"
+CreateParserState: Function 2 captured name "c7"
+CreateParserState: Function 2 captured name "d7"
+CreateParserState: Function 2 captured name "l7"
+CreateParserState: Function 2 captured name "v7"
+CreateParserState: Function 1 captured name "b7"
+CreateParserState: Function 1 captured name "c7"
+CreateParserState: Function 1 captured name "d7"
+CreateParserState: Function 1 captured name "l7"
+CreateParserState: Function 1 captured name "v7"
 
 nested function capturing a class decl
-CreateParserState: Function 47 captured name "class_1"
-CreateParserState: Function 46 captured name "class_1"
-CreateParserState: Function 51 captured name "class_1"
-CreateParserState: Function 50 captured name "class_1"
+CreateParserState: Function 3 captured name "class_1"
+CreateParserState: Function 2 captured name "class_1"
+CreateParserState: Function 3 captured name "class_1"
+CreateParserState: Function 2 captured name "class_1"
 
 object literal methods capturing names
-CreateParserState: Function 53 captured name "b9"
-CreateParserState: Function 53 captured name "c9"
-CreateParserState: Function 53 captured name "l9"
-CreateParserState: Function 53 captured name "o_9"
-CreateParserState: Function 53 captured name "v9"
-CreateParserState: Function 54 captured name "b9"
-CreateParserState: Function 54 captured name "c9"
-CreateParserState: Function 54 captured name "l9"
-CreateParserState: Function 54 captured name "o_9"
-CreateParserState: Function 54 captured name "v9"
-CreateParserState: Function 55 captured name "b9"
-CreateParserState: Function 55 captured name "c9"
-CreateParserState: Function 55 captured name "l9"
-CreateParserState: Function 55 captured name "o_9"
-CreateParserState: Function 55 captured name "v9"
-CreateParserState: Function 56 captured name "b9"
-CreateParserState: Function 56 captured name "c9"
-CreateParserState: Function 56 captured name "l9"
-CreateParserState: Function 56 captured name "o_9"
-CreateParserState: Function 56 captured name "v9"
-CreateParserState: Function 57 captured name "b9"
-CreateParserState: Function 57 captured name "c9"
-CreateParserState: Function 57 captured name "l9"
-CreateParserState: Function 57 captured name "o_9"
-CreateParserState: Function 57 captured name "v9"
-CreateParserState: Function 58 captured name "a9"
-CreateParserState: Function 58 captured name "b9"
-CreateParserState: Function 58 captured name "c9"
-CreateParserState: Function 58 captured name "l9"
-CreateParserState: Function 58 captured name "o_9"
-CreateParserState: Function 58 captured name "v9"
-CreateParserState: Function 59 captured name "b9"
-CreateParserState: Function 59 captured name "c9"
-CreateParserState: Function 59 captured name "l9"
-CreateParserState: Function 59 captured name "o_9"
-CreateParserState: Function 59 captured name "v9"
-CreateParserState: Function 61 captured name "b9"
-CreateParserState: Function 61 captured name "c9"
-CreateParserState: Function 61 captured name "l9"
-CreateParserState: Function 61 captured name "o_9"
-CreateParserState: Function 61 captured name "v9"
-CreateParserState: Function 62 captured name "b9"
-CreateParserState: Function 62 captured name "c9"
-CreateParserState: Function 62 captured name "l9"
-CreateParserState: Function 62 captured name "o_9"
-CreateParserState: Function 62 captured name "v9"
-CreateParserState: Function 63 captured name "b9"
-CreateParserState: Function 63 captured name "c9"
-CreateParserState: Function 63 captured name "l9"
-CreateParserState: Function 63 captured name "o_9"
-CreateParserState: Function 63 captured name "v9"
-CreateParserState: Function 64 captured name "b9"
-CreateParserState: Function 64 captured name "c9"
-CreateParserState: Function 64 captured name "l9"
-CreateParserState: Function 64 captured name "o_9"
-CreateParserState: Function 64 captured name "v9"
-CreateParserState: Function 65 captured name "b9"
-CreateParserState: Function 65 captured name "c9"
-CreateParserState: Function 65 captured name "l9"
-CreateParserState: Function 65 captured name "o_9"
-CreateParserState: Function 65 captured name "v9"
-CreateParserState: Function 66 captured name "a9"
-CreateParserState: Function 66 captured name "b9"
-CreateParserState: Function 66 captured name "c9"
-CreateParserState: Function 66 captured name "l9"
-CreateParserState: Function 66 captured name "o_9"
-CreateParserState: Function 66 captured name "v9"
-CreateParserState: Function 67 captured name "b9"
-CreateParserState: Function 67 captured name "c9"
-CreateParserState: Function 67 captured name "l9"
-CreateParserState: Function 67 captured name "o_9"
-CreateParserState: Function 67 captured name "v9"
+CreateParserState: Function 1 captured name "b9"
+CreateParserState: Function 1 captured name "c9"
+CreateParserState: Function 1 captured name "l9"
+CreateParserState: Function 1 captured name "o_9"
+CreateParserState: Function 1 captured name "v9"
+CreateParserState: Function 2 captured name "b9"
+CreateParserState: Function 2 captured name "c9"
+CreateParserState: Function 2 captured name "l9"
+CreateParserState: Function 2 captured name "o_9"
+CreateParserState: Function 2 captured name "v9"
+CreateParserState: Function 3 captured name "b9"
+CreateParserState: Function 3 captured name "c9"
+CreateParserState: Function 3 captured name "l9"
+CreateParserState: Function 3 captured name "o_9"
+CreateParserState: Function 3 captured name "v9"
+CreateParserState: Function 4 captured name "b9"
+CreateParserState: Function 4 captured name "c9"
+CreateParserState: Function 4 captured name "l9"
+CreateParserState: Function 4 captured name "o_9"
+CreateParserState: Function 4 captured name "v9"
+CreateParserState: Function 5 captured name "b9"
+CreateParserState: Function 5 captured name "c9"
+CreateParserState: Function 5 captured name "l9"
+CreateParserState: Function 5 captured name "o_9"
+CreateParserState: Function 5 captured name "v9"
+CreateParserState: Function 6 captured name "a9"
+CreateParserState: Function 6 captured name "b9"
+CreateParserState: Function 6 captured name "c9"
+CreateParserState: Function 6 captured name "l9"
+CreateParserState: Function 6 captured name "o_9"
+CreateParserState: Function 6 captured name "v9"
+CreateParserState: Function 7 captured name "b9"
+CreateParserState: Function 7 captured name "c9"
+CreateParserState: Function 7 captured name "l9"
+CreateParserState: Function 7 captured name "o_9"
+CreateParserState: Function 7 captured name "v9"
+CreateParserState: Function 1 captured name "b9"
+CreateParserState: Function 1 captured name "c9"
+CreateParserState: Function 1 captured name "l9"
+CreateParserState: Function 1 captured name "o_9"
+CreateParserState: Function 1 captured name "v9"
+CreateParserState: Function 2 captured name "b9"
+CreateParserState: Function 2 captured name "c9"
+CreateParserState: Function 2 captured name "l9"
+CreateParserState: Function 2 captured name "o_9"
+CreateParserState: Function 2 captured name "v9"
+CreateParserState: Function 3 captured name "b9"
+CreateParserState: Function 3 captured name "c9"
+CreateParserState: Function 3 captured name "l9"
+CreateParserState: Function 3 captured name "o_9"
+CreateParserState: Function 3 captured name "v9"
+CreateParserState: Function 4 captured name "b9"
+CreateParserState: Function 4 captured name "c9"
+CreateParserState: Function 4 captured name "l9"
+CreateParserState: Function 4 captured name "o_9"
+CreateParserState: Function 4 captured name "v9"
+CreateParserState: Function 5 captured name "b9"
+CreateParserState: Function 5 captured name "c9"
+CreateParserState: Function 5 captured name "l9"
+CreateParserState: Function 5 captured name "o_9"
+CreateParserState: Function 5 captured name "v9"
+CreateParserState: Function 6 captured name "a9"
+CreateParserState: Function 6 captured name "b9"
+CreateParserState: Function 6 captured name "c9"
+CreateParserState: Function 6 captured name "l9"
+CreateParserState: Function 6 captured name "o_9"
+CreateParserState: Function 6 captured name "v9"
+CreateParserState: Function 7 captured name "b9"
+CreateParserState: Function 7 captured name "c9"
+CreateParserState: Function 7 captured name "l9"
+CreateParserState: Function 7 captured name "o_9"
+CreateParserState: Function 7 captured name "v9"
 
 class members capturing names
-CreateParserState: Function 69 captured name "b10"
-CreateParserState: Function 69 captured name "c10"
-CreateParserState: Function 69 captured name "class_10"
-CreateParserState: Function 69 captured name "l10"
-CreateParserState: Function 69 captured name "v10"
-CreateParserState: Function 70 captured name "b10"
-CreateParserState: Function 70 captured name "c10"
-CreateParserState: Function 70 captured name "class_10"
-CreateParserState: Function 70 captured name "l10"
-CreateParserState: Function 70 captured name "v10"
-CreateParserState: Function 71 captured name "b10"
-CreateParserState: Function 71 captured name "c10"
-CreateParserState: Function 71 captured name "class_10"
-CreateParserState: Function 71 captured name "l10"
-CreateParserState: Function 71 captured name "v10"
-CreateParserState: Function 72 captured name "b10"
-CreateParserState: Function 72 captured name "c10"
-CreateParserState: Function 72 captured name "class_10"
-CreateParserState: Function 72 captured name "l10"
-CreateParserState: Function 72 captured name "v10"
-CreateParserState: Function 73 captured name "b10"
-CreateParserState: Function 73 captured name "c10"
-CreateParserState: Function 73 captured name "class_10"
-CreateParserState: Function 73 captured name "l10"
-CreateParserState: Function 73 captured name "v10"
-CreateParserState: Function 74 captured name "a10"
-CreateParserState: Function 74 captured name "b10"
-CreateParserState: Function 74 captured name "c10"
-CreateParserState: Function 74 captured name "class_10"
-CreateParserState: Function 74 captured name "l10"
-CreateParserState: Function 74 captured name "v10"
-CreateParserState: Function 75 captured name "b10"
-CreateParserState: Function 75 captured name "c10"
-CreateParserState: Function 75 captured name "class_10"
-CreateParserState: Function 75 captured name "l10"
-CreateParserState: Function 75 captured name "v10"
-CreateParserState: Function 78 captured name "b10"
-CreateParserState: Function 78 captured name "c10"
-CreateParserState: Function 78 captured name "class_10"
-CreateParserState: Function 78 captured name "l10"
-CreateParserState: Function 78 captured name "v10"
-CreateParserState: Function 79 captured name "b10"
-CreateParserState: Function 79 captured name "c10"
-CreateParserState: Function 79 captured name "class_10"
-CreateParserState: Function 79 captured name "l10"
-CreateParserState: Function 79 captured name "v10"
-CreateParserState: Function 80 captured name "b10"
-CreateParserState: Function 80 captured name "c10"
-CreateParserState: Function 80 captured name "class_10"
-CreateParserState: Function 80 captured name "l10"
-CreateParserState: Function 80 captured name "v10"
-CreateParserState: Function 81 captured name "b10"
-CreateParserState: Function 81 captured name "c10"
-CreateParserState: Function 81 captured name "class_10"
-CreateParserState: Function 81 captured name "l10"
-CreateParserState: Function 81 captured name "v10"
-CreateParserState: Function 82 captured name "b10"
-CreateParserState: Function 82 captured name "c10"
-CreateParserState: Function 82 captured name "class_10"
-CreateParserState: Function 82 captured name "l10"
-CreateParserState: Function 82 captured name "v10"
-CreateParserState: Function 83 captured name "a10"
-CreateParserState: Function 83 captured name "b10"
-CreateParserState: Function 83 captured name "c10"
-CreateParserState: Function 83 captured name "class_10"
-CreateParserState: Function 83 captured name "l10"
-CreateParserState: Function 83 captured name "v10"
-CreateParserState: Function 84 captured name "b10"
-CreateParserState: Function 84 captured name "c10"
-CreateParserState: Function 84 captured name "class_10"
-CreateParserState: Function 84 captured name "l10"
-CreateParserState: Function 84 captured name "v10"
+CreateParserState: Function 1 captured name "b10"
+CreateParserState: Function 1 captured name "c10"
+CreateParserState: Function 1 captured name "class_10"
+CreateParserState: Function 1 captured name "l10"
+CreateParserState: Function 1 captured name "v10"
+CreateParserState: Function 2 captured name "b10"
+CreateParserState: Function 2 captured name "c10"
+CreateParserState: Function 2 captured name "class_10"
+CreateParserState: Function 2 captured name "l10"
+CreateParserState: Function 2 captured name "v10"
+CreateParserState: Function 3 captured name "b10"
+CreateParserState: Function 3 captured name "c10"
+CreateParserState: Function 3 captured name "class_10"
+CreateParserState: Function 3 captured name "l10"
+CreateParserState: Function 3 captured name "v10"
+CreateParserState: Function 4 captured name "b10"
+CreateParserState: Function 4 captured name "c10"
+CreateParserState: Function 4 captured name "class_10"
+CreateParserState: Function 4 captured name "l10"
+CreateParserState: Function 4 captured name "v10"
+CreateParserState: Function 5 captured name "b10"
+CreateParserState: Function 5 captured name "c10"
+CreateParserState: Function 5 captured name "class_10"
+CreateParserState: Function 5 captured name "l10"
+CreateParserState: Function 5 captured name "v10"
+CreateParserState: Function 6 captured name "a10"
+CreateParserState: Function 6 captured name "b10"
+CreateParserState: Function 6 captured name "c10"
+CreateParserState: Function 6 captured name "class_10"
+CreateParserState: Function 6 captured name "l10"
+CreateParserState: Function 6 captured name "v10"
+CreateParserState: Function 7 captured name "b10"
+CreateParserState: Function 7 captured name "c10"
+CreateParserState: Function 7 captured name "class_10"
+CreateParserState: Function 7 captured name "l10"
+CreateParserState: Function 7 captured name "v10"
+CreateParserState: Function 1 captured name "b10"
+CreateParserState: Function 1 captured name "c10"
+CreateParserState: Function 1 captured name "class_10"
+CreateParserState: Function 1 captured name "l10"
+CreateParserState: Function 1 captured name "v10"
+CreateParserState: Function 2 captured name "b10"
+CreateParserState: Function 2 captured name "c10"
+CreateParserState: Function 2 captured name "class_10"
+CreateParserState: Function 2 captured name "l10"
+CreateParserState: Function 2 captured name "v10"
+CreateParserState: Function 3 captured name "b10"
+CreateParserState: Function 3 captured name "c10"
+CreateParserState: Function 3 captured name "class_10"
+CreateParserState: Function 3 captured name "l10"
+CreateParserState: Function 3 captured name "v10"
+CreateParserState: Function 4 captured name "b10"
+CreateParserState: Function 4 captured name "c10"
+CreateParserState: Function 4 captured name "class_10"
+CreateParserState: Function 4 captured name "l10"
+CreateParserState: Function 4 captured name "v10"
+CreateParserState: Function 5 captured name "b10"
+CreateParserState: Function 5 captured name "c10"
+CreateParserState: Function 5 captured name "class_10"
+CreateParserState: Function 5 captured name "l10"
+CreateParserState: Function 5 captured name "v10"
+CreateParserState: Function 6 captured name "a10"
+CreateParserState: Function 6 captured name "b10"
+CreateParserState: Function 6 captured name "c10"
+CreateParserState: Function 6 captured name "class_10"
+CreateParserState: Function 6 captured name "l10"
+CreateParserState: Function 6 captured name "v10"
+CreateParserState: Function 7 captured name "b10"
+CreateParserState: Function 7 captured name "c10"
+CreateParserState: Function 7 captured name "class_10"
+CreateParserState: Function 7 captured name "l10"
+CreateParserState: Function 7 captured name "v10"
 
 lambda capturing special names
-CreateParserState: Function 88 captured name "arguments"
-CreateParserState: Function 89 captured name "*this*"
-CreateParserState: Function 90 captured name "*new.target*"
-CreateParserState: Function 92 captured name "*new.target*"
-CreateParserState: Function 92 captured name "*superconstructor*"
-CreateParserState: Function 92 captured name "*this*"
-CreateParserState: Function 94 captured name "*super*"
-CreateParserState: Function 94 captured name "*this*"
-CreateParserState: Function 97 captured name "arguments"
-CreateParserState: Function 98 captured name "*this*"
-CreateParserState: Function 99 captured name "*new.target*"
-CreateParserState: Function 101 captured name "*new.target*"
-CreateParserState: Function 101 captured name "*superconstructor*"
-CreateParserState: Function 101 captured name "*this*"
-CreateParserState: Function 103 captured name "*super*"
-CreateParserState: Function 103 captured name "*this*"
+CreateParserState: Function 2 captured name "arguments"
+CreateParserState: Function 3 captured name "*this*"
+CreateParserState: Function 4 captured name "*new.target*"
+CreateParserState: Function 6 captured name "*new.target*"
+CreateParserState: Function 6 captured name "*superconstructor*"
+CreateParserState: Function 6 captured name "*this*"
+CreateParserState: Function 8 captured name "*super*"
+CreateParserState: Function 8 captured name "*this*"
+CreateParserState: Function 2 captured name "arguments"
+CreateParserState: Function 3 captured name "*this*"
+CreateParserState: Function 4 captured name "*new.target*"
+CreateParserState: Function 6 captured name "*new.target*"
+CreateParserState: Function 6 captured name "*superconstructor*"
+CreateParserState: Function 6 captured name "*this*"
+CreateParserState: Function 8 captured name "*super*"
+CreateParserState: Function 8 captured name "*this*"
 
 nested function with shadowing block-scoped name
-CreateParserState: Function 105 captured name "v12"
-CreateParserState: Function 107 captured name "v12"
+CreateParserState: Function 1 captured name "v12"
+CreateParserState: Function 1 captured name "v12"
 
 nested functions with a few nested captures
-CreateParserState: Function 111 captured name "a13"
-CreateParserState: Function 111 captured name "b13"
-CreateParserState: Function 111 captured name "c13"
-CreateParserState: Function 111 captured name "d13"
-CreateParserState: Function 110 captured name "a13"
-CreateParserState: Function 110 captured name "b13"
-CreateParserState: Function 113 captured name "b13"
-CreateParserState: Function 113 captured name "f13"
-CreateParserState: Function 112 captured name "b13"
-CreateParserState: Function 112 captured name "e13"
-CreateParserState: Function 112 captured name "f13"
-CreateParserState: Function 109 captured name "a13"
-CreateParserState: Function 109 captured name "e13"
-CreateParserState: Function 109 captured name "f13"
-CreateParserState: Function 117 captured name "a13"
-CreateParserState: Function 117 captured name "b13"
-CreateParserState: Function 117 captured name "c13"
-CreateParserState: Function 117 captured name "d13"
-CreateParserState: Function 116 captured name "a13"
-CreateParserState: Function 116 captured name "b13"
-CreateParserState: Function 119 captured name "b13"
-CreateParserState: Function 119 captured name "f13"
-CreateParserState: Function 118 captured name "b13"
-CreateParserState: Function 118 captured name "e13"
-CreateParserState: Function 118 captured name "f13"
-CreateParserState: Function 115 captured name "a13"
-CreateParserState: Function 115 captured name "e13"
-CreateParserState: Function 115 captured name "f13"
+CreateParserState: Function 3 captured name "a13"
+CreateParserState: Function 3 captured name "b13"
+CreateParserState: Function 3 captured name "c13"
+CreateParserState: Function 3 captured name "d13"
+CreateParserState: Function 2 captured name "a13"
+CreateParserState: Function 2 captured name "b13"
+CreateParserState: Function 5 captured name "b13"
+CreateParserState: Function 5 captured name "f13"
+CreateParserState: Function 4 captured name "b13"
+CreateParserState: Function 4 captured name "e13"
+CreateParserState: Function 4 captured name "f13"
+CreateParserState: Function 1 captured name "a13"
+CreateParserState: Function 1 captured name "e13"
+CreateParserState: Function 1 captured name "f13"
+CreateParserState: Function 3 captured name "a13"
+CreateParserState: Function 3 captured name "b13"
+CreateParserState: Function 3 captured name "c13"
+CreateParserState: Function 3 captured name "d13"
+CreateParserState: Function 2 captured name "a13"
+CreateParserState: Function 2 captured name "b13"
+CreateParserState: Function 5 captured name "b13"
+CreateParserState: Function 5 captured name "f13"
+CreateParserState: Function 4 captured name "b13"
+CreateParserState: Function 4 captured name "e13"
+CreateParserState: Function 4 captured name "f13"
+CreateParserState: Function 1 captured name "a13"
+CreateParserState: Function 1 captured name "e13"
+CreateParserState: Function 1 captured name "f13"
 
 names referenced in param scope can be captured
-CreateParserState: Function 122 captured name "c14"
-CreateParserState: Function 121 captured name "a14"
-CreateParserState: Function 121 captured name "c14"
-CreateParserState: Function 125 captured name "c14"
-CreateParserState: Function 124 captured name "a14"
-CreateParserState: Function 124 captured name "c14"
+CreateParserState: Function 2 captured name "c14"
+CreateParserState: Function 1 captured name "a14"
+CreateParserState: Function 1 captured name "c14"
+CreateParserState: Function 2 captured name "c14"
+CreateParserState: Function 1 captured name "a14"
+CreateParserState: Function 1 captured name "c14"
 
 eval referencing and declaring names
-CreateParserState: Function 127 captured name "b15"
-CreateParserState: Function 127 captured name "c15"
-CreateParserState: Function 127 captured name "eval"
-CreateParserState: Function 129 captured name "b15"
-CreateParserState: Function 129 captured name "c15"
-CreateParserState: Function 129 captured name "eval"
+CreateParserState: Function 1 captured name "b15"
+CreateParserState: Function 1 captured name "c15"
+CreateParserState: Function 1 captured name "eval"
+CreateParserState: Function 1 captured name "b15"
+CreateParserState: Function 1 captured name "c15"
+CreateParserState: Function 1 captured name "eval"
 
 named function expression referencing itself by name
-CreateParserState: Function 131 captured name "f_1"
-CreateParserState: Function 133 captured name "f_1"
+CreateParserState: Function 1 captured name "f_1"
+CreateParserState: Function 1 captured name "f_1"
 
 nested function containing a with statement which has a property shadowing a local
-CreateParserState: Function 135 captured name "a17"
-CreateParserState: Function 135 captured name "o17"
-CreateParserState: Function 137 captured name "a17"
-CreateParserState: Function 137 captured name "o17"
+CreateParserState: Function 1 captured name "a17"
+CreateParserState: Function 1 captured name "o17"
+CreateParserState: Function 1 captured name "a17"
+CreateParserState: Function 1 captured name "o17"
 
 nested function containing a with statement which captures a name
-CreateParserState: Function 139 captured name "a18"
-CreateParserState: Function 139 captured name "d18"
-CreateParserState: Function 139 captured name "o18"
-CreateParserState: Function 141 captured name "a18"
-CreateParserState: Function 141 captured name "d18"
-CreateParserState: Function 141 captured name "o18"
+CreateParserState: Function 1 captured name "a18"
+CreateParserState: Function 1 captured name "d18"
+CreateParserState: Function 1 captured name "o18"
+CreateParserState: Function 1 captured name "a18"
+CreateParserState: Function 1 captured name "d18"
+CreateParserState: Function 1 captured name "o18"