2019-01-25 22:16:57 +00:00
|
|
|
# This file is generated by the generate-xcfilelists script.
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/DerivedSources.make
|
|
|
|
$(PROJECT_DIR)/KeywordLookupGenerator.py
|
|
|
|
$(PROJECT_DIR)/Scripts/UpdateContents.py
|
|
|
|
$(PROJECT_DIR)/Scripts/generate-combined-inspector-json.py
|
|
|
|
$(PROJECT_DIR)/Scripts/generate-js-builtins.py
|
|
|
|
$(PROJECT_DIR)/Scripts/jsmin.py
|
|
|
|
$(PROJECT_DIR)/Scripts/lazywriter.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/__init__.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_combined_header.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_combined_implementation.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_internals_wrapper_implementation.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_separate_header.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_separate_implementation.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_wrapper_header.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generate_wrapper_implementation.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_generator.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_model.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/builtins_templates.py
|
|
|
|
$(PROJECT_DIR)/Scripts/wkbuiltins/wkbuiltins.py
|
|
|
|
$(PROJECT_DIR)/Scripts/xxd.pl
|
|
|
|
$(PROJECT_DIR)/b3/air/AirOpcode.opcodes
|
|
|
|
$(PROJECT_DIR)/b3/air/opcode_generator.rb
|
|
|
|
$(PROJECT_DIR)/builtins/ArrayConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/ArrayIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/ArrayPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/AsyncFromSyncIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/AsyncFunctionPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/AsyncGeneratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/AsyncIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/DatePrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/FunctionPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/GeneratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/GlobalObject.js
|
|
|
|
$(PROJECT_DIR)/builtins/GlobalOperations.js
|
|
|
|
$(PROJECT_DIR)/builtins/InternalPromiseConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/IteratorHelpers.js
|
|
|
|
$(PROJECT_DIR)/builtins/IteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/MapIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/MapPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/ModuleLoader.js
|
|
|
|
$(PROJECT_DIR)/builtins/NumberConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/ObjectConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/PromiseConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/PromiseOperations.js
|
|
|
|
$(PROJECT_DIR)/builtins/PromisePrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/ReflectObject.js
|
|
|
|
$(PROJECT_DIR)/builtins/RegExpPrototype.js
|
2019-06-18 21:21:48 +00:00
|
|
|
$(PROJECT_DIR)/builtins/RegExpStringIteratorPrototype.js
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/builtins/SetIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/SetPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/StringConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/StringIteratorPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/StringPrototype.js
|
|
|
|
$(PROJECT_DIR)/builtins/TypedArrayConstructor.js
|
|
|
|
$(PROJECT_DIR)/builtins/TypedArrayPrototype.js
|
2019-07-15 22:41:54 +00:00
|
|
|
$(PROJECT_DIR)/builtins/WebAssembly.js
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/bytecode/BytecodeList.rb
|
|
|
|
$(PROJECT_DIR)/create_hash_table
|
|
|
|
$(PROJECT_DIR)/disassembler/udis86/optable.xml
|
|
|
|
$(PROJECT_DIR)/disassembler/udis86/ud_itab.py
|
|
|
|
$(PROJECT_DIR)/generator/Argument.rb
|
|
|
|
$(PROJECT_DIR)/generator/Assertion.rb
|
2020-01-17 04:09:32 +00:00
|
|
|
$(PROJECT_DIR)/generator/Checkpoints.rb
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/generator/DSL.rb
|
|
|
|
$(PROJECT_DIR)/generator/Fits.rb
|
|
|
|
$(PROJECT_DIR)/generator/GeneratedFile.rb
|
|
|
|
$(PROJECT_DIR)/generator/Metadata.rb
|
|
|
|
$(PROJECT_DIR)/generator/Opcode.rb
|
|
|
|
$(PROJECT_DIR)/generator/OpcodeGroup.rb
|
|
|
|
$(PROJECT_DIR)/generator/Options.rb
|
|
|
|
$(PROJECT_DIR)/generator/Section.rb
|
|
|
|
$(PROJECT_DIR)/generator/Template.rb
|
|
|
|
$(PROJECT_DIR)/generator/Type.rb
|
[WebAssembly] Create a Wasm interpreter
https://bugs.webkit.org/show_bug.cgi?id=194257
<rdar://problem/44186794>
Reviewed by Saam Barati.
Source/JavaScriptCore:
Add an interpreter tier to WebAssembly which reuses the LLInt infrastructure. The interpreter
currently tiers up straight to OMG and can OSR enter at the prologue and from loops. The initial
implementation of the interpreter is very naive, but despite the lack of optimizations it still
shows a 2x improvement on the WebAssembly subtests in JetStream2 and 2x improvement on the
PSPDFKit benchmark. It reduces "compilation" times by ~3x and it's neutral on throughput.
The interpreter follows the same calling conventions as the BBQ/OMG, this means that:
- We have to allocate locals for all argument registers and write all arguments registers to the
stack in the prologue.
- Calls have to allocate space for at least as many arguments as the number of argument registers.
Before each call, all argument registers must be loaded from the stack, and after we return from
the call, all registers must be stored back to the stack, in case they contain return values. We
carefully layout the stack so that the arguments that would already have to be passed in the stack
end up in the right place. The stack layout for calls is:
[ gprs ][ fprs ][ optional stack arguments ][ callee frame ]
^ sp
- The return opcode has to load all registers from the stack, since they might need to contain
results of the function.
- The calling convention requires that the callee should store itself in the callee slot of the call
frame, which is impossible in the interpreter, since the code we execute is the same for all callees.
In order to work around that, we generate an entry thunk to the wasm interpreter for each function.
All this thunk does is store the callee in the call frame and tail call the interpreter.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::constantName const):
(JSC::BytecodeDumper<Block>::dumpValue):
(JSC::BytecodeDumper<Block>::dumpBytecode):
(JSC::CodeBlockBytecodeDumper<Block>::vm const):
(JSC::CodeBlockBytecodeDumper<Block>::identifier const):
(JSC::CodeBlockBytecodeDumper<Block>::dumpIdentifiers):
(JSC::CodeBlockBytecodeDumper<Block>::dumpConstants):
(JSC::CodeBlockBytecodeDumper<Block>::dumpExceptionHandlers):
(JSC::CodeBlockBytecodeDumper<Block>::dumpSwitchJumpTables):
(JSC::CodeBlockBytecodeDumper<Block>::dumpStringSwitchJumpTables):
(JSC::CodeBlockBytecodeDumper<Block>::dumpBlock):
* bytecode/BytecodeDumper.h:
(JSC::BytecodeDumper::dumpValue):
(JSC::BytecodeDumper::BytecodeDumper):
* bytecode/BytecodeGeneratorification.cpp:
(JSC::performGeneratorification):
* bytecode/BytecodeList.rb:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecode/Fits.h:
* bytecode/Instruction.h:
(JSC::BaseInstruction::BaseInstruction):
(JSC::BaseInstruction::Impl::opcodeID const):
(JSC::BaseInstruction::opcodeID const):
(JSC::BaseInstruction::name const):
(JSC::BaseInstruction::isWide16 const):
(JSC::BaseInstruction::isWide32 const):
(JSC::BaseInstruction::hasMetadata const):
(JSC::BaseInstruction::sizeShiftAmount const):
(JSC::BaseInstruction::size const):
(JSC::BaseInstruction::is const):
(JSC::BaseInstruction::as const):
(JSC::BaseInstruction::cast):
(JSC::BaseInstruction::cast const):
(JSC::BaseInstruction::wide16 const):
(JSC::BaseInstruction::wide32 const):
* bytecode/InstructionStream.h:
(JSC::InstructionStream::iterator::operator+=):
(JSC::InstructionStream::iterator::operator++):
(JSC::InstructionStreamWriter::iterator::operator+=):
(JSC::InstructionStreamWriter::iterator::operator++):
* bytecode/Opcode.cpp:
* bytecode/Opcode.h:
* bytecode/PreciseJumpTargetsInlines.h:
* bytecode/UnlinkedCodeBlock.h:
* bytecode/VirtualRegister.cpp:
(JSC::VirtualRegister::VirtualRegister):
* bytecode/VirtualRegister.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::GenericLabel<JSGeneratorTraits>::setLocation):
(JSC::BytecodeGenerator::BytecodeGenerator):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/BytecodeGeneratorBase.h: Added.
* bytecompiler/BytecodeGeneratorBaseInlines.h: Added.
(JSC::shrinkToFit):
(JSC::BytecodeGeneratorBase<Traits>::BytecodeGeneratorBase):
(JSC::BytecodeGeneratorBase<Traits>::newLabel):
(JSC::BytecodeGeneratorBase<Traits>::newEmittedLabel):
(JSC::BytecodeGeneratorBase<Traits>::reclaimFreeRegisters):
(JSC::BytecodeGeneratorBase<Traits>::emitLabel):
(JSC::BytecodeGeneratorBase<Traits>::recordOpcode):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):
(JSC::BytecodeGeneratorBase<Traits>::write):
(JSC::BytecodeGeneratorBase<Traits>::newRegister):
(JSC::BytecodeGeneratorBase<Traits>::newTemporary):
(JSC::BytecodeGeneratorBase<Traits>::addVar):
(JSC::BytecodeGeneratorBase<Traits>::allocateCalleeSaveSpace):
* bytecompiler/Label.h:
(JSC::GenericBoundLabel::GenericBoundLabel):
(JSC::GenericBoundLabel::target):
(JSC::GenericBoundLabel::saveTarget):
(JSC::GenericBoundLabel::commitTarget):
* dfg/DFGByteCodeParser.cpp:
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGOperations.cpp:
* generator/Argument.rb:
* generator/DSL.rb:
* generator/GeneratedFile.rb:
* generator/Opcode.rb:
* generator/Options.rb:
* generator/Section.rb:
* generator/Wasm.rb: Added.
* interpreter/Register.h:
* interpreter/RegisterInlines.h:
(JSC::Register::operator=):
* jit/JITArithmetic.cpp:
* jit/JITOpcodes.cpp:
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* llint/LLIntData.h:
(JSC::LLInt::wasmExceptionInstructions):
* llint/LLIntOfflineAsmConfig.h:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::wasmFunctionEntryThunk):
* llint/LLIntThunks.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* llint/WebAssembly.asm: Added.
* offlineasm/arm64.rb:
* offlineasm/instructions.rb:
* offlineasm/parser.rb:
* offlineasm/registers.rb:
* offlineasm/transform.rb:
* offlineasm/x86.rb:
* parser/Nodes.h:
* runtime/Error.cpp:
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator() const):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
* runtime/Options.cpp:
(JSC::overrideDefaults):
* runtime/OptionsList.h:
* runtime/SamplingProfiler.cpp:
(JSC::FrameWalker::recordJITFrame):
(JSC::FrameWalker::resetAtMachineFrame):
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::isControlTypeIf):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::isControlTypeIf):
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::prepareImpl):
(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::compileFunction):
(JSC::Wasm::BBQPlan::didCompleteCompilation):
(JSC::Wasm::BBQPlan::initializeCallees):
* wasm/WasmBBQPlan.h:
* wasm/WasmBBQPlanInlines.h: Removed.
* wasm/WasmCallee.cpp:
(JSC::Wasm::Callee::Callee):
(JSC::Wasm::Callee::dump const):
(JSC::Wasm::JITCallee::JITCallee):
(JSC::Wasm::LLIntCallee::setEntrypoint):
(JSC::Wasm::LLIntCallee::entrypoint const):
(JSC::Wasm::LLIntCallee::calleeSaveRegisters):
(JSC::Wasm:: const):
* wasm/WasmCallee.h:
(JSC::Wasm::Callee::setOSREntryCallee):
(JSC::Wasm::JITCallee::wasmToWasmCallsites):
(JSC::Wasm::JITCallee:: const):
* wasm/WasmCallingConvention.h:
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::CodeBlock):
* wasm/WasmCodeBlock.h:
(JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmBBQCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmToWasmExitStub):
* wasm/WasmCompilationMode.cpp:
(JSC::Wasm::makeString):
* wasm/WasmCompilationMode.h:
* wasm/WasmEmbedder.h:
* wasm/WasmEntryPlan.cpp: Added.
(JSC::Wasm::EntryPlan::EntryPlan):
(JSC::Wasm::EntryPlan::stateString):
(JSC::Wasm::EntryPlan::moveToState):
(JSC::Wasm::EntryPlan::didReceiveFunctionData):
(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::prepare):
(JSC::Wasm::EntryPlan::ThreadCountHolder::ThreadCountHolder):
(JSC::Wasm::EntryPlan::ThreadCountHolder::~ThreadCountHolder):
(JSC::Wasm::EntryPlan::complete):
(JSC::Wasm::EntryPlan::compileFunctions):
(JSC::Wasm::EntryPlan::work):
* wasm/WasmEntryPlan.h: Copied from Source/JavaScriptCore/wasm/WasmBBQPlan.h.
(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::exports const):
(JSC::Wasm::EntryPlan::internalFunctionCount const):
(JSC::Wasm::EntryPlan::takeModuleInformation):
(JSC::Wasm::EntryPlan::takeWasmToWasmExitStubs):
(JSC::Wasm::EntryPlan::takeWasmToWasmCallsites):
(JSC::Wasm::EntryPlan::hasBeenPrepared const):
(JSC::Wasm::EntryPlan::tryReserveCapacity):
* wasm/WasmFunctionCodeBlock.cpp: Added.
(JSC::Wasm::FunctionCodeBlock::setInstructions):
(JSC::Wasm::FunctionCodeBlock::dumpBytecode):
(JSC::Wasm::FunctionCodeBlock::addOutOfLineJumpTarget):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpTarget):
(JSC::Wasm::FunctionCodeBlock::addSignature):
(JSC::Wasm::FunctionCodeBlock::signature const):
(JSC::Wasm::FunctionCodeBlock::addJumpTable):
(JSC::Wasm::FunctionCodeBlock::jumpTable const const):
(JSC::Wasm::FunctionCodeBlock::numberOfJumpTables const):
* wasm/WasmFunctionCodeBlock.h: Added.
(JSC::Wasm::FunctionCodeBlock::FunctionCodeBlock):
(JSC::Wasm::FunctionCodeBlock::getConstant const):
(JSC::Wasm::FunctionCodeBlock::functionIndex const):
(JSC::Wasm::FunctionCodeBlock::addJumpTarget):
(JSC::Wasm::FunctionCodeBlock::numberOfJumpTargets):
(JSC::Wasm::FunctionCodeBlock::lastJumpTarget):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
(JSC::Wasm::FunctionCodeBlock::bytecodeOffset):
(JSC::Wasm::FunctionCodeBlock::tierUpCounter):
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
* wasm/WasmInstance.h:
* wasm/WasmLLIntGenerator.cpp: Added.
(JSC::Wasm::LLIntGenerator::ControlType::ControlType):
(JSC::Wasm::LLIntGenerator::ControlType::loop):
(JSC::Wasm::LLIntGenerator::ControlType::topLevel):
(JSC::Wasm::LLIntGenerator::ControlType::block):
(JSC::Wasm::LLIntGenerator::ControlType::if_):
(JSC::Wasm::LLIntGenerator::ControlType::targetLabelForBranch const):
(JSC::Wasm::LLIntGenerator::fail const):
(JSC::Wasm::LLIntGenerator::unifyValuesWithBlock):
(JSC::Wasm::LLIntGenerator::emptyExpression):
(JSC::Wasm::LLIntGenerator::createStack):
(JSC::Wasm::LLIntGenerator::isControlTypeIf):
(JSC::Wasm::LLIntGenerator::addEndToUnreachable):
(JSC::Wasm::LLIntGenerator::setParser):
(JSC::Wasm::LLIntGenerator::dump):
(JSC::Wasm::LLIntGenerator::virtualRegisterForLocal):
(JSC::Wasm::LLIntGenerator::tmpsForSignature):
(JSC::Wasm::LLIntGenerator::jsNullConstant):
(JSC::Wasm::LLIntGenerator::isConstant):
(JSC::Wasm::parseAndCompileBytecode):
(JSC::Wasm::LLIntGenerator::LLIntGenerator):
(JSC::Wasm::LLIntGenerator::finalize):
(JSC::Wasm::LLIntGenerator::callInformationFor):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):
(JSC::Wasm::LLIntGenerator::addConstant):
(JSC::Wasm::LLIntGenerator::getLocal):
(JSC::Wasm::LLIntGenerator::setLocal):
(JSC::Wasm::LLIntGenerator::getGlobal):
(JSC::Wasm::LLIntGenerator::setGlobal):
(JSC::Wasm::LLIntGenerator::addLoop):
(JSC::Wasm::LLIntGenerator::addTopLevel):
(JSC::Wasm::LLIntGenerator::addBlock):
(JSC::Wasm::LLIntGenerator::addIf):
(JSC::Wasm::LLIntGenerator::addElse):
(JSC::Wasm::LLIntGenerator::addElseToUnreachable):
(JSC::Wasm::LLIntGenerator::addReturn):
(JSC::Wasm::LLIntGenerator::addBranch):
(JSC::Wasm::LLIntGenerator::addSwitch):
(JSC::Wasm::LLIntGenerator::endBlock):
(JSC::Wasm::LLIntGenerator::addCall):
(JSC::Wasm::LLIntGenerator::addCallIndirect):
(JSC::Wasm::LLIntGenerator::addRefIsNull):
(JSC::Wasm::LLIntGenerator::addRefFunc):
(JSC::Wasm::LLIntGenerator::addTableGet):
(JSC::Wasm::LLIntGenerator::addTableSet):
(JSC::Wasm::LLIntGenerator::addTableSize):
(JSC::Wasm::LLIntGenerator::addTableGrow):
(JSC::Wasm::LLIntGenerator::addTableFill):
(JSC::Wasm::LLIntGenerator::addUnreachable):
(JSC::Wasm::LLIntGenerator::addCurrentMemory):
(JSC::Wasm::LLIntGenerator::addGrowMemory):
(JSC::Wasm::LLIntGenerator::addSelect):
(JSC::Wasm::LLIntGenerator::load):
(JSC::Wasm::LLIntGenerator::store):
(JSC::GenericLabel<Wasm::GeneratorTraits>::setLocation):
* wasm/WasmLLIntGenerator.h: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.h.
* wasm/WasmLLIntPlan.cpp: Added.
(JSC::Wasm::LLIntPlan::prepareImpl):
(JSC::Wasm::LLIntPlan::compileFunction):
(JSC::Wasm::LLIntPlan::didCompleteCompilation):
(JSC::Wasm::LLIntPlan::initializeCallees):
* wasm/WasmLLIntPlan.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
* wasm/WasmLLIntTierUpCounter.cpp: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp.
(JSC::Wasm::LLIntTierUpCounter::addOSREntryDataForLoop):
(JSC::Wasm::LLIntTierUpCounter::osrEntryDataForLoop const const):
* wasm/WasmLLIntTierUpCounter.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
(JSC::Wasm::LLIntTierUpCounter::LLIntTierUpCounter):
(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::checkIfOptimizationThresholdReached):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):
* wasm/WasmMemoryInformation.cpp:
(JSC::Wasm::PinnedRegisterInfo::get):
* wasm/WasmModule.cpp:
(JSC::Wasm::makeValidationResult):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::OMGForOSREntryPlan):
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGForOSREntryPlan.h:
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmSlowPaths.cpp: Added.
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_SLOW_PATH_DECL):
(JSC::LLInt::doWasmCall):
(JSC::LLInt::doWasmCallIndirect):
(JSC::LLInt::slow_path_wasm_throw_exception):
(JSC::LLInt::slow_path_wasm_popcount):
(JSC::LLInt::slow_path_wasm_popcountll):
* wasm/WasmSlowPaths.h: Added.
* wasm/WasmTable.cpp:
(JSC::Wasm::FuncRefTable::function const):
(JSC::Wasm::FuncRefTable::instance const):
* wasm/WasmTable.h:
* wasm/WasmTierUpCount.h:
* wasm/WasmValidate.cpp:
(JSC::Wasm::Validate::isControlTypeIf):
* wasm/js/JSToWasm.cpp:
(JSC::Wasm::createJSToWasmWrapper):
* wasm/js/JSToWasm.h:
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::calleeSaves const):
Tools:
Add a mode that runs WebAssembly tests without the LLInt (i.e. only Air)
and update the no-air mode to also disable the LLInt tier.
* Scripts/run-jsc-stress-tests:
Canonical link: https://commits.webkit.org/217068@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251886 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-31 22:32:52 +00:00
|
|
|
$(PROJECT_DIR)/generator/Wasm.rb
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/generator/main.rb
|
|
|
|
$(PROJECT_DIR)/inspector/InjectedScriptSource.js
|
Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition
https://bugs.webkit.org/show_bug.cgi?id=203651
<rdar://problem/56128726>
Reviewed by Brian Burg.
Source/JavaScriptCore:
Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources.make:
* inspector/protocol/Animation.json: Added.
* inspector/protocol/Timeline.json:
Add an Animation domain for handling the tracking of CSS Web Animations.
Source/WebCore:
Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.
Test: inspector/animation/tracking.html
* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::apply):
* animation/WebAnimation.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::~WebAnimation):
(WebCore::WebAnimation::contextDestroyed): Added.
(WebCore::WebAnimation::setEffectInternal):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willApplyKeyframeEffect): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffect): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimation): Added.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willApplyKeyframeEffectImpl): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffectImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimationImpl): Added.
Add instrumentation points for CSS animations/transitions.
* inspector/agents/InspectorAnimationAgent.h: Added.
* inspector/agents/InspectorAnimationAgent.cpp: Added.
(WebCore::InspectorAnimationAgent::InspectorAnimationAgent):
(WebCore::InspectorAnimationAgent::didCreateFrontendAndBackend):
(WebCore::InspectorAnimationAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorAnimationAgent::startTracking):
(WebCore::InspectorAnimationAgent::stopTracking):
(WebCore::isDelayed):
(WebCore::InspectorAnimationAgent::willApplyKeyframeEffect):
(WebCore::InspectorAnimationAgent::didChangeWebAnimationEffect):
(WebCore::InspectorAnimationAgent::willDestroyWebAnimation):
(WebCore::InspectorAnimationAgent::stopTrackingDeclarativeAnimation):
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::persistentInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setPersistentInspectorAnimationAgent): Added.
(WebCore::InstrumentingAgents::trackingInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setTrackingInspectorAnimationAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::createLazyAgents):
Add an Animation domain for handling the tracking of CSS Web Animations.
* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::toggleInstruments):
(WebCore::InspectorTimelineAgent::toggleAnimationInstrument): Added.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Source/WebInspectorUI:
Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.
* UserInterface/Protocol/AnimationObserver.js: Added.
(WI.AnimationObserver.prototype.trackingStart):
(WI.AnimationObserver.prototype.trackingUpdate):
(WI.AnimationObserver.prototype.trackingComplete):
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get AnimationAgent): Added.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add an Animation domain for handling the tracking of CSS Web Animations.
* UserInterface/Models/MediaInstrument.js:
(WI.MediaInstrument.prototype.startInstrumentation):
(WI.MediaInstrument.prototype.stopInstrumentation):
(WI.MediaInstrument):
* UserInterface/Models/MediaTimeline.js: Added.
(WI.MediaTimeline.prototype.recordForTrackingAnimationId):
(WI.MediaTimeline.prototype.recordForMediaElementEvents):
(WI.MediaTimeline.prototype.reset):
(WI.MediaTimeline.prototype.addRecord):
* UserInterface/Models/MediaTimelineRecord.js:
(WI.MediaTimelineRecord):
(WI.MediaTimelineRecord.async fromJSON):
(WI.MediaTimelineRecord.prototype.toJSON):
(WI.MediaTimelineRecord.prototype.get trackingAnimationId): Added.
(WI.MediaTimelineRecord.prototype.get timestamps): Added.
(WI.MediaTimelineRecord.prototype.get activeStartTime): Added.
(WI.MediaTimelineRecord.prototype.get updatesDynamically): Added.
(WI.MediaTimelineRecord.prototype.get usesActiveStartTime): Added.
(WI.MediaTimelineRecord.prototype.get displayName):
(WI.MediaTimelineRecord.prototype.get subtitle): Added.
(WI.MediaTimelineRecord.prototype.saveIdentityToCookie):
(WI.MediaTimelineRecord.prototype.updateProgress): Added.
(WI.MediaTimelineRecord.prototype.addDOMEvent): Added.
(WI.MediaTimelineRecord.prototype.powerEfficientPlaybackStateChanged): Added.
(WI.MediaTimelineRecord.prototype._updateTimes): Added.
(WI.MediaTimelineRecord.fromJSON): Deleted.
(WI.MediaTimelineRecord.prototype.get domEvent): Deleted.
(WI.MediaTimelineRecord.prototype.get isPowerEfficient): Deleted.
* UserInterface/Models/Timeline.js:
(WI.Timeline.create):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.async processJSON):
(WI.TimelineManager.prototype.animationTrackingStarted): Added.
(WI.TimelineManager.prototype.animationTrackingUpdated): Added.
(WI.TimelineManager.prototype.animationTrackingCompleted): Added.
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent):
(WI.TimelineManager.prototype._handleDOMNodePowerEfficientPlaybackStateChanged):
Start/Stop tracking animations based on whether the Media & Animations timeline is enabled.
* UserInterface/Views/MediaTimelineOverviewGraph.js:
(WI.MediaTimelineOverviewGraph):
(WI.MediaTimelineOverviewGraph.get maximumRowCount): Added.
(WI.MediaTimelineOverviewGraph.prototype.reset):
(WI.MediaTimelineOverviewGraph.prototype.layout):
(WI.MediaTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.MediaTimelineOverviewGraph.prototype._processRecord): Added.
(WI.MediaTimelineOverviewGraph.prototype._processRecord.compareByStartTime): Added.
(WI.MediaTimelineOverviewGraph.prototype._handleRecordAdded):
(WI.MediaTimelineOverviewGraph.prototype._handleTimesUpdated): Added.
(WI.MediaTimelineOverviewGraph.prototype.shown): Deleted.
(WI.MediaTimelineOverviewGraph.prototype.hidden): Deleted.
* UserInterface/Views/MediaTimelineOverviewGraph.css:
(.timeline-overview-graph.media): Added.
(.timeline-overview-graph.media > .graph-row): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media:nth-child(even) > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media > .timeline-record-bar): Deleted.
(.timeline-overview-graph.media > .timeline-record-bar > .segment): Deleted.
* UserInterface/Views/MediaTimelineView.js:
(WI.MediaTimelineView):
(WI.MediaTimelineView.prototype.shown): Added.
(WI.MediaTimelineView.prototype.hidden): Added.
(WI.MediaTimelineView.prototype.closed):
(WI.MediaTimelineView.prototype.reset):
(WI.MediaTimelineView.prototype.dataGridSortComparator):
(WI.MediaTimelineView.prototype.dataGridSortComparator.compareDOMNodes):
(WI.MediaTimelineView.prototype._processPendingRecords):
* UserInterface/Views/MediaTimelineDataGridNode.js:
(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get data):
(WI.MediaTimelineDataGridNode.prototype.createCellContent):
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren): Added.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addReadySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addDelaySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addActiveSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addFullScreenSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPowerEfficientPlaybackSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPausedSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPlayingSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn):
(WI.MediaTimelineDataGridNode.prototype._createNameCellDocumentFragment): Added.
(WI.MediaTimelineDataGridNode.prototype.iconClassNames): Deleted.
* UserInterface/Views/TimelineRecordBar.js:
(WI.TimelineRecordBar):
(WI.TimelineRecordBar.prototype.refresh):
(WI.TimelineRecordBar.prototype._handleClick):
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar):
(.timeline-record-bar > :matches(img, .segment)):
(.timeline-record-bar > img):
(.timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment:first-of-type):
(body[dir=ltr] .timeline-record-bar > .segment:last-of-type):
(body[dir=rtl] .timeline-record-bar > .segment):
(body[dir=rtl] .timeline-record-bar > .segment:first-of-type):
(body[dir=rtl] .timeline-record-bar > .segment:last-of-type):
(.timeline-record-bar > .segment:not(:last-of-type)):
(.timeline-record-bar.selected > .segment):
(.timeline-record-bar > .segment.inactive,):
(.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment.inactive):
(:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(.timeline-record-bar.timeline-record-type-network > .segment):
(.timeline-record-bar.timeline-record-type-network > .segment.inactive):
(.timeline-record-bar.timeline-record-type-layout > .segment):
(.timeline-record-bar.timeline-record-type-layout.paint > .segment,):
(.timeline-record-bar.timeline-record-type-script > .segment):
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment,):
(.timeline-record-bar.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment.css-animation-ready):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment:matches(.css-animation-delay, .media-element-paused)):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-full-screen):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-power-efficient-playback):
(body[dir=ltr] .timeline-record-bar > .segment.inactive,): Deleted.
(body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive),): Deleted.
(:focus .selected .timeline-record-bar > .segment): Deleted.
(:focus .selected .timeline-record-bar > .segment.inactive): Deleted.
(body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
Allow timeline record bars to be customized through a delegate callback. If provided, it
will be used instead of any default content. It is expected to return an array of objects,
each having a `startTime` number, `classNames` array, and `title` string. It can also have a
`endTime` number and an `image` string. If `endTime` is `NaN`, the record is unfinished. If
`image` is provided, an `<img>` will be used instead of a segment, allowing for markers.
* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.createCellContent):
Add a default fallback for `WI.DOMNode` values.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):
* UserInterface/Views/TimelineRecordTreeElement.js:
* UserInterface/Views/TimelineIcons.css:
(.animation-frame-record .icon):
(.css-animation-record .icon): Added.
(.css-transition-record .icon): Added.
(.media-element-record .icon): Added.
(.animation-record .icon): Deleted.
(.dom-event-record .icon): Deleted.
(.dom-event-record.fullscreen .icon): Deleted.
(.power-efficient-playback-state-changed-record .icon): Deleted.
* UserInterface/Images/DOMEventFullscreen.svg: Removed.
* UserInterface/Images/EventCancel.svg: Added.
* UserInterface/Images/EventIteration.svg: Added.
* UserInterface/Images/EventPause.svg:
* UserInterface/Images/EventPlay.svg:
* UserInterface/Images/EventProcessing.svg:
* UserInterface/Images/EventStop.svg:
* UserInterface/Images/PowerEfficientPlaybackStateChanged.svg: Removed.
* UserInterface/Images/TimelineRecordAnimationFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordAnimation.svg.
* UserInterface/Images/TimelineRecordCSSAnimation.svg: Added.
* UserInterface/Images/TimelineRecordCSSTransition.svg: Added.
* UserInterface/Images/TimelineRecordMediaElement.svg: Added.
Add new media icons.
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.async import): Added.
(WI.TimelineRecording.import): Deleted.
* UserInterface/Models/TimelineRecord.js:
* UserInterface/Models/CPUTimelineRecord.js:
* UserInterface/Models/HeapAllocationsTimelineRecord.js:
(WI.HeapAllocationsTimelineRecord.async fromJSON): Added.
(WI.HeapAllocationsTimelineRecord.fromJSON): Deleted.
* UserInterface/Models/LayoutTimelineRecord.js:
* UserInterface/Models/MemoryTimelineRecord.js:
* UserInterface/Models/RenderingFrameTimelineRecord.js:
* UserInterface/Models/ResourceTimelineRecord.js:
* UserInterface/Models/ScriptTimelineRecord.js:
Make the importing of timeline records `async` so we can attempt to rehydrate the DOM nodes
of any media records (as well as wait for heap snapshots).
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.isMediaElement): Added.
(WI.DOMNode.prototype._shouldListenForEventListeners): Deleted.
* Localizations/en.lproj/localizedStrings.js:
Source/WTF:
* wtf/Markable.h:
(WTF::operator==):
(WTF::operator!=):
Add extra utility operators.
Tools:
* TestWebKitAPI/Tests/WTF/Markable.cpp:
(TestWebKitAPI::TEST):
Add tests for extra utility operators.
LayoutTests:
* inspector/animation/tracking.html: Added.
* inspector/animation/tracking-expected.txt: Added.
Canonical link: https://commits.webkit.org/217127@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251959 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-11-02 00:45:35 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/Animation.json
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/ApplicationCache.json
|
2019-01-15 08:25:33 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/Audit.json
|
2020-05-27 18:09:46 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/Browser.json
|
2019-01-25 01:06:17 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/CPUProfiler.json
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/inspector/protocol/CSS.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Canvas.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Console.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/DOM.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/DOMDebugger.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/DOMStorage.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Database.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Debugger.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/GenericTypes.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Heap.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/IndexedDB.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Inspector.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/LayerTree.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Memory.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Network.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Page.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Recording.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Runtime.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/ScriptProfiler.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Security.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/ServiceWorker.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Target.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Timeline.json
|
|
|
|
$(PROJECT_DIR)/inspector/protocol/Worker.json
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/__init__.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/cpp_generator.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/cpp_generator_templates.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generate_js_backend_commands.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generator.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/generator_templates.py
|
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/models.py
|
2020-05-27 18:09:46 +00:00
|
|
|
$(PROJECT_DIR)/inspector/scripts/codegen/preprocess.pl
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/inspector/scripts/generate-inspector-protocol-bindings.py
|
|
|
|
$(PROJECT_DIR)/parser/Keywords.table
|
|
|
|
$(PROJECT_DIR)/runtime/ArrayConstructor.cpp
|
2019-02-05 22:53:58 +00:00
|
|
|
$(PROJECT_DIR)/runtime/AsyncFromSyncIteratorPrototype.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/runtime/AsyncGeneratorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/BigIntConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/BigIntPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/BooleanPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/DateConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/DatePrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/ErrorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/GeneratorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlCollatorConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlCollatorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlDateTimeFormatConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlDateTimeFormatPrototype.cpp
|
2020-07-21 00:04:06 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlDisplayNamesConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlDisplayNamesPrototype.cpp
|
2020-10-25 06:20:47 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlListFormatConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlListFormatPrototype.cpp
|
2020-05-06 06:01:07 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlLocalePrototype.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlNumberFormatConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlNumberFormatPrototype.cpp
|
2019-02-05 22:53:58 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlObject.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlPluralRulesConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlPluralRulesPrototype.cpp
|
[ECMA-402] Intl.RelativeTimeFormat missing in WebKit
https://bugs.webkit.org/show_bug.cgi?id=209770
Reviewed by Darin Adler.
JSTests:
* stress/intl-relativetimeformat.js: Added.
* test262/config.yaml:
Enable Intl.RelativeTimeFormat feature with flag.
* test262/expectations.yaml:
Mark known failures.
Test for locale validation is not specific to RelativeTimeFormat and should be investigated separately.
Tests for Polish appear to be wrong and should be corrected in test262.
Source/JavaScriptCore:
This patch implements the recent ECMA-402 feature Intl.RelativeTimeFormat.
RelativeTimeFormat has format / formatToParts functions like NumberFormat / DateTimeFormat
and is used to turn a number and unit into a formatted relative time string, e.g.:
new Intl.RelativeTimeFormat('en').format(10, 'day')
> 'in 10 days'
new Intl.RelativeTimeFormat('en', { numeric: 'auto' }).format(0, 'day')
> 'today'
Implementation of RelativeTimeFormat#formatToParts makes direct use of NumberFormat#formatToParts,
as the relative time string consists of at most one formatted number with optional literal text on either side.
This feature is runtime-guarded by the `useIntlRelativeTimeFormat` option.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* runtime/CommonIdentifiers.h:
* runtime/IntlRelativeTimeFormat.cpp: Added.
* runtime/IntlRelativeTimeFormat.h: Added.
* runtime/IntlRelativeTimeFormatConstructor.cpp: Added.
* runtime/IntlRelativeTimeFormatConstructor.h: Added.
* runtime/IntlRelativeTimeFormatPrototype.cpp: Added.
* runtime/IntlRelativeTimeFormatPrototype.h: Added.
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::relativeTimeFormatStructure):
* runtime/OptionsList.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
Add feature and runtime option.
* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::formatToParts):
* runtime/IntlPluralRules.cpp:
(JSC::IntlPluralRules::initializePluralRules):
(JSC::IntlPluralRules::resolvedOptions):
Make "type" a property name.
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
(JSC::IntlNumberFormat::resolvedOptions):
(JSC::IntlNumberFormat::formatToPartsInternal):
(JSC::IntlNumberFormat::formatToParts):
* runtime/IntlNumberFormat.h:
Factor out formatToPartsInternal so that RelativeTimeFormat can use it with its own UNumberFormat.
(This logic is too complicated to duplicate; it's because ICU won't split, e.g., "10,000" into parts for us.)
* runtime/IntlObject.cpp:
(JSC::IntlObject::IntlObject):
(JSC::IntlObject::create):
(JSC::IntlObject::finishCreation):
(JSC::intlAvailableLocales):
(JSC::intlCollatorAvailableLocales):
(JSC::isUnicodeLocaleIdentifierType):
(JSC::supportedLocales):
(JSC::intlDateTimeFormatAvailableLocales): Deleted.
(JSC::intlNumberFormatAvailableLocales): Deleted.
* runtime/IntlObject.h:
(JSC::intlDateTimeFormatAvailableLocales):
(JSC::intlNumberFormatAvailableLocales):
(JSC::intlPluralRulesAvailableLocales):
(JSC::intlRelativeTimeFormatAvailableLocales):
Perform three corrections for Intl classes:
1. Collator should be the only class with unique "available locales".
[unum|udat]_getAvailable exist but they've deferred to uloc_getAvailable for 20 years.
2. isUnicodeLocaleIdentifierType isn't just `alphanum{3,8}` but rather `alphanum{3,8} (sep alphanum{3,8})*`.
This is my own mistake from r239941.
3. supportedLocalesOf entries should not be frozen.
Changed in https://github.com/tc39/ecma402/pull/278.
* tools/JSDollarVM.cpp:
(JSC::functionICUVersion):
(JSC::JSDollarVM::finishCreation):
Add $vm.icuVersion so that we can add per-line skips to stress tests.
Tools:
* Scripts/run-jsc-stress-tests:
Add runIntlRelativeTimeFormatEnabled.
Canonical link: https://commits.webkit.org/223609@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260349 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-20 05:15:35 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlRelativeTimeFormatConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlRelativeTimeFormatPrototype.cpp
|
2020-08-22 19:22:24 +00:00
|
|
|
$(PROJECT_DIR)/runtime/IntlSegmentIteratorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlSegmenterConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlSegmenterPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/IntlSegmentsPrototype.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/runtime/JSDataViewPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSGlobalObject.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSInternalPromiseConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSModuleLoader.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSONObject.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSPromiseConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/JSPromisePrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/MapPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/NumberConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/NumberPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/ObjectConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/ReflectObject.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/RegExpConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/SetPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/StringConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/StringPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/SymbolConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/runtime/SymbolPrototype.cpp
|
2021-07-07 03:49:26 +00:00
|
|
|
$(PROJECT_DIR)/runtime/TemporalObject.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/ucd/CaseFolding.txt
|
|
|
|
$(PROJECT_DIR)/ucd/DerivedBinaryProperties.txt
|
|
|
|
$(PROJECT_DIR)/ucd/DerivedCoreProperties.txt
|
|
|
|
$(PROJECT_DIR)/ucd/DerivedNormalizationProps.txt
|
|
|
|
$(PROJECT_DIR)/ucd/PropList.txt
|
|
|
|
$(PROJECT_DIR)/ucd/PropertyAliases.txt
|
|
|
|
$(PROJECT_DIR)/ucd/PropertyValueAliases.txt
|
|
|
|
$(PROJECT_DIR)/ucd/ScriptExtensions.txt
|
|
|
|
$(PROJECT_DIR)/ucd/Scripts.txt
|
|
|
|
$(PROJECT_DIR)/ucd/UnicodeData.txt
|
|
|
|
$(PROJECT_DIR)/ucd/emoji-data.txt
|
|
|
|
$(PROJECT_DIR)/ucd/language-subtag-registry.txt
|
|
|
|
$(PROJECT_DIR)/wasm/generateWasm.py
|
|
|
|
$(PROJECT_DIR)/wasm/generateWasmB3IRGeneratorInlinesHeader.py
|
|
|
|
$(PROJECT_DIR)/wasm/generateWasmOpsHeader.py
|
2019-03-15 21:33:09 +00:00
|
|
|
$(PROJECT_DIR)/wasm/js/JSWebAssembly.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyCompileErrorConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyCompileErrorPrototype.cpp
|
Adopt the new WebAssembly.Global system
https://bugs.webkit.org/show_bug.cgi?id=186552
Reviewed by Keith Miller.
JSTests:
1. Update spec-harness to accept newer tests. And we update several tests that does not work with the old harness.
2. Add WebAssembly.Global tests.
* wasm/js-api/global-error.js:
(assert.throws.new.WebAssembly.Module.bin):
(new.WebAssembly.Module):
(assert.throws):
* wasm/js-api/global-external-init-from-import.js:
* wasm/js-api/globals-export.js:
* wasm/modules/js-wasm-global-namespace.js:
(assert.throws):
* wasm/modules/js-wasm-global.js:
(assert.throws):
* wasm/modules/wasm-import-wasm-export-i64-error.js:
* wasm/references/anyref_globals.js:
* wasm/references/func_ref.js:
(assert.eq.instance.exports.fix):
* wasm/spec-harness.js:
(getGlobal):
(let.console.log):
* wasm/spec-harness/sync_index.js: Renamed from JSTests/wasm/spec-harness/index.js.
(reinitializeRegistry.let.handler.get return):
(module):
* wasm/spec-tests/call.wast.js:
* wasm/spec-tests/exports.wast.js:
* wasm/spec-tests/globals.wast.js:
* wasm/spec-tests/if.wast.js:
* wasm/spec-tests/imports.wast.js:
* wasm/spec-tests/linking.wast.js:
* wasm/spec-tests/memory.wast.js:
* wasm/stress/immutable-globals.js: Added.
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq.instance.exports.getI32):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):
* wasm/stress/mutable-globals-cross.js: Added.
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance1):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance2):
* wasm/stress/mutable-globals.js: Added.
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.instance.exports.setI32AsI64):
LayoutTests/imported/w3c:
* web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt:
* web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt:
* web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/global/toString.any-expected.txt:
* web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt:
* web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt:
* web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/interface.any-expected.txt:
* web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/module/exports.any-expected.txt:
* web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt:
Source/JavaScriptCore:
This patch adds WebAssembly.Global implementation. It is already included in the Wasm spec (this means, it is not in
staging right now: it was stage-4, and included in the spec). WebAssembly.Global is a wrapper object around
"global" binding. This object can hold "immutable" and "mutable" global binding, and we can access Wasm globals through
this object. Furthermore, we can share mutable global binding through this object across WebAssembly modules.
To implement it efficiently, this patch introduces BindingMode to Wasm globals. If the mode is EmbeddedInInstance,
we continue using the current existing mechanism. If the mode is Portable, we store a pointer to actual value in
Wasm globals array in Wasm::Instance, so that we can access it through one additional dereference.
And we mark all immutable globals as EmbeddedInInstance. If the binding is immutable, internally we do not need to
have one binding. We can just continue using the current mechanism since users cannot observe whether immutable bindings'
storage is shared or not. If the global is mutable, and it is exported outside of the module, we use Portable mode.
So, all the previously used wasm global bindings are EmbeddedInInstance. Only newly added "mutable" "exported" bindings
are Portable and requires one additional dereference.
To access portable bindings efficiently, we add new Wasm bytecodes, `get_global_portable_binding`, `set_global_portable_binding`,
and `set_global_ref_portable_binding`.
This patch improves WPT wasm coverage significantly.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/BytecodeList.rb:
* heap/HeapCell.cpp:
(JSC::keepAlive):
(JSC::HeapCell::use const): Deleted.
* heap/HeapCell.h:
(JSC::keepAlive):
(JSC::HeapCell::use const):
* llint/WebAssembly.asm:
* runtime/JSGlobalObject.cpp:
* runtime/JSGlobalObject.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::getGlobal):
(JSC::Wasm::AirIRGenerator::setGlobal):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::getGlobal):
(JSC::Wasm::B3IRGenerator::setGlobal):
* wasm/WasmFormat.h:
* wasm/WasmGlobal.cpp: Added.
(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):
(JSC::Wasm::Global::visitAggregate):
* wasm/WasmGlobal.h: Added.
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::linkGlobal):
* wasm/WasmInstance.h:
(JSC::Wasm::Instance::loadI32Global const):
(JSC::Wasm::Instance::loadI64Global const):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::globalsToBinding):
(JSC::Wasm::Instance::getGlobalBinding):
* wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::getGlobal):
(JSC::Wasm::LLIntGenerator::setGlobal):
* wasm/WasmModuleInformation.h:
* wasm/WasmOperations.cpp:
(JSC::Wasm::operationWasmWriteBarrierSlowPath):
* wasm/WasmOperations.h:
* wasm/WasmSectionParser.cpp:
(JSC::Wasm::SectionParser::parseImport):
(JSC::Wasm::SectionParser::parseGlobal):
(JSC::Wasm::SectionParser::parseExport):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseGlobalType):
* wasm/WasmSectionParser.h:
* wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* wasm/WasmSlowPaths.h:
* wasm/WasmValidate.cpp:
(JSC::Wasm::Validate::setGlobal):
* wasm/js/JSWebAssembly.cpp:
* wasm/js/JSWebAssemblyGlobal.cpp: Added.
(JSC::JSWebAssemblyGlobal::create):
(JSC::JSWebAssemblyGlobal::createStructure):
(JSC::JSWebAssemblyGlobal::JSWebAssemblyGlobal):
(JSC::JSWebAssemblyGlobal::finishCreation):
(JSC::JSWebAssemblyGlobal::destroy):
(JSC::JSWebAssemblyGlobal::visitChildren):
* wasm/js/JSWebAssemblyGlobal.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::visitChildren):
* wasm/js/JSWebAssemblyInstance.h:
* wasm/js/JSWebAssemblyMemory.cpp:
(JSC::JSWebAssemblyMemory::destroy):
* wasm/js/JSWebAssemblyMemory.h:
* wasm/js/JSWebAssemblyModule.h:
* wasm/js/JSWebAssemblyTable.h:
* wasm/js/WebAssemblyGlobalConstructor.cpp: Added.
(JSC::constructJSWebAssemblyGlobal):
(JSC::callJSWebAssemblyGlobal):
(JSC::WebAssemblyGlobalConstructor::create):
(JSC::WebAssemblyGlobalConstructor::createStructure):
(JSC::WebAssemblyGlobalConstructor::finishCreation):
(JSC::WebAssemblyGlobalConstructor::WebAssemblyGlobalConstructor):
* wasm/js/WebAssemblyGlobalConstructor.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
* wasm/js/WebAssemblyGlobalPrototype.cpp: Added.
(JSC::getGlobal):
(JSC::webAssemblyGlobalProtoFuncValueOf):
(JSC::webAssemblyGlobalProtoGetterFuncValue):
(JSC::webAssemblyGlobalProtoSetterFuncValue):
(JSC::WebAssemblyGlobalPrototype::create):
(JSC::WebAssemblyGlobalPrototype::createStructure):
(JSC::WebAssemblyGlobalPrototype::finishCreation):
(JSC::WebAssemblyGlobalPrototype::WebAssemblyGlobalPrototype):
* wasm/js/WebAssemblyGlobalPrototype.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::link):
Canonical link: https://commits.webkit.org/218038@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253074 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-12-04 01:36:56 +00:00
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyGlobalConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyGlobalPrototype.cpp
|
2018-12-03 22:52:14 +00:00
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyInstanceConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyInstancePrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyLinkErrorConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyLinkErrorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyMemoryConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyMemoryPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyModuleConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyModulePrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyTableConstructor.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/js/WebAssemblyTablePrototype.cpp
|
|
|
|
$(PROJECT_DIR)/wasm/wasm.json
|
|
|
|
$(PROJECT_DIR)/yarr/create_regex_tables
|
|
|
|
$(PROJECT_DIR)/yarr/generateYarrCanonicalizeUnicode
|
|
|
|
$(PROJECT_DIR)/yarr/generateYarrUnicodePropertyTables.py
|
|
|
|
$(PROJECT_DIR)/yarr/hasher.py
|