Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9cbcbb9905590a2f45487a466d92e348e64250e2
https://github.com/WebKit/WebKit/commit/9cbcbb9905590a2f45487a466d92e348e64250e2
Author: Sosuke Suzuki <[email protected]>
Date: 2026-07-25 (Sat, 25 Jul 2026)
Changed paths:
M Source/JavaScriptCore/bytecode/UnlinkedModuleProgramCodeBlock.h
M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
M Source/JavaScriptCore/parser/ModuleAnalyzer.cpp
M Source/JavaScriptCore/parser/ModuleAnalyzer.h
M Source/JavaScriptCore/runtime/CachedTypes.cpp
M Source/JavaScriptCore/runtime/Completion.cpp
M Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp
M Source/JavaScriptCore/runtime/JSModuleLoader.cpp
M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
M Source/JavaScriptCore/runtime/JSModuleRecord.h
Log Message:
-----------
[JSC] `JSModuleRecord` should not retain the parser's `VariableEnvironments`
https://bugs.webkit.org/show_bug.cgi?id=320151
Reviewed by Yusuke Suzuki.
JSModuleRecord kept copies of the module's declared and lexical
VariableEnvironments alive for
the lifetime of the record, but the lexical one is only read by ModuleAnalyzer
(which already receives
the ModuleProgramNode) and the declared one only by InitializeEnvironment's var
initialization loop.
Read the former from the node and store the latter in
UnlinkedModuleProgramCodeBlock, as
UnlinkedProgramCodeBlock already does for scripts, so it lives and dies with
the unlinked code.
This shrinks JSModuleRecord from 512 to 320 bytes.
* Source/JavaScriptCore/bytecode/UnlinkedModuleProgramCodeBlock.h:
* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
* Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:
(JSC::ModuleAnalyzer::ModuleAnalyzer):
(JSC::ModuleAnalyzer::analyze):
* Source/JavaScriptCore/parser/ModuleAnalyzer.h:
* Source/JavaScriptCore/runtime/CachedTypes.cpp:
(JSC::CachedModuleCodeBlock::encode):
(JSC::CachedModuleCodeBlock::decode const):
* Source/JavaScriptCore/runtime/Completion.cpp:
(JSC::checkModuleSyntax):
* Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp:
(JSC::CyclicModuleRecord::initializeEnvironment):
* Source/JavaScriptCore/runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::makeModule):
* Source/JavaScriptCore/runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::create):
(JSC::JSModuleRecord::JSModuleRecord):
* Source/JavaScriptCore/runtime/JSModuleRecord.h:
Canonical link: https://commits.webkit.org/317931@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications