Source/JavaScriptCore/ChangeLog

 12017-03-20 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval
 4 https://bugs.webkit.org/show_bug.cgi?id=163208
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Current patch implements Annex B.3.3 that is related to
 9 hoisting of function declaration in eval.
 10 https://tc39.github.io/ecma262/#sec-web-compat-evaldeclarationinstantiation
 11 Function declaration in eval should create variable with
 12 function name in function scope where eval is invoked
 13 or bind to variable if it declared outside of the eval.
 14 If variable is created it can be removed by 'delete a;' command.
 15 If eval is invoke in block scope that contains let/const
 16 variable with the same name as function declaration
 17 we do not bind. This patch leads to the following behavior:
 18 '''
 19 function foo() {
 20 {
 21 print(boo); // undefined
 22 eval('{ function boo() {}}');
 23 print(boo); // function boo() {}
 24 }
 25 print(boo); // function boo() {}
 26 }
 27
 28 function foobar() {
 29 {
 30 let boo = 10;
 31 print(boo); // 10;
 32 eval('{ function boo() {}}');
 33 print(boo); // 10;
 34 }
 35 print(boo) // 10
 36 }
 37
 38 function bar() {
 39 {
 40 var boo = 10;
 41 print(boo); // 10
 42 eval('{ function boo() {} }');
 43 print(boo); // function boo() {}
 44 }
 45 print(boo); // function boo() {}
 46 }
 47
 48 function bas() {
 49 {
 50 let boo = 10;
 51 eval(' { function boo() {} } ');
 52 print(boo); // 10
 53 }
 54 print(boo); //Reference Error
 55 }
 56 '''
 57
 58 Current implementation relies on already implemented
 59 'hoist function in sloppy mode' feature, with small changes.
 60 In short it works in following way: during hoisting of function
 61 with name S in eval, we are looking for first scope that
 62 contains space for variable with name S and if this scope
 63 has var type we bind function there
 64
 65 To implement this feature was added bytecode ops:
 66 op_resolve_scope_for_hoisting_func_decl_in_eval - get variable scope
 67 or return undefined if variable can't be binded there.
 68
 69 There is a corner case, hoist function in eval within catch block,
 70 that is not covered by this patch, and will be fixed in
 71 https://bugs.webkit.org/show_bug.cgi?id=168184
 72
 73 * bytecode/BytecodeList.json:
 74 * bytecode/BytecodeUseDef.h:
 75 (JSC::computeUsesForBytecodeOffset):
 76 (JSC::computeDefsForBytecodeOffset):
 77 * bytecode/CodeBlock.cpp:
 78 (JSC::CodeBlock::finalizeLLIntInlineCaches):
 79 * bytecode/EvalCodeBlock.h:
 80 (JSC::EvalCodeBlock::codeBlockFunction):
 81 (JSC::EvalCodeBlock::numCodeBlockFunctionDecls):
 82 * bytecode/UnlinkedEvalCodeBlock.h:
 83 * bytecompiler/BytecodeGenerator.cpp:
 84 (JSC::BytecodeGenerator::BytecodeGenerator):
 85 (JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary):
 86 (JSC::BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval):
 87 * bytecompiler/BytecodeGenerator.h:
 88 * dfg/DFGAbstractInterpreterInlines.h:
 89 (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
 90 * dfg/DFGByteCodeParser.cpp:
 91 (JSC::DFG::ByteCodeParser::parseBlock):
 92 * dfg/DFGCapabilities.cpp:
 93 (JSC::DFG::capabilityLevel):
 94 * dfg/DFGClobberize.h:
 95 (JSC::DFG::clobberize):
 96 * dfg/DFGDoesGC.cpp:
 97 (JSC::DFG::doesGC):
 98 * dfg/DFGFixupPhase.cpp:
 99 (JSC::DFG::FixupPhase::fixupNode):
 100 * dfg/DFGNode.h:
 101 (JSC::DFG::Node::hasIdentifier):
 102 * dfg/DFGNodeType.h:
 103 * dfg/DFGOperations.cpp:
 104 * dfg/DFGOperations.h:
 105 * dfg/DFGPredictionPropagationPhase.cpp:
 106 * dfg/DFGSafeToExecute.h:
 107 (JSC::DFG::safeToExecute):
 108 * dfg/DFGSpeculativeJIT.cpp:
 109 (JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):
 110 * dfg/DFGSpeculativeJIT.h:
 111 (JSC::DFG::SpeculativeJIT::callOperation):
 112 * dfg/DFGSpeculativeJIT32_64.cpp:
 113 (JSC::DFG::SpeculativeJIT::compile):
 114 * dfg/DFGSpeculativeJIT64.cpp:
 115 (JSC::DFG::SpeculativeJIT::compile):
 116 * ftl/FTLCapabilities.cpp:
 117 (JSC::FTL::canCompile):
 118 * ftl/FTLLowerDFGToB3.cpp:
 119 (JSC::FTL::DFG::LowerDFGToB3::compileNode):
 120 (JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval):
 121 * interpreter/Interpreter.cpp:
 122 (JSC::Interpreter::execute):
 123 * jit/JIT.cpp:
 124 (JSC::JIT::privateCompileMainPass):
 125 * jit/JIT.h:
 126 * jit/JITOperations.h:
 127 * jit/JITPropertyAccess.cpp:
 128 (JSC::JIT::emitResolveClosure):
 129 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):
 130 * jit/JITPropertyAccess32_64.cpp:
 131 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):
 132 * llint/LowLevelInterpreter.asm:
 133 * parser/Parser.cpp:
 134 (JSC::Parser<LexerType>::parseFunctionDeclarationStatement):
 135 * parser/Parser.h:
 136 (JSC::Scope::getSloppyModeHoistedFunctions):
 137 (JSC::Parser::declareFunction):
 138 * runtime/CommonSlowPaths.cpp:
 139 (JSC::SLOW_PATH_DECL):
 140 * runtime/CommonSlowPaths.h:
 141 * runtime/EvalExecutable.h:
 142 (JSC::EvalExecutable::numCodeBlockFunctionDecls):
 143 (JSC::EvalExecutable::numTopLevelFunctionDecls):
 144 * runtime/JSScope.cpp:
 145 (JSC::JSScope::resolve):
 146 (JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):
 147 * runtime/JSScope.h:
 148
11492017-03-19 Chris Dumez <cdumez@apple.com>
2150
3151 `const location = "foo"` throws in a worker

Source/JavaScriptCore/bytecode/BytecodeList.json

152152 { "name" : "op_yield", "length" : 4 },
153153 { "name" : "op_check_traps", "length" : 1 },
154154 { "name" : "op_log_shadow_chicken_prologue", "length" : 2},
155  { "name" : "op_log_shadow_chicken_tail", "length" : 3}
 155 { "name" : "op_log_shadow_chicken_tail", "length" : 3},
 156 { "name" : "op_resolve_scope_for_hoisting_func_decl_in_eval", "length" : 4 }
156157 ]
157158 },
158159 {

Source/JavaScriptCore/bytecode/BytecodeUseDef.h

@@void computeUsesForBytecodeOffset(Block* codeBlock, OpcodeID opcodeID, Instructi
170170 case op_to_index_string:
171171 case op_create_lexical_environment:
172172 case op_resolve_scope:
 173 case op_resolve_scope_for_hoisting_func_decl_in_eval:
173174 case op_get_from_scope:
174175 case op_to_primitive:
175176 case op_try_get_by_id:

@@void computeDefsForBytecodeOffset(Block* codeBlock, OpcodeID opcodeID, Instructi
382383 case op_push_with_scope:
383384 case op_create_lexical_environment:
384385 case op_resolve_scope:
 386 case op_resolve_scope_for_hoisting_func_decl_in_eval:
385387 case op_strcat:
386388 case op_to_primitive:
387389 case op_create_this:

Source/JavaScriptCore/bytecode/CodeBlock.cpp

@@void CodeBlock::finalizeLLIntInlineCaches()
13051305 curInstruction[7].u.structureChain.clear();
13061306 break;
13071307 }
 1308 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=166418
 1309 // We need to add optimizations for op_resolve_scope_for_hoisting_func_decl_in_eval to do link time scope resolution.
 1310 case op_resolve_scope_for_hoisting_func_decl_in_eval:
 1311 break;
13081312 case op_get_array_length:
13091313 break;
13101314 case op_to_this:

Source/JavaScriptCore/bytecode/EvalCodeBlock.h

@@public:
6363
6464 const Identifier& variable(unsigned index) { return unlinkedEvalCodeBlock()->variable(index); }
6565 unsigned numVariables() { return unlinkedEvalCodeBlock()->numVariables(); }
 66 const Identifier& codeBlockFunction(unsigned index) { return unlinkedEvalCodeBlock()->codeBlockFunction(index); }
 67 unsigned numCodeBlockFunctionDecls() { return unlinkedEvalCodeBlock()->numCodeBlockFunctionDecls(); }
6668
6769private:
6870 EvalCodeBlock(VM* vm, Structure* structure, CopyParsedBlockTag, EvalCodeBlock& other)

Source/JavaScriptCore/bytecode/UnlinkedEvalCodeBlock.h

@@public:
5151 m_variables.swap(variables);
5252 }
5353
 54 const Identifier& codeBlockFunction(unsigned index) { return m_codeBlockFunctions[index]; }
 55 unsigned numCodeBlockFunctionDecls() { return m_codeBlockFunctions.size(); }
 56 void adoptCodeBlockFunctions(Vector<Identifier, 0, UnsafeVectorOverflow>& codeBlockFunctions)
 57 {
 58 ASSERT(m_codeBlockFunctions.isEmpty());
 59 m_codeBlockFunctions.swap(codeBlockFunctions);
 60 }
5461private:
5562 UnlinkedEvalCodeBlock(VM* vm, Structure* structure, const ExecutableInfo& info, DebuggerMode debuggerMode)
5663 : Base(vm, structure, EvalCode, info, debuggerMode)

@@private:
5865 }
5966
6067 Vector<Identifier, 0, UnsafeVectorOverflow> m_variables;
 68 Vector<Identifier, 0, UnsafeVectorOverflow> m_codeBlockFunctions;
6169
6270public:
6371 static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)

Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

