Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 71208eb12b5e44e08b3f7db2ada7a19addcce765
https://github.com/WebKit/WebKit/commit/71208eb12b5e44e08b3f7db2ada7a19addcce765
Author: Yusuke Suzuki <[email protected]>
Date: 2026-07-08 (Wed, 08 Jul 2026)
Changed paths:
M Source/JavaScriptCore/b3/B3CheckSpecial.cpp
M Source/JavaScriptCore/b3/B3LowerToAir.cpp
M Source/JavaScriptCore/b3/B3PatchpointSpecial.cpp
M Source/JavaScriptCore/b3/B3StackmapSpecial.cpp
M
Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp
M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp
M Source/JavaScriptCore/b3/air/AirAllocateStackByGraphColoring.cpp
M Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp
M Source/JavaScriptCore/b3/air/AirCCallingConvention.cpp
M Source/JavaScriptCore/b3/air/AirCustom.cpp
M Source/JavaScriptCore/b3/air/AirCustom.h
M Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp
M Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp
M Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp
M Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp
M Source/JavaScriptCore/b3/air/AirInst.cpp
M Source/JavaScriptCore/b3/air/AirInst.h
M Source/JavaScriptCore/b3/air/AirInstInlines.h
M Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp
M Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp
M Source/JavaScriptCore/b3/air/AirOptimizeBlockOrder.cpp
M Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp
M Source/JavaScriptCore/b3/air/AirPrintSpecial.cpp
M Source/JavaScriptCore/b3/air/AirPrintSpecial.h
M Source/JavaScriptCore/b3/air/AirTmpWidth.cpp
M Source/JavaScriptCore/b3/air/AirUseCounts.h
M Source/JavaScriptCore/b3/air/AirValidate.cpp
M Source/JavaScriptCore/b3/air/opcode_generator.rb
M Source/JavaScriptCore/b3/air/testair.cpp
M Source/JavaScriptCore/b3/testb3_2.cpp
M Source/JavaScriptCore/b3/testb3_6.cpp
M Source/JavaScriptCore/b3/testb3_7.cpp
Log Message:
-----------
[JSC] Make sizeof(Air::Inst) 64
https://bugs.webkit.org/show_bug.cgi?id=318899
rdar://181734365
Reviewed by Keith Miller.
This patch reduces sizeof(Air::Inst) from 80 to 64.
1. We stop using Vector<> in Air::Inst. And managing inline buffer and
allocated buffer inside Air::Inst. We stop modifying the underlying
Vector directly, and instead, Air::Inst shows setArgs interface,
which can be used to set arguments.
2. Air::Inst exposes args as std::span instead of Vector.
Doing so reduces the sizeof(Air::Inst). This is critical since Air's
time consumption is basically coming from iterating Air::Inst instances.
Smaller and dense representation makes it cheaper.
Tests: Source/JavaScriptCore/b3/air/testair.cpp
Source/JavaScriptCore/b3/testb3_2.cpp
Source/JavaScriptCore/b3/testb3_6.cpp
Source/JavaScriptCore/b3/testb3_7.cpp
* Source/JavaScriptCore/b3/B3CheckSpecial.cpp:
(JSC::B3::CheckSpecial::Key::Key):
(JSC::B3::CheckSpecial::hiddenBranch const):
(JSC::B3::CheckSpecial::forEachArg):
(JSC::B3::CheckSpecial::isValid):
(JSC::B3::CheckSpecial::generate):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3PatchpointSpecial.cpp:
(JSC::B3::PatchpointSpecial::forEachArg):
(JSC::B3::PatchpointSpecial::isValid):
(JSC::B3::PatchpointSpecial::generate):
* Source/JavaScriptCore/b3/B3StackmapSpecial.cpp:
(JSC::B3::StackmapSpecial::forEachArgImpl):
(JSC::B3::StackmapSpecial::isValidImpl):
(JSC::B3::StackmapSpecial::repsImpl):
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:
(JSC::B3::Air::GenerateAndAllocateRegisters::generate):
* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp:
* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp:
(JSC::B3::Air::Greedy::GreedyAllocator::buildLiveRanges):
(JSC::B3::Air::Greedy::GreedyAllocator::validateCoalescing):
(JSC::B3::Air::Greedy::GreedyAllocator::rewriteCoalescedTmps):
(JSC::B3::Air::Greedy::GreedyAllocator::emitSpillCodeAndEnqueueNewTmps):
(JSC::B3::Air::Greedy::GreedyAllocator::mayBeCoalescable):
(JSC::B3::Air::Greedy::GreedyAllocator::assignRegisters):
* Source/JavaScriptCore/b3/air/AirAllocateStackByGraphColoring.cpp:
* Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp:
(JSC::B3::Air::CCallSpecial::forEachArg):
(JSC::B3::Air::CCallSpecial::isValid):
(JSC::B3::Air::CCallSpecial::generate):
* Source/JavaScriptCore/b3/air/AirCCallingConvention.cpp:
(JSC::B3::Air::buildCCall):
* Source/JavaScriptCore/b3/air/AirCustom.cpp:
(JSC::B3::Air::PatchCustom::isValidForm):
(JSC::B3::Air::CCallCustom::isValidForm):
(JSC::B3::Air::ShuffleCustom::isValidForm):
(JSC::B3::Air::WasmBoundsCheckCustom::isValidForm):
(JSC::B3::Air::WasmBoundsCheckCustom::generate):
* Source/JavaScriptCore/b3/air/AirCustom.h:
(JSC::B3::Air::PatchCustom::forEachArg):
(JSC::B3::Air::PatchCustom::admitsStack):
(JSC::B3::Air::PatchCustom::admitsExtendedOffsetAddr):
(JSC::B3::Air::PatchCustom::shouldTryAliasingDef):
(JSC::B3::Air::PatchCustom::isTerminal):
(JSC::B3::Air::PatchCustom::hasNonArgEffects):
(JSC::B3::Air::PatchCustom::hasNonArgNonControlEffects):
(JSC::B3::Air::PatchCustom::generate):
(JSC::B3::Air::CCallCustom::forEachArg):
(JSC::B3::Air::ShuffleCustom::forEachArg):
(JSC::B3::Air::EntrySwitchCustom::isValidForm):
(JSC::B3::Air::WasmBoundsCheckCustom::forEachArg):
* Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:
(JSC::B3::Air::eliminateDeadCode):
* Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:
(JSC::B3::Air::createShuffle):
* Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp:
* Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp:
* Source/JavaScriptCore/b3/air/AirInst.cpp:
(JSC::B3::Air::Inst::jsHash const):
(JSC::B3::Air::Inst::dump const):
* Source/JavaScriptCore/b3/air/AirInst.h:
(JSC::B3::Air::Inst::Inst):
(JSC::B3::Air::Inst::operator=):
(JSC::B3::Air::Inst::~Inst):
(JSC::B3::Air::Inst::setArgs):
(JSC::B3::Air::Inst::operator bool const):
(JSC::B3::Air::Inst::forEachTmpFast):
(JSC::B3::Air::Inst::argsData):
(JSC::B3::Air::Inst::argsData const):
(JSC::B3::Air::Inst::initializeArgsFrom):
(JSC::B3::Air::Inst::moveArgsFrom):
(JSC::B3::Air::Inst::destroyArgs):
(JSC::B3::Air::Inst::kind): Deleted.
(JSC::B3::Air::Inst::append): Deleted.
* Source/JavaScriptCore/b3/air/AirInstInlines.h:
(JSC::B3::Air::Inst::extraClobberedRegs):
(JSC::B3::Air::Inst::extraEarlyClobberedRegs):
(JSC::B3::Air::Inst::reportUsedRegisters):
(JSC::B3::Air::Inst::admitsStack):
(JSC::B3::Air::Inst::admitsExtendedOffsetAddr):
(JSC::B3::Air::Inst::shouldTryAliasingDef):
(JSC::B3::Air::isAddZeroExtend64Valid):
(JSC::B3::Air::isAddSignExtend64Valid):
(JSC::B3::Air::isShiftValid):
(JSC::B3::Air::isX86DivHelperValid):
(JSC::B3::Air::isX86MulHighHelperValid):
(JSC::B3::Air::isAtomicStrongCASValid):
(JSC::B3::Air::isBranchAtomicStrongCASValid):
(JSC::B3::Air::isVectorSwizzle2Valid):
* Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp:
(JSC::B3::Air::lowerAfterRegAlloc):
* Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp:
(JSC::B3::Air::lowerStackArgs):
* Source/JavaScriptCore/b3/air/AirOptimizeBlockOrder.cpp:
(JSC::B3::Air::optimizeBlockOrder):
* Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp:
(JSC::B3::Air::tryStorePair):
(JSC::B3::Air::optimizePairedLoadStore):
* Source/JavaScriptCore/b3/air/AirPrintSpecial.cpp:
(JSC::B3::Air::PrintSpecial::generate):
* Source/JavaScriptCore/b3/air/AirPrintSpecial.h:
(JSC::Printer::appendAirArg):
(JSC::Printer::appendAirArgs):
* Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:
(JSC::B3::Air::TmpWidth::recompute):
* Source/JavaScriptCore/b3/air/AirUseCounts.h:
(JSC::B3::Air::UseCounts::UseCounts):
* Source/JavaScriptCore/b3/air/AirValidate.cpp:
* Source/JavaScriptCore/b3/air/opcode_generator.rb:
* Source/JavaScriptCore/b3/air/testair.cpp:
* Source/JavaScriptCore/b3/testb3_2.cpp:
(testTernarySubInstructionSelection):
* Source/JavaScriptCore/b3/testb3_6.cpp:
(testBranchBitAndImmFusion):
* Source/JavaScriptCore/b3/testb3_7.cpp:
(testOptimizeMaterialization):
Canonical link: https://commits.webkit.org/316782@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications