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

Reply via email to