@@BytecodeGenerator::BytecodeGenerator(VM& vm, EvalNode* evalNode, UnlinkedEvalCod
756756
757757 emitCheckTraps();
758758
759  const DeclarationStacks::FunctionStack& functionStack = evalNode->functionStack();
760  for (size_t i = 0; i < functionStack.size(); ++i)
761  m_codeBlock->addFunctionDecl(makeFunction(functionStack[i]));
 759 for (FunctionMetadataNode* function : evalNode->functionStack())
 760 m_codeBlock->addFunctionDecl(makeFunction(function));
762761
763762 const VariableEnvironment& varDeclarations = evalNode->varDeclarations();
764  unsigned numVariables = varDeclarations.size();
765763 Vector<Identifier, 0, UnsafeVectorOverflow> variables;
766  variables.reserveCapacity(numVariables);
 764 Vector<Identifier, 0, UnsafeVectorOverflow> hoistedFunctions;
767765 for (auto& entry : varDeclarations) {
768766 ASSERT(entry.value.isVar());
769767 ASSERT(entry.key->isAtomic() || entry.key->isSymbol());
770  variables.append(Identifier::fromUid(m_vm, entry.key.get()));
 768 if (!entry.value.isSloppyModeHoistingCandidate())
 769 variables.append(Identifier::fromUid(m_vm, entry.key.get()));
 770 else
 771 hoistedFunctions.append(Identifier::fromUid(m_vm, entry.key.get()));
771772 }
772773 codeBlock->adoptVariables(variables);
 774 codeBlock->adoptCodeBlockFunctions(hoistedFunctions);
773775
774776 if (evalNode->usesSuperCall() || evalNode->usesNewTarget())
775777 m_newTargetRegister = addVar();

@@void BytecodeGenerator::initializeBlockScopedFunctions(VariableEnvironment& envi
21752177void BytecodeGenerator::hoistSloppyModeFunctionIfNecessary(const Identifier& functionName)
21762178{
21772179 if (m_scopeNode->hasSloppyModeHoistedFunction(functionName.impl())) {
2178  Variable currentFunctionVariable = variable(functionName);
2179  RefPtr<RegisterID> currentValue;
2180  if (RegisterID* local = currentFunctionVariable.local())
2181  currentValue = local;
2182  else {
2183  RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable);
2184  currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound);
2185  }
2186 
2187  ASSERT(m_varScopeLexicalScopeStackIndex);
2188  ASSERT(*m_varScopeLexicalScopeStackIndex < m_lexicalScopeStack.size());
2189  LexicalScopeStackEntry varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex];
2190  SymbolTable* varSymbolTable = varScope.m_symbolTable;
2191  ASSERT(varSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope);
2192  SymbolTableEntry entry = varSymbolTable->get(NoLockingNecessary, functionName.impl());
2193  if (functionName == propertyNames().arguments && entry.isNull()) {
2194  // "arguments" might be put in the parameter scope when we have a non-simple
2195  // parameter list since "arguments" is visible to expressions inside the
2196  // parameter evaluation list.
2197  // e.g:
2198  // function foo(x = arguments) { { function arguments() { } } }
2199  RELEASE_ASSERT(*m_varScopeLexicalScopeStackIndex > 0);
2200  varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex - 1];
2201  SymbolTable* parameterSymbolTable = varScope.m_symbolTable;
2202  entry = parameterSymbolTable->get(NoLockingNecessary, functionName.impl());
 2180 if (codeType() != EvalCode) {
 2181 Variable currentFunctionVariable = variable(functionName);
 2182 RefPtr<RegisterID> currentValue;
 2183 if (RegisterID* local = currentFunctionVariable.local())
 2184 currentValue = local;
 2185 else {
 2186 RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable);
 2187 currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound);
 2188 }
 2189
 2190 ASSERT(m_varScopeLexicalScopeStackIndex);
 2191 ASSERT(*m_varScopeLexicalScopeStackIndex < m_lexicalScopeStack.size());
 2192 LexicalScopeStackEntry varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex];
 2193 SymbolTable* varSymbolTable = varScope.m_symbolTable;
 2194 ASSERT(varSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope);
 2195 SymbolTableEntry entry = varSymbolTable->get(NoLockingNecessary, functionName.impl());
 2196 if (functionName == propertyNames().arguments && entry.isNull()) {
 2197 // "arguments" might be put in the parameter scope when we have a non-simple
 2198 // parameter list since "arguments" is visible to expressions inside the
 2199 // parameter evaluation list.
 2200 // e.g:
 2201 // function foo(x = arguments) { { function arguments() { } } }
 2202 RELEASE_ASSERT(*m_varScopeLexicalScopeStackIndex > 0);
 2203 varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex - 1];
 2204 SymbolTable* parameterSymbolTable = varScope.m_symbolTable;
 2205 entry = parameterSymbolTable->get(NoLockingNecessary, functionName.impl());
 2206 }
 2207 RELEASE_ASSERT(!entry.isNull());
 2208 bool isLexicallyScoped = false;
 2209 emitPutToScope(varScope.m_scope, variableForLocalEntry(functionName, entry, varScope.m_symbolTableConstantIndex, isLexicallyScoped), currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization);
 2210 } else {
 2211 Variable currentFunctionVariable = variable(functionName);
 2212 RefPtr<RegisterID> currentValue;
 2213 if (RegisterID* local = currentFunctionVariable.local())
 2214 currentValue = local;
 2215 else {
 2216 RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable);
 2217 currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound);
 2218 }
 2219
 2220 RefPtr<RegisterID> scopeId = emitResolveScopeForHoistingFuncDeclInEval(nullptr, functionName);
 2221 RefPtr<RegisterID> checkResult = emitIsUndefined(newTemporary(), scopeId.get());
 2222
 2223 Ref<Label> isNotVarScopeLabel = newLabel();
 2224 emitJumpIfTrue(checkResult.get(), isNotVarScopeLabel.get());
 2225 ASSERT_UNUSED(checkResult.get(), checkResult.get() != nullptr);
 2226
 2227 // Put to outer scope
 2228 emitPutToScope(scopeId.get(), functionName, currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization);
 2229 emitLabel(isNotVarScopeLabel.get());
 2230
22032231 }
2204  RELEASE_ASSERT(!entry.isNull());
2205  bool isLexicallyScoped = false;
2206  emitPutToScope(varScope.m_scope, variableForLocalEntry(functionName, entry, varScope.m_symbolTableConstantIndex, isLexicallyScoped), currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization);
22072232 }
22082233}
22092234
 2235RegisterID* BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval(RegisterID* dst, const Identifier& property)
 2236{
 2237 ASSERT(m_codeType == EvalCode);
 2238
 2239 dst = finalDestination(dst);
 2240 emitOpcode(op_resolve_scope_for_hoisting_func_decl_in_eval);
 2241 instructions().append(kill(dst));
 2242 instructions().append(m_topMostScope->index());
 2243 instructions().append(addConstant(property));
 2244 return dst;
 2245}
 2246
22102247void BytecodeGenerator::popLexicalScope(VariableEnvironmentNode* node)
22112248{
22122249 VariableEnvironment& environment = node->lexicalVariables();

Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h

@@namespace JSC {
693693 RegisterID* emitResolveScope(RegisterID* dst, const Variable&);
694694 RegisterID* emitGetFromScope(RegisterID* dst, RegisterID* scope, const Variable&, ResolveMode);
695695 RegisterID* emitPutToScope(RegisterID* scope, const Variable&, RegisterID* value, ResolveMode, InitializationMode);
 696
 697 RegisterID* emitResolveScopeForHoistingFuncDeclInEval(RegisterID* dst, const Identifier&);
 698
696699 RegisterID* initializeVariable(const Variable&, RegisterID* value);
697700
698701 void emitLabel(Label&);

Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h

@@bool AbstractInterpreter<AbstractStateType>::executeEffects(unsigned clobberLimi
28472847 clobberWorld(node->origin.semantic, clobberLimit);
28482848 forNode(node).setType(m_graph, SpecObject);
28492849 break;
2850 
 2850
 2851 case ResolveScopeForHoistingFuncDeclInEval:
 2852 clobberWorld(node->origin.semantic, clobberLimit);
 2853 forNode(node).makeBytecodeTop();
 2854 break;
 2855
28512856 case PutGlobalVariable:
28522857 case NotifyWrite:
28532858 break;
2854 
 2859
28552860 case OverridesHasInstance:
28562861 forNode(node).setType(SpecBoolean);
28572862 break;

Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

@@bool ByteCodeParser::parseBlock(unsigned limit)
50965096 }
50975097 NEXT_OPCODE(op_resolve_scope);
50985098 }
 5099 case op_resolve_scope_for_hoisting_func_decl_in_eval: {
 5100 int dst = currentInstruction[1].u.operand;
 5101 int scope = currentInstruction[2].u.operand;
 5102 unsigned identifierNumber = m_inlineStackTop->m_identifierRemap[currentInstruction[3].u.operand];
 5103
 5104 set(VirtualRegister(dst), addToGraph(ResolveScopeForHoistingFuncDeclInEval, OpInfo(identifierNumber), get(VirtualRegister(scope))));
 5105
 5106 NEXT_OPCODE(op_resolve_scope_for_hoisting_func_decl_in_eval);
 5107 }
50995108
51005109 case op_get_from_scope: {
51015110 int dst = currentInstruction[1].u.operand;

Source/JavaScriptCore/dfg/DFGCapabilities.cpp

@@CapabilityLevel capabilityLevel(OpcodeID opcodeID, CodeBlock* codeBlock, Instruc
247247 case op_log_shadow_chicken_tail:
248248 case op_put_to_scope:
249249 case op_resolve_scope:
 250 case op_resolve_scope_for_hoisting_func_decl_in_eval:
250251 case op_new_regexp:
251252 return CanCompileAndInline;
252253

Source/JavaScriptCore/dfg/DFGClobberize.h

@@void clobberize(Graph& graph, Node* node, const ReadFunctor& read, const WriteFu
564564 case SetFunctionName:
565565 case GetDynamicVar:
566566 case PutDynamicVar:
 567 case ResolveScopeForHoistingFuncDeclInEval:
567568 case ResolveScope:
568569 read(World);
569570 write(Heap);

Source/JavaScriptCore/dfg/DFGDoesGC.cpp

@@bool doesGC(Graph& graph, Node* node)
266266 case LogShadowChickenTail:
267267 case GetDynamicVar:
268268 case PutDynamicVar:
 269 case ResolveScopeForHoistingFuncDeclInEval:
269270 case ResolveScope:
270271 case NukeStructureAndSetButterfly:
271272 return false;

Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

@@private:
16421642 break;
16431643 }
16441644
 1645 case ResolveScopeForHoistingFuncDeclInEval: {
 1646 fixEdge<KnownCellUse>(node->child1());
 1647 break;
 1648 }
16451649 case ResolveScope:
16461650 case GetDynamicVar:
16471651 case PutDynamicVar: {

Source/JavaScriptCore/dfg/DFGNode.h

@@public:
948948 case DeleteById:
949949 case GetDynamicVar:
950950 case PutDynamicVar:
 951 case ResolveScopeForHoistingFuncDeclInEval:
951952 case ResolveScope:
952953 return true;
953954 default:

Source/JavaScriptCore/dfg/DFGNodeType.h

@@namespace JSC { namespace DFG {
226226 macro(GetScope, NodeResultJS) \
227227 macro(SkipScope, NodeResultJS) \
228228 macro(ResolveScope, NodeResultJS | NodeMustGenerate) \
 229 macro(ResolveScopeForHoistingFuncDeclInEval, NodeResultJS | NodeMustGenerate) \
229230 macro(GetGlobalObject, NodeResultJS) \
230231 macro(GetClosureVar, NodeResultJS) \
231232 macro(PutClosureVar, NodeMustGenerate) \

Source/JavaScriptCore/dfg/DFGOperations.cpp

@@void JIT_OPERATION debugOperationPrintSpeculationFailure(ExecState* exec, void*
21332133 dataLog("\n");
21342134}
21352135
 2136EncodedJSValue JIT_OPERATION operationResolveScopeForHoistingFuncDeclInEval(ExecState* exec, JSScope* scope, UniquedStringImpl* impl)
 2137{
 2138 VM& vm = exec->vm();
 2139 NativeCallFrameTracer tracer(&vm, exec);
 2140
 2141 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(exec, scope, Identifier::fromUid(exec, impl));
 2142 return JSValue::encode(resolvedScope);
 2143}
 2144
21362145JSCell* JIT_OPERATION operationResolveScope(ExecState* exec, JSScope* scope, UniquedStringImpl* impl)
21372146{
21382147 VM& vm = exec->vm();

Source/JavaScriptCore/dfg/DFGOperations.h

@@JSCell* JIT_OPERATION operationSpreadGeneric(ExecState*, JSCell*);
200200JSCell* JIT_OPERATION operationNewArrayWithSpreadSlow(ExecState*, void*, uint32_t);
201201
202202JSCell* JIT_OPERATION operationResolveScope(ExecState*, JSScope*, UniquedStringImpl*);
 203EncodedJSValue JIT_OPERATION operationResolveScopeForHoistingFuncDeclInEval(ExecState*, JSScope*, UniquedStringImpl*);
203204EncodedJSValue JIT_OPERATION operationGetDynamicVar(ExecState*, JSObject* scope, UniquedStringImpl*, unsigned);
204205void JIT_OPERATION operationPutDynamicVar(ExecState*, JSObject* scope, EncodedJSValue, UniquedStringImpl*, unsigned);
205206

Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp

@@private:
715715 break;
716716 }
717717
 718 case ResolveScopeForHoistingFuncDeclInEval:
718719 case GetDynamicVar: {
719720 setPrediction(SpecBytecodeTop);
720721 break;

Source/JavaScriptCore/dfg/DFGSafeToExecute.h

@@bool safeToExecute(AbstractStateType& state, Graph& graph, Node* node)
375375 case RecordRegExpCachedResult:
376376 case GetDynamicVar:
377377 case PutDynamicVar:
 378 case ResolveScopeForHoistingFuncDeclInEval:
378379 case ResolveScope:
379380 case MapHash:
380381 case ToLowerCase:

Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

@@void SpeculativeJIT::compileResolveScope(Node* node)
93129312 cellResult(resultGPR, node);
93139313}
93149314
 9315void SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval(Node* node)
 9316{
 9317 SpeculateCellOperand scope(this, node->child1());
 9318 GPRReg scopeGPR = scope.gpr();
 9319#if USE(JSVALUE64)
 9320 GPRFlushedCallResult result(this);
 9321 GPRReg resultGPR = result.gpr();
 9322 flushRegisters();
 9323 callOperation(operationResolveScopeForHoistingFuncDeclInEval, resultGPR, scopeGPR, identifierUID(node->identifierNumber()));
 9324 m_jit.exceptionCheck();
 9325 jsValueResult(result.gpr(), node);
 9326#else
 9327 flushRegisters();
 9328 GPRFlushedCallResult2 resultTag(this);
 9329 GPRFlushedCallResult resultPayload(this);
 9330 callOperation(operationResolveScopeForHoistingFuncDeclInEval, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), scopeGPR, identifierUID(node->identifierNumber()));
 9331 m_jit.exceptionCheck();
 9332 jsValueResult(resultTag.gpr(), resultPayload.gpr(), node);
 9333#endif
 9334}
 9335
93159336void SpeculativeJIT::compileGetDynamicVar(Node* node)
93169337{
93179338 SpeculateCellOperand scope(this, node->child1());

Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

@@public:
13751375 return appendCallSetResult(operation, result);
13761376 }
13771377
 1378 JITCompiler::Call callOperation(S_JITOperation_EO operation, GPRReg result, GPRReg arg1)
 1379 {
 1380 m_jit.setupArgumentsWithExecState(arg1);
 1381 return appendCallSetResult(operation, result);
 1382 }
 1383
13781384 JITCompiler::Call callOperation(C_JITOperation_EJscI operation, GPRReg result, GPRReg arg1, UniquedStringImpl* impl)
13791385 {
13801386 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl));
13811387 return appendCallSetResult(operation, result);
13821388 }
13831389
1384 
13851390#if USE(JSVALUE64)
13861391 JITCompiler::Call callOperation(Z_JITOperation_EOJ operation, GPRReg result, GPRReg arg1, GPRReg arg2)
13871392 {

@@public:
14081413 m_jit.setupArgumentsWithExecState(arg1, arg2, TrustedImmPtr(uid));
14091414 return appendCallSetResult(operation, result);
14101415 }
 1416 JITCompiler::Call callOperation(J_JITOperation_EJscI operation, GPRReg result, GPRReg arg1, UniquedStringImpl* impl)
 1417 {
 1418 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl));
 1419 return appendCallSetResult(operation, result);
 1420 }
14111421 JITCompiler::Call callOperation(V_JITOperation_EJJJI operation, GPRReg arg1, GPRReg arg2, GPRReg arg3, UniquedStringImpl* uid)
14121422 {
14131423 m_jit.setupArgumentsWithExecState(arg1, arg2, arg3, TrustedImmPtr(uid));

@@public:
19361946 m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR(), arg4.payloadGPR(), arg4.tagGPR());
19371947 return appendCall(operation);
19381948 }
 1949 JITCompiler::Call callOperation(J_JITOperation_EJscI operation, JSValueRegs result, GPRReg arg1, UniquedStringImpl* impl)
 1950 {
 1951 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl));
 1952 return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
 1953 }
