[webkit-changes] [WebKit/WebKit] 912bf2: Refactor RegisterSet to support 128-bit widths

Justin Michaud noreply at github.com
Wed Oct 19 08:54:25 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 912bf24408b133a05170c173c057ef898c5ee4aa
      https://github.com/WebKit/WebKit/commit/912bf24408b133a05170c173c057ef898c5ee4aa
  Author: Justin Michaud <justin at justinmichaud.com>
  Date:   2022-10-19 (Wed, 19 Oct 2022)

  Changed paths:
    M JSTests/wasm/assert.js
    M JSTests/wasm/wasm.json
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/b3/B3Bank.h
    M Source/JavaScriptCore/b3/B3ConstrainedValue.h
    M Source/JavaScriptCore/b3/B3Effects.h
    M Source/JavaScriptCore/b3/B3LowerMacros.cpp
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/B3MemoryValue.cpp
    M Source/JavaScriptCore/b3/B3MemoryValue.h
    M Source/JavaScriptCore/b3/B3Procedure.cpp
    M Source/JavaScriptCore/b3/B3Procedure.h
    M Source/JavaScriptCore/b3/B3StackmapGenerationParams.cpp
    M Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
    M Source/JavaScriptCore/b3/B3StackmapSpecial.cpp
    M Source/JavaScriptCore/b3/B3StackmapSpecial.h
    M Source/JavaScriptCore/b3/B3StackmapValue.h
    M Source/JavaScriptCore/b3/B3Type.h
    M Source/JavaScriptCore/b3/B3ValueRep.cpp
    M Source/JavaScriptCore/b3/B3ValueRep.h
    M Source/JavaScriptCore/b3/B3Width.cpp
    M Source/JavaScriptCore/b3/B3Width.h
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.h
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp
    M Source/JavaScriptCore/b3/air/AirAllocateStackByGraphColoring.cpp
    M Source/JavaScriptCore/b3/air/AirArg.h
    M Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp
    M Source/JavaScriptCore/b3/air/AirCCallSpecial.h
    M Source/JavaScriptCore/b3/air/AirCode.cpp
    M Source/JavaScriptCore/b3/air/AirCode.h
    M Source/JavaScriptCore/b3/air/AirCustom.cpp
    M Source/JavaScriptCore/b3/air/AirEmitShuffle.h
    M Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp
    M Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.cpp
    M Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.h
    M Source/JavaScriptCore/b3/air/AirInst.h
    M Source/JavaScriptCore/b3/air/AirInstInlines.h
    M Source/JavaScriptCore/b3/air/AirLogRegisterPressure.cpp
    M Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp
    M Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp
    M Source/JavaScriptCore/b3/air/AirPrintSpecial.cpp
    M Source/JavaScriptCore/b3/air/AirPrintSpecial.h
    M Source/JavaScriptCore/b3/air/AirRegLiveness.cpp
    M Source/JavaScriptCore/b3/air/AirRegLiveness.h
    M Source/JavaScriptCore/b3/air/AirReportUsedRegisters.cpp
    M Source/JavaScriptCore/b3/air/AirSpecial.h
    M Source/JavaScriptCore/b3/air/AirTmpMap.h
    M Source/JavaScriptCore/b3/air/AirTmpWidth.cpp
    M Source/JavaScriptCore/b3/air/AirTmpWidth.h
    M Source/JavaScriptCore/b3/air/testair.cpp
    M Source/JavaScriptCore/b3/testb3_3.cpp
    M Source/JavaScriptCore/b3/testb3_4.cpp
    M Source/JavaScriptCore/b3/testb3_5.cpp
    M Source/JavaScriptCore/b3/testb3_6.cpp
    M Source/JavaScriptCore/b3/testb3_7.cpp
    M Source/JavaScriptCore/b3/testb3_8.cpp
    M Source/JavaScriptCore/bytecode/AccessCase.cpp
    M Source/JavaScriptCore/bytecode/AccessCase.h
    M Source/JavaScriptCore/bytecode/AccessCaseSnippetParams.cpp
    M Source/JavaScriptCore/bytecode/AccessCaseSnippetParams.h
    M Source/JavaScriptCore/bytecode/CodeBlock.h
    M Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp
    M Source/JavaScriptCore/bytecode/InlineAccess.cpp
    M Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp
    M Source/JavaScriptCore/bytecode/PolymorphicAccess.h
    M Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp
    M Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
    M Source/JavaScriptCore/bytecode/StructureStubInfo.h
    M Source/JavaScriptCore/dfg/DFGJITCode.cpp
    M Source/JavaScriptCore/dfg/DFGJITCode.h
    M Source/JavaScriptCore/dfg/DFGOSREntry.cpp
    M Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp
    M Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/dfg/DFGThunks.cpp
    M Source/JavaScriptCore/ftl/FTLJITCode.cpp
    M Source/JavaScriptCore/ftl/FTLJITCode.h
    M Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp
    M Source/JavaScriptCore/ftl/FTLLazySlowPath.h
    M Source/JavaScriptCore/ftl/FTLLocation.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
    M Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp
    M Source/JavaScriptCore/ftl/FTLOutput.h
    M Source/JavaScriptCore/ftl/FTLSaveRestore.cpp
    M Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp
    M Source/JavaScriptCore/ftl/FTLSlowPathCall.h
    M Source/JavaScriptCore/ftl/FTLSlowPathCallKey.cpp
    M Source/JavaScriptCore/ftl/FTLSlowPathCallKey.h
    M Source/JavaScriptCore/ftl/FTLThunks.cpp
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.h
    M Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h
    M Source/JavaScriptCore/jit/CCallHelpers.cpp
    M Source/JavaScriptCore/jit/CCallHelpers.h
    M Source/JavaScriptCore/jit/CallFrameShuffleData.cpp
    M Source/JavaScriptCore/jit/CallFrameShuffler.cpp
    M Source/JavaScriptCore/jit/CallFrameShuffler.h
    M Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp
    M Source/JavaScriptCore/jit/CallFrameShuffler64.cpp
    M Source/JavaScriptCore/jit/JITArithmetic.cpp
    M Source/JavaScriptCore/jit/JITCall.cpp
    M Source/JavaScriptCore/jit/JITCode.cpp
    M Source/JavaScriptCore/jit/JITCode.h
    M Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp
    M Source/JavaScriptCore/jit/JITInlineCacheGenerator.h
    M Source/JavaScriptCore/jit/JITOpcodes.cpp
    M Source/JavaScriptCore/jit/JITPropertyAccess.cpp
    M Source/JavaScriptCore/jit/Reg.h
    M Source/JavaScriptCore/jit/RegisterAtOffset.h
    M Source/JavaScriptCore/jit/RegisterAtOffsetList.cpp
    M Source/JavaScriptCore/jit/RegisterAtOffsetList.h
    M Source/JavaScriptCore/jit/RegisterSet.cpp
    M Source/JavaScriptCore/jit/RegisterSet.h
    M Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp
    M Source/JavaScriptCore/jit/ScratchRegisterAllocator.h
    A Source/JavaScriptCore/jit/Width.cpp
    A Source/JavaScriptCore/jit/Width.h
    M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
    M Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.cpp
    M Source/JavaScriptCore/wasm/WasmCallingConvention.cpp
    M Source/JavaScriptCore/wasm/WasmCallingConvention.h
    M Source/JavaScriptCore/wasm/WasmFormat.h
    M Source/JavaScriptCore/wasm/WasmMemoryInformation.h
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmThunks.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
    M Source/JavaScriptCore/wasm/generateWasmOpsHeader.py
    M Source/JavaScriptCore/wasm/js/JSToWasm.cpp
    M Source/JavaScriptCore/wasm/js/WasmToJS.cpp
    M Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp
    M Source/JavaScriptCore/wasm/wasm.json
    M Source/WTF/wtf/Atomics.h
    M Source/WTF/wtf/Bitmap.h

  Log Message:
  -----------
  Refactor RegisterSet to support 128-bit widths
