Pārlūkot izejas kodu

Throw a syntax error when the statement of a with statement is a labeled function.

Wyatt Richter 7 gadi atpakaļ
vecāks
revīzija
10cdaa7ca7

+ 26 - 2
lib/Parser/Parse.cpp

@@ -10037,14 +10037,38 @@ LRestart:
         }
 
         Assert(pnode != nullptr);
-        ParseNodeFnc* pNodeFnc = (ParseNodeFnc*)pnode;
+
         if (labelledStatement)
         {
             if (IsStrictMode())
             {
                 Error(ERRFunctionAfterLabelInStrict);
             }
-            else if (pNodeFnc->IsAsync())
+            // #sec-with-statement-static-semantics-early-errors states that the Statement of
+            // a WithStatement throws a Syntax Error if the Statement is a LabelledFunction.
+            else if (m_pstmtCur && m_pstmtCur->pnodeStmt && m_pstmtCur->pnodeStmt->nop == knopWith)
+            {
+                Error(ERRStmtOfWithIsLabelledFunc);
+            }
+
+            ParseNodeFnc* pNodeFnc = nullptr;
+
+            // pnode can be a knopBlock due to ParseFncDeclCheckScope, which
+            // can return a ParseNodeBlock that contains a ParseNodeFnc.
+            if (pnode->nop == knopBlock)
+            {
+                ParseNodeBlock* pNodeBlock = pnode->AsParseNodeBlock();
+                if (pNodeBlock->pnodeStmt && pNodeBlock->pnodeStmt->nop == knopFncDecl)
+                {
+                    pNodeFnc = pNodeBlock->pnodeStmt->AsParseNodeFnc();
+                }
+            }
+            if (pNodeFnc == nullptr)
+            {
+                pNodeFnc = pnode->AsParseNodeFnc();
+            }
+
+            if (pNodeFnc->IsAsync())
             {
                 Error(ERRLabelBeforeAsyncFncDeclaration);
             }

+ 2 - 1
lib/Parser/perrors.h

@@ -111,7 +111,8 @@ LSC_ERROR_MSG(1095, ERRFunctionAfterLabelInStrict, "Function declarations not al
 LSC_ERROR_MSG(1096, ERRAwaitAsLabelInAsync, "Use of 'await' as label in async function is not allowed.")
 LSC_ERROR_MSG(1097, ERRExperimental, "Use of disabled experimental feature")
 LSC_ERROR_MSG(1098, ERRDuplicateExport, "Duplicate export of name '%s'")
-//1098-1199 available for future use
+LSC_ERROR_MSG(1099, ERRStmtOfWithIsLabelledFunc, "The statement of a 'with' statement cannot be a labelled function.")
+//1100-1199 available for future use
 
 // Generic errors intended to be re-usable
 LSC_ERROR_MSG(1200, ERRKeywordAfter, "Unexpected keyword '%s' after '%s'")

+ 2 - 0
test/Function/LabelFuncAsWithStmt.baseline

@@ -0,0 +1,2 @@
+SyntaxError: The statement of a 'with' statement cannot be a labelled function.
+	at code (LabelFuncAsWithStmt.js:7:1)

+ 6 - 0
test/Function/LabelFuncAsWithStmt.js

@@ -0,0 +1,6 @@
+//-------------------------------------------------------------------------------------------------------
+// Copyright (C) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
+//-------------------------------------------------------------------------------------------------------
+
+with ({}) L: function f() { }

+ 515 - 509
test/Function/rlexe.xml

@@ -1,509 +1,515 @@
-<?xml version="1.0" encoding="utf-8"?>
-<regress-exe>
-  <test>
-    <default>
-      <files>apply.js</files>
-      <baseline>apply.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>apply3.js</files>
-      <baseline>apply3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>applyArgs.js</files>
-      <baseline>applyArgs.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>arguments1.js</files>
-      <baseline>arguments1.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>arguments2.js</files>
-      <baseline>arguments2.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>arguments3.js</files>
-      <baseline>arguments3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>arguments4.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>argumentsMisc.js</files>
-      <baseline>argumentsMisc_3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>arguments.es5.js</files>
-      <baseline>arguments.es5.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>argumentsResolution.js</files>
-      <baseline>argumentsResolution_3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>argumentsLimits.js</files>
-      <baseline>argumentsLimits.baseline</baseline>
-      <compile-flags>-EnableFatalErrorOnOOM-</compile-flags>
-      <tags>exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>someMoreArguments.js</files>
-      <baseline>someMoreArguments_3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>bind.js</files>
-      <baseline>bind.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>builtinFuncHasOwnPropCallerArguments.js</files>
-      <compile-flags>-args summary -endargs</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>funcAndboundFuncLength.js</files>
-      <compile-flags>-args summary -endargs</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>call1.js</files>
-      <baseline>call1.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>call2.js</files>
-      <baseline>call2.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>CallerArgs.js</files>
-      <baseline>CallerArgsES5.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>callsideeffects.js</files>
-      <baseline>callsideeffects_3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>catchsymbolvar.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>newsideeffect.js</files>
-      <baseline>newsideeffect.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>newsideeffect.js</files>
-      <baseline>newsideeffect.baseline</baseline>
-      <compile-flags>-Force:Deferparse</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>callmissingtgt.js</files>
-      <baseline>callmissingtgt.6.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>defernested.js</files>
-      <baseline>defernested.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>defernested.js</files>
-      <compile-flags>-Force:Deferparse</compile-flags>
-      <baseline>defernested.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>jitLoopBody.js</files>
-      <baseline>jitLoopBody.baseline</baseline>
-      <compile-flags>-force:jitLoopBody</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredParsing.js</files>
-      <compile-flags>-force:deferparse</compile-flags>
-      <baseline>deferredParsing_3.baseline</baseline>
-      <tags>exclude_test</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredParsing.js</files>
-      <compile-flags>-forceUndoDefer</compile-flags>
-      <baseline>deferredParsing_3.baseline</baseline>
-      <tags>exclude_test</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredGetterSetter.js</files>
-      <compile-flags>-force:deferparse</compile-flags>
-      <baseline>deferredGetterSetter.baseline</baseline>
-      <tags>exclude_test</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredBadContinue.js</files>
-      <baseline>deferredBadContinue.baseline</baseline>
-      <tags>exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredBadContinue.js</files>
-      <baseline>deferredBadContinue.baseline</baseline>
-      <compile-flags>-Force:Deferparse</compile-flags>
-      <tags>exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredstuboob.js</files>
-      <compile-flags>-force:deferparse -pageheap:2</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredWith.js</files>
-      <compile-flags>-Force:Deferparse</compile-flags>
-      <baseline>deferredWith.v4.baseline</baseline>
-      <tags>exclude_test</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>deferredWith2.js</files>
-      <compile-flags>-Force:Deferparse</compile-flags>
-      <baseline>deferredWith2.baseline</baseline>
-      <tags>exclude_test</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>newFunction.js</files>
-      <baseline>newFunction.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>prototype.js</files>
-      <baseline>prototype.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>prototype_set.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>TApply1.js</files>
-      <baseline>TApply1.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>toString.js</files>
-      <baseline>toString.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>toStringAll.js</files>
-      <baseline>toStringAll.baseline</baseline>
-      <tags>exclude_jshost</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>toStringAll.js</files>
-      <baseline>toStringAll.baseline</baseline>
-      <compile-flags>-force:DeferParse</compile-flags>
-      <tags>exclude_jshost</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>toStringAll.js</files>
-      <baseline>toStringAll.baseline</baseline>
-      <compile-flags>-force:DeferParse -ForceSerialized</compile-flags>
-      <tags>exclude_jshost</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>toStringAll.js</files>
-      <baseline>toStringAll.baseline</baseline>
-      <compile-flags>-force:DeferParse -UseParserStateCache -ParserStateCache</compile-flags>
-      <tags>exclude_jshost</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>funcExpr.js</files>
-      <baseline>funcExpr5.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>moreFuncExpr.js</files>
-      <baseline>moreFuncExpr3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>moreFuncExpr.js</files>
-      <baseline>moreFuncExpr3.baseline</baseline>
-      <compile-flags>-forceundodefer</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>evenMoreFuncExpr3.js</files>
-      <baseline>evenMoreFuncExpr3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>someMoreFuncExpr.js</files>
-      <baseline>someMoreFuncExpr3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>constructor.js</files>
-      <baseline>constructor.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>ctrFlags.js</files>
-      <baseline>ctrFlags3.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>typeErrorAccessor.js</files>
-      <baseline>typeErrorAccessor.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.js</files>
-      <baseline>FuncBodyES5.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.bug133933.js</files>
-      <baseline>FuncBody.bug133933.baseline</baseline>
-      <compile-flags>-trace:FunctionSourceInfoParse -off:deferparse</compile-flags>
-      <tags>exclude_test,exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.bug227901.js</files>
-      <baseline>FuncBody.bug227901.baseline</baseline>
-      <compile-flags>-off:deferparse</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.bug232281.js</files>
-      <baseline>FuncBody.bug232281.baseline</baseline>
-      <compile-flags>-off:deferparse</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.bug236810.js</files>
-      <compile-flags>-off:deferparse</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>FuncBody.bug231397.js</files>
-      <baseline>FuncBody.bug231397.baseline</baseline>
-      <compile-flags>-dump:bytecode</compile-flags>
-      <tags>exclude_bytecodelayout,exclude_test,exclude_nonative,require_backend</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>bug_258259.js</files>
-      <compile-flags>-ExtendedErrorStackForTestHost</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>sameNamePara.js</files>
-      <baseline>sameNamePara.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>closure.js</files>
-      <baseline>closure.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>undefThis.js</files>
-      <baseline>undefThis.v10.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>stackargs.js</files>
-      <baseline>stackargs.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>StackArgsWithFormals.js</files>
-      <compile-flags>-mic:1 -off:simpleJit</compile-flags>
-    </default>
-  </test>
-   <test>
-    <default>
-      <files>StackArgsWithFormals.js</files>
-      <compile-flags>-mic:1 -off:simpleJit -forceserialized</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>StackArgsWithFormals.js</files>
-      <compile-flags>-mic:1 -off:simpleJit -forcedeferparse</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>StackArgsWithFormals.js</files>
-      <compile-flags>-mic:1 -off:simpleJit -trace:stackargformalsopt</compile-flags>
-      <tags>exclude_dynapogo,exclude_test,exclude_nonative,require_backend,exclude_forceserialized,exclude_arm64</tags>
-      <baseline>StackArgsWithFormals.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>StackArgs_MaxInterpret.js</files>
-      <compile-flags>-minInterpretCount:1 -maxInterpretCount:1 -off:simpleJit</compile-flags>
-      <tags>exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>stackArgsLenConstOpt.js</files>
-      <compile-flags>-mic:1 -off:simpleJit -testtrace:StackArgLenConstOpt</compile-flags>
-      <tags>exclude_dynapogo,exclude_nonative,require_backend,exclude_forceserialized,exclude_arm64</tags>
-      <baseline>stackArgsLenConstOpt.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>childCallsEvalJitLoopBody.js</files>
-      <baseline />
-      <compile-flags>-prejit</compile-flags>
-      <tags>exclude_test,exclude_dynapogo</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>631838.js</files>
-      <compile-flags>-nonative</compile-flags>
-      <!-- On ARM it would take TOO long (700s on Tegra 2 vs 20s on Intel Core i7) to run, as we need to use even bigger object -->
-      <tags>exclude_dynapogo,exclude_arm,Slow</tags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>calli.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>caller_replaced_proto.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>bug542360.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>crosssite_bind_main.js</files>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>failnativecodeinstall.js</files>
-      <!-- This test expects OOM, -EnableFatalErrorOnOOM- to disable fatal error for this test case. Bug will be filed to address this later -->
-      <compile-flags>-EnableFatalErrorOnOOM- -maxinterpretcount:2 -lic:1 -bgjit -off:simplejit -on:failnativecodeinstall</compile-flags>
-      <tags>exclude_dynapogo,exclude_nonative,require_backend</tags>
-      <baseline>failnativecodeinstall.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>redefer-recursive-inlinees.js</files>
-      <baseline>redefer-recursive-inlinees.baseline</baseline>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>redefer-f-i-b-eval.js</files>
-      <compile-flags>-force:deferparse -force:redeferral</compile-flags>
-    </default>
-  </test>
-  <test>
-    <default>
-      <files>bug_os17698041.js</files>
-      <compile-flags>-off:deferparse -force:redeferral -collectgarbage -parserstatecache -useparserstatecache</compile-flags>
-      <tags>exclude_jshost</tags>
-    </default>
-  </test>
-</regress-exe>
+<?xml version="1.0" encoding="utf-8"?>
+<regress-exe>
+  <test>
+    <default>
+      <files>LabelFuncAsWithStmt.js</files>
+      <baseline>LabelFuncAsWithStmt.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>apply.js</files>
+      <baseline>apply.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>apply3.js</files>
+      <baseline>apply3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>applyArgs.js</files>
+      <baseline>applyArgs.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>arguments1.js</files>
+      <baseline>arguments1.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>arguments2.js</files>
+      <baseline>arguments2.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>arguments3.js</files>
+      <baseline>arguments3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>arguments4.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>argumentsMisc.js</files>
+      <baseline>argumentsMisc_3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>arguments.es5.js</files>
+      <baseline>arguments.es5.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>argumentsResolution.js</files>
+      <baseline>argumentsResolution_3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>argumentsLimits.js</files>
+      <baseline>argumentsLimits.baseline</baseline>
+      <compile-flags>-EnableFatalErrorOnOOM-</compile-flags>
+      <tags>exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>someMoreArguments.js</files>
+      <baseline>someMoreArguments_3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>bind.js</files>
+      <baseline>bind.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>builtinFuncHasOwnPropCallerArguments.js</files>
+      <compile-flags>-args summary -endargs</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>funcAndboundFuncLength.js</files>
+      <compile-flags>-args summary -endargs</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>call1.js</files>
+      <baseline>call1.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>call2.js</files>
+      <baseline>call2.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>CallerArgs.js</files>
+      <baseline>CallerArgsES5.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>callsideeffects.js</files>
+      <baseline>callsideeffects_3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>catchsymbolvar.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>newsideeffect.js</files>
+      <baseline>newsideeffect.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>newsideeffect.js</files>
+      <baseline>newsideeffect.baseline</baseline>
+      <compile-flags>-Force:Deferparse</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>callmissingtgt.js</files>
+      <baseline>callmissingtgt.6.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>defernested.js</files>
+      <baseline>defernested.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>defernested.js</files>
+      <compile-flags>-Force:Deferparse</compile-flags>
+      <baseline>defernested.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>jitLoopBody.js</files>
+      <baseline>jitLoopBody.baseline</baseline>
+      <compile-flags>-force:jitLoopBody</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredParsing.js</files>
+      <compile-flags>-force:deferparse</compile-flags>
+      <baseline>deferredParsing_3.baseline</baseline>
+      <tags>exclude_test</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredParsing.js</files>
+      <compile-flags>-forceUndoDefer</compile-flags>
+      <baseline>deferredParsing_3.baseline</baseline>
+      <tags>exclude_test</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredGetterSetter.js</files>
+      <compile-flags>-force:deferparse</compile-flags>
+      <baseline>deferredGetterSetter.baseline</baseline>
+      <tags>exclude_test</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredBadContinue.js</files>
+      <baseline>deferredBadContinue.baseline</baseline>
+      <tags>exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredBadContinue.js</files>
+      <baseline>deferredBadContinue.baseline</baseline>
+      <compile-flags>-Force:Deferparse</compile-flags>
+      <tags>exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredstuboob.js</files>
+      <compile-flags>-force:deferparse -pageheap:2</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredWith.js</files>
+      <compile-flags>-Force:Deferparse</compile-flags>
+      <baseline>deferredWith.v4.baseline</baseline>
+      <tags>exclude_test</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>deferredWith2.js</files>
+      <compile-flags>-Force:Deferparse</compile-flags>
+      <baseline>deferredWith2.baseline</baseline>
+      <tags>exclude_test</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>newFunction.js</files>
+      <baseline>newFunction.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>prototype.js</files>
+      <baseline>prototype.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>prototype_set.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>TApply1.js</files>
+      <baseline>TApply1.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>toString.js</files>
+      <baseline>toString.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>toStringAll.js</files>
+      <baseline>toStringAll.baseline</baseline>
+      <tags>exclude_jshost</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>toStringAll.js</files>
+      <baseline>toStringAll.baseline</baseline>
+      <compile-flags>-force:DeferParse</compile-flags>
+      <tags>exclude_jshost</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>toStringAll.js</files>
+      <baseline>toStringAll.baseline</baseline>
+      <compile-flags>-force:DeferParse -ForceSerialized</compile-flags>
+      <tags>exclude_jshost</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>toStringAll.js</files>
+      <baseline>toStringAll.baseline</baseline>
+      <compile-flags>-force:DeferParse -UseParserStateCache -ParserStateCache</compile-flags>
+      <tags>exclude_jshost</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>funcExpr.js</files>
+      <baseline>funcExpr5.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>moreFuncExpr.js</files>
+      <baseline>moreFuncExpr3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>moreFuncExpr.js</files>
+      <baseline>moreFuncExpr3.baseline</baseline>
+      <compile-flags>-forceundodefer</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>evenMoreFuncExpr3.js</files>
+      <baseline>evenMoreFuncExpr3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>someMoreFuncExpr.js</files>
+      <baseline>someMoreFuncExpr3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>constructor.js</files>
+      <baseline>constructor.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>ctrFlags.js</files>
+      <baseline>ctrFlags3.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>typeErrorAccessor.js</files>
+      <baseline>typeErrorAccessor.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.js</files>
+      <baseline>FuncBodyES5.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.bug133933.js</files>
+      <baseline>FuncBody.bug133933.baseline</baseline>
+      <compile-flags>-trace:FunctionSourceInfoParse -off:deferparse</compile-flags>
+      <tags>exclude_test,exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.bug227901.js</files>
+      <baseline>FuncBody.bug227901.baseline</baseline>
+      <compile-flags>-off:deferparse</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.bug232281.js</files>
+      <baseline>FuncBody.bug232281.baseline</baseline>
+      <compile-flags>-off:deferparse</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.bug236810.js</files>
+      <compile-flags>-off:deferparse</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>FuncBody.bug231397.js</files>
+      <baseline>FuncBody.bug231397.baseline</baseline>
+      <compile-flags>-dump:bytecode</compile-flags>
+      <tags>exclude_bytecodelayout,exclude_test,exclude_nonative,require_backend</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>bug_258259.js</files>
+      <compile-flags>-ExtendedErrorStackForTestHost</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>sameNamePara.js</files>
+      <baseline>sameNamePara.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>closure.js</files>
+      <baseline>closure.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>undefThis.js</files>
+      <baseline>undefThis.v10.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>stackargs.js</files>
+      <baseline>stackargs.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>StackArgsWithFormals.js</files>
+      <compile-flags>-mic:1 -off:simpleJit</compile-flags>
+    </default>
+  </test>
+   <test>
+    <default>
+      <files>StackArgsWithFormals.js</files>
+      <compile-flags>-mic:1 -off:simpleJit -forceserialized</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>StackArgsWithFormals.js</files>
+      <compile-flags>-mic:1 -off:simpleJit -forcedeferparse</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>StackArgsWithFormals.js</files>
+      <compile-flags>-mic:1 -off:simpleJit -trace:stackargformalsopt</compile-flags>
+      <tags>exclude_dynapogo,exclude_test,exclude_nonative,require_backend,exclude_forceserialized,exclude_arm64</tags>
+      <baseline>StackArgsWithFormals.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>StackArgs_MaxInterpret.js</files>
+      <compile-flags>-minInterpretCount:1 -maxInterpretCount:1 -off:simpleJit</compile-flags>
+      <tags>exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>stackArgsLenConstOpt.js</files>
+      <compile-flags>-mic:1 -off:simpleJit -testtrace:StackArgLenConstOpt</compile-flags>
+      <tags>exclude_dynapogo,exclude_nonative,require_backend,exclude_forceserialized,exclude_arm64</tags>
+      <baseline>stackArgsLenConstOpt.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>childCallsEvalJitLoopBody.js</files>
+      <baseline />
+      <compile-flags>-prejit</compile-flags>
+      <tags>exclude_test,exclude_dynapogo</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>631838.js</files>
+      <compile-flags>-nonative</compile-flags>
+      <!-- On ARM it would take TOO long (700s on Tegra 2 vs 20s on Intel Core i7) to run, as we need to use even bigger object -->
+      <tags>exclude_dynapogo,exclude_arm,Slow</tags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>calli.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>caller_replaced_proto.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>bug542360.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>crosssite_bind_main.js</files>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>failnativecodeinstall.js</files>
+      <!-- This test expects OOM, -EnableFatalErrorOnOOM- to disable fatal error for this test case. Bug will be filed to address this later -->
+      <compile-flags>-EnableFatalErrorOnOOM- -maxinterpretcount:2 -lic:1 -bgjit -off:simplejit -on:failnativecodeinstall</compile-flags>
+      <tags>exclude_dynapogo,exclude_nonative,require_backend</tags>
+      <baseline>failnativecodeinstall.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>redefer-recursive-inlinees.js</files>
+      <baseline>redefer-recursive-inlinees.baseline</baseline>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>redefer-f-i-b-eval.js</files>
+      <compile-flags>-force:deferparse -force:redeferral</compile-flags>
+    </default>
+  </test>
+  <test>
+    <default>
+      <files>bug_os17698041.js</files>
+      <compile-flags>-off:deferparse -force:redeferral -collectgarbage -parserstatecache -useparserstatecache</compile-flags>
+      <tags>exclude_jshost</tags>
+    </default>
+  </test>
+</regress-exe>