19391954 JITCompiler::Call callOperation(V_JITOperation_EOJJZ operation, GPRReg arg1, JSValueRegs arg2, JSValueRegs arg3, GPRReg arg4)
19401955 {
19411956 m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR(), arg4);

@@public:
28182833 void compileRecordRegExpCachedResult(Node*);
28192834 void compileCallObjectConstructor(Node*);
28202835 void compileResolveScope(Node*);
 2836 void compileResolveScopeForHoistingFuncDeclInEval(Node*);
28212837 void compileGetDynamicVar(Node*);
28222838 void compilePutDynamicVar(Node*);
28232839 void compileCompareEqPtr(Node*);

Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

@@void SpeculativeJIT::compile(Node* node)
56055605 break;
56065606 }
56075607
 5608 case ResolveScopeForHoistingFuncDeclInEval: {
 5609 compileResolveScopeForHoistingFuncDeclInEval(node);
 5610 break;
 5611 }
 5612
56085613 case ResolveScope: {
56095614 compileResolveScope(node);
56105615 break;

Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

@@void SpeculativeJIT::compile(Node* node)
46344634 compileGetDynamicVar(node);
46354635 break;
46364636 }
 4637
 4638 case ResolveScopeForHoistingFuncDeclInEval: {
 4639 compileResolveScopeForHoistingFuncDeclInEval(node);
 4640 break;
 4641 }
46374642
46384643 case ResolveScope: {
46394644 compileResolveScope(node);

Source/JavaScriptCore/ftl/FTLCapabilities.cpp

@@inline CapabilityLevel canCompile(Node* node)
267267 case LogShadowChickenPrologue:
268268 case LogShadowChickenTail:
269269 case ResolveScope:
 270 case ResolveScopeForHoistingFuncDeclInEval:
270271 case GetDynamicVar:
271272 case PutDynamicVar:
272273 case CompareEq:

Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

@@private:
10631063 case RecordRegExpCachedResult:
10641064 compileRecordRegExpCachedResult();
10651065 break;
 1066 case ResolveScopeForHoistingFuncDeclInEval:
 1067 compileResolveScopeForHoistingFuncDeclInEval();
 1068 break;
10661069 case ResolveScope:
10671070 compileResolveScope();
10681071 break;

@@private:
99849987 setJSValue(m_out.phi(pointerType(), fastResult, slowResult));
99859988 }
99869989
 9990 void compileResolveScopeForHoistingFuncDeclInEval()
 9991 {
 9992 UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()];
 9993 setJSValue(vmCall(pointerType(), m_out.operation(operationResolveScopeForHoistingFuncDeclInEval), m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid)));
 9994 }
 9995
99879996 void compileResolveScope()
99889997 {
99899998 UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()];

Source/JavaScriptCore/interpreter/Interpreter.cpp

@@JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSValue
10911091 return checkedReturn(throwStackOverflowError(callFrame, throwScope));
10921092
10931093 unsigned numVariables = eval->numVariables();
1094  int numFunctions = eval->numberOfFunctionDecls();
 1094 int numTopLevelFunctionDecls = eval->numTopLevelFunctionDecls();
 1095 unsigned numCodeBlockFunctionDecls = eval->numCodeBlockFunctionDecls();
10951096
10961097 JSScope* variableObject;
1097  if ((numVariables || numFunctions) && eval->isStrictMode()) {
 1098 if ((numVariables || numTopLevelFunctionDecls) && eval->isStrictMode()) {
10981099 scope = StrictEvalActivation::create(callFrame, scope);
10991100 variableObject = scope;
11001101 } else {

@@JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSValue
11251126 }
11261127
11271128 // We can't declare a "var"/"function" that overwrites a global "let"/"const"/"class" in a sloppy-mode eval.
1128  if (variableObject->isGlobalObject() && !eval->isStrictMode() && (numVariables || numFunctions)) {
 1129 if (variableObject->isGlobalObject() && !eval->isStrictMode() && (numVariables || numTopLevelFunctionDecls)) {
11291130 JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast<JSGlobalObject*>(variableObject)->globalLexicalEnvironment();
11301131 for (unsigned i = 0; i < numVariables; ++i) {
11311132 const Identifier& ident = codeBlock->variable(i);

@@JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSValue
11351136 }
11361137 }
11371138
1138  for (int i = 0; i < numFunctions; ++i) {
 1139 for (int i = 0; i < numTopLevelFunctionDecls; ++i) {
11391140 FunctionExecutable* function = codeBlock->functionDecl(i);
11401141 PropertySlot slot(globalLexicalEnvironment, PropertySlot::InternalMethodType::VMInquiry);
11411142 if (JSGlobalLexicalEnvironment::getOwnPropertySlot(globalLexicalEnvironment, callFrame, function->name(), slot)) {

@@JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSValue
11471148 if (variableObject->structure()->isUncacheableDictionary())
11481149 variableObject->flattenDictionaryObject(vm);
11491150
1150  if (numVariables || numFunctions) {
 1151 if (numVariables || numTopLevelFunctionDecls || numCodeBlockFunctionDecls) {
11511152 BatchedTransitionOptimizer optimizer(vm, variableObject);
11521153 if (variableObject->next() && !eval->isStrictMode())
11531154 variableObject->globalObject()->varInjectionWatchpoint()->fireAll(vm, "Executed eval, fired VarInjection watchpoint");

@@JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSValue
11621163 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception()));
11631164 }
11641165 }
 1166
 1167 if (eval->isStrictMode()) {
 1168 for (int i = 0; i < numTopLevelFunctionDecls; ++i) {
 1169 FunctionExecutable* function = codeBlock->functionDecl(i);
 1170 PutPropertySlot slot(variableObject);
 1171 variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot);
 1172 }
 1173 } else {
 1174 for (int i = 0; i < numTopLevelFunctionDecls; ++i) {
 1175 FunctionExecutable* function = codeBlock->functionDecl(i);
 1176 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(callFrame, scope, function->name());
 1177 if (resolvedScope.isUndefined())
 1178 return checkedReturn(throwSyntaxError(callFrame, throwScope, makeString("Can't create duplicate variable in eval: '", String(function->name().impl()), "'")));
 1179 PutPropertySlot slot(variableObject);
 1180 variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot);
 1181 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception()));
 1182 }
11651183
1166  for (int i = 0; i < numFunctions; ++i) {
1167  FunctionExecutable* function = codeBlock->functionDecl(i);
1168  PutPropertySlot slot(variableObject);
1169  variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot);
1170  RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception()));
 1184 for (unsigned i = 0; i < numCodeBlockFunctionDecls; ++i) {
 1185 const Identifier& ident = codeBlock->codeBlockFunction(i);
 1186 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(callFrame, scope, ident);
 1187 if (!resolvedScope.isUndefined()) {
 1188 if (!variableObject->hasProperty(callFrame, ident)) {
 1189 PutPropertySlot slot(variableObject);
 1190 variableObject->methodTable()->put(variableObject, callFrame, ident, jsUndefined(), slot);
 1191 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception()));
 1192 }
 1193 }
 1194 }
