Changeset 239898 in webkit
- Timestamp:
- Jan 12, 2019, 1:49:17 AM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
bytecode/CodeBlock.cpp (modified) (4 diffs)
-
runtime/JSGlobalObject.cpp (modified) (2 diffs)
-
runtime/ProgramExecutable.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r239888 r239898 1 2019-01-12 Yusuke Suzuki <yusukesuzuki@slowstart.org> 2 3 Unreviewed, fix scope check assertions 4 https://bugs.webkit.org/show_bug.cgi?id=193308 5 6 * bytecode/CodeBlock.cpp: 7 (JSC::CodeBlock::notifyLexicalBindingShadowing): 8 * runtime/JSGlobalObject.cpp: 9 (JSC::JSGlobalObject::notifyLexicalBindingShadowing): 10 * runtime/ProgramExecutable.cpp: 11 (JSC::ProgramExecutable::initializeGlobalProperties): 12 1 13 2019-01-11 John Wilander <wilander@apple.com> 2 14 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r239879 r239898 2677 2677 JSGlobalObject* globalObject = m_globalObject.get(); 2678 2678 2679 auto throwScope = DECLARE_THROW_SCOPE(vm);2679 auto scope = DECLARE_THROW_SCOPE(vm); 2680 2680 2681 2681 ConcurrentJSLocker locker(m_lock); … … 2694 2694 // It should immediately find the lexical binding because that's the reason why we perform this rewriting now. 2695 2695 ResolveOp op = JSScope::abstractResolve(m_globalObject->globalExec(), bytecode.localScopeDepth, globalObject->globalScope(), ident, Get, bytecode.resolveType, InitializationMode::NotInitialization); 2696 EXCEPTION_ASSERT_UNUSED(throwScope, !throwScope.exception());2696 scope.releaseAssertNoException(); 2697 2697 ASSERT(op.type == GlobalLexicalVarWithVarInjectionChecks || op.type == GlobalLexicalVar); 2698 2698 metadata.resolveType = needsVarInjectionChecks(originalResolveType) ? GlobalLexicalVarWithVarInjectionChecks : GlobalLexicalVar; … … 2718 2718 // It should immediately find the lexical binding because that's the reason why we perform this rewriting now. 2719 2719 ResolveOp op = JSScope::abstractResolve(m_globalObject->globalExec(), bytecode.localScopeDepth, globalObject->globalScope(), ident, Get, bytecode.getPutInfo.resolveType(), InitializationMode::NotInitialization); 2720 EXCEPTION_ASSERT_UNUSED(throwScope, !throwScope.exception());2720 scope.releaseAssertNoException(); 2721 2721 ASSERT(op.type == GlobalLexicalVarWithVarInjectionChecks || op.type == GlobalLexicalVar); 2722 2722 metadata.getPutInfo = GetPutInfo(bytecode.getPutInfo.resolveMode(), needsVarInjectionChecks(originalResolveType) ? GlobalLexicalVarWithVarInjectionChecks : GlobalLexicalVar, bytecode.getPutInfo.initializationMode()); … … 2739 2739 // It should immediately find the lexical binding because that's the reason why we perform this rewriting now. 2740 2740 ResolveOp op = JSScope::abstractResolve(m_globalObject->globalExec(), bytecode.symbolTableOrScopeDepth, globalObject->globalScope(), ident, Put, bytecode.getPutInfo.resolveType(), bytecode.getPutInfo.initializationMode()); 2741 EXCEPTION_ASSERT_UNUSED(throwScope, !throwScope.exception());2741 scope.releaseAssertNoException(); 2742 2742 ASSERT(op.type == GlobalLexicalVarWithVarInjectionChecks || op.type == GlobalLexicalVar || op.type == Dynamic); 2743 2743 -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r239879 r239898 1854 1854 void JSGlobalObject::notifyLexicalBindingShadowing(VM& vm, const IdentifierSet& set) 1855 1855 { 1856 auto scope = DECLARE_THROW_SCOPE(vm); 1856 1857 #if ENABLE(DFG_JIT) 1857 1858 for (const auto& key : set) … … 1862 1863 return; 1863 1864 codeBlock->notifyLexicalBindingShadowing(vm, set); 1865 scope.assertNoException(); 1864 1866 }); 1867 scope.release(); 1865 1868 } 1866 1869 -
trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp
r239879 r239898 208 208 } 209 209 210 if (!shadowedProperties.isEmpty()) 210 if (!shadowedProperties.isEmpty()) { 211 211 globalObject->notifyLexicalBindingShadowing(vm, WTFMove(shadowedProperties)); 212 throwScope.assertNoException(); 213 } 212 214 213 215 return nullptr;
Note:
See TracChangeset
for help on using the changeset viewer.