https://bugs.webkit.org/show_bug.cgi?id=246487
rdar://101148986

Reviewed by Yusuke Suzuki.

In preparation for WASM SIMD support, RegisterSet gains the
ability to model half-included registers.

This is needed because on ARM64, there are 8 64-bit callee-save FPRs.
The upper 64-bits of these registers (the vector portion) can be clobbered
by callees, so calls need to be able to say "I clobber only the upper 64-bits"
or "I preserve only the lower 64-bits."

For the case when we want to ask "how many bits do I need to save," we
now use RegisterSet. It is only capable of thinking about whole
registers and their preserved/included widths.

If we want to do register set math, like StuffIClobber() - StuffIAlreadySaved(),
we use a RegisterSetBuilder. We then convert it into a RegisterSet, so that we
can ask "How much of q0 do I need to save?" The types make sure that we
have to do some kind of explicit conversion if we accidentally confuse the two,
so any bugs will be present in the diff presented here.

ScalarRegisterSet is added for cases when you don't care at all about vectors,
and you potentially need to save the extra 8 bytes.

We also add the .buldAndValidate() method, which debug-asserts that your RegisterSet
was already whole, and the .buildScalar() method, which does that and returns a ScalarRegisterSet.

* JSTests/wasm/wasm.json:
* Source/JavaScriptCore/b3/B3Bank.h:
(JSC::B3::minimumWidth):
(JSC::B3::conservativeWidthWithoutVectors):
(JSC::B3::conservativeWidth):
(JSC::B3::conservativeRegisterBytes):
(JSC::B3::conservativeRegisterBytesWithoutVectors):
* Source/JavaScriptCore/b3/B3ConstrainedValue.h:
(JSC::B3::ArgumentLocation::ArgumentLocation):
(JSC::B3::ConstrainedValue::ConstrainedValue):
* Source/JavaScriptCore/b3/B3LowerMacros.cpp:
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3MemoryValue.cpp:
(JSC::B3::MemoryValue::accessByteSize const):
* Source/JavaScriptCore/b3/B3MemoryValue.h:
* Source/JavaScriptCore/b3/B3StackmapGenerationParams.cpp:
(JSC::B3::StackmapGenerationParams::unavailableRegisters const):
* Source/JavaScriptCore/b3/B3ValueRep.cpp:
(JSC::B3::ValueRep::addUsedRegistersTo const):
* Source/JavaScriptCore/b3/B3Width.cpp:
(JSC::B3::bestType):
(WTF::printInternal): Deleted.
* Source/JavaScriptCore/b3/B3Width.h:
(): Deleted.
(JSC::B3::pointerWidth): Deleted.
(JSC::B3::canonicalWidth): Deleted.
(JSC::B3::isCanonicalWidth): Deleted.
(JSC::B3::conservativeWidth): Deleted.
(JSC::B3::minimumWidth): Deleted.
(JSC::B3::bytes): Deleted.
(JSC::B3::widthForBytes): Deleted.
(JSC::B3::bytesForWidth): Deleted.
(JSC::B3::mask): Deleted.
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:
(JSC::B3::Air::GenerateAndAllocateRegisters::checkConsistency):
(JSC::B3::Air::GenerateAndAllocateRegisters::release):
(JSC::B3::Air::GenerateAndAllocateRegisters::flush):
(JSC::B3::Air::GenerateAndAllocateRegisters::alloc):
(JSC::B3::Air::GenerateAndAllocateRegisters::assignTmp):
(JSC::B3::Air::GenerateAndAllocateRegisters::isDisallowedRegister):
(JSC::B3::Air::GenerateAndAllocateRegisters::prepareForGeneration):
(JSC::B3::Air::GenerateAndAllocateRegisters::generate):
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.h:
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:
* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp:
* Source/JavaScriptCore/b3/air/AirAllocateStackByGraphColoring.cpp:
* Source/JavaScriptCore/b3/air/AirArg.h:
(JSC::B3::Air::Arg::isValidScale):
(JSC::B3::Air::Arg::widthArg):
(JSC::B3::Air::Arg::isRepresentableAs):
(JSC::B3::Air::Arg::castToType):
(JSC::B3::Air::Arg::width const):
(JSC::B3::Air::Arg::isValidAddrForm):
* Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp:
(JSC::B3::Air::CCallSpecial::CCallSpecial):
(JSC::B3::Air::CCallSpecial::extraEarlyClobberedRegs):
* Source/JavaScriptCore/b3/air/AirCCallSpecial.h:
* Source/JavaScriptCore/b3/air/AirCode.cpp:
(JSC::B3::Air::Code::Code):
(JSC::B3::Air::Code::setRegsInPriorityOrder):
(JSC::B3::Air::Code::pinRegister):
(JSC::B3::Air::Code::mutableGPRs):
(JSC::B3::Air::Code::mutableFPRs):
(JSC::B3::Air::Code::setCalleeSaveRegisterAtOffsetList):
* Source/JavaScriptCore/b3/air/AirCode.h:
(JSC::B3::Air::Code::mutableRegs const):
(JSC::B3::Air::Code::isPinned const):
(JSC::B3::Air::Code::pinnedRegisters const):
* Source/JavaScriptCore/b3/air/AirCustom.cpp:
(JSC::B3::Air::PatchCustom::isValidForm):
* Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp:
(JSC::B3::Air::fixPartialRegisterStalls):
* Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.cpp:
(JSC::B3::Air::handleCalleeSaves):
* Source/JavaScriptCore/b3/air/AirInstInlines.h:
(JSC::B3::Air::Inst::forEachDefWithExtraClobberedRegs):
* Source/JavaScriptCore/b3/air/AirLogRegisterPressure.cpp:
(JSC::B3::Air::logRegisterPressure):
* Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp:
(JSC::B3::Air::lowerAfterRegAlloc):
* Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp:
(JSC::B3::Air::lowerStackArgs):
* Source/JavaScriptCore/b3/air/AirRegLiveness.cpp:
(JSC::B3::Air::RegLiveness::RegLiveness):
(JSC::B3::Air::RegLiveness::LocalCalcForUnifiedTmpLiveness::LocalCalcForUnifiedTmpLiveness):
(JSC::B3::Air::RegLiveness::LocalCalcForUnifiedTmpLiveness::execute):
* Source/JavaScriptCore/b3/air/AirRegLiveness.h:
(JSC::B3::Air::RegLiveness::LocalCalcBase::live const):
(JSC::B3::Air::RegLiveness::LocalCalcBase::isLive const):
(JSC::B3::Air::RegLiveness::LocalCalc::execute):
(JSC::B3::Air::RegLiveness::liveAtHead const):
(JSC::B3::Air::RegLiveness::liveAtTail const):
(JSC::B3::Air::RegLiveness::Actions::Actions): Deleted.
* Source/JavaScriptCore/b3/air/AirReportUsedRegisters.cpp:
(JSC::B3::Air::reportUsedRegisters):
* Source/JavaScriptCore/b3/air/AirTmpMap.h:
(JSC::B3::Air::TmpMap::clear):
* Source/JavaScriptCore/b3/air/AirTmpWidth.h:
* Source/JavaScriptCore/b3/air/testair.cpp:
* Source/JavaScriptCore/b3/testb3_3.cpp:
(testStorePartial8BitRegisterOnX86):
* Source/JavaScriptCore/b3/testb3_4.cpp:
(testStoreRelAddFenceLoadAcq8):
(testSimplePatchpointWithOuputClobbersGPArgs):
(testSimplePatchpointWithoutOuputClobbersFPArgs):
(testSimplePatchpointWithOuputClobbersFPArgs):
(testPatchpointGPScratch):
(testPatchpointFPScratch):
(testPatchpointLotsOfLateAnys):
* Source/JavaScriptCore/b3/testb3_5.cpp:
(testPatchpointWithStackArgumentResult):
(testPatchpointWithAnyResult):
* Source/JavaScriptCore/b3/testb3_6.cpp:
(testSpillDefSmallerThanUse):
(testSpillUseLargerThanDef):
(testLateRegister):
(testInterpreter):
(testTerminalPatchpointThatNeedsToBeSpilled):
(testTerminalPatchpointThatNeedsToBeSpilled2):
(testPatchpointTerminalReturnValue):
* Source/JavaScriptCore/b3/testb3_7.cpp:
(testPinRegisters):
(testFastTLSLoad):
(testFastTLSStore):
(testShuffleDoesntTrashCalleeSaves):
(testReportUsedRegistersLateUseFollowedByEarlyDefDoesNotMarkUseAsDead):
(testSimpleTuplePair):
(testSimpleTuplePairUnused):
(testSimpleTuplePairStack):
(tailDupedTuplePair):
(tuplePairVariableLoop):
(tupleNestedLoop):
* Source/JavaScriptCore/b3/testb3_8.cpp:
(testWasmAddressDoesNotCSE):
(testStoreAfterClobberExitsSideways):
(testStoreAfterClobberExitsSidewaysSuccessor):
* Source/JavaScriptCore/bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
* Source/JavaScriptCore/bytecode/AccessCase.h:
(JSC::SharedJITStubSet::Hash::Key::Key):
* Source/JavaScriptCore/bytecode/AccessCaseSnippetParams.cpp:
* Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::emitDOMJITGetter):
* Source/JavaScriptCore/bytecode/InlineAccess.cpp:
(JSC::getScratchRegister):
* Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:
(JSC::AccessGenerationState::liveRegistersForCall):
(JSC::AccessGenerationState::liveRegistersToPreserveAtExceptionHandlingCallSite):
(JSC::calleeSaveRegisters):
(JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCall):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions):
(JSC::AccessGenerationState::restoreLiveRegistersFromStackForCallWithThrownException):
(JSC::AccessGenerationState::restoreLiveRegistersFromStackForCall):
(JSC::AccessGenerationState::makeDefaultScratchAllocator):
* Source/JavaScriptCore/bytecode/PolymorphicAccess.h:
(JSC::AccessGenerationState::SpillState::SpillState):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCall):
(JSC::AccessGenerationState::restoreLiveRegistersFromStackForCall):
* Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp:
(JSC::ProxyObjectAccessCase::emit):
* Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):
* Source/JavaScriptCore/bytecode/StructureStubInfo.h:
* Source/JavaScriptCore/dfg/DFGJITCode.cpp:
(JSC::DFG::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):
* Source/JavaScriptCore/dfg/DFGJITCode.h:
* Source/JavaScriptCore/dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
* Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::adjustAndJumpToTarget):
* Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.h:
(JSC::DFG::adjustFrameAndStackInOSRExitCompilerThunk):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::usedRegisters):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
* Source/JavaScriptCore/dfg/DFGThunks.cpp:
(JSC::DFG::osrExitGenerationThunkGenerator):
* Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp:
(JSC::FTL::LazySlowPath::initialize):
* Source/JavaScriptCore/ftl/FTLLazySlowPath.h:
(JSC::FTL::LazySlowPath::usedRegisters const):
* Source/JavaScriptCore/ftl/FTLLocation.cpp:
(JSC::FTL::Location::restoreInto const):
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis):
(JSC::FTL::DFG::LowerDFGToB3::getPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compilePrivateBrandAccess):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByValImpl):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileDelBy):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
* Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
* Source/JavaScriptCore/ftl/FTLOutput.h:
* Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:
(JSC::FTL::saveAllRegisters):
(JSC::FTL::restoreAllRegisters):
* Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp:
(JSC::FTL::SlowPathCallContext::SlowPathCallContext):
(JSC::FTL::SlowPathCallContext::~SlowPathCallContext):
* Source/JavaScriptCore/ftl/FTLSlowPathCall.h:
(JSC::FTL::callOperation):
* Source/JavaScriptCore/ftl/FTLSlowPathCallKey.cpp:
(JSC::FTL::SlowPathCallKey::dump const):
* Source/JavaScriptCore/ftl/FTLSlowPathCallKey.h:
(JSC::FTL::SlowPathCallKey::SlowPathCallKey):
(JSC::FTL::SlowPathCallKey::usedRegisters const):
(JSC::FTL::SlowPathCallKey::argumentRegistersIfClobberingCheckIsEnabled const):
* Source/JavaScriptCore/ftl/FTLThunks.cpp:
(JSC::FTL::registerClobberCheck):
(JSC::FTL::slowPathCallThunkGenerator):
* Source/JavaScriptCore/interpreter/Interpreter.cpp:
(JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::restoreCalleeSavesFromEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::restoreCalleeSavesFromVMEntryFrameCalleeSavesBufferImpl):
(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBufferImpl):
(JSC::AssemblyHelpers::emitSaveCalleeSavesFor):
(JSC::AssemblyHelpers::emitRestoreCalleeSavesFor):
(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::emitSaveOrCopyLLIntBaselineCalleeSavesFor):
* Source/JavaScriptCore/jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::selectScratchGPR):
(JSC::AssemblyHelpers::constructRegisterSet):
* Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:
(JSC::AssemblyHelpers::LoadRegSpooler::loadGPR):
(JSC::AssemblyHelpers::LoadRegSpooler::loadFPR):
(JSC::AssemblyHelpers::StoreRegSpooler::storeGPR):
(JSC::AssemblyHelpers::StoreRegSpooler::storeFPR):
* Source/JavaScriptCore/jit/CCallHelpers.cpp:
(JSC::CCallHelpers::ensureShadowChickenPacket):
* Source/JavaScriptCore/jit/CCallHelpers.h:
(JSC::CCallHelpers::setupStubArgs):
(JSC::CCallHelpers::prepareForTailCallSlow):
* Source/JavaScriptCore/jit/CallFrameShuffleData.cpp:
(JSC::CallFrameShuffleData::setupCalleeSaveRegisters):
* Source/JavaScriptCore/jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::dump const):
* Source/JavaScriptCore/jit/CallFrameShuffler.h:
(JSC::CallFrameShuffler::lockGPR):
(JSC::CallFrameShuffler::releaseGPR):
(JSC::CallFrameShuffler::restoreGPR):
(JSC::CallFrameShuffler::getFreeRegister const):
(JSC::CallFrameShuffler::ensureRegister):
(JSC::CallFrameShuffler::ensureTempGPR):
(JSC::CallFrameShuffler::ensureGPR):
(JSC::CallFrameShuffler::ensureFPR):
* Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp:
(JSC::CallFrameShuffler::emitLoad):
(JSC::CallFrameShuffler::canLoad):
(JSC::CallFrameShuffler::emitDisplace):
* Source/JavaScriptCore/jit/CallFrameShuffler64.cpp:
(JSC::CallFrameShuffler::emitBox):
(JSC::CallFrameShuffler::emitLoad):
(JSC::CallFrameShuffler::emitDisplace):
(JSC::CallFrameShuffler::tryAcquireNumberTagRegister):
* Source/JavaScriptCore/jit/JITArithmetic.cpp:
* Source/JavaScriptCore/jit/JITCall.cpp:
(JSC::JIT::emit_op_iterator_next):
* Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:
(JSC::JITInlineCacheGenerator::setUpStubInfoImpl):
* Source/JavaScriptCore/jit/Reg.h:
(JSC::Reg::Reg):
(JSC::Reg::fromIndex):
(JSC::Reg::first):
(JSC::Reg::last):
(JSC::Reg::next const):
(JSC::Reg::isSet const):
(JSC::Reg::operator bool const):
(JSC::Reg::isHashTableDeletedValue const):
(JSC::Reg::isGPR const):
(JSC::Reg::isFPR const):
(JSC::Reg::operator== const):
(JSC::Reg::operator!= const):
(JSC::Reg::operator< const):
(JSC::Reg::operator> const):
(JSC::Reg::operator<= const):
(JSC::Reg::operator>= const):
(JSC::Reg::hash const):
(JSC::Reg::invalid):
(JSC::Reg::deleted):
(JSC::widthForBytes):
(JSC::bytesForWidth):
(JSC::mask):
(JSC::pointerWidth):
(JSC::canonicalWidth):
(JSC::isCanonicalWidth):
(JSC::conservativeWidthWithoutVectors):
(JSC::conservativeWidth):
(JSC::conservativeRegisterBytes):
(JSC::conservativeRegisterBytesWithoutVectors):
(WTF::printInternal):
* Source/JavaScriptCore/jit/RegisterAtOffset.h:
(JSC::RegisterAtOffset::RegisterAtOffset):
(JSC::RegisterAtOffset::operator! const):
(JSC::RegisterAtOffset::reg const):
(JSC::RegisterAtOffset::offset const):
(JSC::RegisterAtOffset::byteSize const):
(JSC::RegisterAtOffset::width const):
(JSC::RegisterAtOffset::operator== const):
* Source/JavaScriptCore/jit/RegisterAtOffsetList.cpp:
(JSC::RegisterAtOffsetList::RegisterAtOffsetList):
* Source/JavaScriptCore/jit/RegisterAtOffsetList.h:
(JSC::RegisterAtOffsetList::adjustOffsets):
* Source/JavaScriptCore/jit/RegisterSet.cpp:
(JSC::RegisterSet::vmCalleeSaveRegisterOffsets):
(JSC::RegisterSet::stackRegisters):
(JSC::RegisterSet::reservedHardwareRegisters):
(JSC::RegisterSet::runtimeTagRegisters):
(JSC::RegisterSet::specialRegisters):
(JSC::RegisterSet::stubUnavailableRegisters):
(JSC::RegisterSet::macroClobberedRegisters):
(JSC::RegisterSet::calleeSaveRegisters):
(JSC::RegisterSet::vmCalleeSaveRegisters):
(JSC::RegisterSet::llintBaselineCalleeSaveRegisters):
(JSC::RegisterSet::dfgCalleeSaveRegisters):
(JSC::RegisterSet::ftlCalleeSaveRegisters):
(JSC::RegisterSet::argumentGPRS):
(JSC::RegisterSet::registersToSaveForJSCall):
(JSC::RegisterSet::registersToSaveForCCall):
(JSC::RegisterSet::allGPRs):
(JSC::RegisterSet::allFPRs):
(JSC::RegisterSet::allRegisters):
(JSC::RegisterSet::allScalarRegisters):
(JSC::RegisterSet::volatileRegistersForJSCall): Deleted.
(JSC::RegisterSet::macroScratchRegisters): Deleted.
(JSC::RegisterSet::registersToNotSaveForJSCall): Deleted.
(JSC::RegisterSet::registersToNotSaveForCCall): Deleted.
(JSC::RegisterSet::numberOfSetGPRs const): Deleted.
(JSC::RegisterSet::numberOfSetFPRs const): Deleted.
(JSC::RegisterSet::dump const): Deleted.
* Source/JavaScriptCore/jit/RegisterSet.h:
(JSC::RegisterSet::RegisterSet):
(JSC::RegisterSet::whole const):
(JSC::RegisterSet::numberOfSetRegisters const):
(JSC::RegisterSet::numberOfSetGPRs const):
(JSC::RegisterSet::numberOfSetFPRs const):
(JSC::RegisterSet::scalar const):
(JSC::WholeRegisterSet::scalar const):
(JSC::RegisterSetHash::hash):
(JSC::RegisterSetHash::equal):
(JSC::RegisterSet::set): Deleted.
(JSC::RegisterSet::clear): Deleted.
(JSC::RegisterSet::get const): Deleted.
(JSC::RegisterSet::setAll): Deleted.
(JSC::RegisterSet::add): Deleted.
(JSC::RegisterSet::remove): Deleted.
(JSC::RegisterSet::contains const): Deleted.
(JSC::RegisterSet::merge): Deleted.
(JSC::RegisterSet::filter): Deleted.
(JSC::RegisterSet::exclude): Deleted.
(JSC::RegisterSet::subsumes const): Deleted.
(JSC::RegisterSet::isEmpty const): Deleted.
(JSC::RegisterSet::operator== const): Deleted.
(JSC::RegisterSet::operator!= const): Deleted.
(JSC::RegisterSet::hash const): Deleted.
(JSC::RegisterSet::forEach const): Deleted.
(JSC::RegisterSet::iterator::iterator): Deleted.
(JSC::RegisterSet::iterator::operator* const): Deleted.
(JSC::RegisterSet::iterator::operator++): Deleted.
(JSC::RegisterSet::iterator::operator== const): Deleted.
(JSC::RegisterSet::iterator::operator!= const): Deleted.
(JSC::RegisterSet::begin const): Deleted.
(JSC::RegisterSet::end const): Deleted.
(JSC::RegisterSet::setAny): Deleted.
(JSC::RegisterSet::setMany): Deleted.
* Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:
(JSC::ScratchRegisterAllocator::ScratchRegisterAllocator):
(JSC::ScratchRegisterAllocator::lock):
(JSC::ScratchRegisterAllocator::allocateScratch):
(JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
(JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):
(JSC::ScratchRegisterAllocator::usedRegistersForCall const):
(JSC::ScratchRegisterAllocator::desiredScratchBufferSizeForCall const):
(JSC::ScratchRegisterAllocator::preserveRegistersToStackForCall):
(JSC::ScratchRegisterAllocator::restoreRegistersFromStackForCall):
* Source/JavaScriptCore/jit/ScratchRegisterAllocator.h:
(JSC::ScratchRegisterAllocator::usedRegisters const):
(JSC::ScratchRegisterAllocator::ScratchRegisterAllocator): Deleted.
* Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::ConstrainedTmp::ConstrainedTmp):
(JSC::Wasm::ConstrainedTmp::operator bool const):
(JSC::Wasm::AirIRGenerator::emitPatchpoint):
(JSC::Wasm::AirIRGenerator::emitLoad):
(JSC::Wasm::AirIRGenerator::materializeAddrArg):
(JSC::Wasm::AirIRGenerator::restoreWasmContextInstance):
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::AirIRGenerator::addCurrentMemory):
(JSC::Wasm::AirIRGenerator::getGlobal):
(JSC::Wasm::AirIRGenerator::setGlobal):
(JSC::Wasm::AirIRGenerator::emitLoadOp):
(JSC::Wasm::AirIRGenerator::emitStoreOp):
(JSC::Wasm::accessWidth):
(JSC::Wasm::AirIRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::AirIRGenerator::sanitizeAtomicResult):
(JSC::Wasm::AirIRGenerator::appendGeneralAtomic):
(JSC::Wasm::AirIRGenerator::appendStrongCAS):
(JSC::Wasm::AirIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::AirIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::AirIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::AirIRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::AirIRGenerator::addUncheckedFloatingPointTruncation):
(JSC::Wasm::AirIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::AirIRGenerator::emitCatchImpl):
(JSC::Wasm::AirIRGenerator::addThrow):
(JSC::Wasm::AirIRGenerator::addRethrow):
(JSC::Wasm::AirIRGenerator::addReturn):
(JSC::Wasm::AirIRGenerator::addSwitch):
(JSC::Wasm::AirIRGenerator::emitCallPatchpoint):
(JSC::Wasm::AirIRGenerator::addCallIndirect):
(JSC::Wasm::AirIRGenerator::emitIndirectCall):
(JSC::Wasm::AirIRGenerator::addOp<F64ConvertUI64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::F32ConvertUI64>):
(JSC::Wasm::AirIRGenerator::preparePatchpointForExceptions):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::restoreWasmContextInstance):
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addArguments):
(JSC::Wasm::B3IRGenerator::emitIndirectCall):
(JSC::Wasm::accessWidth):
(JSC::Wasm::B3IRGenerator::sanitizeAtomicResult):
(JSC::Wasm::B3IRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::B3IRGenerator::emitAtomicLoadOp):
(JSC::Wasm::B3IRGenerator::emitAtomicStoreOp):
(JSC::Wasm::B3IRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::B3IRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::B3IRGenerator::truncSaturated):
(JSC::Wasm::B3IRGenerator::addConstant):
(JSC::Wasm::B3IRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::B3IRGenerator::emitCatchImpl):
(JSC::Wasm::B3IRGenerator::addThrow):
(JSC::Wasm::B3IRGenerator::addRethrow):
(JSC::Wasm::B3IRGenerator::addReturn):
(JSC::Wasm::B3IRGenerator::createCallPatchpoint):
(JSC::Wasm::B3IRGenerator::addOp<F64ConvertUI64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::F32ConvertUI64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF32>):
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::LLIntCallee::calleeSaveRegistersImpl):
* Source/JavaScriptCore/wasm/WasmCallingConvention.cpp:
(JSC::Wasm::jsCallingConvention):
(JSC::Wasm::wasmCallingConvention):
* Source/JavaScriptCore/wasm/WasmCallingConvention.h:
(JSC::Wasm::ArgumentLocation::ArgumentLocation):
(JSC::Wasm::CallInformation::computeResultsOffsetList):
(JSC::Wasm::WasmCallingConvention::WasmCallingConvention):
(JSC::Wasm::WasmCallingConvention::marshallLocationImpl const):
(JSC::Wasm::WasmCallingConvention::marshallLocation const):
(JSC::Wasm::JSCallingConvention::JSCallingConvention):
(JSC::Wasm::JSCallingConvention::marshallLocationImpl const):
(JSC::Wasm::JSCallingConvention::callInformationFor const):
* Source/JavaScriptCore/wasm/WasmFormat.h:
(JSC::Wasm::typeToString):
* Source/JavaScriptCore/wasm/WasmMemoryInformation.h:
(JSC::Wasm::PinnedRegisterInfo::toSave const):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::doOSREntry):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmThunks.cpp:
(JSC::Wasm::triggerOMGEntryTierUpThunkGenerator):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::TypeInformation::TypeInformation):
* Source/JavaScriptCore/wasm/generateWasmOpsHeader.py:
(typeMacroizer):
* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:
(JSC::Wasm::marshallJSResult):
(JSC::Wasm::createJSToWasmWrapper):
* Source/JavaScriptCore/wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
* Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::calleeSaves const):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):
* Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h:
* Source/JavaScriptCore/wasm/wasm.json:
* Source/WTF/wtf/Atomics.h:
(WTF::Dependency::Dependency):
* Source/WTF/wtf/Bitmap.h:
(WTF::WordType>::get const):
(WTF::WordType>::concurrentTestAndSet):
(WTF::WordType>::concurrentTestAndClear):
(WTF::WordType>::clearAll):
(WTF::WordType>::setAll):
(WTF::WordType>::findRunOfZeros const):
(WTF::WordType>::count const):
(WTF::WordType>::concurrentFilter):
(WTF::WordType>::forEachSetBit const):
(WTF::WordType>::findBit const):
(WTF::WordType>::hash const):

Canonical link: https://commits.webkit.org/255736@main




More information about the webkit-changes mailing list