11711195 }
11721196 }
11731197

Source/JavaScriptCore/jit/JIT.cpp

@@void JIT::privateCompileMainPass()
392392 DEFINE_OP(op_to_primitive)
393393
394394 DEFINE_OP(op_resolve_scope)
 395 DEFINE_OP(op_resolve_scope_for_hoisting_func_decl_in_eval)
395396 DEFINE_OP(op_get_from_scope)
396397 DEFINE_OP(op_put_to_scope)
397398 DEFINE_OP(op_get_from_arguments)

Source/JavaScriptCore/jit/JIT.h

@@namespace JSC {
665665 void emitSlow_op_get_direct_pname(Instruction*, Vector<SlowCaseEntry>::iterator&);
666666
667667 void emit_op_resolve_scope(Instruction*);
 668 void emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction*);
668669 void emit_op_get_from_scope(Instruction*);
669670 void emit_op_put_to_scope(Instruction*);
670671 void emit_op_get_from_arguments(Instruction*);

Source/JavaScriptCore/jit/JITOperations.h

@@typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJJJ)(ExecState*, EncodedJ
152152typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJJArp)(ExecState*, EncodedJSValue, EncodedJSValue, ArithProfile*);
153153typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJJMic)(ExecState*, EncodedJSValue, EncodedJSValue, void*);
154154typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJMic)(ExecState*, EncodedJSValue, void*);
 155typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJscI)(ExecState*, JSScope*, UniquedStringImpl*);
155156typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJssZ)(ExecState*, JSString*, int32_t);
156157typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJss)(ExecState*, JSString*);
157158typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJssReo)(ExecState*, JSString*, RegExpObject*);

@@typedef int32_t (JIT_OPERATION *Z_JITOperation_EJZ)(ExecState*, EncodedJSValue,
231232typedef int32_t (JIT_OPERATION *Z_JITOperation_EJZZ)(ExecState*, EncodedJSValue, int32_t, int32_t);
232233typedef int32_t (JIT_OPERATION *Z_JITOperation_EOI)(ExecState*, JSObject*, UniquedStringImpl*);
233234typedef int32_t (JIT_OPERATION *Z_JITOperation_EOJ)(ExecState*, JSObject*, EncodedJSValue);
 235typedef size_t (JIT_OPERATION *S_JITOperation_EO)(ExecState*, JSObject*);
234236typedef size_t (JIT_OPERATION *S_JITOperation_ECC)(ExecState*, JSCell*, JSCell*);
235237typedef size_t (JIT_OPERATION *S_JITOperation_EGC)(ExecState*, JSGlobalObject*, JSCell*);
236238typedef size_t (JIT_OPERATION *S_JITOperation_EGJJ)(ExecState*, JSGlobalObject*, EncodedJSValue, EncodedJSValue);

Source/JavaScriptCore/jit/JITPropertyAccess.cpp

@@void JIT::emitResolveClosure(int dst, int scope, bool needsVarInjectionChecks, u
764764 emitPutVirtualRegister(dst);
765765}
766766
 767void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction)
 768{
 769 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval);
 770 slowPathCall.call();
 771}
 772
767773void JIT::emit_op_resolve_scope(Instruction* currentInstruction)
768774{
769775 int dst = currentInstruction[1].u.operand;

Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp

@@void JIT::emitResolveClosure(int dst, int scope, bool needsVarInjectionChecks, u
771771 emitStore(dst, regT1, regT0);
772772}
773773
 774void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction)
 775{
 776 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval);
 777 slowPathCall.call();
 778}
 779
774780void JIT::emit_op_resolve_scope(Instruction* currentInstruction)
775781{
776782 int dst = currentInstruction[1].u.operand;

Source/JavaScriptCore/llint/LowLevelInterpreter.asm

@@_llint_op_put_by_val_with_this:
18311831 callOpcodeSlowPath(_slow_path_put_by_val_with_this)
18321832 dispatch(5)
18331833
 1834_llint_op_resolve_scope_for_hoisting_func_decl_in_eval:
 1835 traceExecution()
 1836 callOpcodeSlowPath(_slow_path_resolve_scope_for_hoisting_func_decl_in_eval)
 1837 dispatch(4)
 1838
18341839# Lastly, make sure that we can link even though we don't support all opcodes.
18351840# These opcodes should never arise when using LLInt or either JIT. We assert
18361841# as much.

Source/JavaScriptCore/parser/Parser.cpp

@@template <class TreeBuilder> TreeStatement Parser<LexerType>::parseFunctionDecla
17811781{
17821782 semanticFailIfTrue(strictMode(), "Function declarations are only allowed inside blocks or switch statements in strict mode");
17831783 failIfFalse(parentAllowsFunctionDeclarationAsStatement, "Function declarations are only allowed inside block statements or at the top level of a program");
1784  if (!currentScope()->isFunction()) {
 1784 if (!currentScope()->isFunction() && !closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext()) {
17851785 // We only implement annex B.3.3 if we're in function mode. Otherwise, we fall back
17861786 // to hoisting behavior.
17871787 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=155813

Source/JavaScriptCore/parser/Parser.h

@@public:
637637 if (!isParameter) {
638638 auto addResult = m_declaredVariables.add(function);
639639 addResult.iterator->value.setIsVar();
 640 addResult.iterator->value.setIsSloppyModeHoistingCandidate();
640641 sloppyModeHoistedFunctions.add(function);
641642 }
642643 }

@@private:
11921193
11931194 std::pair<DeclarationResultMask, ScopeRef> declareFunction(const Identifier* ident)
11941195 {
1195  if (m_statementDepth == 1 || (!strictMode() && !currentScope()->isFunction())) {
 1196 if ((m_statementDepth == 1) || (!strictMode() && !currentScope()->isFunction() && !closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext())) {
11961197 // Functions declared at the top-most scope (both in sloppy and strict mode) are declared as vars
11971198 // for backwards compatibility. This allows us to declare functions with the same name more than once.
11981199 // In sloppy mode, we always declare functions as vars.
11991200 bool declareAsVar = true;
1200  bool isSloppyModeHoistingCandidate = false;
 1201 bool isSloppyModeHoistingCandidate = !strictMode() && closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext();
12011202 ScopeRef variableScope = currentVariableScope();
12021203 return std::make_pair(variableScope->declareFunction(ident, declareAsVar, isSloppyModeHoistingCandidate), variableScope);
12031204 }
12041205
12051206 if (!strictMode()) {
1206  ASSERT(currentScope()->isFunction());
 1207 ASSERT(currentScope()->isFunction() || closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext());
12071208
12081209 // Functions declared inside a function inside a nested block scope in sloppy mode are subject to this
12091210 // crazy rule defined inside Annex B.3.3 in the ES6 spec. It basically states that we will create

Source/JavaScriptCore/runtime/CommonSlowPaths.cpp

@@SLOW_PATH_DECL(slow_path_push_with_scope)
812812 RETURN(JSWithScope::create(vm, exec->lexicalGlobalObject(), newScope, currentScope));
813813}
814814
 815SLOW_PATH_DECL(slow_path_resolve_scope_for_hoisting_func_decl_in_eval)
 816{
 817 BEGIN();
 818 const Identifier& ident = exec->codeBlock()->identifier(pc[3].u.operand);
 819 JSScope* scope = exec->uncheckedR(pc[2].u.operand).Register::scope();
 820 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(exec, scope, ident);
 821
 822 CHECK_EXCEPTION();
 823
 824 RETURN(resolvedScope);
 825}
 826
815827SLOW_PATH_DECL(slow_path_resolve_scope)
816828{
817829 BEGIN();

Source/JavaScriptCore/runtime/CommonSlowPaths.h

@@SLOW_PATH_HIDDEN_DECL(slow_path_assert);
257257SLOW_PATH_HIDDEN_DECL(slow_path_create_lexical_environment);
258258SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope);
259259SLOW_PATH_HIDDEN_DECL(slow_path_resolve_scope);
 260SLOW_PATH_HIDDEN_DECL(slow_path_is_var_scope);
 261SLOW_PATH_HIDDEN_DECL(slow_path_resolve_scope_for_hoisting_func_decl_in_eval);
260262SLOW_PATH_HIDDEN_DECL(slow_path_create_rest);
261263SLOW_PATH_HIDDEN_DECL(slow_path_get_by_id_with_this);
262264SLOW_PATH_HIDDEN_DECL(slow_path_get_by_val_with_this);

Source/JavaScriptCore/runtime/EvalExecutable.h

@@public:
5858 ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Classic, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false, evalContextType()); }
5959
6060 unsigned numVariables() { return m_unlinkedEvalCodeBlock->numVariables(); }
61  unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); }
 61 unsigned numCodeBlockFunctionDecls() { return m_unlinkedEvalCodeBlock->numCodeBlockFunctionDecls(); }
 62 unsigned numTopLevelFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); }
6263
6364protected:
6465 friend class ExecutableBase;

Source/JavaScriptCore/runtime/JSScope.cpp

@@static inline bool isUnscopable(ExecState* exec, JSScope* scope, JSObject* objec
211211 return blocked.toBoolean(exec);
212212}
213213
214 JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident)
 214template<typename ReturnPredicateFunctor, typename SkipPredicateFunctor>
 215ALWAYS_INLINE JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident, ReturnPredicateFunctor returnPredicate, SkipPredicateFunctor skipPredicate)
215216{
216217 VM& vm = exec->vm();
217218 auto throwScope = DECLARE_THROW_SCOPE(vm);

@@JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& id
238239 return object;
239240 }
240241
 242 if (skipPredicate(scope))
 243 continue;
 244
241245 bool hasProperty = object->hasProperty(exec, ident);
242246 RETURN_IF_EXCEPTION(throwScope, nullptr);
243247 if (hasProperty) {

@@JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& id
246250 if (!unscopable)
247251 return object;
248252 }
 253
 254 if (returnPredicate(scope))
 255 return object;
249256 }
250257}
251258
 259JSValue JSScope::resolveScopeForHoistingFuncDeclInEval(ExecState* exec, JSScope* scope, const Identifier& ident)
 260{
 261 auto returnPredicate = [&] (JSScope* scope) -> bool {
 262 return scope->isVarScope();
 263 };
 264 auto skipPredicate = [&] (JSScope* scope) -> bool {
 265 return scope->isWithScope();
 266 };
 267 JSObject* object = resolve(exec, scope, ident, returnPredicate, skipPredicate);
 268
 269 bool result = false;
 270 if (JSScope* scope = jsDynamicCast<JSScope*>(exec->vm(), object)) {
 271 if (SymbolTable* scopeSymbolTable = scope->symbolTable(exec->vm())) {
 272 result = scope->isGlobalObject()
 273 ? JSObject::isExtensible(object, exec)
 274 : scopeSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope;
 275 }
 276 }
 277
 278 return result ? JSValue(object) : jsUndefined();
 279}
 280
 281JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident)
 282{
 283 auto predicate1 = [&] (JSScope*) -> bool {
 284 return false;
 285 };
 286 auto predicate2 = [&] (JSScope*) -> bool {
 287 return false;
 288 };
 289 return resolve(exec, scope, ident, predicate1, predicate2);
 290}
 291
252292ResolveOp JSScope::abstractResolve(ExecState* exec, size_t depthOffset, JSScope* scope, const Identifier& ident, GetOrPut getOrPut, ResolveType unlinkedType, InitializationMode initializationMode)
253293{
254294 ResolveOp op(Dynamic, 0, 0, 0, 0, 0);

Source/JavaScriptCore/runtime/JSScope.h

@@public:
4646 static JSObject* objectAtScope(JSScope*);
4747
4848 static JSObject* resolve(ExecState*, JSScope*, const Identifier&);
 49 static JSValue resolveScopeForHoistingFuncDeclInEval(ExecState*, JSScope*, const Identifier&);
4950 static ResolveOp abstractResolve(ExecState*, size_t depthOffset, JSScope*, const Identifier&, GetOrPut, ResolveType, InitializationMode);
5051
5152 static bool hasConstantScope(ResolveType);

@@public:
7677protected:
7778 JSScope(VM&, Structure*, JSScope* next);
7879
 80 template<typename ReturnPredicateFunctor, typename SkipPredicateFunctor>
 81 static JSObject* resolve(ExecState*, JSScope*, const Identifier&, ReturnPredicateFunctor, SkipPredicateFunctor);
 82
7983private:
8084 WriteBarrier<JSScope> m_next;
8185};

LayoutTests/ChangeLog

 12017-02-19 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval
 4 https://bugs.webkit.org/show_bug.cgi?id=163208
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * inspector/runtime/evaluate-CommandLineAPI-expected.txt:
 9 * inspector/runtime/evaluate-CommandLineAPI.html:
 10 * js/parser-syntax-check-expected.txt:
 11 * js/script-tests/parser-syntax-check.js:
 12
1132017-03-20 Ryan Haddad <ryanhaddad@apple.com>
214
315 Mark imported/w3c/web-platform-tests/XMLHttpRequest/timeout-multiple-fetches.html as flaky.

LayoutTests/inspector/runtime/evaluate-CommandLineAPI-expected.txt

@@PASS: Global `keys` variable should not be shadowed by CommandLineAPI function.
3434-- Running test case: CommandLineAPIDoesNotShadowGlobalObjectProperties
3535PASS: `values` should be `window.values` and not shadowed by CommandLineAPI `values` function.
3636
 37-- Running test case: NonStrictEvalHoistEvaluations
 38PASS: Should be able to access var in global scope.
 39PASS: Should be able to hoist function to var in global scope.
 40PASS: Should be able to hoist function to var in global scope and keep it.
 41

LayoutTests/inspector/runtime/evaluate-CommandLineAPI.html

66var varGlobalVariable = 1;
77let letGlobalVariable = 2;
88const constGlobalVariable = 3;
 9var varGlobalFunctionVariable = 4;
910
1011function test()
1112{

@@function test()
168169 }
169170 });
170171
 172 suite.addTestCase({
 173 name: "NonStrictEvalHoistEvaluations",
 174 description: "Test CommandLineAPI does not shadow global object variable that hoisted from eval.",
 175 test(resolve, reject) {
 176 testEvaluate("varGlobalFunctionVariable", (resultValue) => {
 177 InspectorTest.expectThat(resultValue === 4, "Should be able to access var in global scope.");
 178 });
 179 testEvaluate(`
 180 let noError = varGlobalFunctionVariable === 4;
 181 eval('eval(" { function varGlobalFunctionVariable() { }; } ")');
 182 typeof varGlobalFunctionVariable === 'function' && noError;
 183 `, (resultValue) => {
 184 InspectorTest.expectThat(resultValue, "Should be able to hoist function to var in global scope.");
 185 });
 186 testEvaluate("varGlobalFunctionVariable", (resultValue) => {
 187 InspectorTest.expectThat(typeof resultValue, "Should be able to hoist function to var in global scope and keep it.");
 188 resolve();
 189 });
 190 }
 191 });
 192
171193 suite.runTestCasesAndFinish();
172194}
173195</script>

LayoutTests/js/parser-syntax-check-expected.txt

@@PASS Invalid: "function foo() { let f1; function f1(a) {}; }". Produced the foll
688688PASS Invalid: "function f() { function foo() { let f1; function f1(a) {}; } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'f1' in strict mode."
689689PASS Invalid: "let f1; function f1(a) {};". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'f1' in strict mode."
690690PASS Invalid: "function f() { let f1; function f1(a) {}; }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'f1' in strict mode."
691 PASS Valid: "{ function f1(a) {}; let f1; }"
 691PASS Invalid: "{ function f1(a) {}; let f1; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'f1'."
692692PASS Invalid: "function f() { { function f1(a) {}; let f1; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'f1'."
693 PASS Valid: "{ function f1(a) {}; const f1 = 25; }"
 693PASS Invalid: "{ function f1(a) {}; const f1 = 25; }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'f1'."
694694PASS Invalid: "function f() { { function f1(a) {}; const f1 = 25; } }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'f1'."
695 PASS Valid: "{ function f1(a) {}; class f1{}; }"
 695PASS Invalid: "{ function f1(a) {}; class f1{}; }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'f1'."
696696PASS Invalid: "function f() { { function f1(a) {}; class f1{}; } }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'f1'."
697697PASS Invalid: "function foo() { { let bar; function bar() { } } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'bar' in strict mode."
698698PASS Invalid: "function f() { function foo() { { let bar; function bar() { } } } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'bar' in strict mode."

@@PASS Invalid: "function foo() { { function bar() { }; class bar{}; } }". Produce
708708PASS Invalid: "function f() { function foo() { { function bar() { }; class bar{}; } } }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'bar'."
709709PASS Valid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }"
710710PASS Valid: "function f() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; } }"
711 PASS Valid: "switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }"
 711PASS Invalid: "switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode."
712712PASS Invalid: "function f() { switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode."
713 PASS Valid: "switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }"
 713PASS Invalid: "switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
714714PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
715 PASS Valid: "switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }"
 715PASS Invalid: "switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'foo'."
716716PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'foo'."
717 PASS Valid: "switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }"
 717PASS Invalid: "switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'foo'."
718718PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'foo'."
719 PASS Valid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }"
 719PASS Invalid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
720720PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
721721PASS Valid: "function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } }"
722722PASS Valid: "function f() { function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } } }"

@@PASS Invalid: "'use strict'; if (true) function foo() { }; ". Produced the follo
734734PASS Invalid: "function f() { 'use strict'; if (true) function foo() { }; }". Produced the following syntax error: "SyntaxError: Function declarations are only allowed inside blocks or switch statements in strict mode."
735735PASS Valid: "if (true) function foo() { }; "
736736PASS Valid: "function f() { if (true) function foo() { }; }"
737 PASS Invalid: " let foo; if (true) function foo() { };". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode."
 737PASS Valid: " let foo; if (true) function foo() { };"
738738PASS Valid: "function f() { let foo; if (true) function foo() { }; }"
739739PASS Valid: "function baz() { let foo; if (true) function foo() { }; }"
740740PASS Valid: "function f() { function baz() { let foo; if (true) function foo() { }; } }"
741 PASS Invalid: "if (true) function foo() { }; let foo;". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
 741PASS Valid: "if (true) function foo() { }; let foo;"
742742PASS Valid: "function f() { if (true) function foo() { }; let foo; }"
743 PASS Invalid: "{ if (true) function foo() { }; } let foo;". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."
 743PASS Valid: "{ if (true) function foo() { }; } let foo;"
744744PASS Valid: "function f() { { if (true) function foo() { }; } let foo; }"
745745PASS Invalid: "let foo; while (false) function foo() { }; ". Produced the following syntax error: "SyntaxError: Unexpected keyword 'function'. Function declarations are only allowed inside block statements or at the top level of a program."
746746PASS Invalid: "function f() { let foo; while (false) function foo() { }; }". Produced the following syntax error: "SyntaxError: Unexpected keyword 'function'. Function declarations are only allowed inside block statements or at the top level of a program."

LayoutTests/js/script-tests/parser-syntax-check.js

@@valid("function foo() { { function foo() { }; function foo() { } } }")
446446invalid("function foo() { 'use strict'; { function foo() { }; function foo() { } } }")
447447invalid("function foo() { let f1; function f1(a) {}; }")
448448invalid("let f1; function f1(a) {};")
449 onlyValidGlobally("{ function f1(a) {}; let f1; }")
450 onlyValidGlobally("{ function f1(a) {}; const f1 = 25; }")
451 onlyValidGlobally("{ function f1(a) {}; class f1{}; }")
 449invalid("{ function f1(a) {}; let f1; }")
 450invalid("{ function f1(a) {}; const f1 = 25; }")
 451invalid("{ function f1(a) {}; class f1{}; }")
452452invalid("function foo() { { let bar; function bar() { } } }")
453453invalid("function foo() { { function bar() { }; let bar; } }")
454454invalid("function foo() { { const bar; function bar() { } } }")

@@invalid("function foo() { { function bar() { }; const bar; } }")
456456invalid("function foo() { { class bar{}; function bar() { } } }")
457457invalid("function foo() { { function bar() { }; class bar{}; } }")
458458valid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }")
459 onlyValidGlobally("switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }")
460 onlyValidGlobally("switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }")
461 onlyValidGlobally("switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }")
462 onlyValidGlobally("switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }")
463 onlyValidGlobally("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }")
 459invalid("switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }")
 460invalid("switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }")
 461invalid("switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }")
 462invalid("switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }")
 463invalid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }")
464464valid("function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } }")
465465invalid("'use strict'; switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }");
466466invalid("'use strict'; switch('foo') { case 1: function foo() {}; break; case 2: let foo; break; }");

@@valid("'use strict'; switch('foo') { case 1: { let foo; break; } case 2: functio
469469valid("'use strict'; switch('foo') { case 1: { function foo() { }; break; } case 2: function foo() {}; break; }");
470470invalid("'use strict'; if (true) function foo() { }; ");
471471valid("if (true) function foo() { }; ");
472 onlyInvalidGlobally(" let foo; if (true) function foo() { };");
 472valid(" let foo; if (true) function foo() { };");
473473valid("function baz() { let foo; if (true) function foo() { }; }");
474 onlyInvalidGlobally("if (true) function foo() { }; let foo;");
475 onlyInvalidGlobally("{ if (true) function foo() { }; } let foo;");
 474valid("if (true) function foo() { }; let foo;");
 475valid("{ if (true) function foo() { }; } let foo;");
476476invalid("let foo; while (false) function foo() { }; ");
477477invalid("let foo; { while (false) function foo() { }; } ");
478478invalid("while (false) function foo() { }; let foo;");

JSTests/ChangeLog

 12017-03-20 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval
 4 https://bugs.webkit.org/show_bug.cgi?id=163208
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * stress/eval-func-decl-block-scoping-reassign.js: Added.
 9 (assert):
 10 (throw.new.Error.f):
 11 (throw.new.Error):
 12 * stress/eval-func-decl-block-with-remove.js: Added.
 13 (assert):
 14 (foo.boo):
 15 (foo):
 16 * stress/eval-func-decl-block-with-var-and-remove.js: Added.
 17 (assert):
 18 (assertThrow):
 19 (foo):
 20 (boo):
 21 (joo):
 22 (koo):
 23 * stress/eval-func-decl-block-with-var-sinthesize.js: Added.
 24 (assert):
 25 (assertThrow):
 26 (foo):
 27 (boo):
 28 (hoo):
 29 (joo):
 30 (koo):
 31 * stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added.
 32 * stress/eval-func-decl-in-eval-within-block-with-let.js: Added.
 33 (assert):
 34 (assertThrow):
 35 (foo):
 36 (boo):
 37 (goo):
 38 * stress/eval-func-decl-in-eval-within-with-scope.js: Added.
 39 (assert):
 40 (assertThrow):
 41 (foo):
 42 (boo):
 43 (boo.let.val2):
 44 (boo.let.val3):
 45 * stress/eval-func-decl-in-frozen-global.js: Added.
 46 (assert):
 47 (assertThrow):
 48 (throw.new.Error):
 49 (Object.freeze):
 50 * stress/eval-func-decl-in-global-of-eval.js: Added.
 51 (assert):
 52 (assertThrow):
 53 (bar):
 54 (baz):
 55 (foobar):
 56 * stress/eval-func-decl-in-global.js: Added.
 57 (assert):
 58 (assertThrow):
 59 * stress/eval-func-decl-in-if.js: Added.
 60 (assert):
 61 * stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added.
 62 (assert):
 63 (assertThrow):
 64 (foo):
 65 (boo):
 66 (foobar):
 67 (hoo):
 68 (joo):
 69 (koo):
 70 (loo):
 71 * stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added.
 72 (assert):
 73 (assertThrow):
 74 (foo):
 75 (boo):
 76 (goo):
 77 * stress/variable-under-tdz-eval-tricky.js:
 78 (assert):
 79 * test262.yaml:
 80
1812017-03-19 Chris Dumez <cdumez@apple.com>
282
383 `const location = "foo"` throws in a worker

JSTests/stress/eval-func-decl-block-scoping-reassign.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7{
 8 function f() {
 9 return 'first declaration';
 10 }
 11}
 12
 13eval(
 14 '{ function f() { return "second declaration"; } }'
 15);
 16
 17assert(typeof f, 'function', ' #1');
 18assert(f(), 'second declaration', ' #2');

JSTests/stress/eval-func-decl-block-with-remove.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7function foo() {
 8 function boo() {
 9 return typeof a;
 10 }
 11 eval("{ assert(boo(), 'undefined'); delete a; assert(boo(), 'undefined'); function a() { return 'text-a'; } assert(boo(), 'function');} ");
 12}
 13foo();
 14
 15for (let i = 0; i < 10000; i++) {
 16 foo();
 17}

JSTests/stress/eval-func-decl-block-with-var-and-remove.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22function foo() {
 23 {
 24 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 25 eval('eval(" { function f() { }; } ")');
 26 assert(typeof f, "function");
 27 }
 28 assert(typeof f, "function", "#1");
 29 delete f;
 30 assertThrow(() => f, "ReferenceError: Can't find variable: f", "#1");
 31}
 32
 33for (var i = 0; i < 10000; i++) {
 34 foo();
 35 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 36}
 37
 38function boo() {
 39 {
 40 assert(typeof l, "undefined", "#5");
 41 eval('{ var l = 15; eval(" { function l() { }; } ")}');
 42 assert(typeof l, "function", "#3");
 43 }
 44 assert(typeof l, 'function', "#4");
 45 delete l;
 46 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 47}
 48
 49for (var i = 0; i < 10000; i++){
 50 boo();
 51 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 52}
 53
 54function joo() {
 55 {
 56 assert(typeof h, "undefined" );
 57 eval('eval(" if (true){ function h() { }; } ")');
 58 assert(typeof h, "function" );
 59 }
 60 assert(typeof h, "function", "#10");
 61 delete h;
 62 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 63}
 64
 65for (var i = 0; i < 10000; i++){
 66 joo();
 67 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 68}
 69
 70function koo() {
 71 {
 72 var k = 20;
 73 eval('var k = 15; eval(" if (true){ function k() { }; } ")');
 74 assert(typeof k, "function" );
 75 }
 76 assert(typeof k, "function", "#12");
 77 delete k;
 78 assert(typeof k, "function", "#12");
 79}
 80
 81for (var i = 0; i < 10000; i++){
 82 koo();
 83 assertThrow(() => k, "ReferenceError: Can't find variable: k");
 84}

JSTests/stress/eval-func-decl-block-with-var-sinthesize.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22function foo() {
 23 {
 24 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 25 eval('eval(" { function f() { }; } ")');
 26 assert(typeof f, "function");
 27 }
 28 assert(typeof f, "function");
 29}
 30
 31for (var i = 0; i < 10000; i++){
 32 foo();
 33 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 34}
 35
 36function boo() {
 37 {
 38 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 39 eval('{ var l = 15; eval(" { function l() { }; } ")}');
 40 assert(typeof l, "function", "#3");
 41 }
 42 assert(typeof l, 'function', "#4");
 43}
 44
 45for (var i = 0; i < 10000; i++){
 46 boo();
 47 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 48}
 49
 50function hoo() {
 51 {
 52 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 53 eval('eval(" if (false){ function h() { }; } ");');
 54 assert(h, undefined, '');
 55 }
 56 assert(h, undefined, '');
 57}
 58
 59for (var i = 0; i < 10000; i++){
 60 hoo();
 61 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 62}
 63
 64function joo() {
 65 {
 66 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 67 eval('eval(" if (true){ function h() { }; } ")');
 68 assert(typeof h, "function" );
 69 }
 70 assert(typeof h, "function", "#10");
 71}
 72
 73for (var i = 0; i < 10000; i++){
 74 joo();
 75 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 76}
 77
 78function koo() {
 79 {
 80 var k = 20;
 81 eval('var k = 15; eval(" if (true){ function k() { }; } ")');
 82 assert(typeof k, "function" );
 83 }
 84 assert(typeof k, "function", "#12");
 85}
 86
 87for (var i = 0; i < 10000; i++){
 88 koo();
 89 assertThrow(() => k, "ReferenceError: Can't find variable: k");
 90}

JSTests/stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js

 1var init1;
 2
 3(function() {
 4 eval(
 5 '\
 6 init1 = f;\
 7 {\
 8 function f() {}\
 9 }{ function f() { } }'
 10 );
 11}());
 12
 13if (init1 !== undefined)
 14 throw new Error('Wrong binding of the function.');

JSTests/stress/eval-func-decl-in-eval-within-block-with-let.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20}
 21
 22function foo() {
 23 {
 24 let f = 20;
 25 eval(" { function f() { value = 20; }; }");
 26 assert(f, 20);
 27 }
 28 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 29}
 30
 31
 32for (var i = 0; i < 10000; i++){
 33 foo();
 34 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 35}
 36
 37function boo() {
 38 {
 39 var l = 20;
 40 eval(" { function l() { value = 20; }; }");
 41 assert(typeof l, 'function');
 42 }
 43 assert(typeof l, 'function');
 44}
 45
 46for (var i = 0; i < 10000; i++){
 47 boo();
 48 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 49}
 50
 51function goo() {
 52 {
 53 let g = 20;
 54 eval(" for(var j=0; j < 10000; j++){ function g() { }; } ");
 55 assert(typeof g, 'number');
 56 }
 57 assertThrow(() => g, "ReferenceError: Can't find variable: g");
 58}
 59
 60goo();
 61assertThrow(() => g, "ReferenceError: Can't find variable: g");

JSTests/stress/eval-func-decl-in-eval-within-with-scope.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22function foo(withScope, firstAssertValue, secondAssertValue) {
 23 with (withScope) {
 24 eval("{ function f() { } }");
 25 assert(typeof f, firstAssertValue, f);
 26 }
 27 assert(typeof f, secondAssertValue);
 28}
 29
 30function boo(withScope, firstAssertValue, secondAssertValue) {
 31 with (withScope) {
 32 eval(" for(var i = 0; i < 10000; i++ ){ if (i > 0) { function f() { }; } } ");
 33 assert(typeof f, firstAssertValue);
 34 }
 35 assert(typeof f, secondAssertValue);
 36}
 37{
 38 for (var i = 0; i < 10000; i++) {
 39 foo({}, 'function', 'function');
 40 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 41 }
 42
 43 boo({}, 'function', 'function');
 44}
 45{
 46 for (var i = 0; i < 10000; i++) {
 47 foo({f : 10}, 'number', 'function');
 48 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 49 }
 50 boo({f : 10}, 'number', 'function');
 51
 52 for (var i = 0; i < 10000; i++) {
 53 foo({f : {}}, 'object', 'function');
 54 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 55 }
 56 boo({f : {}}, 'object', 'function');
 57}
 58{
 59 for (var i = 0; i < 10000; i++) {
 60 foo(12345, 'function', 'function');
 61 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 62 }
 63 boo(12345, 'function', 'function');
 64
 65 for (var i = 0; i < 10000; i++) {
 66 let val = 12345;
 67 val.f = 10;
 68 foo(val, 'function', 'function');
 69 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 70 }
 71 let x = 12345;
 72 x.f = 10;
 73 boo(x, 'function', 'function');
 74}
 75{
 76
 77 for (var i = 0; i < 10000; i++) {
 78 foo('12345', 'function', 'function');
 79 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 80 }
 81 boo('12345', 'function', 'function');
 82
 83 for (var i = 0; i < 10000; i++) {
 84 let val = '12345';
 85 val.f = 10;
 86 foo(val, 'function', 'function');
 87 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 88 }
 89 let z = '12345';
 90 z.f = 10;
 91 boo(z, 'function', 'function');
 92}
 93{
 94 for (var i = 0; i < 10000; i++) {
 95 foo(function () {}, 'function', 'function');
 96 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 97 }
 98
 99 boo(function () {}, 'function', 'function');
 100
 101 for (var i = 0; i < 10000; i++) {
 102 let val2 = function () {};
 103 val2.f = 10;
 104 foo(val2, 'number', 'function');
 105 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 106 }
 107
 108 let val3 = function () {};
 109 val3.f = 10;
 110 boo(val3, 'number', 'function');
 111}

JSTests/stress/eval-func-decl-in-frozen-global.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, errorText) {
 8 var error = null;
 9 try {
 10 cb();
 11 } catch (e) {
 12 error = e.toString();
 13 }
 14 if (error === null)
 15 throw new Error('Expected error');
 16 if (error !== errorText)
 17 throw new Error('Expected error ' + errorText + ' but was ' + error);
 18};
 19
 20{
 21 eval('{ function foo() {} }');
 22 assert(this.hasOwnProperty("foo"), true);
 23 assert(typeof foo, 'function');
 24}
 25
 26Object.defineProperty(this, "globalNonWritable", {
 27 value: false,
 28 configurable: true,
 29 writable: false,
 30 enumerable: true
 31});
 32eval("{function globalNonWritable() { return 1; }}");
 33var globalNonWritableDescriptor
 34 = Object.getOwnPropertyDescriptor(this, "globalNonWritable");
 35assert(globalNonWritableDescriptor.enumerable, true);
 36
 37Object.freeze(this);
 38{
 39 var error = false;
 40 try {
 41 eval('{ function boo() {} }');
 42 } catch (e) {
 43 error = true;
 44 }
 45 assert(this.hasOwnProperty("boo"), false);
 46 assert(error, false);
 47 assertThrow(() => boo, 'ReferenceError: Can\'t find variable: boo');
 48}

JSTests/stress/eval-func-decl-in-global-of-eval.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20}
 21
 22
 23function bar() {
 24 {
 25 let f = 20;
 26 let value = 10;
 27 eval("function f() { value = 20; }; f();");
 28 }
 29}
 30
 31
 32for (var i = 0; i < 10000; i++){
 33 assertThrow(() => bar(), "SyntaxError: Can't create duplicate variable in eval: 'f'");
 34 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 35}
 36
 37function baz() {
 38 {
 39 var l = 20;
 40 var value = 10;
 41 eval("function l() { value = 20; }; l();");
 42 assert(typeof l, 'function');
 43 assert(value, 20);
 44 }
 45 assert(typeof l, 'function');
 46}
 47
 48for (var i = 0; i < 10000; i++){
 49 baz();
 50 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 51}
 52
 53function foobar() {
 54 {
 55 let g = 20;
 56 let value = 10;
 57 eval("function l() { value = 30; }; l();");
 58 assert(typeof g, 'number');
 59 assert(value, 30);
 60 }
 61 assertThrow(() => g, "ReferenceError: Can't find variable: g");
 62}
 63
 64foobar();
 65assertThrow(() => g, "ReferenceError: Can't find variable: g");
 66

JSTests/stress/eval-func-decl-in-global.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22var foo = 'foo';
 23var success = false;
 24// FIXME: According to spec foo should have value 'undefined',
 25// but possible it would be changed https://github.com/tc39/ecma262/issues/753
 26eval("success = foo === 'foo'; { function foo(){} }");
 27
 28assert(success, true);
 29
 30success = false;
 31
 32let boo = 'boo';
 33eval("success = boo === 'boo'; { function boo(){} } success = success && boo === 'boo';");
 34
 35success = success && boo === 'boo';
 36
 37assert(success, true);

JSTests/stress/eval-func-decl-in-if.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected-' + expected + ' but was' + result + ':' + message );
 4 }
 5};
 6
 7var updated;
 8
 9(function() {
 10 eval(
 11 '{\
 12 function f() {\
 13 return "first declaration";\
 14 }\
 15 }if (true) function f() { return "second declaration"; } else function _f() {}updated = f;'
 16 );
 17}());
 18
 19assert(typeof updated, 'function', "#1");
 20assert(updated(), 'second declaration', "#2");

JSTests/stress/eval-func-decl-within-eval-with-reassign-to-var.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22function foo() {
 23 {
 24 var f = 20;
 25 eval('var f = 15; eval(" { function f() { }; } ")');
 26 assert(typeof f, "function");
 27 }
 28 assert(typeof f, "function", "#1");
 29}
 30
 31for (var i = 0; i < 10000; i++) {
 32 foo();
 33 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 34}
 35
 36function boo() {
 37 {
 38 var l = 20;
 39 eval('{ let l = 15; eval(" { function l() { }; } ")}');
 40 assert(l, 20, "#3");
 41 }
 42 assert(typeof l, 'number', "#4");
 43}
 44
 45for (var i = 0; i < 10000; i++){
 46 boo();
 47 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 48}
 49
 50function foobar() {
 51 eval("if (false) { function _bar() { } }");
 52 assert(_bar, undefined);
 53}
 54
 55for (var i = 0; i < 10000; i++){
 56 foobar();
 57 assertThrow(() => _bar, "ReferenceError: Can't find variable: _bar");
 58}
 59
 60// Fixme: https://bugs.webkit.org/show_bug.cgi?id=167837
 61// Current test does not work because it should raise exception
 62// that f could not be redeclared
 63/*
 64function goo() {
 65 {
 66 var error = false;
 67 try {
 68 let f = 20;
 69 eval('var f = 15; eval(" { function f() { }; } ")');
 70 } catch (e) {
 71 error = e instanceof SyntaxError;
 72 }
 73 assert(error, true, "syntax error should be raisen");
 74 }
 75 assert(typeof f, "undefined", "#6");
 76}
 77
 78for (var i = 0; i < 10000; i++) {
 79 goo();
 80 assert(typeof f, "undefined", "#7");
 81}
 82*/
 83
 84function hoo() {
 85 {
 86 let h = 20;
 87 eval('var h = 15; eval(" if (false){ function h() { }; } ");');
 88 assert(h, 15);
 89 }
 90 assert(typeof h, "undefined");
 91}
 92
 93for (var i = 0; i < 10000; i++) {
 94 hoo();
 95 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 96}
 97
 98function joo() {
 99 {
 100 var h = 20;
 101 eval('var h = 15; eval(" if (false){ function h() { }; } ")');
 102 assert(typeof h, "number");
 103 }
 104 assert(typeof h, "number", "#10");
 105}
 106
 107for (var i = 0; i < 10000; i++){
 108 joo();
 109 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 110}
 111
 112function koo() {
 113 {
 114 var k = 20;
 115 eval('var k = 15; eval(" if (true){ function k() { }; } ")');
 116 assert(typeof k, "function" );
 117 }
 118 assert(typeof k, "function", "#12");
 119}
 120
 121for (var i = 0; i < 10000; i++){
 122 koo();
 123 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 124}
 125
 126function loo() {
 127 let h = 20;
 128 eval("var h; if (false) { function h() { } }");
 129 return h;
 130}
 131
 132assert(loo(), 20);
 133
 134for (var i = 0; i < 10000; i++) {
 135 loo();
 136 assertThrow(() => h, "ReferenceError: Can't find variable: h");
 137}

JSTests/stress/eval-func-decl-within-eval-without-reassign-to-let.js

 1var assert = function (result, expected, message) {
 2 if (result !== expected) {
 3 throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
 4 }
 5};
 6
 7var assertThrow = function (cb, expected) {
 8 let error = null;
 9 try {
 10 cb();
 11 } catch(e) {
 12 error = e;
 13 }
 14 if (error === null) {
 15 throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
 16 }
 17 if (error.toString() !== expected) {
 18 throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
 19 }
 20};
 21
 22function foo() {
 23 {
 24 let f = 20;
 25 eval('eval(" { function f() { }; } ")');
 26 assert(f, 20);
 27 }
 28 assert(typeof f, "undefined", "#1");
 29}
 30
 31for (var i = 0; i < 10000; i++){
 32 foo();
 33 assertThrow(() => f, "ReferenceError: Can't find variable: f");
 34}
 35
 36function boo() {
 37 {
 38 var l = 20;
 39 eval('eval(" { function l() { }; } ")');
 40 assert(typeof l, 'function', "#3");
 41 }
 42 assert(typeof l, 'function', "#4");
 43}
 44
 45for (var i = 0; i < 10000; i++){
 46 boo();
 47 assertThrow(() => l, "ReferenceError: Can't find variable: l");
 48}
 49
 50function goo() {
 51 {
 52 let g = 20;
 53 eval('eval(" for(var j=0; j < 10000; j++){ function g() { }; } ")');
 54 assert(typeof g, 'number', "#6");
 55 }
 56 assertThrow(() => g, "ReferenceError: Can't find variable: g");
 57}
 58
 59goo();
 60assertThrow(() => g, "ReferenceError: Can't find variable: g");

JSTests/stress/variable-under-tdz-eval-tricky.js

@@function assert(b) {
4343 try {
4444 let b = {a: eval("function b(){ return b; }"), b: (1, eval)("(b())")};
4545 } catch(e) {
46  threw = e instanceof ReferenceError;
 46 threw = e instanceof SyntaxError;
4747 }
4848 assert(threw);
4949}

@@function assert(b) {
5353 try {
5454 let {b} = {a: eval("function b(){ return b; }"), b: (1, eval)("print(b())")};
5555 } catch(e) {
56  threw = e instanceof ReferenceError;
 56 threw = e instanceof SyntaxError;
5757 }
5858 assert(threw);
5959}

JSTests/test262.yaml

910910- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-block-scoping.js
911911 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
912912- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-block-fn-no-init.js
913  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 913 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
914914- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-block-fn-update.js
915915 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
916916- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-fn-no-init.js
917917 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
918918- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-fn-update.js
919  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 919 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
920920- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-var-no-init.js
921921 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
922922- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-var-update.js
923923 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
924924- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-init.js
925  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 925 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
926926- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-param.js
927  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 927 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
928928- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-try.js
929  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 929 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
930930- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-block.js
931931 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
932932- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-for-in.js

940940- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-try.js
941941 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
942942- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err.js
943  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 943 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
944944- path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-update.js
945945 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
946946- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-block-scoping.js
947947 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
948948- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-block-fn-no-init.js
949  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 949 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
950950- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-block-fn-update.js
951951 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
952952- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-fn-no-init.js
953953 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
954954- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-fn-update.js
955  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 955 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
956956- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-var-no-init.js
957957 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
958958- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-var-update.js
959959 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
960960- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-init.js
961  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 961 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
962962- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-param.js
963  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 963 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
964964- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-try.js
965  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 965 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
966966- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-block.js
967967 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
968968- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-for-in.js

976976- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-try.js
977977 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
978978- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err.js
979  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 979 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
980980- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-update.js
981981 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
982982- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-block-scoping.js
983983 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
984984- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-block-fn-no-init.js
985  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 985 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
986986- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-block-fn-update.js
987987 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
988988- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-fn-no-init.js
989989 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
990990- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-fn-update.js
991  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 991 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
992992- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-var-no-init.js
993993 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
994994- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-var-update.js
995995 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
996996- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-init.js
997  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 997 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
998998- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-param.js
999  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 999 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10001000- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-try.js
1001  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1001 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10021002- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-block.js
10031003 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10041004- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-for-in.js

10121012- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-try.js
10131013 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10141014- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err.js
1015  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1015 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10161016- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-update.js
10171017 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10181018- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-block-scoping.js
10191019 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10201020- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-block-fn-no-init.js
1021  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1021 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10221022- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-block-fn-update.js
10231023 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10241024- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-fn-no-init.js
10251025 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10261026- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-fn-update.js
1027  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1027 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10281028- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-var-no-init.js
10291029 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10301030- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-var-update.js
10311031 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10321032- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-init.js
1033  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1033 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10341034- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-param.js
1035  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1035 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10361036- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-try.js
1037  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1037 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10381038- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-block.js
10391039 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10401040- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-for-in.js

10481048- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-try.js
10491049 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10501050- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err.js
1051  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1051 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10521052- path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-update.js
10531053 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10541054- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-block-scoping.js
10551055 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10561056- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-block-fn-no-init.js
1057  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1057 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10581058- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-block-fn-update.js
10591059 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10601060- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-fn-no-init.js
10611061 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10621062- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-fn-update.js
1063  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1063 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10641064- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-var-no-init.js
10651065 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10661066- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-var-update.js
10671067 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10681068- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-init.js
1069  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1069 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10701070- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-param.js
1071  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1071 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10721072- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-try.js
1073  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1073 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10741074- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-block.js
10751075 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10761076- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-for-in.js

10841084- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-try.js
10851085 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10861086- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err.js
1087  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1087 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10881088- path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-update.js
10891089 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10901090- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-block-scoping.js
10911091 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10921092- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-block-fn-no-init.js
1093  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1093 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10941094- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-block-fn-update.js
10951095 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10961096- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-fn-no-init.js
10971097 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
10981098- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-fn-update.js
1099  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1099 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11001100- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-var-no-init.js
11011101 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11021102- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-var-update.js
11031103 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11041104- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-init.js
1105  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1105 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11061106- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-param.js
1107  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1107 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11081108- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-try.js
1109  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1109 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11101110- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-block.js
11111111 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11121112- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-for-in.js

11201120- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-try.js
11211121 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11221122- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err.js
1123  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1123 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11241124- path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-update.js
11251125 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11261126- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-block-scoping.js
11271127 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11281128- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-block-fn-no-init.js
1129  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1129 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11301130- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-block-fn-update.js
11311131 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11321132- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-fn-no-init.js
11331133 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11341134- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-fn-update.js
1135  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1135 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11361136- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-var-no-init.js
11371137 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11381138- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-var-update.js
11391139 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11401140- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-init.js
1141  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1141 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11421142- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-param.js
1143  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1143 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11441144- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-try.js
1145  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1145 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11461146- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-block.js
11471147 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11481148- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-for-in.js

11561156- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-try.js
11571157 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11581158- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err.js
1159  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1159 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11601160- path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-update.js
11611161 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11621162- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-block-scoping.js
11631163 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11641164- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-block-fn-no-init.js
1165  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1165 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11661166- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-block-fn-update.js
11671167 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11681168- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-fn-no-init.js
11691169 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11701170- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-fn-update.js
1171  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1171 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11721172- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-var-no-init.js
11731173 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11741174- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-var-update.js
11751175 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11761176- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-init.js
1177  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1177 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11781178- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-param.js
1179  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1179 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11801180- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-try.js
1181  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1181 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11821182- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-block.js
11831183 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11841184- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-for-in.js

11921192- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-try.js
11931193 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11941194- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err.js
1195  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1195 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11961196- path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-update.js
11971197 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
11981198- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-block-scoping.js
1199  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1199 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12001200- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-block-fn-no-init.js
1201  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1201 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12021202- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-block-fn-update.js
12031203 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12041204- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-fn-no-init.js
12051205 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12061206- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-fn-update.js
1207  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1207 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12081208- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-global-init.js
12091209 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12101210- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-global-update.js

12141214- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-var-update.js
12151215 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12161216- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-init.js
1217  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1217 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12181218- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-no-skip-try.js
1219  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1219 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12201220- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-block.js
12211221 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12221222- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-for-in.js

12301230- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-try.js
12311231 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12321232- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err.js
1233  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1233 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12341234- path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-update.js
12351235 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12361236- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-block-scoping.js
1237  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1237 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12381238- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-block-fn-no-init.js
1239  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1239 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12401240- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-block-fn-update.js
12411241 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12421242- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-fn-no-init.js
12431243 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12441244- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-fn-update.js
1245  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1245 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12461246- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-global-init.js
12471247 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12481248- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-global-update.js

12521252- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-var-update.js
12531253 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12541254- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-init.js
1255  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1255 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12561256- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-no-skip-try.js
1257  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1257 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12581258- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js
12591259 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12601260- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js

12681268- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js
12691269 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12701270- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err.js
1271  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1271 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12721272- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-update.js
12731273 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12741274- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-block-scoping.js
1275  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1275 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12761276- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-block-fn-no-init.js
1277  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1277 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12781278- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-block-fn-update.js
12791279 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12801280- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-fn-no-init.js
12811281 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12821282- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-fn-update.js
1283  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1283 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12841284- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-global-init.js
12851285 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12861286- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-global-update.js

12901290- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-var-update.js
12911291 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12921292- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-init.js
1293  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1293 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
12941294- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-no-skip-try.js
1295  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1295 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12961296- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js
12971297 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
12981298- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js

13061306- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-try.js
13071307 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13081308- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err.js
1309  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1309 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13101310- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-update.js
13111311 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13121312- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-block-scoping.js
1313  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1313 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13141314- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-block-fn-no-init.js
1315  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1315 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13161316- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-block-fn-update.js
13171317 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13181318- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-fn-no-init.js
13191319 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13201320- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-fn-update.js
1321  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1321 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13221322- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-global-init.js
13231323 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
13241324- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-global-update.js

13281328- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-var-update.js
13291329 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13301330- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-init.js
1331  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1331 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
13321332- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-no-skip-try.js
1333  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1333 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13341334- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-block.js
13351335 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13361336- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js

13441344- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-try.js
13451345 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13461346- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err.js
1347  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1347 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13481348- path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-update.js
13491349 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13501350- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-block-scoping.js
1351  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1351 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13521352- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-block-fn-no-init.js
1353  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1353 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13541354- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-block-fn-update.js
13551355 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13561356- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-fn-no-init.js
13571357 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13581358- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-fn-update.js
1359  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1359 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13601360- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-global-init.js
13611361 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
13621362- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-global-update.js

13661366- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-var-update.js
13671367 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13681368- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-init.js
1369  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1369 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
13701370- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-no-skip-try.js
1371  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1371 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13721372- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-block.js
13731373 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13741374- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-for-in.js

13821382- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-try.js
13831383 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13841384- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err.js
1385  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1385 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13861386- path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-update.js
13871387 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13881388- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-block-scoping.js
1389  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1389 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13901390- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-block-fn-no-init.js
1391  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1391 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13921392- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-block-fn-update.js
13931393 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13941394- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-fn-no-init.js
13951395 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13961396- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-fn-update.js
1397  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1397 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
13981398- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-global-init.js
13991399 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14001400- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-global-update.js

14041404- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-var-update.js
14051405 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14061406- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-init.js
1407  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1407 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14081408- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-no-skip-try.js
1409  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1409 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14101410- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-block.js
14111411 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14121412- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js

14201420- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-try.js
14211421 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14221422- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err.js
1423  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1423 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14241424- path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-update.js
14251425 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14261426- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-block-scoping.js
1427  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1427 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14281428- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-block-fn-no-init.js
1429  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1429 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14301430- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-block-fn-update.js
14311431 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14321432- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-fn-no-init.js
14331433 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14341434- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-fn-update.js
1435  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1435 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14361436- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-global-init.js
14371437 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14381438- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-global-update.js

14421442- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-var-update.js
14431443 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14441444- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-init.js
1445  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1445 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14461446- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-no-skip-try.js
1447  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1447 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14481448- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-block.js
14491449 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14501450- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-for-in.js

14581458- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-try.js
14591459 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14601460- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err.js
1461  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1461 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14621462- path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-update.js
14631463 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14641464- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-block-scoping.js
1465  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1465 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14661466- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-block-fn-no-init.js
1467  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1467 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14681468- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-block-fn-update.js
14691469 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14701470- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-fn-no-init.js
14711471 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14721472- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-fn-update.js
1473  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1473 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14741474- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-global-init.js
14751475 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14761476- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-global-update.js

14801480- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-var-update.js
14811481 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14821482- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-init.js
1483  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1483 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
14841484- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-no-skip-try.js
1485  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1485 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14861486- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-block.js
14871487 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14881488- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-for-in.js

14961496- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-try.js
14971497 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
14981498- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err.js
1499  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1499 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15001500- path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-update.js
15011501 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15021502- path: test262/test/annexB/language/eval-code/direct/var-env-lower-lex-catch-non-strict.js
15031503 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15041504- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-block-scoping.js
1505  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1505 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15061506- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-block-fn-no-init.js
1507  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1507 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15081508- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-block-fn-update.js
15091509 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15101510- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-fn-no-init.js
15111511 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15121512- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-fn-update.js
1513  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1513 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15141514- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-global-init.js
15151515 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
15161516- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-global-update.js

15201520- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-var-update.js
15211521 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15221522- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-init.js
1523  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1523 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
15241524- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-no-skip-try.js
1525  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1525 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15261526- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-block.js
15271527 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15281528- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-for-in.js

15361536- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-try.js
15371537 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15381538- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err.js
1539  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1539 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15401540- path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-update.js
15411541 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15421542- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-block-scoping.js
1543  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1543 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15441544- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-block-fn-no-init.js
1545  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1545 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15461546- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-block-fn-update.js
15471547 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15481548- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-fn-no-init.js
15491549 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15501550- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-fn-update.js
1551  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1551 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15521552- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-global-init.js
15531553 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
15541554- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-global-update.js

15581558- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-var-update.js
15591559 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15601560- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-init.js
1561  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1561 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
15621562- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-no-skip-try.js
1563  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1563 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15641564- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js
15651565 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15661566- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js

15741574- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js
15751575 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15761576- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err.js
1577  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1577 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15781578- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-update.js
15791579 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15801580- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-block-scoping.js
1581  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1581 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15821582- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-block-fn-no-init.js
1583  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1583 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15841584- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-block-fn-update.js
15851585 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15861586- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-fn-no-init.js
15871587 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15881588- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-fn-update.js
1589  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1589 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15901590- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-global-init.js
15911591 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
15921592- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-global-update.js

15961596- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-var-update.js
15971597 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
15981598- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-init.js
1599  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1599 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
16001600- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-no-skip-try.js
1601  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1601 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16021602- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js
16031603 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16041604- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js

16121612- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-try.js
16131613 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16141614- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err.js
1615  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1615 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16161616- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-update.js
16171617 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16181618- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-block-scoping.js
1619  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1619 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16201620- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-block-fn-no-init.js
1621  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1621 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16221622- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-block-fn-update.js
16231623 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16241624- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-fn-no-init.js
16251625 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16261626- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-fn-update.js
1627  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1627 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16281628- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-global-init.js
16291629 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
16301630- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-global-update.js

16341634- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-var-update.js
16351635 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16361636- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-init.js
1637  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1637 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
16381638- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-no-skip-try.js
1639  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1639 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16401640- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-block.js
16411641 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16421642- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js

16501650- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-try.js
16511651 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16521652- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err.js
1653  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1653 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16541654- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-update.js
16551655 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16561656- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-block-scoping.js
1657  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1657 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16581658- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-block-fn-no-init.js
1659  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1659 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16601660- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-block-fn-update.js
16611661 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16621662- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-fn-no-init.js
16631663 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16641664- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-fn-update.js
1665  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1665 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16661666- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-global-init.js
16671667 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
16681668- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-global-update.js

16721672- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-var-update.js
16731673 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16741674- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-init.js
1675  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1675 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
16761676- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-no-skip-try.js
1677  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1677 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16781678- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-block.js
16791679 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16801680- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-for-in.js

16881688- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-try.js
16891689 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16901690- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err.js
1691  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1691 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16921692- path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-update.js
16931693 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16941694- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-block-scoping.js
1695  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1695 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16961696- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-block-fn-no-init.js
1697  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1697 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
16981698- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-block-fn-update.js
16991699 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17001700- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-fn-no-init.js
17011701 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17021702- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-fn-update.js
1703  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1703 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17041704- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-global-init.js
17051705 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17061706- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-global-update.js

17101710- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-var-update.js
17111711 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17121712- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-init.js
1713  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1713 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17141714- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-no-skip-try.js
1715  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1715 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17161716- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-block.js
17171717 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17181718- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js

17261726- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-try.js
17271727 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17281728- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err.js
1729  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1729 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17301730- path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-update.js
17311731 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17321732- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-block-scoping.js
1733  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1733 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17341734- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-block-fn-no-init.js
1735  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1735 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17361736- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-block-fn-update.js
17371737 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17381738- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-fn-no-init.js
17391739 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17401740- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-fn-update.js
1741  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1741 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17421742- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-global-init.js
17431743 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17441744- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-global-update.js

17481748- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-var-update.js
17491749 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17501750- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-init.js
1751  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1751 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17521752- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-no-skip-try.js
1753  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1753 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17541754- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-block.js
17551755 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17561756- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-for-in.js

17641764- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-try.js
17651765 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17661766- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err.js
1767  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1767 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17681768- path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-update.js
17691769 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17701770- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-block-scoping.js
1771  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1771 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17721772- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-block-fn-no-init.js
1773  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1773 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17741774- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-block-fn-update.js
17751775 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17761776- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-fn-no-init.js
17771777 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17781778- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-fn-update.js
1779  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1779 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17801780- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-global-init.js
17811781 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17821782- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-global-update.js

17861786- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-var-update.js
17871787 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17881788- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-init.js
1789  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
 1789 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []
17901790- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-no-skip-try.js
1791  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1791 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17921792- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-block.js
17931793 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
17941794- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-for-in.js

18021802- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-try.js
18031803 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
18041804- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err.js
1805  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 1805 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
18061806- path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-update.js
18071807 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
18081808- path: test262/test/annexB/language/expressions/object/__proto__-duplicate.js