5a510b5e0c29ae7461fe8f1b2dbe216498378d1e
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2019-11-02  Robin Morisset  <rmorisset@apple.com>
2
3         The offline assembler is wrong about which immediates are supported by and/or/xor on ARM64
4         https://bugs.webkit.org/show_bug.cgi?id=203752
5
6         Reviewed by Tadeu Zagallo.
7
8         See https://dinfuehr.github.io/blog/encoding-of-immediate-values-on-aarch64/ for the details of which immediates are supported.
9         This patch is a minimal fix, ideally we should refactor all of the code dealing with immediates in risc.rb, but considering that I don't know ruby and this code is poorly/not tested, I went for the simplest possible fix.
10
11         * offlineasm/arm64.rb:
12         * offlineasm/mips.rb:
13         * offlineasm/risc.rb:
14
15 2019-11-02  Devin Rousso  <drousso@apple.com>
16
17         Web Inspector: Add diagnostic logging for frontend feature usage
18         https://bugs.webkit.org/show_bug.cgi?id=203579
19         <rdar://problem/56717410>
20
21         Reviewed by Brian Burg.
22
23         Original patch by Matt Baker <mattbaker@apple.com>.
24
25         * Configurations/FeatureDefines.xcconfig:
26         Add `ENABLE_INSPECTOR_TELEMETRY`, which is only enabled for macOS.
27
28 2019-11-01  Devin Rousso  <drousso@apple.com>
29
30         Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition
31         https://bugs.webkit.org/show_bug.cgi?id=203651
32         <rdar://problem/56128726>
33
34         Reviewed by Brian Burg.
35
36         Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
37         JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
38         timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
39         are created, started, delayed, iterated, canceled, or finished.
40
41         * CMakeLists.txt:
42         * DerivedSources-input.xcfilelist:
43         * DerivedSources.make:
44         * inspector/protocol/Animation.json: Added.
45         * inspector/protocol/Timeline.json:
46         Add an Animation domain for handling the tracking of CSS Web Animations.
47
48 2019-11-01  Saam Barati  <sbarati@apple.com>
49
50         Refactor uses of StructureStubInfo 'thisGPR' to a union for thisGPR and prototypeGPR
51         https://bugs.webkit.org/show_bug.cgi?id=203693
52
53         Reviewed by Mark Lam and Yusuke Suzuki.
54
55         I'm going to be adding a third overload for this field when making
56         GetByVal inline caching part of StructureStubInfo. It's nicer for
57         each use case of this field to use it by the proper name.
58
59         * bytecode/AccessCase.cpp:
60         (JSC::AccessCase::generateWithGuard):
61         (JSC::AccessCase::generateImpl):
62         * bytecode/PolymorphicAccess.cpp:
63         (JSC::PolymorphicAccess::regenerate):
64         * bytecode/PolymorphicAccess.h:
65         (JSC::AccessGenerationState::AccessGenerationState):
66         * bytecode/StructureStubInfo.h:
67         * jit/JITInlineCacheGenerator.cpp:
68         (JSC::JITByIdGenerator::JITByIdGenerator):
69         (JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
70         (JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
71
72 2019-11-01  Alexey Shvayka  <shvaikalesh@gmail.com>
73
74         [[HasProperty]] result of Proxy in prototype chain is ignored
75         https://bugs.webkit.org/show_bug.cgi?id=203560
76
77         Reviewed by Ross Kirsling.
78
79         Before this change, when [[HasProperty]] was called on ordinary object with Proxy in prototype chain,
80         falsy result of Proxy's "has" trap was ignored and prototype chain was inspected further.
81
82         According to spec, OrdinaryHasProperty unconditionally returns result of parent's [[HasProperty]] call.
83         (step 5.a of https://tc39.es/ecma262/#sec-ordinaryhasproperty)
84
85         * runtime/JSObjectInlines.h:
86         (JSC::JSObject::getPropertySlot):
87         (JSC::JSObject::getNonIndexPropertySlot):
88
89 2019-10-31  Yusuke Suzuki  <ysuzuki@apple.com>
90
91         Unreviewed, speculative GTK build fix r251886
92         https://bugs.webkit.org/show_bug.cgi?id=203703
93
94         * wasm/WasmSlowPaths.h:
95
96 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
97
98         Fix GTK build after r251886
99         https://bugs.webkit.org/show_bug.cgi?id=203703
100
101         Reviewed by Yusuke Suzuki.
102
103         slow_path_wasm_throw_exception was missing `extern "C"` in the implementation file.
104
105         * wasm/WasmSlowPaths.cpp:
106         (JSC::LLInt::slow_path_wasm_throw_exception):
107
108 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
109
110         gcSafeMemmove references undefined slowPathBackwardsMemmove on non-gcc compatible compilers
111         https://bugs.webkit.org/show_bug.cgi?id=203721
112
113         Reviewed by Fujii Hironori.
114
115         * heap/GCMemoryOperations.h:
116         (JSC::gcSafeMemmove):
117
118 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
119
120         Fix build when WTF_CPU_NEEDS_ALIGNED_ACCESS=1 after r251886
121         https://bugs.webkit.org/show_bug.cgi?id=203718
122
123         Reviewed by Yusuke Suzuki.
124
125         * bytecompiler/BytecodeGeneratorBaseInlines.h:
126         (JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
127         (JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):
128
129 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
130
131         offlineasm should emit the suffixes for floating point instructions on Windows x86
132         https://bugs.webkit.org/show_bug.cgi?id=203720
133
134         Reviewed by Yusuke Suzuki.
135
136         * offlineasm/x86.rb:
137
138 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
139
140         Disable Wasm interpreter on WinCairo
141         https://bugs.webkit.org/show_bug.cgi?id=203705
142
143         Reviewed by Yusuke Suzuki.
144
145         The interpreter does not build on WinCairo.
146
147         * llint/LowLevelInterpreter.asm:
148
149 2019-10-31  Yusuke Suzuki  <ysuzuki@apple.com>
150
151         [JSC] Remove metadata(CallFrame*) accessor
152         https://bugs.webkit.org/show_bug.cgi?id=203712
153
154         Reviewed by Tadeu Zagallo.
155
156         We should pass CodeBlock* explicitly to remove unnecessary use of CallFrame*, which is very error-prone.
157
158         * dfg/DFGOSREntry.cpp:
159         (JSC::DFG::prepareCatchOSREntry):
160         * dfg/DFGOSREntry.h:
161         * generator/Metadata.rb:
162         * jit/JITOperations.cpp:
163
164 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
165
166         Unreviewed, fix LowLevelInterpreter32_64.asm after r251886
167         https://bugs.webkit.org/show_bug.cgi?id=194257
168
169         ci2d was renamed to ci2ds and I also missed LowLevelInterpreter32_64.asm
170
171         * llint/LowLevelInterpreter32_64.asm:
172
173 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
174
175         Unreviewed, fix cloop builds after r251886
176         https://bugs.webkit.org/show_bug.cgi?id=194257
177
178         ci2d was renamed to ci2ds, but I missed cloop.rb, arm.rb and mips.rb
179
180         * offlineasm/arm.rb:
181         * offlineasm/cloop.rb:
182         * offlineasm/mips.rb:
183
184 2019-10-31  Tadeu Zagallo  <tzagallo@apple.com>
185
186         [WebAssembly] Create a Wasm interpreter
187         https://bugs.webkit.org/show_bug.cgi?id=194257
188         <rdar://problem/44186794>
189
190         Reviewed by Saam Barati.
191
192         Add an interpreter tier to WebAssembly which reuses the LLInt infrastructure. The interpreter
193         currently tiers up straight to OMG and can OSR enter at the prologue and from loops. The initial
194         implementation of the interpreter is very naive, but despite the lack of optimizations it still
195         shows a 2x improvement on the WebAssembly subtests in JetStream2 and 2x improvement on the
196         PSPDFKit benchmark. It reduces "compilation" times by ~3x and it's neutral on throughput.
197
198         The interpreter follows the same calling conventions as the BBQ/OMG, this means that:
199         - We have to allocate locals for all argument registers and write all arguments registers to the
200           stack in the prologue.
201         - Calls have to allocate space for at least as many arguments as the number of argument registers.
202           Before each call, all argument registers must be loaded from the stack, and after we return from
203           the call, all registers must be stored back to the stack, in case they contain return values. We
204           carefully layout the stack so that the arguments that would already have to be passed in the stack
205           end up in the right place. The stack layout for calls is:
206             [ gprs ][ fprs ][ optional stack arguments ][ callee frame ]
207                                                                        ^ sp
208         - The return opcode has to load all registers from the stack, since they might need to contain
209           results of the function.
210         - The calling convention requires that the callee should store itself in the callee slot of the call
211           frame, which is impossible in the interpreter, since the code we execute is the same for all callees.
212           In order to work around that, we generate an entry thunk to the wasm interpreter for each function.
213           All this thunk does is store the callee in the call frame and tail call the interpreter.
214
215         * CMakeLists.txt:
216         * DerivedSources-input.xcfilelist:
217         * DerivedSources-output.xcfilelist:
218         * DerivedSources.make:
219         * JavaScriptCore.xcodeproj/project.pbxproj:
220         * Sources.txt:
221         * bytecode/BytecodeDumper.cpp:
222         (JSC::BytecodeDumper<Block>::constantName const):
223         (JSC::BytecodeDumper<Block>::dumpValue):
224         (JSC::BytecodeDumper<Block>::dumpBytecode):
225         (JSC::CodeBlockBytecodeDumper<Block>::vm const):
226         (JSC::CodeBlockBytecodeDumper<Block>::identifier const):
227         (JSC::CodeBlockBytecodeDumper<Block>::dumpIdentifiers):
228         (JSC::CodeBlockBytecodeDumper<Block>::dumpConstants):
229         (JSC::CodeBlockBytecodeDumper<Block>::dumpExceptionHandlers):
230         (JSC::CodeBlockBytecodeDumper<Block>::dumpSwitchJumpTables):
231         (JSC::CodeBlockBytecodeDumper<Block>::dumpStringSwitchJumpTables):
232         (JSC::CodeBlockBytecodeDumper<Block>::dumpBlock):
233         * bytecode/BytecodeDumper.h:
234         (JSC::BytecodeDumper::dumpValue):
235         (JSC::BytecodeDumper::BytecodeDumper):
236         * bytecode/BytecodeGeneratorification.cpp:
237         (JSC::performGeneratorification):
238         * bytecode/BytecodeList.rb:
239         * bytecode/CodeBlock.cpp:
240         (JSC::CodeBlock::dumpBytecode):
241         * bytecode/Fits.h:
242         * bytecode/Instruction.h:
243         (JSC::BaseInstruction::BaseInstruction):
244         (JSC::BaseInstruction::Impl::opcodeID const):
245         (JSC::BaseInstruction::opcodeID const):
246         (JSC::BaseInstruction::name const):
247         (JSC::BaseInstruction::isWide16 const):
248         (JSC::BaseInstruction::isWide32 const):
249         (JSC::BaseInstruction::hasMetadata const):
250         (JSC::BaseInstruction::sizeShiftAmount const):
251         (JSC::BaseInstruction::size const):
252         (JSC::BaseInstruction::is const):
253         (JSC::BaseInstruction::as const):
254         (JSC::BaseInstruction::cast):
255         (JSC::BaseInstruction::cast const):
256         (JSC::BaseInstruction::wide16 const):
257         (JSC::BaseInstruction::wide32 const):
258         * bytecode/InstructionStream.h:
259         (JSC::InstructionStream::iterator::operator+=):
260         (JSC::InstructionStream::iterator::operator++):
261         (JSC::InstructionStreamWriter::iterator::operator+=):
262         (JSC::InstructionStreamWriter::iterator::operator++):
263         * bytecode/Opcode.cpp:
264         * bytecode/Opcode.h:
265         * bytecode/PreciseJumpTargetsInlines.h:
266         * bytecode/UnlinkedCodeBlock.h:
267         * bytecode/VirtualRegister.cpp:
268         (JSC::VirtualRegister::VirtualRegister):
269         * bytecode/VirtualRegister.h:
270         * bytecompiler/BytecodeGenerator.cpp:
271         (JSC::GenericLabel<JSGeneratorTraits>::setLocation):
272         (JSC::BytecodeGenerator::BytecodeGenerator):
273         * bytecompiler/BytecodeGenerator.h:
274         * bytecompiler/BytecodeGeneratorBase.h: Added.
275         * bytecompiler/BytecodeGeneratorBaseInlines.h: Added.
276         (JSC::shrinkToFit):
277         (JSC::BytecodeGeneratorBase<Traits>::BytecodeGeneratorBase):
278         (JSC::BytecodeGeneratorBase<Traits>::newLabel):
279         (JSC::BytecodeGeneratorBase<Traits>::newEmittedLabel):
280         (JSC::BytecodeGeneratorBase<Traits>::reclaimFreeRegisters):
281         (JSC::BytecodeGeneratorBase<Traits>::emitLabel):
282         (JSC::BytecodeGeneratorBase<Traits>::recordOpcode):
283         (JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
284         (JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):
285         (JSC::BytecodeGeneratorBase<Traits>::write):
286         (JSC::BytecodeGeneratorBase<Traits>::newRegister):
287         (JSC::BytecodeGeneratorBase<Traits>::newTemporary):
288         (JSC::BytecodeGeneratorBase<Traits>::addVar):
289         (JSC::BytecodeGeneratorBase<Traits>::allocateCalleeSaveSpace):
290         * bytecompiler/Label.h:
291         (JSC::GenericBoundLabel::GenericBoundLabel):
292         (JSC::GenericBoundLabel::target):
293         (JSC::GenericBoundLabel::saveTarget):
294         (JSC::GenericBoundLabel::commitTarget):
295         * dfg/DFGByteCodeParser.cpp:
296         * dfg/DFGCapabilities.cpp:
297         (JSC::DFG::capabilityLevel):
298         * dfg/DFGOperations.cpp:
299         * generator/Argument.rb:
300         * generator/DSL.rb:
301         * generator/GeneratedFile.rb:
302         * generator/Opcode.rb:
303         * generator/Options.rb:
304         * generator/Section.rb:
305         * generator/Wasm.rb: Added.
306         * interpreter/Register.h:
307         * interpreter/RegisterInlines.h:
308         (JSC::Register::operator=):
309         * jit/JITArithmetic.cpp:
310         * jit/JITOpcodes.cpp:
311         * llint/LLIntData.cpp:
312         (JSC::LLInt::initialize):
313         * llint/LLIntData.h:
314         (JSC::LLInt::wasmExceptionInstructions):
315         * llint/LLIntOfflineAsmConfig.h:
316         * llint/LLIntOffsetsExtractor.cpp:
317         * llint/LLIntSlowPaths.cpp:
318         * llint/LLIntThunks.cpp:
319         (JSC::LLInt::generateThunkWithJumpTo):
320         (JSC::LLInt::wasmFunctionEntryThunk):
321         * llint/LLIntThunks.h:
322         * llint/LowLevelInterpreter.asm:
323         * llint/LowLevelInterpreter32_64.asm:
324         * llint/LowLevelInterpreter64.asm:
325         * llint/WebAssembly.asm: Added.
326         * offlineasm/arm64.rb:
327         * offlineasm/instructions.rb:
328         * offlineasm/parser.rb:
329         * offlineasm/registers.rb:
330         * offlineasm/transform.rb:
331         * offlineasm/x86.rb:
332         * parser/Nodes.h:
333         * runtime/Error.cpp:
334         (JSC::FindFirstCallerFrameWithCodeblockFunctor::operator() const):
335         * runtime/ErrorInstance.cpp:
336         (JSC::ErrorInstance::finishCreation):
337         * runtime/Options.cpp:
338         (JSC::overrideDefaults):
339         * runtime/OptionsList.h:
340         * runtime/SamplingProfiler.cpp:
341         (JSC::FrameWalker::recordJITFrame):
342         (JSC::FrameWalker::resetAtMachineFrame):
343         * wasm/WasmAirIRGenerator.cpp:
344         (JSC::Wasm::AirIRGenerator::isControlTypeIf):
345         (JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
346         * wasm/WasmB3IRGenerator.cpp:
347         (JSC::Wasm::B3IRGenerator::isControlTypeIf):
348         * wasm/WasmBBQPlan.cpp:
349         (JSC::Wasm::BBQPlan::prepareImpl):
350         (JSC::Wasm::BBQPlan::work):
351         (JSC::Wasm::BBQPlan::compileFunction):
352         (JSC::Wasm::BBQPlan::didCompleteCompilation):
353         (JSC::Wasm::BBQPlan::initializeCallees):
354         * wasm/WasmBBQPlan.h:
355         * wasm/WasmBBQPlanInlines.h: Removed.
356         * wasm/WasmCallee.cpp:
357         (JSC::Wasm::Callee::Callee):
358         (JSC::Wasm::Callee::dump const):
359         (JSC::Wasm::JITCallee::JITCallee):
360         (JSC::Wasm::LLIntCallee::setEntrypoint):
361         (JSC::Wasm::LLIntCallee::entrypoint const):
362         (JSC::Wasm::LLIntCallee::calleeSaveRegisters):
363         (JSC::Wasm:: const):
364         * wasm/WasmCallee.h:
365         (JSC::Wasm::Callee::setOSREntryCallee):
366         (JSC::Wasm::JITCallee::wasmToWasmCallsites):
367         (JSC::Wasm::JITCallee:: const):
368         * wasm/WasmCallingConvention.h:
369         * wasm/WasmCodeBlock.cpp:
370         (JSC::Wasm::CodeBlock::CodeBlock):
371         * wasm/WasmCodeBlock.h:
372         (JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace):
373         (JSC::Wasm::CodeBlock::wasmBBQCalleeFromFunctionIndexSpace):
374         (JSC::Wasm::CodeBlock::wasmToWasmExitStub):
375         * wasm/WasmCompilationMode.cpp:
376         (JSC::Wasm::makeString):
377         * wasm/WasmCompilationMode.h:
378         * wasm/WasmEmbedder.h:
379         * wasm/WasmEntryPlan.cpp: Added.
380         (JSC::Wasm::EntryPlan::EntryPlan):
381         (JSC::Wasm::EntryPlan::stateString):
382         (JSC::Wasm::EntryPlan::moveToState):
383         (JSC::Wasm::EntryPlan::didReceiveFunctionData):
384         (JSC::Wasm::EntryPlan::parseAndValidateModule):
385         (JSC::Wasm::EntryPlan::prepare):
386         (JSC::Wasm::EntryPlan::ThreadCountHolder::ThreadCountHolder):
387         (JSC::Wasm::EntryPlan::ThreadCountHolder::~ThreadCountHolder):
388         (JSC::Wasm::EntryPlan::complete):
389         (JSC::Wasm::EntryPlan::compileFunctions):
390         (JSC::Wasm::EntryPlan::work):
391         * wasm/WasmEntryPlan.h: Copied from Source/JavaScriptCore/wasm/WasmBBQPlan.h.
392         (JSC::Wasm::EntryPlan::parseAndValidateModule):
393         (JSC::Wasm::EntryPlan::exports const):
394         (JSC::Wasm::EntryPlan::internalFunctionCount const):
395         (JSC::Wasm::EntryPlan::takeModuleInformation):
396         (JSC::Wasm::EntryPlan::takeWasmToWasmExitStubs):
397         (JSC::Wasm::EntryPlan::takeWasmToWasmCallsites):
398         (JSC::Wasm::EntryPlan::hasBeenPrepared const):
399         (JSC::Wasm::EntryPlan::tryReserveCapacity):
400         * wasm/WasmFunctionCodeBlock.cpp: Added.
401         (JSC::Wasm::FunctionCodeBlock::setInstructions):
402         (JSC::Wasm::FunctionCodeBlock::dumpBytecode):
403         (JSC::Wasm::FunctionCodeBlock::addOutOfLineJumpTarget):
404         (JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
405         (JSC::Wasm::FunctionCodeBlock::outOfLineJumpTarget):
406         (JSC::Wasm::FunctionCodeBlock::addSignature):
407         (JSC::Wasm::FunctionCodeBlock::signature const):
408         (JSC::Wasm::FunctionCodeBlock::addJumpTable):
409         (JSC::Wasm::FunctionCodeBlock::jumpTable const const):
410         (JSC::Wasm::FunctionCodeBlock::numberOfJumpTables const):
411         * wasm/WasmFunctionCodeBlock.h: Added.
412         (JSC::Wasm::FunctionCodeBlock::FunctionCodeBlock):
413         (JSC::Wasm::FunctionCodeBlock::getConstant const):
414         (JSC::Wasm::FunctionCodeBlock::functionIndex const):
415         (JSC::Wasm::FunctionCodeBlock::addJumpTarget):
416         (JSC::Wasm::FunctionCodeBlock::numberOfJumpTargets):
417         (JSC::Wasm::FunctionCodeBlock::lastJumpTarget):
418         (JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
419         (JSC::Wasm::FunctionCodeBlock::bytecodeOffset):
420         (JSC::Wasm::FunctionCodeBlock::tierUpCounter):
421         * wasm/WasmFunctionParser.h:
422         (JSC::Wasm::FunctionParser<Context>::parseExpression):
423         (JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
424         * wasm/WasmInstance.h:
425         * wasm/WasmLLIntGenerator.cpp: Added.
426         (JSC::Wasm::LLIntGenerator::ControlType::ControlType):
427         (JSC::Wasm::LLIntGenerator::ControlType::loop):
428         (JSC::Wasm::LLIntGenerator::ControlType::topLevel):
429         (JSC::Wasm::LLIntGenerator::ControlType::block):
430         (JSC::Wasm::LLIntGenerator::ControlType::if_):
431         (JSC::Wasm::LLIntGenerator::ControlType::targetLabelForBranch const):
432         (JSC::Wasm::LLIntGenerator::fail const):
433         (JSC::Wasm::LLIntGenerator::unifyValuesWithBlock):
434         (JSC::Wasm::LLIntGenerator::emptyExpression):
435         (JSC::Wasm::LLIntGenerator::createStack):
436         (JSC::Wasm::LLIntGenerator::isControlTypeIf):
437         (JSC::Wasm::LLIntGenerator::addEndToUnreachable):
438         (JSC::Wasm::LLIntGenerator::setParser):
439         (JSC::Wasm::LLIntGenerator::dump):
440         (JSC::Wasm::LLIntGenerator::virtualRegisterForLocal):
441         (JSC::Wasm::LLIntGenerator::tmpsForSignature):
442         (JSC::Wasm::LLIntGenerator::jsNullConstant):
443         (JSC::Wasm::LLIntGenerator::isConstant):
444         (JSC::Wasm::parseAndCompileBytecode):
445         (JSC::Wasm::LLIntGenerator::LLIntGenerator):
446         (JSC::Wasm::LLIntGenerator::finalize):
447         (JSC::Wasm::LLIntGenerator::callInformationFor):
448         (JSC::Wasm::LLIntGenerator::addArguments):
449         (JSC::Wasm::LLIntGenerator::addLocal):
450         (JSC::Wasm::LLIntGenerator::addConstant):
451         (JSC::Wasm::LLIntGenerator::getLocal):
452         (JSC::Wasm::LLIntGenerator::setLocal):
453         (JSC::Wasm::LLIntGenerator::getGlobal):
454         (JSC::Wasm::LLIntGenerator::setGlobal):
455         (JSC::Wasm::LLIntGenerator::addLoop):
456         (JSC::Wasm::LLIntGenerator::addTopLevel):
457         (JSC::Wasm::LLIntGenerator::addBlock):
458         (JSC::Wasm::LLIntGenerator::addIf):
459         (JSC::Wasm::LLIntGenerator::addElse):
460         (JSC::Wasm::LLIntGenerator::addElseToUnreachable):
461         (JSC::Wasm::LLIntGenerator::addReturn):
462         (JSC::Wasm::LLIntGenerator::addBranch):
463         (JSC::Wasm::LLIntGenerator::addSwitch):
464         (JSC::Wasm::LLIntGenerator::endBlock):
465         (JSC::Wasm::LLIntGenerator::addCall):
466         (JSC::Wasm::LLIntGenerator::addCallIndirect):
467         (JSC::Wasm::LLIntGenerator::addRefIsNull):
468         (JSC::Wasm::LLIntGenerator::addRefFunc):
469         (JSC::Wasm::LLIntGenerator::addTableGet):
470         (JSC::Wasm::LLIntGenerator::addTableSet):
471         (JSC::Wasm::LLIntGenerator::addTableSize):
472         (JSC::Wasm::LLIntGenerator::addTableGrow):
473         (JSC::Wasm::LLIntGenerator::addTableFill):
474         (JSC::Wasm::LLIntGenerator::addUnreachable):
475         (JSC::Wasm::LLIntGenerator::addCurrentMemory):
476         (JSC::Wasm::LLIntGenerator::addGrowMemory):
477         (JSC::Wasm::LLIntGenerator::addSelect):
478         (JSC::Wasm::LLIntGenerator::load):
479         (JSC::Wasm::LLIntGenerator::store):
480         (JSC::GenericLabel<Wasm::GeneratorTraits>::setLocation):
481         * wasm/WasmLLIntGenerator.h: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.h.
482         * wasm/WasmLLIntPlan.cpp: Added.
483         (JSC::Wasm::LLIntPlan::prepareImpl):
484         (JSC::Wasm::LLIntPlan::compileFunction):
485         (JSC::Wasm::LLIntPlan::didCompleteCompilation):
486         (JSC::Wasm::LLIntPlan::initializeCallees):
487         * wasm/WasmLLIntPlan.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
488         * wasm/WasmLLIntTierUpCounter.cpp: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp.
489         (JSC::Wasm::LLIntTierUpCounter::addOSREntryDataForLoop):
490         (JSC::Wasm::LLIntTierUpCounter::osrEntryDataForLoop const const):
491         * wasm/WasmLLIntTierUpCounter.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
492         (JSC::Wasm::LLIntTierUpCounter::LLIntTierUpCounter):
493         (JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
494         (JSC::Wasm::LLIntTierUpCounter::checkIfOptimizationThresholdReached):
495         (JSC::Wasm::LLIntTierUpCounter::optimizeSoon):
496         * wasm/WasmMemoryInformation.cpp:
497         (JSC::Wasm::PinnedRegisterInfo::get):
498         * wasm/WasmModule.cpp:
499         (JSC::Wasm::makeValidationResult):
500         (JSC::Wasm::makeValidationCallback):
501         (JSC::Wasm::Module::validateSync):
502         (JSC::Wasm::Module::validateAsync):
503         * wasm/WasmOMGForOSREntryPlan.cpp:
504         (JSC::Wasm::OMGForOSREntryPlan::OMGForOSREntryPlan):
505         (JSC::Wasm::OMGForOSREntryPlan::work):
506         * wasm/WasmOMGForOSREntryPlan.h:
507         * wasm/WasmOMGPlan.cpp:
508         (JSC::Wasm::OMGPlan::work):
509         * wasm/WasmSlowPaths.cpp: Added.
510         (JSC::LLInt::jitCompileAndSetHeuristics):
511         (JSC::LLInt::WASM_SLOW_PATH_DECL):
512         (JSC::LLInt::doWasmCall):
513         (JSC::LLInt::doWasmCallIndirect):
514         (JSC::LLInt::slow_path_wasm_throw_exception):
515         (JSC::LLInt::slow_path_wasm_popcount):
516         (JSC::LLInt::slow_path_wasm_popcountll):
517         * wasm/WasmSlowPaths.h: Added.
518         * wasm/WasmTable.cpp:
519         (JSC::Wasm::FuncRefTable::function const):
520         (JSC::Wasm::FuncRefTable::instance const):
521         * wasm/WasmTable.h:
522         * wasm/WasmTierUpCount.h:
523         * wasm/WasmValidate.cpp:
524         (JSC::Wasm::Validate::isControlTypeIf):
525         * wasm/js/JSToWasm.cpp:
526         (JSC::Wasm::createJSToWasmWrapper):
527         * wasm/js/JSToWasm.h:
528         * wasm/js/WebAssemblyFunction.cpp:
529         (JSC::WebAssemblyFunction::calleeSaves const):
530
531 2019-10-31  Yusuke Suzuki  <ysuzuki@apple.com>
532
533         [JSC] Make String#localeCompare faster by inlining JSGlobalObject::defaultCollator
534         https://bugs.webkit.org/show_bug.cgi?id=203696
535
536         Reviewed by Mark Lam.
537
538         We found that JSGlobalObject::defaultCollator is not inlined and it takes some time in JetStream2/cdjs.
539         We use LazyProperty mechanism here and make JSGlobalObject::defaultCollator function inlinable simple one.
540         This patch improves JetStream2/cdjs by 2%.
541
542         * runtime/IntlCollator.cpp:
543         (JSC::IntlCollator::initializeCollator):
544         * runtime/IntlObject.cpp:
545         (JSC::intlBooleanOption):
546         (JSC::intlStringOption):
547         (JSC::intlNumberOption):
548         * runtime/JSGlobalObject.cpp:
549         (JSC::JSGlobalObject::init):
550         (JSC::JSGlobalObject::visitChildren):
551         (JSC::JSGlobalObject::defaultCollator): Deleted.
552         * runtime/JSGlobalObject.h:
553         (JSC::JSGlobalObject::defaultCollator const):
554         * runtime/StringPrototype.cpp:
555         (JSC::stringProtoFuncLocaleCompare):
556
557 2019-10-31  Saam Barati  <sbarati@apple.com>
558
559         Don't use memmove/memcpy/memset for memory that can be scanned concurrently
560         https://bugs.webkit.org/show_bug.cgi?id=203228
561         <rdar://problem/56401852>
562
563         Reviewed by Robin Morisset.
564
565         We had code inside various places of the runtime which would call into system
566         memcpy/memmove/memset when updating a live butterfly. This means that the
567         concurrent collector could be scanning such butterflies while a memcpy/memmove/memset
568         was running. Those functions don't guarantee anything about the minimum
569         alignment of the stores they do. And implementations for them frequently have
570         byte copy loops for low byte copy counts. This lead to us seeing torn JSValues
571         inside the concurrent collector during Array.prototype.splice. This patch
572         introduces new functions for doing memcpy/memmove/memset for data structures
573         which may be concurrently scanned. The loops are written using inline assembly
574         for gcc compatible compilers on 64 bit platforms. The inline assembly
575         ensures we never write to memory using instructions that store fewer
576         than 8 bytes. On other platforms, we just use a volatile pointer to
577         ensure the compiler doesn't turn the loop into a function call or a
578         series of stores which may be smaller than 8 bytes.
579
580         * CMakeLists.txt:
581         * JavaScriptCore.xcodeproj/project.pbxproj:
582         * heap/GCMemoryOperations.h: Added.
583         (JSC::gcSafeMemcpy):
584         (JSC::gcSafeMemmove):
585         (JSC::gcSafeZeroMemory):
586         * heap/Heap.h:
587         * runtime/ArrayConventions.cpp:
588         (JSC::clearArrayMemset):
589         * runtime/ArrayPrototype.cpp:
590         (JSC::copyElements):
591         * runtime/ButterflyInlines.h:
592         (JSC::Butterfly::tryCreate):
593         (JSC::Butterfly::createOrGrowPropertyStorage):
594         (JSC::Butterfly::growArrayRight):
595         (JSC::Butterfly::reallocArrayRightIfPossible):
596         (JSC::Butterfly::resizeArray):
597         (JSC::Butterfly::unshift):
598         (JSC::Butterfly::shift):
599         * runtime/JSArray.cpp:
600         (JSC::JSArray::unshiftCountSlowCase):
601         (JSC::JSArray::appendMemcpy):
602         (JSC::JSArray::fastSlice):
603         (JSC::JSArray::shiftCountWithArrayStorage):
604         (JSC::JSArray::shiftCountWithAnyIndexingType):
605         (JSC::JSArray::unshiftCountWithArrayStorage):
606         * runtime/JSObject.cpp:
607         (JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
608         (JSC::JSObject::convertFromCopyOnWrite):
609         (JSC::JSObject::shiftButterflyAfterFlattening):
610         * runtime/JSObject.h:
611         * runtime/RegExpMatchesArray.h:
612         (JSC::createRegExpMatchesArray):
613         * runtime/Structure.cpp:
614         (JSC::Structure::flattenDictionaryStructure):
615
616 2019-10-31  Devin Rousso  <drousso@apple.com>
617
618         Web Inspector: Debugger: make sure the blackbox config is removed before iterating all existing scripts
619         https://bugs.webkit.org/show_bug.cgi?id=203666
620
621         Reviewed by Matt Baker.
622
623         * inspector/agents/InspectorDebuggerAgent.h:
624         * inspector/agents/InspectorDebuggerAgent.cpp:
625         (Inspector::InspectorDebuggerAgent::setShouldBlackboxURL):
626
627 2019-10-31  Alex Christensen  <achristensen@webkit.org>
628
629         CMake build should make WebKit framework able to be used by Safari
630         https://bugs.webkit.org/show_bug.cgi?id=203685
631
632         Rubber-stamped by Tim Horton.
633
634         * PlatformMac.cmake:
635
636 2019-10-31  Yusuke Suzuki  <ysuzuki@apple.com>
637
638         [JSC] DateMath should have TimeClipped version
639         https://bugs.webkit.org/show_bug.cgi?id=203550
640
641         Reviewed by Saam Barati.
642
643         Removing `using namespace WTF;` in Date related files in JSC.
644
645         * runtime/DateConstructor.cpp:
646         * runtime/DateConversion.cpp:
647         (JSC::formatDateTime):
648         * runtime/DateInstance.cpp:
649         * runtime/DatePrototype.cpp:
650         * runtime/JSDateMath.cpp:
651         (JSC::localTimeOffset):
652         (JSC::timeToMS):
653         (JSC::gregorianDateTimeToMS):
654         (JSC::msToGregorianDateTime):
655         (JSC::parseDate):
656         (JSC::msToSeconds): Deleted.
657         (JSC::msToWeekDay): Deleted.
658
659 2019-10-30  Peng Liu  <peng.liu6@apple.com>
660
661         [Picture-in-Picture Web API] Enable the support for iOS
662         https://bugs.webkit.org/show_bug.cgi?id=202618
663
664         Reviewed by Jer Noble.
665
666         Enable the Picture-in-Picture API support for iOS (iPad only).
667
668         * Configurations/FeatureDefines.xcconfig:
669
670 2019-10-30  Yusuke Suzuki  <ysuzuki@apple.com>
671
672         [JSC] Date functions should have intrinsic
673         https://bugs.webkit.org/show_bug.cgi?id=202187
674
675         Reviewed by Keith Miller.
676
677         This patch adds intrinsic to Date object getter functions to make it inlined in DFG and FTL.
678         We add two DFG nodes, DateGetInt32OrNaN and DateGetTime. DateGetTime is used when we know
679         that the result is always machine double. On the other hand, DateGetInt32OrNaN is used when the result is Int32 or NaN.
680
681         Run SunSpider 100 times and get the solid improvement in Date related benchmarks.
682
683                                           ToT                     Patched
684
685             date-format-tofte        5.3511+-0.0260     ^      5.2747+-0.0273        ^ definitely 1.0145x faster
686             date-format-xparb        4.9196+-0.0265     ^      4.7067+-0.0200        ^ definitely 1.0452x faster
687
688         * bytecode/SpeculatedType.cpp:
689         (JSC::dumpSpeculation):
690         (JSC::speculationFromClassInfo):
691         (JSC::speculationFromJSType):
692         (JSC::speculationFromString):
693         * bytecode/SpeculatedType.h:
694         * dfg/DFGAbstractHeap.h:
695         * dfg/DFGAbstractInterpreterInlines.h:
696         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
697         * dfg/DFGByteCodeParser.cpp:
698         (JSC::DFG::ByteCodeParser::handleIntrinsicCall):
699         * dfg/DFGClobberize.h:
700         (JSC::DFG::clobberize):
701         * dfg/DFGDoesGC.cpp:
702         (JSC::DFG::doesGC):
703         * dfg/DFGFixupPhase.cpp:
704         (JSC::DFG::FixupPhase::fixupNode):
705         * dfg/DFGGraph.cpp:
706         (JSC::DFG::Graph::dump):
707         * dfg/DFGHeapLocation.cpp:
708         (WTF::printInternal):
709         * dfg/DFGHeapLocation.h:
710         * dfg/DFGNode.h:
711         (JSC::DFG::Node::hasIntrinsic):
712         (JSC::DFG::Node::intrinsic):
713         (JSC::DFG::Node::hasHeapPrediction):
714         * dfg/DFGNodeType.h:
715         * dfg/DFGOperations.cpp:
716         * dfg/DFGOperations.h:
717         * dfg/DFGPredictionPropagationPhase.cpp:
718         * dfg/DFGSafeToExecute.h:
719         (JSC::DFG::SafeToExecuteEdge::operator()):
720         (JSC::DFG::safeToExecute):
721         * dfg/DFGSpeculativeJIT.cpp:
722         (JSC::DFG::SpeculativeJIT::speculateDateObject):
723         (JSC::DFG::SpeculativeJIT::speculate):
724         * dfg/DFGSpeculativeJIT.h:
725         * dfg/DFGSpeculativeJIT32_64.cpp:
726         (JSC::DFG::SpeculativeJIT::compile):
727         * dfg/DFGSpeculativeJIT64.cpp:
728         (JSC::DFG::SpeculativeJIT::compile):
729         (JSC::DFG::SpeculativeJIT::compileDateGet):
730         * dfg/DFGUseKind.cpp:
731         (WTF::printInternal):
732         * dfg/DFGUseKind.h:
733         (JSC::DFG::typeFilterFor):
734         (JSC::DFG::isCell):
735         * ftl/FTLAbstractHeapRepository.cpp:
736         * ftl/FTLAbstractHeapRepository.h:
737         * ftl/FTLCapabilities.cpp:
738         (JSC::FTL::canCompile):
739         * ftl/FTLLowerDFGToB3.cpp:
740         (JSC::FTL::DFG::LowerDFGToB3::compileNode):
741         (JSC::FTL::DFG::LowerDFGToB3::compileDateGet):
742         (JSC::FTL::DFG::LowerDFGToB3::lowDateObject):
743         (JSC::FTL::DFG::LowerDFGToB3::speculate):
744         (JSC::FTL::DFG::LowerDFGToB3::speculateDateObject):
745         * runtime/DateConversion.cpp:
746         (JSC::formatDateTime):
747         * runtime/DateInstance.cpp:
748         (JSC::DateInstance::calculateGregorianDateTime const):
749         (JSC::DateInstance::calculateGregorianDateTimeUTC const):
750         * runtime/DateInstance.h:
751         * runtime/DateInstanceCache.h:
752         (JSC::DateInstanceData::offsetOfGregorianDateTimeCachedForMS):
753         (JSC::DateInstanceData::offsetOfCachedGregorianDateTime):
754         (JSC::DateInstanceData::offsetOfGregorianDateTimeUTCCachedForMS):
755         (JSC::DateInstanceData::offsetOfCachedGregorianDateTimeUTC):
756         (JSC::DateInstanceData::DateInstanceData): Deleted.
757         * runtime/DatePrototype.cpp:
758         (JSC::formatLocaleDate):
759         (JSC::formateDateInstance):
760         (JSC::dateProtoFuncToISOString):
761         (JSC::dateProtoFuncGetFullYear):
762         (JSC::dateProtoFuncGetUTCFullYear):
763         (JSC::dateProtoFuncGetMonth):
764         (JSC::dateProtoFuncGetUTCMonth):
765         (JSC::dateProtoFuncGetDate):
766         (JSC::dateProtoFuncGetUTCDate):
767         (JSC::dateProtoFuncGetDay):
768         (JSC::dateProtoFuncGetUTCDay):
769         (JSC::dateProtoFuncGetHours):
770         (JSC::dateProtoFuncGetUTCHours):
771         (JSC::dateProtoFuncGetMinutes):
772         (JSC::dateProtoFuncGetUTCMinutes):
773         (JSC::dateProtoFuncGetSeconds):
774         (JSC::dateProtoFuncGetUTCSeconds):
775         (JSC::dateProtoFuncGetMilliSeconds):
776         (JSC::dateProtoFuncGetUTCMilliseconds):
777         (JSC::dateProtoFuncGetTimezoneOffset):
778         (JSC::setNewValueFromTimeArgs):
779         (JSC::setNewValueFromDateArgs):
780         (JSC::dateProtoFuncSetYear):
781         (JSC::dateProtoFuncGetYear):
782         * runtime/Intrinsic.cpp:
783         (JSC::intrinsicName):
784         * runtime/Intrinsic.h:
785         * runtime/JSDateMath.cpp:
786         (JSC::msToGregorianDateTime):
787         * runtime/JSType.cpp:
788         (WTF::printInternal):
789         * runtime/JSType.h:
790
791 2019-10-30  Ross Kirsling  <ross.kirsling@sony.com>
792
793         Intl.DateTimeFormat returns resolvedOptions in the wrong order
794         https://bugs.webkit.org/show_bug.cgi?id=203297
795
796         Reviewed by Yusuke Suzuki.
797
798         See table here:
799         https://tc39.es/ecma402/#table-datetimeformat-resolvedoptions-properties
800
801         * runtime/IntlDateTimeFormat.cpp:
802         (JSC::IntlDateTimeFormat::resolvedOptions):
803
804 2019-10-30  Tadeu Zagallo  <tzagallo@apple.com>
805
806         tryCachePutToScopeGlobal should hold the lock to update metadata.m_getPutInfo
807         https://bugs.webkit.org/show_bug.cgi?id=203628
808         <rdar://problem/56705353>
809
810         Reviewed by Yusuke Suzuki.
811
812         We hold the lock to update m_watchpointSet and m_operand, but at that point we have already
813         updated m_getPutInfo. This can lead to inconsistent state observable from the compiler thread
814         where the getPutInfo does not match the watchpointSet.
815
816         * runtime/CommonSlowPaths.h:
817         (JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
818
819 2019-10-07  Jer Noble  <jer.noble@apple.com>
820
821         Implement the Remote Playback API.
822         https://bugs.webkit.org/show_bug.cgi?id=162971
823
824         Reviewed by Youenn Fablet.
825
826         Add RemotePlayback as a common identifier, needed for bindings due to "EnabledAtRuntime=RemotePlayback".
827
828         * runtime/CommonIdentifiers.h:
829
830 2019-10-29  Yusuke Suzuki  <ysuzuki@apple.com>
831
832         [JSC] Add fast path for String#localeCompare
833         https://bugs.webkit.org/show_bug.cgi?id=202676
834
835         Reviewed by Mark Lam.
836
837         When String#localeCompare is invoked, we are setting up UCharIterator to iterate code points.
838         But this is too slow since its implementation is invoking function pointer for each code point
839         to get next code point. Strings have many code points typically. Invoking function pointer so many times
840         takes too much time just for locale-aware comparison.
841
842         This patch revises the implementation by adding 2 fast path and 1 slow path. The slow path requires extra memory,
843         but it is soon released (not GC-managed).
844
845         1. If both strings are ASCII (not Latin1), we use ucol_strcollUTF8.
846         2. If both strings are 16-bit, we use ucol_strcoll.
847         3. Otherwise, we convert strings to 16-bit strings, and then we use ucol_strcoll.
848
849         JetStream2/cdjs is improved from 56 to 85 on iMac Pro (50%).
850
851         * runtime/IntlCollator.cpp:
852         (JSC::IntlCollator::compareStrings):
853         * tools/JSDollarVM.cpp:
854         (JSC::functionMake16BitStringIfPossible):
855         (JSC::JSDollarVM::finishCreation):
856
857 2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>
858
859         [JSC] Remove JSPromiseDeferred
860         https://bugs.webkit.org/show_bug.cgi?id=203400
861
862         Reviewed by Keith Miller.
863
864         This patch optimizes the existing Promise usage in C++. We remove JSPromiseDeferred and JSInternalPromiseDeferred, use JSPromise and JSInternalPromise directly.
865         JSC now offers first `resolve` and `reject` operations to `JSPromise` without separating `resolve` and `reject` function from `JSPromise`. Then, we do not need
866         to have a tuple of these functions and promise, and we can just use `JSPromise::resolve` and `JSPromise::reject`. This removes unnecessary function allocations
867         and cell allocation for JSPromiseDeferred and makes API simple.
868
869         * API/JSAPIGlobalObject.mm:
870         (JSC::JSAPIGlobalObject::moduleLoaderImportModule):
871         (JSC::JSAPIGlobalObject::moduleLoaderFetch):
872         (JSC::JSAPIGlobalObject::loadAndEvaluateJSScriptModule):
873         * API/JSObjectRef.cpp:
874         (JSObjectMakeDeferredPromise):
875         * CMakeLists.txt:
876         * JavaScriptCore.xcodeproj/project.pbxproj:
877         * Sources.txt:
878         * jsc.cpp:
879         (GlobalObject::moduleLoaderImportModule):
880         (GlobalObject::moduleLoaderFetch):
881         (runJSC):
882         * runtime/Completion.cpp:
883         (JSC::rejectPromise):
884         * runtime/JSGlobalObject.cpp:
885         (JSC::JSGlobalObject::init):
886         (JSC::JSGlobalObject::visitChildren):
887         * runtime/JSGlobalObject.h:
888         (JSC::JSGlobalObject::newPromiseCapabilityFunction const):
889         (JSC::JSGlobalObject::resolvePromiseFunction const):
890         (JSC::JSGlobalObject::rejectPromiseFunction const):
891         (JSC::JSGlobalObject::numberProtoToStringFunction const):
892         * runtime/JSGlobalObjectFunctions.cpp:
893         (JSC::globalFuncImportModule):
894         * runtime/JSInternalPromise.h:
895         * runtime/JSInternalPromiseDeferred.cpp: Removed.
896         * runtime/JSInternalPromiseDeferred.h: Removed.
897         * runtime/JSModuleLoader.cpp:
898         (JSC::JSModuleLoader::importModule):
899         (JSC::JSModuleLoader::resolve):
900         (JSC::JSModuleLoader::fetch):
901         (JSC::moduleLoaderParseModule):
902         * runtime/JSPromise.cpp:
903         (JSC::JSPromise::flags const):
904         (JSC::JSPromise::isHandled const):
905         (JSC::JSPromise::createDeferredData):
906         (JSC::JSPromise::resolvedPromise):
907         (JSC::callFunction):
908         (JSC::JSPromise::resolve):
909         (JSC::JSPromise::reject):
910         * runtime/JSPromise.h:
911         * runtime/JSPromiseDeferred.cpp: Removed.
912         * runtime/JSPromiseDeferred.h: Removed.
913         * runtime/PromiseTimer.cpp: Renamed from Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp.
914         (JSC::PromiseTimer::PromiseTimer):
915         (JSC::PromiseTimer::doWork):
916         (JSC::PromiseTimer::runRunLoop):
917         (JSC::PromiseTimer::addPendingPromise):
918         (JSC::PromiseTimer::hasPendingPromise):
919         (JSC::PromiseTimer::hasDependancyInPendingPromise):
920         (JSC::PromiseTimer::cancelPendingPromise):
921         (JSC::PromiseTimer::scheduleWorkSoon):
922         * runtime/PromiseTimer.h: Renamed from Source/JavaScriptCore/runtime/PromiseDeferredTimer.h.
923         (JSC::PromiseTimer::create):
924         * runtime/StringRecursionChecker.h:
925         * runtime/VM.cpp:
926         (JSC::VM::VM):
927         (JSC::VM::~VM):
928         * runtime/VM.h:
929         * wasm/js/JSWebAssembly.cpp:
930         (JSC::reject):
931         (JSC::webAssemblyModuleValidateAsyncInternal):
932         (JSC::webAssemblyCompileFunc):
933         (JSC::resolve):
934         (JSC::JSWebAssembly::webAssemblyModuleValidateAsync):
935         (JSC::instantiate):
936         (JSC::compileAndInstantiate):
937         (JSC::JSWebAssembly::instantiate):
938         (JSC::webAssemblyModuleInstantinateAsyncInternal):
939         (JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync):
940         (JSC::webAssemblyInstantiateFunc):
941         (JSC::webAssemblyCompileStreamingInternal):
942         (JSC::webAssemblyInstantiateStreamingInternal):
943         * wasm/js/JSWebAssembly.h:
944         * wasm/js/JSWebAssemblyCodeBlock.h:
945
946 2019-10-28  Adrian Perez de Castro  <aperez@igalia.com>
947
948         [GTK][WPE] Fix various non-unified build issues introduced since r251436
949         https://bugs.webkit.org/show_bug.cgi?id=203492
950
951         Reviewed by Alex Christensen and Mark Lam.
952
953         * bytecode/BytecodeIndex.cpp: Add missing inclusion of wtf/PrintStream.h
954         * bytecode/ICStatusUtils.h: Add missing inclusion if BytecodeIndex.h
955         * bytecode/InstructionStream.h: Ditto.
956         * debugger/DebuggerLocation.cpp: Add missing inclusion of JSCellInlines.h
957         * dfg/DFGLazyJSValue.h: Add missing inclusion of GPRInfo.h
958         * ftl/FTLOSREntry.h: Add missing inclusion of BytecodeIndex.h
959         * heap/CompleteSubspaceInlines.h: Add missing inclusions of CompleteSubspace.h and VM.h
960         * inspector/JavaScriptCallFrame.h:
961         (Inspector::JavaScriptCallFrame::thisValue const): Prepend namespace to the JSC::VM type.
962         * jit/JITDisassembler.h: Add missing inclusion of BytecodeIndex.h
963         * jit/JITWorklist.h: Ditto.
964         * runtime/JSImmutableButterfly.cpp: Add missing inclusion of ButterflyInlines.h
965         * runtime/ObjectInitializationScope.h: Add missing inclusion of VM.h
966         * runtime/StringRecursionChecker.h: Add missing inclusion of GetVM.h
967         * runtime/VMTraps.cpp: Add missing inclusion of CallFrameInlines.h
968         * tools/Integrity.cpp: Add missing inclusion of Integrity.h, HeapCellInlines.h, and
969         JSCellInlines.h
970         * wasm/WasmOperations.cpp: Add missing inclusion of JSCJSValueInlines.h and
971         JSGlobalObjectInlines.h
972         * wasm/WasmOperations.h: Add missing inclusion of IndexingType.h, JSCJSValue.h, and
973         WasmExceptionType.h; add forward declarations for JSArrray and Wasm::Signature.
974         * wasm/js/JSWebAssembly.cpp: Add missing inclusion of WasmOperations.h
975         * wasm/js/JSWebAssemblyHelpers.h: Add missing inclusion of Error.h and JSArrayBufferView.h
976
977 2019-10-28  Ross Kirsling  <ross.kirsling@sony.com>
978
979         [JSC] Lexer flags should be an OptionSet
980         https://bugs.webkit.org/show_bug.cgi?id=203032
981
982         Reviewed by Yusuke Suzuki.
983
984         LexerFlags has an annoyingly misspelled value LexexFlagsDontBuildKeywords;
985         let's use this as an opportunity to modernize this enum.
986
987         * parser/ASTBuilder.h:
988         * parser/Lexer.cpp:
989         (JSC::Lexer<LChar>::parseIdentifier):
990         (JSC::Lexer<UChar>::parseIdentifier):
991         (JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
992         (JSC::Lexer<T>::lexWithoutClearingLineTerminator):
993         * parser/Lexer.h:
994         (JSC::Lexer<T>::lexExpectIdentifier):
995         (JSC::Lexer<T>::lex):
996         * parser/Parser.cpp:
997         (JSC::Parser<LexerType>::parseProperty):
998         (JSC::Parser<LexerType>::parseMemberExpression):
999         * parser/Parser.h:
1000         (JSC::Parser::next):
1001         (JSC::Parser::nextWithoutClearingLineTerminator):
1002         (JSC::Parser::nextExpectIdentifier):
1003         (JSC::Parser::consume):
1004         * parser/SyntaxChecker.h:
1005
1006 2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>
1007
1008         [JSC] Optimize Promise runtime functions
1009         https://bugs.webkit.org/show_bug.cgi?id=203454
1010
1011         Reviewed by Keith Miller.
1012
1013         This patch optimizes Promise runtime functions a bit.
1014
1015         1. Add fast paths to Promise.resolve / Promise.reject.
1016         2. Remove state check in async-functions. Unlike generators, async-function's next function is not exposed to users.
1017            It is called by runtime so we can control state perfectly.
1018         3. Add "enqueueJob" name to make sampling profiler work for this function.
1019         4. Make Promise/InternalPromise constructor inlinable size
1020
1021                                               ToT                     Patched
1022
1023             promise-creation-many       25.5794+-0.3681     ^     22.5410+-0.3229        ^ definitely 1.1348x faster
1024             promise-resolve             32.3793+-0.4252     ^      9.4219+-0.1114        ^ definitely 3.4366x faster
1025             promise-reject             108.5968+-0.7741     ^     36.9383+-0.3770        ^ definitely 2.9400x faster
1026
1027         * builtins/AsyncFunctionPrototype.js:
1028         (globalPrivate.asyncFunctionResume):
1029         * builtins/PromiseConstructor.js:
1030         (reject):
1031         (resolve):
1032         (nakedConstructor.Promise.reject):
1033         (nakedConstructor.Promise):
1034         (nakedConstructor.InternalPromise.reject):
1035         (nakedConstructor.InternalPromise):
1036         (nakedConstructor.Promise.resolve): Deleted.
1037         (nakedConstructor.InternalPromise.resolve): Deleted.
1038         * builtins/PromiseOperations.js:
1039         (globalPrivate.newPromiseCapability.resolve):
1040         (globalPrivate.newPromiseCapability.reject):
1041         (globalPrivate.newPromiseCapability):
1042         (globalPrivate.promiseResolveSlow):
1043         (globalPrivate.promiseRejectSlow):
1044         * runtime/JSGlobalObject.cpp:
1045         (JSC::JSGlobalObject::init):
1046
1047 2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>
1048
1049         [JSC] Use FTLOutput::callWithoutSideEffects if operation does not have side effects
1050         https://bugs.webkit.org/show_bug.cgi?id=203485
1051
1052         Reviewed by Mark Lam.
1053
1054         This makes Call's Effect none, and encourages optimizations around it.
1055
1056         * ftl/FTLLowerDFGToB3.cpp:
1057         (JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
1058         (JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
1059         (JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52):
1060
1061 2019-10-28  Tuomas Karkkainen  <tuomas.webkit@apple.com>
1062
1063         dumpSpeculation in SpeculatedType.cpp prints to the wrong stream and has wrong capitalization for NaN
1064         https://bugs.webkit.org/show_bug.cgi?id=203486
1065
1066         Reviewed by Antti Koivisto.
1067
1068         * bytecode/SpeculatedType.cpp:
1069         (JSC::dumpSpeculation):
1070
1071 2019-10-28  Fujii Hironori  <Hironori.Fujii@sony.com>
1072
1073         [Windows][Clang] error LNK2001: unresolved external symbol "void * __cdecl JSC::allocateCell<class JSC::JSGenericTypedArrayView<struct JSC::Float32Adaptor> >(class JSC::Heap &,unsigned __int64)"
1074         https://bugs.webkit.org/show_bug.cgi?id=203483
1075
1076         Unreviewed build fix for clang-cl builds.
1077
1078         * runtime/JSGenericTypedArrayViewInlines.h: Added #include "JSCellInlines.h".
1079
1080 2019-10-26  Chris Lord  <clord@igalia.com>
1081
1082         Put OffscreenCanvas behind a build flag
1083         https://bugs.webkit.org/show_bug.cgi?id=203146
1084
1085         Reviewed by Ryosuke Niwa.
1086
1087         * Configurations/FeatureDefines.xcconfig:
1088
1089 2019-10-25  Yury Semikhatsky  <yurys@chromium.org>
1090
1091         Web Inspector: support emulateUserGesture parameter in Runtime.callFunctionOn
1092         https://bugs.webkit.org/show_bug.cgi?id=200262
1093
1094         Reviewed by Devin Rousso.
1095
1096         * inspector/agents/InspectorRuntimeAgent.cpp:
1097         (Inspector::InspectorRuntimeAgent::callFunctionOn):
1098         * inspector/agents/InspectorRuntimeAgent.h:
1099         * inspector/protocol/Runtime.json:
1100
1101 2019-10-24  Mark Lam  <mark.lam@apple.com>
1102
1103         Move JSC::Register inline methods into RegisterInlines.h.
1104         https://bugs.webkit.org/show_bug.cgi?id=203391
1105
1106         Reviewed by Yusuke Suzuki and Keith Miller.
1107
1108         We're doing this because:
1109         1. RegisterInlines.h is the canonical place to put inline Register methods.
1110         2. It helps reduce build time.
1111            e.g. build-jsc went from 208.02 to 196.81 seconds (about a 5% reduction).
1112         3. This enables experimental work to box JSCells in JSValue.
1113
1114         This patch also handles the fallout of this change, which necessitates more
1115         inline methods being moved from <file>.h to their respective <file>Inlines.h.
1116
1117         JSArray.h used to include ButterflyInlines.h and JSCellInlines.h.  This is a
1118         violation of inclusion ordering (.h should not #include Inlines.h).  This
1119         violation has been removed.
1120
1121         * API/JSAPIGlobalObject.mm:
1122         * CMakeLists.txt:
1123         * JavaScriptCore.xcodeproj/project.pbxproj:
1124         * bytecode/CodeBlock.h:
1125         (JSC::CallFrame::r): Deleted.
1126         (JSC::CallFrame::uncheckedR): Deleted.
1127         * bytecode/MetadataTable.cpp:
1128         * ftl/FTLLowerDFGToB3.cpp:
1129         * interpreter/CallFrame.h:
1130         (JSC::CallFrame::guaranteedJSValueCallee const): Deleted.
1131         (JSC::CallFrame::jsCallee const): Deleted.
1132         (JSC::CallFrame::codeBlock const): Deleted.
1133         (JSC::CallFrame::unsafeCodeBlock const): Deleted.
1134         (JSC::CallFrame::scope const): Deleted.
1135         (JSC::CallFrame::topOfFrame): Deleted.
1136         (JSC::CallFrame::setScope): Deleted.
1137         (JSC::CallFrame::setCallee): Deleted.
1138         (JSC::CallFrame::setCodeBlock): Deleted.
1139         * interpreter/CallFrameInlines.h:
1140         (JSC::CallFrame::r):
1141         (JSC::CallFrame::uncheckedR):
1142         (JSC::CallFrame::guaranteedJSValueCallee const):
1143         (JSC::CallFrame::jsCallee const):
1144         (JSC::CallFrame::codeBlock const):
1145         (JSC::CallFrame::unsafeCodeBlock const):
1146         (JSC::CallFrame::lexicalGlobalObject const):
1147         (JSC::CallFrame::setCallee):
1148         (JSC::CallFrame::setCodeBlock):
1149         (JSC::CallFrame::setScope):
1150         (JSC::CallFrame::scope const):
1151         (JSC::CallFrame::topOfFrame):
1152         * interpreter/Interpreter.cpp:
1153         * interpreter/ProtoCallFrame.h:
1154         (JSC::ProtoCallFrame::init): Deleted.
1155         * interpreter/ProtoCallFrameInlines.h: Added.
1156         (JSC::ProtoCallFrame::init):
1157         (JSC::ProtoCallFrame::callee const):
1158         (JSC::ProtoCallFrame::setCallee):
1159         (JSC::ProtoCallFrame::codeBlock const):
1160         (JSC::ProtoCallFrame::setCodeBlock):
1161         * interpreter/Register.h:
1162         (JSC::Register::callFrame const): Deleted.
1163         (JSC::Register::codeBlock const): Deleted.
1164         (JSC::Register::asanUnsafeCodeBlock const): Deleted.
1165         * interpreter/RegisterInlines.h: Added.
1166         (JSC::Register::callFrame const):
1167         (JSC::Register::codeBlock const):
1168         (JSC::Register::asanUnsafeCodeBlock const):
1169         (JSC::Register::object const):
1170         (JSC::Register::operator=):
1171         (JSC::Register::scope const):
1172         * interpreter/StackVisitor.cpp:
1173         * jit/AssemblyHelpers.h:
1174         * llint/LLIntSlowPaths.cpp:
1175         * runtime/ArrayStorage.h:
1176         (JSC::ArrayStorage::optimalVectorLength): Deleted.
1177         * runtime/ArrayStorageInlines.h: Added.
1178         (JSC::ArrayStorage::availableVectorLength):
1179         (JSC::ArrayStorage::optimalVectorLength):
1180         (JSC::ArrayStorage::totalSize const):
1181         * runtime/ButterflyInlines.h:
1182         * runtime/ClassInfo.h:
1183         * runtime/GetVM.h: Added.
1184         * runtime/JSArray.h:
1185         * runtime/JSArrayInlines.h:
1186         * runtime/JSCellInlines.h:
1187         * runtime/JSGlobalObject.h:
1188         * runtime/JSObject.h:
1189         (JSC::Register::object const): Deleted.
1190         (JSC::Register::operator=): Deleted.
1191         * runtime/JSObjectInlines.h:
1192         * runtime/JSScope.h:
1193         (JSC::Register::operator=): Deleted.
1194         (JSC::Register::scope const): Deleted.
1195         (JSC::CallFrame::lexicalGlobalObject const): Deleted.
1196         * runtime/JSString.h:
1197         * runtime/PropertyNameArray.h:
1198         * runtime/PropertySlot.h:
1199         * runtime/VMInlines.h:
1200         * tools/HeapVerifier.cpp:
1201         * wasm/js/WebAssemblyFunction.cpp:
1202
1203 2019-10-24  Zan Dobersek  <zdobersek@igalia.com>
1204
1205         REGRESSION(r251468): Build, test failures in 32-bit JSC after BytecodeIndex refactoring
1206         https://bugs.webkit.org/show_bug.cgi?id=203290
1207
1208         Reviewed by Keith Miller.
1209
1210         * bytecode/BytecodeIndex.h:
1211         (JSC::BytecodeIndex::BytecodeIndex):
1212         Add a BytecodeIndex(WTF::HashTableDeletedValueType) constructor.
1213         * bytecode/CodeOrigin.h:
1214         (JSC::CodeOrigin::CodeOrigin):
1215         Have the CodeOrigin(WTF::HashTableDeletedValueType) constructor
1216         initialize the BytecodeIndex object accordingly, as a deleted value.
1217         (JSC::CodeOrigin::isHashTableDeletedValue const):
1218         Test BytecodeIndex object's deleted-value condition through the
1219         corresponding BytecodeIndex::isHashTableDeletedValue() method.
1220         * profiler/ProfilerOrigin.h:
1221         (JSC::Profiler::Origin::Origin):
1222         Simplify the m_bytecodeIndex member initialization for a deleted value.
1223         (JSC::Profiler::Origin::operator! const):
1224         Fix the negation operator, returning true if the m_bytecodeIndex is
1225         either empty or deleted.
1226
1227 2019-10-24  Sihui Liu  <sihui_liu@apple.com>
1228
1229         [ Mac WK1 ] REGRESSION (r251261): Layout Test inspector/console/webcore-logging.html is consistently Failing
1230         https://bugs.webkit.org/show_bug.cgi?id=203173
1231         <rdar://problem/56424721>
1232
1233         Hold a strong reference to JSGlobalOjbect in ConsoleMessage so that object is not garbage collected before
1234         WebConsoleAgent::frameWindowDiscarded.
1235
1236         Covered by existing test: inspector/console/webcore-logging.html.
1237
1238         Reviewed by Geoffrey Garen.
1239
1240         * inspector/ConsoleMessage.cpp:
1241         (Inspector::ConsoleMessage::ConsoleMessage):
1242         (Inspector::ConsoleMessage::clear):
1243         * inspector/ConsoleMessage.h:
1244
1245 2019-10-24  Yusuke Suzuki  <ysuzuki@apple.com>
1246
1247         [JSC] Properly organize wasm operations
1248         https://bugs.webkit.org/show_bug.cgi?id=203360
1249
1250         Reviewed by Keith Miller.
1251
1252         This patch cleans up operation functions called from Wasm.
1253
1254         1. Properly name these operations with prefix "operation".
1255         2. Do not use lambda. Define function with JIT_OPERATION.
1256         3. Consolidate them in WasmOperations.cpp.
1257
1258         * wasm/WasmAirIRGenerator.cpp:
1259         (JSC::Wasm::AirIRGenerator::addRefFunc):
1260         (JSC::Wasm::AirIRGenerator::addTableGet):
1261         (JSC::Wasm::AirIRGenerator::addTableSet):
1262         (JSC::Wasm::AirIRGenerator::addTableSize):
1263         (JSC::Wasm::AirIRGenerator::addTableGrow):
1264         (JSC::Wasm::AirIRGenerator::addTableFill):
1265         (JSC::Wasm::AirIRGenerator::addGrowMemory):
1266         (JSC::Wasm::AirIRGenerator::emitWriteBarrierForJSWrapper):
1267         (JSC::Wasm::AirIRGenerator::addOp<OpType::I32Popcnt>):
1268         (JSC::Wasm::AirIRGenerator::addOp<OpType::I64Popcnt>):
1269         * wasm/WasmB3IRGenerator.cpp:
1270         (JSC::Wasm::B3IRGenerator::addTableGet):
1271         (JSC::Wasm::B3IRGenerator::addTableSet):
1272         (JSC::Wasm::B3IRGenerator::addRefFunc):
1273         (JSC::Wasm::B3IRGenerator::addTableSize):
1274         (JSC::Wasm::B3IRGenerator::addTableGrow):
1275         (JSC::Wasm::B3IRGenerator::addTableFill):
1276         (JSC::Wasm::B3IRGenerator::addGrowMemory):
1277         (JSC::Wasm::B3IRGenerator::emitWriteBarrierForJSWrapper):
1278         (JSC::Wasm::B3IRGenerator::addOp<OpType::I32Popcnt>):
1279         (JSC::Wasm::B3IRGenerator::addOp<OpType::I64Popcnt>):
1280         * wasm/WasmInstance.cpp:
1281         (JSC::Wasm::getWasmTableElement): Deleted.
1282         (JSC::Wasm::setWasmTableElement): Deleted.
1283         (JSC::Wasm::doWasmTableGrow): Deleted.
1284         (JSC::Wasm::doWasmTableFill): Deleted.
1285         (JSC::Wasm::doWasmRefFunc): Deleted.
1286         * wasm/WasmInstance.h:
1287         * wasm/WasmOperations.cpp:
1288         (JSC::Wasm::operationWasmUnwind):
1289         (JSC::Wasm::operationConvertToF64):
1290         (JSC::Wasm::operationConvertToI32):
1291         (JSC::Wasm::operationConvertToF32):
1292         (JSC::Wasm::operationIterateResults):
1293         (JSC::Wasm::operationAllocateResultsArray):
1294         (JSC::Wasm::operationWasmWriteBarrierSlowPath):
1295         (JSC::Wasm::operationPopcount32):
1296         (JSC::Wasm::operationPopcount64):
1297         (JSC::Wasm::operationGrowMemory):
1298         (JSC::Wasm::operationGetWasmTableElement):
1299         (JSC::Wasm::setWasmTableElement):
1300         (JSC::Wasm::operationSetWasmTableElement):
1301         (JSC::Wasm::operationWasmTableGrow):
1302         (JSC::Wasm::operationWasmTableFill):
1303         (JSC::Wasm::operationWasmRefFunc):
1304         (JSC::Wasm::operationGetWasmTableSize):
1305         (JSC::Wasm::operationWasmToJSException):
1306         * wasm/WasmOperations.h:
1307         * wasm/js/JSToWasm.cpp:
1308         (JSC::Wasm::marshallJSResult):
1309         (JSC::Wasm::allocateResultsArray): Deleted.
1310         * wasm/js/WasmToJS.cpp:
1311         (JSC::Wasm::wasmToJS):
1312         (JSC::Wasm::operationWasmToJSException): Deleted.
1313         * wasm/js/WasmToJS.h:
1314         * wasm/js/WebAssemblyInstanceConstructor.cpp:
1315
1316 2019-10-24  Yusuke Suzuki  <ysuzuki@apple.com>
1317
1318         [JSC] Remove LLInt's Callee size assumption
1319         https://bugs.webkit.org/show_bug.cgi?id=203282
1320
1321         Reviewed by Mark Lam.
1322
1323         LLInt code still assumes that Callee is always allocated in non-LargeAllocation.
1324         This patch removes this assumption by following three changes.
1325
1326         1. If we can get CodeBlock, we get VM& from CodeBlock.
1327         2. In nativeCallTrampoline and internalFunctionCallTrampoline, we get VM& from JSGlobalObject. It involves one more pointer-chasing but it is OK
1328            since this JSGlobalObject's VM* field will be touched in called native functions anyway. And this code is only used when we are not using JIT.
1329         3. In exception handling code in LLInt, we get VM& from callee by checking LargeAllocation possibility. This is OK since it is only executed when
1330            exception unwinding happens, and which is an expensive operation anyway.
1331
1332         * heap/LargeAllocation.h:
1333         (JSC::LargeAllocation::headerSize):
1334         * heap/WeakSet.h:
1335         (JSC::WeakSet::WeakSet):
1336         (JSC::WeakSet::vm const):
1337         * llint/LowLevelInterpreter.asm:
1338         * llint/LowLevelInterpreter32_64.asm:
1339         * llint/LowLevelInterpreter64.asm:
1340         * runtime/JSGlobalObject.cpp:
1341         (JSC::JSGlobalObject::JSGlobalObject):
1342         (JSC::JSGlobalObject::init):
1343         * runtime/JSGlobalObject.h:
1344         (JSC::JSGlobalObject::vm const):
1345         (JSC::JSGlobalObject::defaultCodeGenerationMode const):
1346         * runtime/VM.h:
1347         (JSC::WeakSet::heap const):
1348
1349 2019-10-24  Zan Dobersek  <zdobersek@igalia.com>
1350
1351         [JSC] Get 32-bit ports back into building order
1352         https://bugs.webkit.org/show_bug.cgi?id=203358
1353
1354         Reviewed by Carlos Garcia Campos.
1355
1356         Get JSC building again on 32-bit architectures after changes in r251468.
1357         Some 32-bit code in LLint and JIT is brought back, and additional casts
1358         around BytecodeIndex construction are added as necessary.
1359
1360         * dfg/DFGOSRExit.cpp:
1361         (JSC::DFG::reifyInlinedCallFrames):
1362         * dfg/DFGOSRExitCompilerCommon.cpp:
1363         (JSC::DFG::reifyInlinedCallFrames):
1364         * interpreter/CallFrame.cpp:
1365         (JSC::CallFrame::setCurrentVPC):
1366         * jit/JITCall32_64.cpp:
1367         (JSC::JIT::compileCallEvalSlowCase):
1368         (JSC::JIT::compileOpCall):
1369         * jit/JITInlines.h:
1370         (JSC::JIT::updateTopCallFrame):
1371         * jit/JITOpcodes32_64.cpp:
1372         (JSC::JIT::emit_op_log_shadow_chicken_tail):
1373         * jit/JITPropertyAccess32_64.cpp:
1374         (JSC::JIT::emit_op_get_by_val):
1375         (JSC::JIT::emitGetByValWithCachedId):
1376         (JSC::JIT::emit_op_put_by_val):
1377         (JSC::JIT::emitPutByValWithCachedId):
1378         (JSC::JIT::emit_op_try_get_by_id):
1379         (JSC::JIT::emit_op_get_by_id_direct):
1380         (JSC::JIT::emit_op_get_by_id):
1381         (JSC::JIT::emit_op_get_by_id_with_this):
1382         (JSC::JIT::emit_op_put_by_id):
1383         (JSC::JIT::emit_op_in_by_id):
1384         * llint/LLIntSlowPaths.cpp:
1385         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
1386
1387 2019-10-24  Paulo Matos  <pmatos@igalia.com>
1388
1389         Disable pichdr generation on MIPS for return location labels
1390         https://bugs.webkit.org/show_bug.cgi?id=203040
1391
1392         Reviewed by Yusuke Suzuki.
1393
1394         Disable generation of pichdr for return location labels generated in
1395         defineOSRExitReturnLabel. Since r250806 (Allow OSR exit to the LLInt),
1396         MIPS was segfaulting since the pichdr after an OSR exit was corruption
1397         the gp register.
1398
1399         * offlineasm/mips.rb:
1400
1401 2019-10-23  Devin Rousso  <drousso@apple.com>
1402
1403         Web Inspector: provide a way to inject "bootstrap" JavaScript into the page as the first script executed
1404         https://bugs.webkit.org/show_bug.cgi?id=195847
1405         <rdar://problem/48950551>
1406
1407         Reviewed by Joseph Pecoraro.
1408
1409         When debugging webpages, it's often useful to be able to swizzle various functions in order
1410         to add extra logs for when they're called (e.g. `Event.prototype.preventDefault`). Sometimes
1411         this can be difficult, such as if the page saves a copy of the function and references that
1412         instead, in which case it would be helpful to have a way to guarantee that the swizzled code
1413         is the first thing evaluated after the context is created.
1414
1415         This change adds support for that concept, which has been named Inspector Bootstrap Script.
1416         Once created, it will be injected as the first user script to every new global object that
1417         is created afterwards. Modifications to the Inspector Bootstrap Script take effect for all
1418         new global objects created _after_ the modification happened.
1419
1420         * inspector/protocol/Page.json:
1421         Add `setBoostrapScript` command.
1422
1423 2019-10-23  Yusuke Suzuki  <ysuzuki@apple.com>
1424
1425         [JSC] Remove wasmAwareLexicalGlobalObject
1426         https://bugs.webkit.org/show_bug.cgi?id=203351
1427
1428         Reviewed by Mark Lam.
1429
1430         CallFrame::lexicalGlobalObject() is no longer called frequently. We can just make the current wasmAwareLexicalGlobalObject as CallFrame::lexicalGlobalObject,
1431         and remove wasmAwareLexicalGlobalObject function.
1432
1433         * debugger/Debugger.cpp:
1434         (JSC::Debugger::hasBreakpoint):
1435         (JSC::Debugger::breakProgram):
1436         (JSC::lexicalGlobalObjectForCallFrame):
1437         * debugger/DebuggerCallFrame.cpp:
1438         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
1439         (JSC::DebuggerCallFrame::scope):
1440         (JSC::DebuggerCallFrame::thisValue const):
1441         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
1442         * debugger/DebuggerCallFrame.h:
1443         * inspector/JSJavaScriptCallFrame.cpp:
1444         (Inspector::JSJavaScriptCallFrame::thisObject const):
1445         * inspector/JavaScriptCallFrame.h:
1446         (Inspector::JavaScriptCallFrame::thisValue const):
1447         * interpreter/CallFrame.cpp:
1448         (JSC::CallFrame::lexicalGlobalObjectFromWasmCallee const):
1449         (JSC::CallFrame::wasmAwareLexicalGlobalObject): Deleted.
1450         * interpreter/CallFrame.h:
1451         * interpreter/Interpreter.cpp:
1452         (JSC::notifyDebuggerOfUnwinding):
1453         (JSC::Interpreter::debug):
1454         * interpreter/StackVisitor.cpp:
1455         (JSC::StackVisitor::Frame::createArguments):
1456         * interpreter/StackVisitor.h:
1457         * llint/LLIntSlowPaths.cpp:
1458         (JSC::LLInt::llint_throw_stack_overflow_error):
1459         * runtime/JSFunction.cpp:
1460         (JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
1461         (JSC::RetrieveArgumentsFunctor::operator() const):
1462         (JSC::retrieveArguments):
1463         * runtime/JSScope.h:
1464         (JSC::CallFrame::lexicalGlobalObject const):
1465         * runtime/RegExpInlines.h:
1466         (JSC::RegExp::matchInline):
1467         * wasm/js/WasmToJS.cpp:
1468         (JSC::Wasm::wasmToJS):
1469
1470 2019-10-23  Keith Miller  <keith_miller@apple.com>
1471
1472         Undo incidental change from BytecodeIndex class patch
1473         https://bugs.webkit.org/show_bug.cgi?id=203339
1474
1475         Reviewed by Mark Lam.
1476
1477         It's not totally clear why we need to claim our bytecode index is
1478         0 when we can't figure what the true index is. I'd rather unbreak
1479         our build for now, however, and fix the underlying issue in
1480         https://bugs.webkit.org/show_bug.cgi?id=203340
1481
1482         * runtime/Error.cpp:
1483         (JSC::getBytecodeIndex):
1484
1485 2019-10-23  Yusuke Suzuki  <ysuzuki@apple.com>
1486
1487         [JSC] Figure out missing prepareCallOperation
1488         https://bugs.webkit.org/show_bug.cgi?id=203285
1489
1490         Reviewed by Mark Lam.
1491
1492         We start using __builtin_frame_address to get CallFrame* in JIT operations. For the platform which is not supporting this API (MSVC),
1493         we put frame-pointer to vm.topCallFrame in the caller side. The problem is that all Apple platform is now using __builtin_frame_address,
1494         and we are not testing vm.topCallFrame version at all.
1495
1496         To find missing prepareCallOperation call, we introduce JITOperationPrologueCallFrameTracer. When USE(BUILTIN_FRAME_ADDRESS) is enabled and
1497         if it is debug build, we anyway put frame-pointer to vm.topCallFrame. And after that, we ensure that vm.topCallFrame is the same to the
1498         CallFrame* gained by __builtin_frame_address. By doing this, we can find places missing this call in debug build of Apple ports.
1499
1500         We also found that FTL's custom getter calling is putting wrong value to vm.topCallFrame. This patch fixes it too.
1501
1502         * dfg/DFGOSRExit.cpp:
1503         (JSC::DFG::OSRExit::emitRestoreArguments):
1504         (JSC::DFG::operationCompileOSRExit):
1505         (JSC::DFG::OSRExit::compileExit):
1506         (JSC::DFG::operationDebugPrintSpeculationFailure):
1507         (JSC::DFG::OSRExit::compileOSRExit): Deleted.
1508         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure): Deleted.
1509         * dfg/DFGOSRExit.h:
1510         * dfg/DFGOSRExitCompilerCommon.cpp:
1511         (JSC::DFG::handleExitCounts):
1512         (JSC::DFG::osrWriteBarrier):
1513         * dfg/DFGOSRExitCompilerCommon.h:
1514         * dfg/DFGOperations.cpp:
1515         * dfg/DFGOperations.h:
1516         * dfg/DFGSpeculativeJIT64.cpp:
1517         (JSC::DFG::SpeculativeJIT::compile):
1518         * dfg/DFGThunks.cpp:
1519         (JSC::DFG::osrExitThunkGenerator):
1520         (JSC::DFG::osrExitGenerationThunkGenerator):
1521         * ftl/FTLLowerDFGToB3.cpp:
1522         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
1523         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
1524         (JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
1525         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
1526         (JSC::FTL::DFG::LowerDFGToB3::callPreflight):
1527         (JSC::FTL::DFG::LowerDFGToB3::callCheck):
1528         * ftl/FTLOSRExitCompiler.cpp:
1529         (JSC::FTL::compileStub):
1530         (JSC::FTL::operationCompileFTLOSRExit):
1531         (JSC::FTL::compileFTLOSRExit): Deleted.
1532         * ftl/FTLOSRExitCompiler.h:
1533         * ftl/FTLOperations.cpp:
1534         (JSC::FTL::operationPopulateObjectInOSR):
1535         (JSC::FTL::operationMaterializeObjectInOSR):
1536         (JSC::FTL::operationCompileFTLLazySlowPath):
1537         (JSC::FTL::compileFTLLazySlowPath): Deleted.
1538         * ftl/FTLOperations.h:
1539         * ftl/FTLSlowPathCall.cpp:
1540         (JSC::FTL::SlowPathCallContext::makeCall):
1541         * ftl/FTLThunks.cpp:
1542         (JSC::FTL::genericGenerationThunkGenerator):
1543         (JSC::FTL::osrExitGenerationThunkGenerator):
1544         (JSC::FTL::lazySlowPathGenerationThunkGenerator):
1545         (JSC::FTL::slowPathCallThunkGenerator):
1546         * ftl/FTLThunks.h:
1547         (JSC::FTL::generateIfNecessary):
1548         (JSC::FTL::Thunks::getSlowPathCallThunk):
1549         * interpreter/FrameTracers.h:
1550         (JSC::SlowPathFrameTracer::SlowPathFrameTracer):
1551         (JSC::JITOperationPrologueCallFrameTracer::JITOperationPrologueCallFrameTracer):
1552         (JSC::JITOperationPrologueCallFrameTracer::~JITOperationPrologueCallFrameTracer):
1553         * jit/AssemblyHelpers.cpp:
1554         (JSC::AssemblyHelpers::callExceptionFuzz):
1555         (JSC::AssemblyHelpers::debugCall):
1556         * jit/AssemblyHelpers.h:
1557         (JSC::AssemblyHelpers::prepareCallOperation):
1558         * jit/CCallHelpers.cpp:
1559         (JSC::CCallHelpers::ensureShadowChickenPacket):
1560         * jit/CCallHelpers.h:
1561         (JSC::CCallHelpers::prepareCallOperation): Deleted.
1562         * jit/JITOperations.cpp:
1563         * jit/JITOperations.h:
1564         * jit/Repatch.cpp:
1565         (JSC::ftlThunkAwareRepatchCall):
1566         * jit/ThunkGenerators.cpp:
1567         (JSC::boundThisNoArgsFunctionCallGenerator):
1568         * llint/LLIntSlowPaths.cpp:
1569         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
1570         (JSC::LLInt::handleHostCall):
1571         * runtime/AtomicsObject.cpp:
1572         (JSC::operationAtomicsAdd):
1573         (JSC::operationAtomicsAnd):
1574         (JSC::operationAtomicsCompareExchange):
1575         (JSC::operationAtomicsExchange):
1576         (JSC::operationAtomicsIsLockFree):
1577         (JSC::operationAtomicsLoad):
1578         (JSC::operationAtomicsOr):
1579         (JSC::operationAtomicsStore):
1580         (JSC::operationAtomicsSub):
1581         (JSC::operationAtomicsXor):
1582         * runtime/CommonSlowPaths.cpp:
1583         (JSC::SLOW_PATH_DECL):
1584         * runtime/StringPrototype.cpp:
1585         (JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
1586         (JSC::operationStringProtoFuncReplaceRegExpString):
1587         (JSC::operationStringProtoFuncReplaceGeneric):
1588         * tools/JSDollarVM.cpp:
1589         (IGNORE_WARNINGS_BEGIN):
1590         * wasm/WasmAirIRGenerator.cpp:
1591         (JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
1592         * wasm/WasmB3IRGenerator.cpp:
1593         (JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
1594         * wasm/WasmOperations.cpp:
1595         (JSC::Wasm::operationWasmThrowBadI64):
1596         (JSC::Wasm::operationWasmTriggerOSREntryNow):
1597         (JSC::Wasm::operationWasmTriggerTierUpNow):
1598         (JSC::Wasm::operationThrowBadI64): Deleted.
1599         (JSC::Wasm::triggerOSREntryNow): Deleted.
1600         (JSC::Wasm::triggerTierUpNow): Deleted.
1601         * wasm/WasmOperations.h:
1602         * wasm/WasmThunks.cpp:
1603         (JSC::Wasm::triggerOMGEntryTierUpThunkGenerator):
1604         * wasm/js/JSWebAssembly.cpp:
1605         (JSC::instantiate):
1606         * wasm/js/WasmToJS.cpp:
1607         (JSC::Wasm::handleBadI64Use):
1608         (JSC::Wasm::operationWasmToJSException):
1609         (JSC::Wasm::emitThrowWasmToJSException):
1610         (JSC::Wasm::wasmToJSException): Deleted.
1611         * wasm/js/WasmToJS.h:
1612         * wasm/js/WebAssemblyInstanceConstructor.cpp:
1613         (JSC::constructJSWebAssemblyInstance):
1614
1615 2019-10-23  Truitt Savell  <tsavell@apple.com>
1616
1617         Unreviewed, rolling out r251482.
1618
1619         r251261 broke multiple tests, reverting this as part of that
1620         rollout.
1621
1622         Reverted changeset:
1623
1624         "[ Mac WK1 ] REGRESSION (r251261): Layout Test
1625         inspector/console/webcore-logging.html is consistently
1626         Failing"
1627         https://bugs.webkit.org/show_bug.cgi?id=203173
1628         https://trac.webkit.org/changeset/251482
1629
1630 2019-10-23  Yury Semikhatsky  <yurys@chromium.org>
1631
1632         Web Inspector: notify inspector when provisional page is created, committed and destroyed
1633         https://bugs.webkit.org/show_bug.cgi?id=202704
1634
1635         Reviewed by Devin Rousso.
1636
1637         * inspector/InspectorTarget.h: changed InspectorTarget to not require FrontendChannel as
1638         all messages are routed by means of the owning InspectorTargetAgent.
1639         * inspector/agents/InspectorTargetAgent.cpp:
1640         (Inspector::InspectorTargetAgent::InspectorTargetAgent):
1641         (Inspector::buildTargetInfoObject):
1642         (Inspector::InspectorTargetAgent::targetCreated):
1643         (Inspector::InspectorTargetAgent::targetDestroyed):
1644         (Inspector::InspectorTargetAgent::didCommitProvisionalTarget): this method is used to
1645         notify frontend that corresponding provisional target has committed and replaced previous
1646         target.
1647         (Inspector::InspectorTargetAgent::connectionType const):
1648         (Inspector::InspectorTargetAgent::connectToTargets):
1649         (Inspector::InspectorTargetAgent::disconnectFromTargets):
1650         * inspector/agents/InspectorTargetAgent.h:
1651         * inspector/protocol/Target.json: extended TargetInfo with provisional page details and
1652         added event which is fired when provisional page gets committed. If provisional
1653         load fails there will be targetDestroyed event without corresponding commit.
1654
1655 2019-10-23  Ross Kirsling  <ross.kirsling@sony.com>
1656
1657         String.prototype.matchAll should throw on non-global regex
1658         https://bugs.webkit.org/show_bug.cgi?id=202838
1659
1660         Reviewed by Keith Miller.
1661
1662         * builtins/StringPrototype.js:
1663         (matchAll):
1664         Implement normative change from https://github.com/tc39/ecma262/pull/1716.
1665
1666         * builtins/BuiltinNames.h:
1667         * runtime/JSGlobalObject.cpp:
1668         (JSC::JSGlobalObject::init):
1669         * runtime/RegExpConstructor.cpp:
1670         (JSC::esSpecIsRegExp): Added.
1671         * runtime/RegExpConstructor.h:
1672         Expose isRegExp to builtins. (This differs from @isRegExpObject by first checking for Symbol.match.)
1673
1674 2019-10-23  Sihui Liu  <sihui_liu@apple.com>
1675
1676         [ Mac WK1 ] REGRESSION (r251261): Layout Test inspector/console/webcore-logging.html is consistently Failing
1677         https://bugs.webkit.org/show_bug.cgi?id=203173
1678         <rdar://problem/56424721>
1679
1680         Hold a strong reference to JSGlobalOjbect in ConsoleMessage so that object is not garbage collected before
1681         WebConsoleAgent::frameWindowDiscarded.
1682
1683         Covered by existing test: inspector/console/webcore-logging.html.
1684
1685         Reviewed by Geoffrey Garen.
1686
1687         * inspector/ConsoleMessage.cpp:
1688         (Inspector::ConsoleMessage::ConsoleMessage):
1689         (Inspector::ConsoleMessage::clear):
1690         * inspector/ConsoleMessage.h:
1691
1692 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
1693
1694         Make `JSGlobalObject*` threading change more stabilized by adding tests and assertions
1695         https://bugs.webkit.org/show_bug.cgi?id=203274
1696
1697         Reviewed by Saam Barati.
1698
1699         This patch does some follow-up changes after r251425.
1700
1701         1. Add tests that tests vm.topCallFrame from C++ world to ensure that `vm.topCallFrame` is kept nullptr if it is accessed from C++ world even after executing some scripts.
1702         2. Add assertion to ensure that `DECLARE_CALL_FRAME` is only called in JIT operation's prologue.
1703         3. Remove some of ExecState::deprecatedVM call.
1704         4. Define `USE(BUILTIN_FRAME_ADDRESS)` when using __builtin_frame_address to get CallFrame.
1705
1706         * API/tests/testapi.cpp:
1707         (TestAPI::topCallFrameAccess):
1708         (testCAPIViaCpp):
1709         * interpreter/CallFrame.cpp:
1710         (JSC::isFromJSCode):
1711         * interpreter/CallFrame.h:
1712         * jit/CCallHelpers.h:
1713         (JSC::CCallHelpers::prepareCallOperation):
1714         * tools/VMInspector.cpp:
1715         (JSC::VMInspector::dumpRegisters):
1716
1717 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
1718
1719         Unreviewed, WinCairo build fix after r251468
1720         https://bugs.webkit.org/show_bug.cgi?id=203276
1721
1722         * jit/JIT.h:
1723
1724 2019-10-22  Keith Miller  <keith_miller@apple.com>
1725
1726         BytecodeIndex should be a proper C++ class
1727         https://bugs.webkit.org/show_bug.cgi?id=203276
1728
1729         Reviewed by Mark Lam.
1730
1731         This patch makes a change to how we refer to the bytecode index in
1732         a bytecode stream. Previously we just used an unsigned number to
1733         represent the index, this patch changes most of the code to use a
1734         BytecodeIndex class instead. The only places where this patch does
1735         not change this is for jump and switch targets / deltas.
1736
1737         Additionally, this patch attempts to canonicalize the terminology
1738         around how we refer to bytecode indices. Now we use the word index
1739         to refer to the bytecode index class and offset to refer to the
1740         unsigned byte offset into the instruction stream.
1741
1742         * JavaScriptCore.xcodeproj/project.pbxproj:
1743         * Sources.txt:
1744         * bytecode/ByValInfo.h:
1745         (JSC::ByValInfo::ByValInfo):
1746         (JSC::getByValInfoBytecodeIndex):
1747         * bytecode/BytecodeBasicBlock.cpp:
1748         (JSC::BytecodeBasicBlock::computeImpl):
1749         * bytecode/BytecodeGeneratorification.cpp:
1750         (JSC::GeneratorLivenessAnalysis::run):
1751         * bytecode/BytecodeIndex.cpp: Added.
1752         (JSC::BytecodeIndex::dump const):
1753         * bytecode/BytecodeIndex.h: Added.
1754         (JSC::BytecodeIndex::BytecodeIndex):
1755         (JSC::BytecodeIndex::offset const):
1756         (JSC::BytecodeIndex::asBits const):
1757         (JSC::BytecodeIndex::hash const):
1758         (JSC::BytecodeIndex::deletedValue):
1759         (JSC::BytecodeIndex::isHashTableDeletedValue const):
1760         (JSC::BytecodeIndex::operator bool const):
1761         (JSC::BytecodeIndex::operator == const):
1762         (JSC::BytecodeIndex::operator != const):
1763         (JSC::BytecodeIndex::operator < const):
1764         (JSC::BytecodeIndex::operator > const):
1765         (JSC::BytecodeIndex::operator <= const):
1766         (JSC::BytecodeIndex::operator >= const):
1767         (JSC::BytecodeIndex::fromBits):
1768         (JSC::BytecodeIndexHash::hash):
1769         (JSC::BytecodeIndexHash::equal):
1770         * bytecode/BytecodeLivenessAnalysis.cpp:
1771         (JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeIndex):
1772         (JSC::BytecodeLivenessAnalysis::computeFullLiveness):
1773         (JSC::BytecodeLivenessAnalysis::computeKills):
1774         (JSC::BytecodeLivenessAnalysis::dumpResults):
1775         (JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeOffset): Deleted.
1776         * bytecode/BytecodeLivenessAnalysis.h:
1777         * bytecode/BytecodeLivenessAnalysisInlines.h:
1778         (JSC::BytecodeLivenessPropagation::stepOverInstruction):
1779         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBytecodeIndex):
1780         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBlock):
1781         (JSC::BytecodeLivenessPropagation::getLivenessInfoAtBytecodeIndex):
1782         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBytecodeOffset): Deleted.
1783         (JSC::BytecodeLivenessPropagation::getLivenessInfoAtBytecodeOffset): Deleted.
1784         * bytecode/BytecodeUseDef.h:
1785         (JSC::computeUsesForBytecodeIndex):
1786         (JSC::computeDefsForBytecodeIndex):
1787         (JSC::computeUsesForBytecodeOffset): Deleted.
1788         (JSC::computeDefsForBytecodeOffset): Deleted.
1789         * bytecode/CallLinkStatus.cpp:
1790         (JSC::CallLinkStatus::computeFromLLInt):
1791         (JSC::CallLinkStatus::computeFor):
1792         (JSC::CallLinkStatus::computeExitSiteData):
1793         * bytecode/CallLinkStatus.h:
1794         * bytecode/CodeBlock.cpp:
1795         (JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
1796         (JSC::CodeBlock::addRareCaseProfile):
1797         (JSC::CodeBlock::rareCaseProfileForBytecodeIndex):
1798         (JSC::CodeBlock::rareCaseProfileCountForBytecodeIndex):
1799         (JSC::CodeBlock::handlerForBytecodeIndex):
1800         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndex):
1801         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndexSlow):
1802         (JSC::CodeBlock::lineNumberForBytecodeIndex):
1803         (JSC::CodeBlock::columnNumberForBytecodeIndex):
1804         (JSC::CodeBlock::expressionRangeForBytecodeIndex const):
1805         (JSC::CodeBlock::hasOpDebugForLineAndColumn):
1806         (JSC::CodeBlock::getArrayProfile):
1807         (JSC::CodeBlock::tryGetValueProfileForBytecodeIndex):
1808         (JSC::CodeBlock::valueProfilePredictionForBytecodeIndex):
1809         (JSC::CodeBlock::valueProfileForBytecodeIndex):
1810         (JSC::CodeBlock::validate):
1811         (JSC::CodeBlock::arithProfileForBytecodeIndex):
1812         (JSC::CodeBlock::couldTakeSpecialArithFastCase):
1813         (JSC::CodeBlock::bytecodeIndexFromCallSiteIndex):
1814         (JSC::CodeBlock::rareCaseProfileForBytecodeOffset): Deleted.
1815         (JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset): Deleted.
1816         (JSC::CodeBlock::handlerForBytecodeOffset): Deleted.
1817         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffset): Deleted.
1818         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffsetSlow): Deleted.
1819         (JSC::CodeBlock::lineNumberForBytecodeOffset): Deleted.
1820         (JSC::CodeBlock::columnNumberForBytecodeOffset): Deleted.
1821         (JSC::CodeBlock::expressionRangeForBytecodeOffset const): Deleted.
1822         (JSC::CodeBlock::tryGetValueProfileForBytecodeOffset): Deleted.
1823         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset): Deleted.
1824         (JSC::CodeBlock::valueProfileForBytecodeOffset): Deleted.
1825         (JSC::CodeBlock::arithProfileForBytecodeOffset): Deleted.
1826         (JSC::CodeBlock::couldTakeSpecialFastCase): Deleted.
1827         (JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex): Deleted.
1828         * bytecode/CodeBlock.h:
1829         (JSC::CodeBlock::likelyToTakeSlowCase):
1830         (JSC::CodeBlock::couldTakeSlowCase):
1831         (JSC::CodeBlock::bytecodeIndex):
1832         * bytecode/CodeOrigin.cpp:
1833         (JSC::CodeOrigin::approximateHash const):
1834         (JSC::CodeOrigin::dump const):
1835         * bytecode/CodeOrigin.h:
1836         (JSC::CodeOrigin::CodeOrigin):
1837         (JSC::CodeOrigin::isSet const):
1838         (JSC::CodeOrigin::isHashTableDeletedValue const):
1839         (JSC::CodeOrigin::bytecodeIndex const):
1840         (JSC::CodeOrigin::OutOfLineCodeOrigin::OutOfLineCodeOrigin):
1841         (JSC::CodeOrigin::buildCompositeValue):
1842         (JSC::CodeOrigin::hash const):
1843         * bytecode/DFGExitProfile.cpp:
1844         (JSC::DFG::FrequentExitSite::dump const):
1845         (JSC::DFG::ExitProfile::exitSitesFor):
1846         * bytecode/DFGExitProfile.h:
1847         (JSC::DFG::FrequentExitSite::FrequentExitSite):
1848         (JSC::DFG::FrequentExitSite::operator== const):
1849         (JSC::DFG::FrequentExitSite::subsumes const):
1850         (JSC::DFG::FrequentExitSite::hash const):
1851         (JSC::DFG::FrequentExitSite::bytecodeIndex const):
1852         (JSC::DFG::FrequentExitSite::isHashTableDeletedValue const):
1853         (JSC::DFG::QueryableExitProfile::hasExitSite const):
1854         (JSC::DFG::FrequentExitSite::bytecodeOffset const): Deleted.
1855         * bytecode/DeferredSourceDump.cpp:
1856         (JSC::DeferredSourceDump::DeferredSourceDump):
1857         (JSC::DeferredSourceDump::dump):
1858         * bytecode/DeferredSourceDump.h:
1859         (): Deleted.
1860         * bytecode/FullBytecodeLiveness.h:
1861         (JSC::FullBytecodeLiveness::getLiveness const):
1862         (JSC::FullBytecodeLiveness::operandIsLive const):
1863         * bytecode/GetByIdStatus.cpp:
1864         (JSC::GetByIdStatus::computeFromLLInt):
1865         (JSC::GetByIdStatus::computeFor):
1866         (JSC::GetByIdStatus::computeForStubInfo):
1867         * bytecode/GetByIdStatus.h:
1868         * bytecode/ICStatusUtils.cpp:
1869         (JSC::hasBadCacheExitSite):
1870         * bytecode/ICStatusUtils.h:
1871         * bytecode/InByIdStatus.cpp:
1872         (JSC::InByIdStatus::computeFor):
1873         * bytecode/InByIdStatus.h:
1874         * bytecode/InlineCallFrame.cpp:
1875         (JSC::InlineCallFrame::dumpInContext const):
1876         * bytecode/InstanceOfStatus.cpp:
1877         (JSC::InstanceOfStatus::computeFor):
1878         * bytecode/InstanceOfStatus.h:
1879         * bytecode/InstructionStream.h:
1880         (JSC::InstructionStream::BaseRef::offset const):
1881         (JSC::InstructionStream::BaseRef::index const):
1882         (JSC::InstructionStream::at const):
1883         * bytecode/LazyOperandValueProfile.h:
1884         (JSC::LazyOperandValueProfileKey::LazyOperandValueProfileKey):
1885         (JSC::LazyOperandValueProfileKey::operator== const):
1886         (JSC::LazyOperandValueProfileKey::hash const):
1887         (JSC::LazyOperandValueProfileKey::bytecodeIndex const):
1888         (JSC::LazyOperandValueProfileKey::isHashTableDeletedValue const):
1889         (JSC::LazyOperandValueProfileKey::bytecodeOffset const): Deleted.
1890         * bytecode/MethodOfGettingAValueProfile.cpp:
1891         (JSC::MethodOfGettingAValueProfile::fromLazyOperand):
1892         * bytecode/MethodOfGettingAValueProfile.h:
1893         * bytecode/PutByIdStatus.cpp:
1894         (JSC::PutByIdStatus::computeFromLLInt):
1895         (JSC::PutByIdStatus::computeFor):
1896         * bytecode/PutByIdStatus.h:
1897         * bytecode/StructureStubInfo.cpp:
1898         (JSC::StructureStubInfo::StructureStubInfo):
1899         * bytecode/UnlinkedCodeBlock.cpp:
1900         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeIndex):
1901         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):
1902         (JSC::UnlinkedCodeBlock::handlerForBytecodeIndex):
1903         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
1904         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset const): Deleted.
1905         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
1906         * bytecode/UnlinkedCodeBlock.h:
1907         * bytecode/ValueProfile.h:
1908         (JSC::RareCaseProfile::RareCaseProfile):
1909         (JSC::getRareCaseProfileBytecodeIndex):
1910         (JSC::getRareCaseProfileBytecodeOffset): Deleted.
1911         * bytecompiler/BytecodeGenerator.cpp:
1912         (JSC::ForInContext::finalize):
1913         * debugger/DebuggerCallFrame.cpp:
1914         (JSC::DebuggerCallFrame::currentPosition):
1915         * dfg/DFGBasicBlock.cpp:
1916         (JSC::DFG::BasicBlock::BasicBlock):
1917         * dfg/DFGBasicBlock.h:
1918         (JSC::DFG::getBytecodeBeginForBlock):
1919         (JSC::DFG::blockForBytecodeIndex):
1920         (JSC::DFG::blockForBytecodeOffset): Deleted.
1921         * dfg/DFGBlockInsertionSet.cpp:
1922         (JSC::DFG::BlockInsertionSet::insert):
1923         * dfg/DFGByteCodeParser.cpp:
1924         (JSC::DFG::ByteCodeParser::flushForTerminalImpl):
1925         (JSC::DFG::ByteCodeParser::flushIfTerminal):
1926         (JSC::DFG::ByteCodeParser::branchData):
1927         (JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
1928         (JSC::DFG::ByteCodeParser::getPrediction):
1929         (JSC::DFG::ByteCodeParser::getArrayMode):
1930         (JSC::DFG::ByteCodeParser::makeSafe):
1931         (JSC::DFG::ByteCodeParser::makeDivSafe):
1932         (JSC::DFG::ByteCodeParser::allocateTargetableBlock):
1933         (JSC::DFG::ByteCodeParser::allocateUntargetableBlock):
1934         (JSC::DFG::ByteCodeParser::makeBlockTargetable):
1935         (JSC::DFG::ByteCodeParser::handleCall):
1936         (JSC::DFG::ByteCodeParser::handleRecursiveTailCall):
1937         (JSC::DFG::ByteCodeParser::inlineCall):
1938         (JSC::DFG::ByteCodeParser::handleCallVariant):
1939         (JSC::DFG::ByteCodeParser::handleInlining):
1940         (JSC::DFG::ByteCodeParser::parseBlock):
1941         (JSC::DFG::ByteCodeParser::linkBlock):
1942         (JSC::DFG::ByteCodeParser::parseCodeBlock):
1943         (JSC::DFG::ByteCodeParser::parse):
1944         * dfg/DFGCommonData.cpp:
1945         (JSC::DFG::CommonData::addCodeOrigin):
1946         (JSC::DFG::CommonData::addUniqueCallSiteIndex):
1947         (JSC::DFG::CommonData::lastCallSite const):
1948         * dfg/DFGCommonData.h:
1949         (JSC::DFG::CommonData::catchOSREntryDataForBytecodeIndex):
1950         (JSC::DFG::CommonData::appendCatchEntrypoint):
1951         * dfg/DFGDriver.cpp:
1952         (JSC::DFG::compileImpl):
1953         (JSC::DFG::compile):
1954         * dfg/DFGDriver.h:
1955         * dfg/DFGGraph.cpp:
1956         (JSC::DFG::Graph::dump):
1957         (JSC::DFG::Graph::methodOfGettingAValueProfileFor):
1958         (JSC::DFG::Graph::willCatchExceptionInMachineFrame):
1959         * dfg/DFGGraph.h:
1960         * dfg/DFGJITCode.cpp:
1961         (JSC::DFG::JITCode::clearOSREntryBlockAndResetThresholds):
1962         * dfg/DFGJITCode.h:
1963         (JSC::DFG::JITCode::appendOSREntryData):
1964         (JSC::DFG::JITCode::osrEntryDataForBytecodeIndex):
1965         * dfg/DFGJITCompiler.cpp:
1966         (JSC::DFG::JITCompiler::JITCompiler):
1967         (JSC::DFG::JITCompiler::compile):
1968         (JSC::DFG::JITCompiler::compileFunction):
1969         * dfg/DFGJITCompiler.h:
1970         (JSC::DFG::JITCompiler::setStartOfCode):
1971         * dfg/DFGLiveCatchVariablePreservationPhase.cpp:
1972         (JSC::DFG::LiveCatchVariablePreservationPhase::handleBlockForTryCatch):
1973         * dfg/DFGOSREntry.cpp:
1974         (JSC::DFG::OSREntryData::dumpInContext const):
1975         (JSC::DFG::prepareOSREntry):
1976         (JSC::DFG::prepareCatchOSREntry):
1977         * dfg/DFGOSREntry.h:
1978         (JSC::DFG::getOSREntryDataBytecodeIndex):
1979         (JSC::DFG::prepareOSREntry):
1980         * dfg/DFGOSREntrypointCreationPhase.cpp:
1981         (JSC::DFG::OSREntrypointCreationPhase::run):
1982         * dfg/DFGOSRExit.cpp:
1983         (JSC::DFG::OSRExit::executeOSRExit):
1984         (JSC::DFG::reifyInlinedCallFrames):
1985         (JSC::DFG::adjustAndJumpToTarget):
1986         (JSC::DFG::printOSRExit):
1987         (JSC::DFG::OSRExit::compileExit):
1988         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
1989         * dfg/DFGOSRExit.h:
1990         * dfg/DFGOSRExitCompilerCommon.cpp:
1991         (JSC::DFG::callerReturnPC):
1992         (JSC::DFG::reifyInlinedCallFrames):
1993         (JSC::DFG::adjustAndJumpToTarget):
1994         * dfg/DFGOSRExitCompilerCommon.h:
1995         * dfg/DFGOperations.cpp:
1996         * dfg/DFGOperations.h:
1997         * dfg/DFGPlan.cpp:
1998         (JSC::DFG::Plan::Plan):
1999         (JSC::DFG::Plan::compileInThreadImpl):
2000         (JSC::DFG::Plan::cleanMustHandleValuesIfNecessary):
2001         * dfg/DFGPlan.h:
2002         (JSC::DFG::Plan::osrEntryBytecodeIndex const):
2003         (JSC::DFG::Plan::tierUpInLoopHierarchy):
2004         (JSC::DFG::Plan::tierUpAndOSREnterBytecodes):
2005         * dfg/DFGSSAConversionPhase.cpp:
2006         (JSC::DFG::SSAConversionPhase::run):
2007         * dfg/DFGSpeculativeJIT.cpp:
2008         (JSC::DFG::SpeculativeJIT::compileCurrentBlock):
2009         (JSC::DFG::SpeculativeJIT::checkArgumentTypes):
2010         (JSC::DFG::SpeculativeJIT::compileValueAdd):
2011         (JSC::DFG::SpeculativeJIT::compileValueSub):
2012         (JSC::DFG::SpeculativeJIT::compileValueNegate):
2013         (JSC::DFG::SpeculativeJIT::compileValueMul):
2014         (JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
2015         * dfg/DFGSpeculativeJIT64.cpp:
2016         (JSC::DFG::SpeculativeJIT::compile):
2017         * dfg/DFGTierUpCheckInjectionPhase.cpp:
2018         (JSC::DFG::TierUpCheckInjectionPhase::run):
2019         (JSC::DFG::TierUpCheckInjectionPhase::buildNaturalLoopToLoopHintMap):
2020         * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:
2021         (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):
2022         * dfg/DFGValidate.cpp:
2023         * ftl/FTLCompile.cpp:
2024         (JSC::FTL::compile):
2025         * ftl/FTLForOSREntryJITCode.h:
2026         (JSC::FTL::ForOSREntryJITCode::setBytecodeIndex):
2027         (JSC::FTL::ForOSREntryJITCode::bytecodeIndex const):
2028         * ftl/FTLLowerDFGToB3.cpp:
2029         (JSC::FTL::DFG::LowerDFGToB3::lower):
2030         (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
2031         (JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
2032         (JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
2033         (JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub):
2034         (JSC::FTL::DFG::LowerDFGToB3::compileValueNegate):
2035         * ftl/FTLOSREntry.cpp:
2036         (JSC::FTL::prepareOSREntry):
2037         * ftl/FTLOSREntry.h:
2038         * interpreter/CallFrame.cpp:
2039         (JSC::CallFrame::callSiteIndex const):
2040         (JSC::CallFrame::unsafeCallSiteIndex const):
2041         (JSC::CallFrame::setCurrentVPC):
2042         (JSC::CallFrame::bytecodeIndex):
2043         (JSC::CallFrame::codeOrigin):
2044         (JSC::CallFrame::dump):
2045         (JSC::CallFrame::bytecodeOffset): Deleted.
2046         * interpreter/CallFrame.h:
2047         (JSC::CallSiteIndex::CallSiteIndex):
2048         (JSC::CallSiteIndex::operator bool const):
2049         (JSC::CallSiteIndex::operator== const):
2050         (JSC::CallSiteIndex::bits const):
2051         (JSC::CallSiteIndex::bytecodeIndex const):
2052         (JSC::DisposableCallSiteIndex::DisposableCallSiteIndex):
2053         (): Deleted.
2054         * interpreter/Interpreter.cpp:
2055         (JSC::GetStackTraceFunctor::operator() const):
2056         (JSC::findExceptionHandler):
2057         * interpreter/ShadowChicken.cpp:
2058         (JSC::ShadowChicken::update):
2059         * interpreter/StackVisitor.cpp:
2060         (JSC::StackVisitor::readNonInlinedFrame):
2061         (JSC::StackVisitor::readInlinedFrame):
2062         (JSC::StackVisitor::Frame::retrieveExpressionInfo const):
2063         (JSC::StackVisitor::Frame::dump const):
2064         * interpreter/StackVisitor.h:
2065         (JSC::StackVisitor::Frame::bytecodeIndex const):
2066         (JSC::StackVisitor::Frame::bytecodeOffset const): Deleted.
2067         * jit/JIT.cpp:
2068         (JSC::JIT::JIT):
2069         (JSC::JIT::emitEnterOptimizationCheck):
2070         (JSC::JIT::privateCompileMainPass):
2071         (JSC::JIT::privateCompileSlowCases):
2072         (JSC::JIT::compileWithoutLinking):
2073         (JSC::JIT::link):
2074         (JSC::JIT::privateCompileExceptionHandlers):
2075         * jit/JIT.h:
2076         (JSC::CallRecord::CallRecord):
2077         (JSC::SlowCaseEntry::SlowCaseEntry):
2078         (JSC::SwitchRecord::SwitchRecord):
2079         (JSC::ByValCompilationInfo::ByValCompilationInfo):
2080         * jit/JITCall.cpp:
2081         (JSC::JIT::compileCallEvalSlowCase):
2082         (JSC::JIT::compileOpCall):
2083         * jit/JITCodeMap.h:
2084         (JSC::JITCodeMap::Entry::Entry):
2085         (JSC::JITCodeMap::Entry::bytecodeIndex const):
2086         (JSC::JITCodeMap::append):
2087         (JSC::JITCodeMap::find const):
2088         * jit/JITDisassembler.cpp:
2089         (JSC::JITDisassembler::dumpVectorForInstructions):
2090         (JSC::JITDisassembler::reportInstructions):
2091         * jit/JITDisassembler.h:
2092         * jit/JITInlines.h:
2093         (JSC::JIT::emitNakedCall):
2094         (JSC::JIT::emitNakedTailCall):
2095         (JSC::JIT::updateTopCallFrame):
2096         (JSC::JIT::linkAllSlowCasesForBytecodeIndex):
2097         (JSC::JIT::addSlowCase):
2098         (JSC::JIT::addJump):
2099         (JSC::JIT::emitJumpSlowToHot):
2100         (JSC::JIT::emitGetVirtualRegister):
2101         (JSC::JIT::linkAllSlowCasesForBytecodeOffset): Deleted.
2102         * jit/JITOpcodes.cpp:
2103         (JSC::JIT::emit_op_instanceof):
2104         (JSC::JIT::emit_op_catch):
2105         (JSC::JIT::emit_op_switch_imm):
2106         (JSC::JIT::emit_op_switch_char):
2107         (JSC::JIT::emit_op_switch_string):
2108         (JSC::JIT::emitSlow_op_loop_hint):
2109         (JSC::JIT::emit_op_has_indexed_property):
2110         (JSC::JIT::emit_op_log_shadow_chicken_tail):
2111         * jit/JITOpcodes32_64.cpp:
2112         (JSC::JIT::emit_op_instanceof):
2113         (JSC::JIT::emit_op_catch):
2114         (JSC::JIT::emit_op_switch_imm):
2115         (JSC::JIT::emit_op_switch_char):
2116         (JSC::JIT::emit_op_switch_string):
2117         (JSC::JIT::emit_op_has_indexed_property):
2118         * jit/JITOperations.cpp:
2119         (JSC::getByVal):
2120         (JSC::tryGetByValOptimize):
2121         * jit/JITPropertyAccess.cpp:
2122         (JSC::JIT::emit_op_get_by_val):
2123         (JSC::JIT::emitGetByValWithCachedId):
2124         (JSC::JIT::emit_op_put_by_val):
2125         (JSC::JIT::emitPutByValWithCachedId):
2126         (JSC::JIT::emit_op_try_get_by_id):
2127         (JSC::JIT::emit_op_get_by_id_direct):
2128         (JSC::JIT::emit_op_get_by_id):
2129         (JSC::JIT::emit_op_get_by_id_with_this):
2130         (JSC::JIT::emit_op_put_by_id):
2131         (JSC::JIT::emit_op_in_by_id):
2132         * jit/JITWorklist.cpp:
2133         (JSC::JITWorklist::Plan::Plan):
2134         (JSC::JITWorklist::Plan::compileNow):
2135         (JSC::JITWorklist::compileLater):
2136         (JSC::JITWorklist::compileNow):
2137         * jit/JITWorklist.h:
2138         * jit/PCToCodeOriginMap.cpp:
2139         (JSC::PCToCodeOriginMap::PCToCodeOriginMap):
2140         (JSC::PCToCodeOriginMap::findPC const):
2141         * jit/PCToCodeOriginMap.h:
2142         (JSC::PCToCodeOriginMapBuilder::defaultCodeOrigin):
2143         * jit/SlowPathCall.h:
2144         (JSC::JITSlowPathCall::call):
2145         * llint/LLIntSlowPaths.cpp:
2146         (JSC::LLInt::jitCompileAndSetHeuristics):
2147         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2148         * profiler/ProfilerOrigin.cpp:
2149         (JSC::Profiler::Origin::Origin):
2150         (JSC::Profiler::Origin::dump const):
2151         (JSC::Profiler::Origin::toJS const):
2152         * profiler/ProfilerOrigin.h:
2153         (JSC::Profiler::Origin::Origin):
2154         (JSC::Profiler::Origin::operator! const):
2155         (JSC::Profiler::Origin::bytecodeIndex const):
2156         (JSC::Profiler::Origin::hash const):
2157         (JSC::Profiler::Origin::isHashTableDeletedValue const):
2158         * runtime/Error.cpp:
2159         (JSC::getBytecodeIndex):
2160         (JSC::getBytecodeOffset): Deleted.
2161         * runtime/Error.h:
2162         * runtime/ErrorInstance.cpp:
2163         (JSC::appendSourceToError):
2164         (JSC::ErrorInstance::finishCreation):
2165         * runtime/SamplingProfiler.cpp:
2166         (JSC::tryGetBytecodeIndex):
2167         (JSC::SamplingProfiler::processUnverifiedStackTraces):
2168         (JSC::SamplingProfiler::reportTopBytecodes):
2169         * runtime/SamplingProfiler.h:
2170         (JSC::SamplingProfiler::StackFrame::CodeLocation::hasBytecodeIndex const):
2171         * runtime/StackFrame.cpp:
2172         (JSC::StackFrame::StackFrame):
2173         (JSC::StackFrame::computeLineAndColumn const):
2174         * runtime/StackFrame.h:
2175         (JSC::StackFrame::hasBytecodeIndex const):
2176         (JSC::StackFrame::bytecodeIndex):
2177         (JSC::StackFrame::hasBytecodeOffset const): Deleted.
2178         (JSC::StackFrame::bytecodeOffset): Deleted.
2179         * tools/VMInspector.cpp:
2180         (JSC::VMInspector::dumpRegisters):
2181
2182 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
2183
2184         Unreviewed, make 32bit JIT built
2185         https://bugs.webkit.org/show_bug.cgi?id=202392
2186
2187         This patch makes 32bit JIT built at least.
2188
2189         * jit/JITOpcodes32_64.cpp:
2190         (JSC::JIT::emit_op_throw):
2191         * jit/JITPropertyAccess32_64.cpp:
2192         (JSC::JIT::emitGetByValWithCachedId):
2193         (JSC::JIT::emitSlow_op_get_by_id_direct):
2194         (JSC::JIT::emitSlow_op_get_by_id):
2195         (JSC::JIT::emitSlow_op_get_by_id_with_this):
2196         (JSC::JIT::emitSlow_op_get_from_scope):
2197
2198 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
2199
2200         [JSC] Remove non-LargeAllocation restriction for JSCallee
2201         https://bugs.webkit.org/show_bug.cgi?id=203260
2202
2203         Reviewed by Saam Barati.
2204
2205         We now pass JSGlobalObject* instead of ExecState*. And we are getting VM& from JSGlobalObject*.
2206         Because now accessing ExecState::vm() becomes less frequent, we can remove the restriction that
2207         callee is only allocated in non-LargeAllocation, which restriction made ExecState::vm fast.
2208
2209         This patch renames `CallFrame::vm` to `CallFrame::deprecatedVM`. And we avoid using it as much as possible.
2210         And we also remove the restriction that callee needs to be in non-LargeAllocation.
2211
2212         * API/JSContextRef.cpp:
2213         (JSContextCreateBacktrace):
2214         * bytecode/CodeBlock.cpp:
2215         (JSC::CodeBlock::noticeIncomingCall):
2216         * debugger/DebuggerCallFrame.cpp:
2217         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
2218         (JSC::DebuggerCallFrame::functionName const):
2219         (JSC::DebuggerCallFrame::scope):
2220         (JSC::DebuggerCallFrame::type const):
2221         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
2222         (JSC::DebuggerCallFrame::positionForCallFrame):
2223         * dfg/DFGOSRExit.cpp:
2224         (JSC::DFG::OSRExit::executeOSRExit):
2225         (JSC::DFG::OSRExit::compileOSRExit):
2226         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
2227         * dfg/DFGOperations.cpp:
2228         * ftl/FTLOSRExitCompiler.cpp:
2229         (JSC::FTL::compileFTLOSRExit):
2230         * ftl/FTLOperations.cpp:
2231         (JSC::FTL::compileFTLLazySlowPath):
2232         * inspector/JSInjectedScriptHost.cpp:
2233         (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
2234         * inspector/ScriptCallStackFactory.cpp:
2235         (Inspector::createScriptCallStack):
2236         (Inspector::createScriptCallStackForConsole):
2237         * interpreter/CallFrame.cpp:
2238         (JSC::CallFrame::callerSourceOrigin):
2239         (JSC::CallFrame::friendlyFunctionName):
2240         * interpreter/CallFrame.h:
2241         (JSC::CallFrame::iterate):
2242         * interpreter/Interpreter.cpp:
2243         (JSC::sizeOfVarargs):
2244         (JSC::sizeFrameForVarargs):
2245         (JSC::Interpreter::getStackTrace):
2246         (JSC::Interpreter::unwind):
2247         (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
2248         (JSC::Interpreter::debug):
2249         * interpreter/Interpreter.h:
2250         * interpreter/ShadowChicken.cpp:
2251         (JSC::ShadowChicken::update):
2252         * interpreter/StackVisitor.cpp:
2253         (JSC::StackVisitor::StackVisitor):
2254         (JSC::StackVisitor::Frame::functionName const):
2255         * interpreter/StackVisitor.h:
2256         (JSC::StackVisitor::visit):
2257         * jit/HostCallReturnValue.cpp:
2258         (JSC::getHostCallReturnValueWithExecState):
2259         * jit/JITOperations.cpp:
2260         * jit/Repatch.cpp:
2261         (JSC::linkFor):
2262         (JSC::linkPolymorphicCall):
2263         * jit/Repatch.h:
2264         * jsc.cpp:
2265         (functionJSCStack):
2266         (functionRunString):
2267         (functionLoadString):
2268         (functionCallerSourceOrigin):
2269         (functionCallerIsOMGCompiled):
2270         (functionDollarEvalScript):
2271         * llint/LLIntSlowPaths.cpp:
2272         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2273         * runtime/Error.cpp:
2274         (JSC::getBytecodeOffset):
2275         * runtime/FunctionConstructor.cpp:
2276         (JSC::constructFunction):
2277         * runtime/JSCellInlines.h:
2278         (JSC::CallFrame::deprecatedVM const):
2279         (JSC::CallFrame::vm const): Deleted.
2280         * runtime/JSFunction.cpp:
2281         (JSC::retrieveArguments):
2282         (JSC::JSFunction::argumentsGetter):
2283         (JSC::retrieveCallerFunction):
2284         (JSC::JSFunction::callerGetter):
2285         (JSC::JSFunction::defineOwnProperty):
2286         * runtime/JSGlobalObject.cpp:
2287         (JSC::assertCall):
2288         * runtime/JSGlobalObjectFunctions.cpp:
2289         (JSC::globalFuncEval):
2290         (JSC::globalFuncImportModule):
2291         * runtime/NullSetterFunction.cpp:
2292         (JSC::callerIsStrict):
2293         (JSC::NullSetterFunctionInternal::callReturnUndefined):
2294         * tools/JSDollarVM.cpp:
2295         (IGNORE_WARNINGS_BEGIN):
2296         (JSC::functionLLintTrue):
2297         (JSC::functionJITTrue):
2298         (JSC::functionDumpRegisters):
2299         (JSC::functionShadowChickenFunctionsOnStack):
2300         * tools/VMInspector.cpp:
2301         (JSC::VMInspector::codeBlockForFrame):
2302         (JSC::VMInspector::dumpCallFrame):
2303         (JSC::VMInspector::dumpRegisters):
2304         (JSC::VMInspector::dumpStack):
2305         * wasm/js/WasmToJS.cpp:
2306         (JSC::Wasm::wasmToJS):
2307
2308 2019-10-22  Mark Lam  <mark.lam@apple.com>
2309
2310         Clients of JSArray::tryCreateUninitializedRestricted() should invoke the mutatorFence().
2311         https://bugs.webkit.org/show_bug.cgi?id=203231
2312         <rdar://problem/56486552>
2313
2314         Reviewed by Saam Barati.
2315
2316         Clients of JSArray::tryCreateUninitializedRestricted() creates a partially
2317         initialized JSArray butterfly, with the contract that it (the client) will take
2318         care of filling in all the missing indexed properties before setting the newly
2319         created array loose in the world.  We intentionally do not unconditionally write
2320         barrier the newly created array but, instead, rely on an owner object (or GC root)
2321         that it gets put into to scan it.
2322
2323         That said, we do need to ensure that all the stores are completed before this
2324         array is put in an owner object (or GC root) which makes it scannable by the GC.
2325         This ensures that the GC will not be scanning a partially initialized array
2326         butterfly.  To achieve this, we should invoke the mutatorFence after the clients
2327         of JSArray::tryCreateUninitializedRestricted() finish initializing the array.
2328
2329         By design, all clients of tryCreateUninitializedRestricted() must instantiate an
2330         ObjectInitializationScope RAII object.  This patch makes use of the
2331         ObjectInitializationScope destructor to invoke the mutatorFence.
2332
2333         Note: we technically only need to invoke the fence if we succeeded in allocating
2334         the array.  However, we just invoke the fence unconditionally because we expect
2335         that in the common path, we will succeed in allocating the array.  The release
2336         build version of ObjectInitializationScope does not keep record of whether we
2337         succeed in allocating the array anyway.  To keep the behavior consistent, the
2338         debug build version of ObjectInitializationScope will also unconditionally
2339         invoke the fence even if we failed to allocate the array.
2340
2341         This patch also does the following:
2342
2343         1. Replaced the setting of the public length in arrayProtoPrivateFuncConcatMemcpy()
2344            with an assertion.  The public length was already set by
2345            tryCreateUninitializedRestricted() earlier.
2346
2347            Ditto for JSArray::fastSlice().
2348
2349         2. Removed a redundant instance of ObjectInitializationScope in
2350            createEmptyRegExpMatchesArray().
2351
2352         * runtime/ArrayPrototype.cpp:
2353         (JSC::arrayProtoPrivateFuncConcatMemcpy):
2354         * runtime/JSArray.cpp:
2355         (JSC::JSArray::fastSlice):
2356         * runtime/ObjectInitializationScope.cpp:
2357         (JSC::ObjectInitializationScope::~ObjectInitializationScope):
2358         * runtime/ObjectInitializationScope.h:
2359         (JSC::ObjectInitializationScope::~ObjectInitializationScope):
2360         * runtime/RegExpMatchesArray.cpp:
2361         (JSC::createEmptyRegExpMatchesArray):
2362
2363 2019-10-22  Mark Lam  <mark.lam@apple.com>
2364
2365         Fix incorrect assertion in operationRegExpExecNonGlobalOrSticky().
2366         https://bugs.webkit.org/show_bug.cgi?id=203230
2367         <rdar://problem/56460749>
2368
2369         Reviewed by Robin Morisset.
2370
2371         operationRegExpExecNonGlobalOrSticky() was asserting no exception when
2372         createRegExpMatchesArray() returns null.  createRegExpMatchesArray() only returns
2373         null when RegExp::matchInline() returns -1.  RegExp::matchInline() can return -1
2374         either when there's an error, or if the match fails.  When there's an error,
2375         RegExp::matchInline() also throws an exception via a throwError() helper.
2376
2377         This patch fixes operationRegExpExecNonGlobalOrSticky() to check for an exception
2378         being thrown, or createRegExpMatchesArray() returning a null array due to a failed
2379         match.
2380
2381         * dfg/DFGOperations.cpp:
2382
2383 2019-10-22  Adrian Perez de Castro  <aperez@igalia.com>
2384
2385         [GTK][WPE] Fix non-unified builds after r251326
2386         https://bugs.webkit.org/show_bug.cgi?id=203244
2387
2388         Reviewed by Youenn Fablet.
2389
2390         * ftl/FTLOSREntry.h: Add missing forward declaration of JSC::VM.
2391         * inspector/ScriptCallStackFactory.h: Add missing forward declaration of JSC::JSGlobalObject.
2392         * llint/LLIntExceptions.h: Add missing forward declaration of JSC::VM.
2393         * runtime/ExceptionFuzz.h: Add missing forward declaration of JSC::JSGlobalObject.
2394         * runtime/JSDateMath.h: Ditto.
2395         * runtime/JSStringJoiner.h: Add missing inclusion of the JSGlobalObject.h header.
2396         * runtime/Watchdog.h: Add missing forward declaration of JSC::JSGlobalObject.
2397         * wasm/WasmOperations.h: Add missing forward declaration of JSC::JSWebAssemblyInstance.
2398
2399 2019-10-21  Yusuke Suzuki  <ysuzuki@apple.com>
2400
2401         [JSC] Thread JSGlobalObject* instead of ExecState*
2402         https://bugs.webkit.org/show_bug.cgi?id=202392
2403
2404         Reviewed by Geoffrey Garen.
2405
2406         This patch replaces JSC's convention entirely: instead of passing ExecState*, we pass lexical JSGlobalObject*.
2407         We have many issues historically.
2408
2409         1. We have a hack like global-exec, since many runtime functions take ExecState* while valid ExecState* is populated only after executing some JS function.
2410         2. We pass ExecState* without considering whether this is correct one when inlining a function. If inlined function has different realm, `exec->lexicalGlobalObject()` just returns wrong JSGlobalObject*.
2411
2412         This patch attempts to remove these issues entirely by passing JSGlobalObject* instead of ExecState*.
2413
2414         1. We change ExecState* to JSGlobalObject*.
2415         2. JIT operations should take JSGlobalObject* instead of ExecState* to reflect the inlinee's JSGlobalObject* correctly.
2416         3. We get CallFrame* by using `__builtin_frame_address(1)` in JIT operations. When it is not available, we put CallFrame* to `vm.topCallFrame` in the caller side and load it from VM.
2417         4. We remove ExecState*. All the actual call-frame is called `CallFrame*`. CallFrame* is passed only when CallFrame* is actually needed: accessing arguments, OSR etc.
2418         5. LLInt and Baseline slow paths are just getting CallFrame*. It gets CodeBlock from CallFrame* and getting VM& and JSGlobalObject* from it since they do not have inlining.
2419         6. We basically removed `VM::vmEntryGlobalObject`. It returns JSGlobalObject* from VMEntryScope. APIs and Completion.cpp use this but they are wrong. And by using lexical JSGlobalObject*, we fixed WPT issues.
2420         7. This patch does not fix complicated JSGlobalObject* issues. But we put FIXME if it seems wrong and it needs to be revisited.
2421         8. FunctionConstructor, ArrayConstructor etc. are exposed from JSGlobalObject to use it for InternalFunction::createStructure() without using `CallFrame*`.
2422
2423         * API/APICallbackFunction.h:
2424         (JSC::APICallbackFunction::call):
2425         (JSC::APICallbackFunction::construct):
2426         * API/APICast.h:
2427         (toJS):
2428         (toJSGlobalObject):
2429         (toJSForGC):
2430         (toRef):
2431         (toGlobalRef):
2432         * API/APIUtils.h:
2433         (handleExceptionIfNeeded):
2434         (setException):
2435         * API/JSAPIGlobalObject.h:
2436         * API/JSAPIGlobalObject.mm:
2437         (JSC::JSAPIGlobalObject::moduleLoaderResolve):
2438         (JSC::JSAPIGlobalObject::moduleLoaderImportModule):
2439         (JSC::JSAPIGlobalObject::moduleLoaderFetch):
2440         (JSC::JSAPIGlobalObject::moduleLoaderCreateImportMetaProperties):
2441         (JSC::JSAPIGlobalObject::moduleLoaderEvaluate):
2442         (JSC::JSAPIGlobalObject::loadAndEvaluateJSScriptModule):
2443         * API/JSAPIValueWrapper.h:
2444         * API/JSBase.cpp:
2445         (JSEvaluateScriptInternal):
2446         (JSEvaluateScript):
2447         (JSCheckScriptSyntax):
2448         (JSGarbageCollect):
2449         (JSReportExtraMemoryCost):
2450         (JSSynchronousGarbageCollectForDebugging):
2451         (JSSynchronousEdenCollectForDebugging):
2452         * API/JSBaseInternal.h:
2453         * API/JSCTestRunnerUtils.cpp:
2454         (JSC::failNextNewCodeBlock):
2455         (JSC::numberOfDFGCompiles):
2456         (JSC::setNeverInline):
2457         (JSC::setNeverOptimize):
2458         * API/JSCallbackConstructor.h:
2459         * API/JSCallbackObject.h:
2460         * API/JSCallbackObjectFunctions.h:
2461         (JSC::JSCallbackObject<Parent>::JSCallbackObject):
2462         (JSC::JSCallbackObject<Parent>::finishCreation):
2463         (JSC::JSCallbackObject<Parent>::init):
2464         (JSC::JSCallbackObject<Parent>::toStringName):
2465         (JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
2466         (JSC::JSCallbackObject<Parent>::getOwnPropertySlotByIndex):
2467         (JSC::JSCallbackObject<Parent>::defaultValue):
2468         (JSC::JSCallbackObject<Parent>::put):
2469         (JSC::JSCallbackObject<Parent>::putByIndex):
2470         (JSC::JSCallbackObject<Parent>::deleteProperty):
2471         (JSC::JSCallbackObject<Parent>::deletePropertyByIndex):
2472         (JSC::JSCallbackObject<Parent>::construct):
2473         (JSC::JSCallbackObject<Parent>::customHasInstance):
2474         (JSC::JSCallbackObject<Parent>::call):
2475         (JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames):
2476         (JSC::JSCallbackObject<Parent>::getStaticValue):
2477         (JSC::JSCallbackObject<Parent>::staticFunctionGetter):
2478         (JSC::JSCallbackObject<Parent>::callbackGetter):
2479         * API/JSClassRef.cpp:
2480         (OpaqueJSClass::contextData):
2481         (OpaqueJSClass::staticValues):
2482         (OpaqueJSClass::staticFunctions):
2483         (OpaqueJSClass::prototype):
2484         * API/JSClassRef.h:
2485         * API/JSContext.mm:
2486         (-[JSContext ensureWrapperMap]):
2487         (-[JSContext evaluateJSScript:]):
2488         (-[JSContext dependencyIdentifiersForModuleJSScript:]):
2489         (-[JSContext setException:]):
2490         (-[JSContext initWithGlobalContextRef:]):
2491         (-[JSContext wrapperMap]):
2492         * API/JSContextRef.cpp:
2493         (internalScriptTimeoutCallback):
2494         (JSGlobalContextCreateInGroup):
2495         (JSGlobalContextRetain):
2496         (JSGlobalContextRelease):
2497         (JSContextGetGlobalObject):
2498         (JSContextGetGroup):
2499         (JSContextGetGlobalContext):
2500         (JSGlobalContextCopyName):
2501         (JSGlobalContextSetName):
2502         (JSGlobalContextSetUnhandledRejectionCallback):
2503         (JSContextCreateBacktrace):
2504         (JSGlobalContextGetRemoteInspectionEnabled):
2505         (JSGlobalContextSetRemoteInspectionEnabled):
2506         (JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions):
2507         (JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions):
2508         (JSGlobalContextGetDebuggerRunLoop):
2509         (JSGlobalContextSetDebuggerRunLoop):
2510         (JSGlobalContextGetAugmentableInspectorController):
2511         * API/JSManagedValue.mm:
2512         (-[JSManagedValue initWithValue:]):
2513         (-[JSManagedValue value]):
2514         * API/JSObjectRef.cpp:
2515         (JSObjectMake):
2516         (JSObjectMakeFunctionWithCallback):
2517         (JSObjectMakeConstructor):
2518         (JSObjectMakeFunction):
2519         (JSObjectMakeArray):
2520         (JSObjectMakeDate):
2521         (JSObjectMakeError):
2522         (JSObjectMakeRegExp):
2523         (JSObjectMakeDeferredPromise):
2524         (JSObjectGetPrototype):
2525         (JSObjectSetPrototype):
2526         (JSObjectHasProperty):
2527         (JSObjectGetProperty):
2528         (JSObjectSetProperty):
2529         (JSObjectHasPropertyForKey):
2530         (JSObjectGetPropertyForKey):
2531         (JSObjectSetPropertyForKey):
2532         (JSObjectDeletePropertyForKey):
2533         (JSObjectGetPropertyAtIndex):
2534         (JSObjectSetPropertyAtIndex):
2535         (JSObjectDeleteProperty):
2536         (JSObjectGetPrivateProperty):
2537         (JSObjectSetPrivateProperty):
2538         (JSObjectDeletePrivateProperty):
2539         (JSObjectIsFunction):
2540         (JSObjectCallAsFunction):
2541         (JSObjectIsConstructor):
2542         (JSObjectCallAsConstructor):
2543         (JSObjectCopyPropertyNames):
2544         (JSObjectGetGlobalContext):
2545         * API/JSScriptRef.cpp:
2546         * API/JSTypedArray.cpp:
2547         (createTypedArray):
2548         (JSValueGetTypedArrayType):
2549         (JSObjectMakeTypedArray):
2550         (JSObjectMakeTypedArrayWithBytesNoCopy):
2551         (JSObjectMakeTypedArrayWithArrayBuffer):
2552         (JSObjectMakeTypedArrayWithArrayBufferAndOffset):
2553         (JSObjectGetTypedArrayBytesPtr):
2554         (JSObjectGetTypedArrayLength):
2555         (JSObjectGetTypedArrayByteLength):
2556         (JSObjectGetTypedArrayByteOffset):
2557         (JSObjectGetTypedArrayBuffer):
2558         (JSObjectMakeArrayBufferWithBytesNoCopy):
2559         (JSObjectGetArrayBufferBytesPtr):
2560         (JSObjectGetArrayBufferByteLength):
2561         * API/JSValue.mm:
2562         (JSContainerConvertor::add):
2563         (reportExceptionToInspector):
2564         (valueToObjectWithoutCopy):
2565         (ObjcContainerConvertor::add):
2566         * API/JSValueRef.cpp:
2567         (JSValueGetType):
2568         (JSValueIsUndefined):
2569         (JSValueIsNull):
2570         (JSValueIsBoolean):
2571         (JSValueIsNumber):
2572         (JSValueIsString):
2573         (JSValueIsObject):
2574         (JSValueIsSymbol):
2575         (JSValueIsArray):
2576         (JSValueIsDate):
2577         (JSValueIsObjectOfClass):
2578         (JSValueIsEqual):
2579         (JSValueIsStrictEqual):
2580         (JSValueIsInstanceOfConstructor):
2581         (JSValueMakeUndefined):
2582         (JSValueMakeNull):
2583         (JSValueMakeBoolean):
2584         (JSValueMakeNumber):
2585         (JSValueMakeSymbol):
2586         (JSValueMakeString):
2587         (JSValueMakeFromJSONString):
2588         (JSValueCreateJSONString):
2589         (JSValueToBoolean):
2590         (JSValueToNumber):
2591         (JSValueToStringCopy):
2592         (JSValueToObject):
2593         (JSValueProtect):
2594         (JSValueUnprotect):
2595         * API/JSWeakObjectMapRefPrivate.cpp:
2596         * API/JSWrapperMap.mm:
2597         (constructorHasInstance):
2598         (makeWrapper):
2599         (putNonEnumerable):
2600         (copyMethodsToObject):
2601         (-[JSObjCClassInfo wrapperForObject:inContext:]):
2602         (-[JSObjCClassInfo structureInContext:]):
2603         * API/ObjCCallbackFunction.mm:
2604         (JSC::objCCallbackFunctionCallAsFunction):
2605         (JSC::objCCallbackFunctionCallAsConstructor):
2606         (objCCallbackFunctionForInvocation):
2607         * API/glib/JSCCallbackFunction.cpp:
2608         (JSC::JSCCallbackFunction::call):
2609         (JSC::JSCCallbackFunction::construct):
2610         * API/glib/JSCClass.cpp:
2611         (isWrappedObject):
2612         (jscContextForObject):
2613         (jscClassCreateConstructor):
2614         (jscClassAddMethod):
2615         * API/glib/JSCContext.cpp:
2616         (jsc_context_evaluate_in_object):
2617         (jsc_context_check_syntax):
2618         * API/glib/JSCException.cpp:
2619         (jscExceptionCreate):
2620         * API/glib/JSCValue.cpp:
2621         (jsc_value_object_define_property_data):
2622         (jsc_value_object_define_property_accessor):
2623         (jscValueFunctionCreate):
2624         * API/glib/JSCWeakValue.cpp:
2625         (jscWeakValueInitialize):
2626         (jsc_weak_value_get_value):
2627         * API/glib/JSCWrapperMap.cpp:
2628         (JSC::WrapperMap::createJSWrappper):
2629         (JSC::WrapperMap::createContextWithJSWrappper):
2630         * API/tests/JSONParseTest.cpp:
2631         (testJSONParse):
2632         * API/tests/JSObjectGetProxyTargetTest.cpp:
2633         (testJSObjectGetProxyTarget):
2634         * API/tests/JSWrapperMapTests.mm:
2635         (+[JSWrapperMapTests testStructureIdentity]):
2636         * API/tests/testapi.cpp:
2637         (APIContext::APIContext):
2638         (APIContext::operator JSC::JSGlobalObject*):
2639         (APIContext::operator JSC::ExecState*): Deleted.
2640         * CMakeLists.txt:
2641         * JavaScriptCore.xcodeproj/project.pbxproj:
2642         * bindings/ScriptFunctionCall.cpp:
2643         (Deprecated::ScriptCallArgumentHandler::appendArgument):
2644         (Deprecated::ScriptFunctionCall::ScriptFunctionCall):
2645         (Deprecated::ScriptFunctionCall::call):
2646         * bindings/ScriptFunctionCall.h:
2647         * bindings/ScriptObject.cpp:
2648         (Deprecated::ScriptObject::ScriptObject):
2649         * bindings/ScriptObject.h:
2650         (Deprecated::ScriptObject::globalObject const):
2651         (Deprecated::ScriptObject::scriptState const): Deleted.
2652         * bindings/ScriptValue.cpp:
2653         (Inspector::jsToInspectorValue):
2654         (Inspector::toInspectorValue):
2655         * bindings/ScriptValue.h:
2656         * bytecode/AccessCase.cpp:
2657         (JSC::AccessCase::generateImpl):
2658         * bytecode/AccessCaseSnippetParams.cpp:
2659         (JSC::SlowPathCallGeneratorWithArguments::generateImpl):
2660         * bytecode/CodeBlock.cpp:
2661         (JSC::CodeBlock::finishCreation):
2662         (JSC::CodeBlock::setConstantIdentifierSetRegisters):
2663         (JSC::CodeBlock::setConstantRegisters):
2664         (JSC::CodeBlock::linkIncomingCall):
2665         (JSC::CodeBlock::linkIncomingPolymorphicCall):
2666         (JSC::CodeBlock::noticeIncomingCall):
2667         * bytecode/CodeBlock.h:
2668         (JSC::CallFrame::r):
2669         (JSC::CallFrame::uncheckedR):
2670         (JSC::ExecState::r): Deleted.
2671         (JSC::ExecState::uncheckedR): Deleted.
2672         * bytecode/DirectEvalCodeCache.cpp:
2673         (JSC::DirectEvalCodeCache::setSlow):
2674         * bytecode/DirectEvalCodeCache.h:
2675         (JSC::DirectEvalCodeCache::set):
2676         * bytecode/InlineCallFrame.cpp:
2677         (JSC::InlineCallFrame::calleeForCallFrame const):
2678         * bytecode/InlineCallFrame.h:
2679         * bytecode/InternalFunctionAllocationProfile.h:
2680         (JSC::InternalFunctionAllocationProfile::createAllocationStructureFromBase):
2681         * bytecode/ObjectPropertyConditionSet.cpp:
2682         (JSC::generateConditionsForPropertyMiss):
2683         (JSC::generateConditionsForPropertySetterMiss):
2684         (JSC::generateConditionsForPrototypePropertyHit):
2685         (JSC::generateConditionsForPrototypePropertyHitCustom):
2686         (JSC::generateConditionsForInstanceOf):
2687         * bytecode/ObjectPropertyConditionSet.h:
2688         * bytecode/PolymorphicAccess.cpp:
2689         (JSC::AccessGenerationState::emitExplicitExceptionHandler):
2690         * bytecode/StructureStubInfo.h:
2691         (JSC::appropriateGenericGetByIdFunction):
2692         * bytecode/UnlinkedFunctionExecutable.cpp:
2693         (JSC::UnlinkedFunctionExecutable::fromGlobalCode):
2694         * bytecode/UnlinkedFunctionExecutable.h:
2695         * bytecode/ValueRecovery.cpp:
2696         (JSC::ValueRecovery::recover const):
2697         * bytecode/ValueRecovery.h:
2698         * debugger/Debugger.cpp:
2699         (JSC::Debugger::attach):
2700         (JSC::Debugger::hasBreakpoint):
2701         (JSC::Debugger::breakProgram):
2702         (JSC::lexicalGlobalObjectForCallFrame):
2703         (JSC::Debugger::updateCallFrame):
2704         (JSC::Debugger::pauseIfNeeded):
2705         (JSC::Debugger::exception):
2706         (JSC::Debugger::atStatement):
2707         (JSC::Debugger::atExpression):
2708         (JSC::Debugger::callEvent):
2709         (JSC::Debugger::returnEvent):
2710         (JSC::Debugger::unwindEvent):
2711         (JSC::Debugger::willExecuteProgram):
2712         (JSC::Debugger::didExecuteProgram):
2713         (JSC::Debugger::didReachBreakpoint):
2714         * debugger/Debugger.h:
2715         * debugger/DebuggerCallFrame.cpp:
2716         (JSC::DebuggerCallFrame::create):
2717         (JSC::DebuggerCallFrame::globalObject):
2718         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
2719         (JSC::DebuggerCallFrame::thisValue const):
2720         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
2721         (JSC::DebuggerCallFrame::sourceIDForCallFrame):
2722         (JSC::DebuggerCallFrame::globalExec): Deleted.
2723         (JSC::DebuggerCallFrame::vmEntryGlobalObject const): Deleted.
2724         * debugger/DebuggerCallFrame.h:
2725         * debugger/DebuggerEvalEnabler.h:
2726         (JSC::DebuggerEvalEnabler::DebuggerEvalEnabler):
2727         (JSC::DebuggerEvalEnabler::~DebuggerEvalEnabler):
2728         * debugger/DebuggerScope.cpp:
2729         (JSC::DebuggerScope::toStringName):
2730         (JSC::DebuggerScope::getOwnPropertySlot):
2731         (JSC::DebuggerScope::put):
2732         (JSC::DebuggerScope::deleteProperty):
2733         (JSC::DebuggerScope::getOwnPropertyNames):
2734         (JSC::DebuggerScope::defineOwnProperty):
2735         (JSC::DebuggerScope::caughtValue const):
2736         * debugger/DebuggerScope.h:
2737         * dfg/DFGAbstractInterpreterInlines.h:
2738         (JSC::DFG::AbstractInterpreter<AbstractStateType>::booleanResult):
2739         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
2740         * dfg/DFGArithMode.h:
2741         * dfg/DFGArrayifySlowPathGenerator.h:
2742         * dfg/DFGCallArrayAllocatorSlowPathGenerator.h:
2743         (JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
2744         (JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):
2745         (JSC::DFG::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator):
2746         * dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h:
2747         * dfg/DFGGraph.h:
2748         (JSC::DFG::Graph::globalThisObjectFor):
2749         * dfg/DFGJITCode.cpp:
2750         (JSC::DFG::JITCode::reconstruct):
2751         * dfg/DFGJITCode.h:
2752         * dfg/DFGJITCompiler.cpp:
2753         (JSC::DFG::JITCompiler::compileExceptionHandlers):
2754         (JSC::DFG::JITCompiler::compileFunction):
2755         * dfg/DFGOSREntry.cpp:
2756         (JSC::DFG::prepareOSREntry):
2757         (JSC::DFG::prepareCatchOSREntry):
2758         * dfg/DFGOSREntry.h:
2759         (JSC::DFG::prepareOSREntry):
2760         * dfg/DFGOSRExit.cpp:
2761         (JSC::DFG::createClonedArgumentsDuringExit):
2762         (JSC::DFG::OSRExit::executeOSRExit):
2763         (JSC::DFG::adjustAndJumpToTarget):
2764         (JSC::DFG::printOSRExit):
2765         (JSC::DFG::OSRExit::emitRestoreArguments):
2766         (JSC::DFG::OSRExit::compileOSRExit):
2767         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
2768         * dfg/DFGOSRExit.h:
2769         * dfg/DFGOSRExitCompilerCommon.cpp:
2770         (JSC::DFG::osrWriteBarrier):
2771         (JSC::DFG::adjustAndJumpToTarget):
2772         * dfg/DFGOperations.cpp:
2773         (JSC::DFG::putByVal):
2774         (JSC::DFG::putByValInternal):
2775         (JSC::DFG::putByValCellInternal):
2776         (JSC::DFG::putByValCellStringInternal):
2777         (JSC::DFG::newTypedArrayWithSize):
2778         (JSC::DFG::putWithThis):
2779         (JSC::DFG::binaryOp):
2780         (JSC::DFG::bitwiseBinaryOp):
2781         (JSC::DFG::getByValObject):
2782         * dfg/DFGOperations.h:
2783         * dfg/DFGSaneStringGetByValSlowPathGenerator.h:
2784         (JSC::DFG::SaneStringGetByValSlowPathGenerator::SaneStringGetByValSlowPathGenerator):
2785         * dfg/DFGSpeculativeJIT.cpp:
2786         (JSC::DFG::SpeculativeJIT::compileInById):
2787         (JSC::DFG::SpeculativeJIT::compileInByVal):
2788         (JSC::DFG::SpeculativeJIT::compileDeleteById):
2789         (JSC::DFG::SpeculativeJIT::compileDeleteByVal):
2790         (JSC::DFG::SpeculativeJIT::compilePushWithScope):
2791         (JSC::DFG::SpeculativeJIT::compileStringSlice):
2792         (JSC::DFG::SpeculativeJIT::compileToLowerCase):
2793         (JSC::DFG::SpeculativeJIT::compileCheckTraps):
2794         (JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
2795         (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
2796         (JSC::DFG::SpeculativeJIT::compileFromCharCode):
2797         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
2798         (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithString):
2799         (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithSymbol):
2800         (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithString):
2801         (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithSymbol):
2802         (JSC::DFG::SpeculativeJIT::compileGetByValWithThis):
2803         (JSC::DFG::SpeculativeJIT::compileParseInt):
2804         (JSC::DFG::SpeculativeJIT::compileInstanceOfForCells):
2805         (JSC::DFG::SpeculativeJIT::compileValueBitNot):
2806         (JSC::DFG::SpeculativeJIT::emitUntypedBitOp):
2807         (JSC::DFG::SpeculativeJIT::compileValueBitwiseOp):
2808         (JSC::DFG::SpeculativeJIT::emitUntypedRightShiftBitOp):
2809         (JSC::DFG::SpeculativeJIT::compileValueLShiftOp):
2810         (JSC::DFG::SpeculativeJIT::compileValueBitRShift):
2811         (JSC::DFG::SpeculativeJIT::compileValueAdd):
2812         (JSC::DFG::SpeculativeJIT::compileValueSub):
2813         (JSC::DFG::SpeculativeJIT::compileMathIC):
2814         (JSC::DFG::SpeculativeJIT::compileInstanceOfCustom):
2815         (JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor):
2816         (JSC::DFG::SpeculativeJIT::compileArithAbs):
2817         (JSC::DFG::SpeculativeJIT::compileArithClz32):
2818         (JSC::DFG::SpeculativeJIT::compileArithDoubleUnaryOp):
2819         (JSC::DFG::SpeculativeJIT::compileValueMul):
2820         (JSC::DFG::SpeculativeJIT::compileValueDiv):
2821         (JSC::DFG::SpeculativeJIT::compileArithFRound):
2822         (JSC::DFG::SpeculativeJIT::compileValueMod):
2823         (JSC::DFG::SpeculativeJIT::compileArithRounding):
2824         (JSC::DFG::SpeculativeJIT::compileArithSqrt):
2825         (JSC::DFG::SpeculativeJIT::compileValuePow):
2826         (JSC::DFG::SpeculativeJIT::compileStringEquality):
2827         (JSC::DFG::SpeculativeJIT::compileStringCompare):
2828         (JSC::DFG::SpeculativeJIT::compileSameValue):
2829         (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
2830         (JSC::DFG::SpeculativeJIT::compileGetByValOnDirectArguments):
2831         (JSC::DFG::SpeculativeJIT::compileNewFunction):
2832         (JSC::DFG::SpeculativeJIT::compileSetFunctionName):
2833         (JSC::DFG::SpeculativeJIT::compileLoadVarargs):
2834         (JSC::DFG::SpeculativeJIT::compileCreateActivation):
2835         (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
2836         (JSC::DFG::SpeculativeJIT::compileCreateScopedArguments):
2837         (JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):
2838         (JSC::DFG::SpeculativeJIT::compileCreateRest):
2839         (JSC::DFG::SpeculativeJIT::compileSpread):
2840         (JSC::DFG::SpeculativeJIT::compileNewArray):
2841         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
2842         (JSC::DFG::SpeculativeJIT::compileArraySlice):
2843         (JSC::DFG::SpeculativeJIT::compileArrayIndexOf):
2844         (JSC::DFG::SpeculativeJIT::compileArrayPush):
2845         (JSC::DFG::SpeculativeJIT::compileNotifyWrite):
2846         (JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
2847         (JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
2848         (JSC::DFG::SpeculativeJIT::compileCallDOM):
2849         (JSC::DFG::SpeculativeJIT::compileCallDOMGetter):
2850         (JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOrStringValueOf):
2851         (JSC::DFG::SpeculativeJIT::compileNumberToStringWithValidRadixConstant):
2852         (JSC::DFG::SpeculativeJIT::compileNumberToStringWithRadix):
2853         (JSC::DFG::SpeculativeJIT::compileNewStringObject):
2854         (JSC::DFG::SpeculativeJIT::compileNewSymbol):
2855         (JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):
2856         (JSC::DFG::SpeculativeJIT::compileNewRegexp):
2857         (JSC::DFG::SpeculativeJIT::emitSwitchImm):
2858         (JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
2859         (JSC::DFG::SpeculativeJIT::emitSwitchChar):
2860         (JSC::DFG::SpeculativeJIT::emitSwitchStringOnString):
2861         (JSC::DFG::SpeculativeJIT::emitSwitchString):
2862         (JSC::DFG::SpeculativeJIT::compileStoreBarrier):
2863         (JSC::DFG::SpeculativeJIT::compilePutAccessorById):
2864         (JSC::DFG::SpeculativeJIT::compilePutGetterSetterById):
2865         (JSC::DFG::SpeculativeJIT::compileResolveScope):
2866         (JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):
2867         (JSC::DFG::SpeculativeJIT::compileGetDynamicVar):
2868         (JSC::DFG::SpeculativeJIT::compilePutDynamicVar):
2869         (JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):
2870         (JSC::DFG::SpeculativeJIT::compileStringReplace):
2871         (JSC::DFG::SpeculativeJIT::compileDefineDataProperty):
2872         (JSC::DFG::SpeculativeJIT::compileDefineAccessorProperty):
2873         (JSC::DFG::SpeculativeJIT::compileThrow):
2874         (JSC::DFG::SpeculativeJIT::compileThrowStaticError):
2875         (JSC::DFG::SpeculativeJIT::compileHasGenericProperty):
2876         (JSC::DFG::SpeculativeJIT::compileToIndexString):
2877         (JSC::DFG::SpeculativeJIT::compilePutByIdWithThis):
2878         (JSC::DFG::SpeculativeJIT::compileHasStructureProperty):
2879         (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
2880         (JSC::DFG::SpeculativeJIT::compileStrCat):
2881         (JSC::DFG::SpeculativeJIT::compileNewArrayBuffer):
2882         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSize):
2883         (JSC::DFG::SpeculativeJIT::compileNewTypedArray):
2884         (JSC::DFG::SpeculativeJIT::compileToThis):
2885         (JSC::DFG::SpeculativeJIT::compileObjectKeys):
2886         (JSC::DFG::SpeculativeJIT::compileObjectCreate):
2887         (JSC::DFG::SpeculativeJIT::compileCreateThis):
2888         (JSC::DFG::SpeculativeJIT::compileCreatePromise):
2889         (JSC::DFG::SpeculativeJIT::compileCreateInternalFieldObject):
2890         (JSC::DFG::SpeculativeJIT::compileNewObject):
2891         (JSC::DFG::SpeculativeJIT::compileNewPromise):
2892         (JSC::DFG::SpeculativeJIT::compileNewInternalFieldObject):
2893         (JSC::DFG::SpeculativeJIT::compileToPrimitive):
2894         (JSC::DFG::SpeculativeJIT::compileSetAdd):
2895         (JSC::DFG::SpeculativeJIT::compileMapSet):
2896         (JSC::DFG::SpeculativeJIT::compileWeakSetAdd):
2897         (JSC::DFG::SpeculativeJIT::compileWeakMapSet):
2898         (JSC::DFG::SpeculativeJIT::compileGetPrototypeOf):
2899         (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
2900         (JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):
2901         (JSC::DFG::SpeculativeJIT::compileGetDirectPname):
2902         (JSC::DFG::SpeculativeJIT::compileProfileType):
2903         (JSC::DFG::SpeculativeJIT::cachedPutById):
2904         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
2905         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
2906         (JSC::DFG::SpeculativeJIT::compileBigIntEquality):
2907         (JSC::DFG::SpeculativeJIT::compileMakeRope):
2908         * dfg/DFGSpeculativeJIT.h:
2909         (JSC::DFG::SpeculativeJIT::callOperationWithCallFrameRollbackOnException):
2910         (JSC::DFG::SpeculativeJIT::prepareForExternalCall):
2911         * dfg/DFGSpeculativeJIT32_64.cpp:
2912         (JSC::DFG::SpeculativeJIT::cachedGetById):
2913         (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
2914         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
2915         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
2916         (JSC::DFG::SpeculativeJIT::emitCall):
2917         (JSC::DFG::SpeculativeJIT::compileContiguousPutByVal):
2918         (JSC::DFG::SpeculativeJIT::compile):
2919         * dfg/DFGSpeculativeJIT64.cpp:
2920         (JSC::DFG::SpeculativeJIT::cachedGetById):
2921         (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
2922         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
2923         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
2924         (JSC::DFG::SpeculativeJIT::emitCall):
2925         (JSC::DFG::SpeculativeJIT::compile):
2926         * dynbench.cpp:
2927         (main):
2928         * ftl/FTLCompile.cpp:
2929         (JSC::FTL::compile):
2930         * ftl/FTLGeneratedFunction.h:
2931         * ftl/FTLLink.cpp:
2932         (JSC::FTL::link):
2933         * ftl/FTLLowerDFGToB3.cpp:
2934         (JSC::FTL::DFG::LowerDFGToB3::lower):
2935         (JSC::FTL::DFG::LowerDFGToB3::compileToObjectOrCallObjectConstructor):
2936         (JSC::FTL::DFG::LowerDFGToB3::compileToThis):
2937         (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
2938         (JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
2939         (JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
2940         (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
2941         (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
2942         (JSC::FTL::DFG::LowerDFGToB3::compileStrCat):
2943         (JSC::FTL::DFG::LowerDFGToB3::compileArithClz32):
2944         (JSC::FTL::DFG::LowerDFGToB3::compileValueDiv):
2945         (JSC::FTL::DFG::LowerDFGToB3::compileValueMod):
2946         (JSC::FTL::DFG::LowerDFGToB3::compileArithAbs):
2947         (JSC::FTL::DFG::LowerDFGToB3::compileArithUnary):
2948         (JSC::FTL::DFG::LowerDFGToB3::compileValuePow):
2949         (JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
2950         (JSC::FTL::DFG::LowerDFGToB3::compileArithFloor):
2951         (JSC::FTL::DFG::LowerDFGToB3::compileArithCeil):
2952         (JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc):
2953         (JSC::FTL::DFG::LowerDFGToB3::compileArithSqrt):
2954         (JSC::FTL::DFG::LowerDFGToB3::compileArithFRound):
2955         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot):
2956         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitAnd):
2957         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitOr):
2958         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitXor):
2959         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitRShift):
2960         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift):
2961         (JSC::FTL::DFG::LowerDFGToB3::compileArrayify):
2962         (JSC::FTL::DFG::LowerDFGToB3::compileGetById):
2963         (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
2964         (JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis):
2965         (JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis):
2966         (JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis):
2967         (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
2968         (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsIsLockFree):
2969         (JSC::FTL::DFG::LowerDFGToB3::compileDefineDataProperty):
2970         (JSC::FTL::DFG::LowerDFGToB3::compileDefineAccessorProperty):
2971         (JSC::FTL::DFG::LowerDFGToB3::compilePutById):
2972         (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
2973         (JSC::FTL::DFG::LowerDFGToB3::compileGetPrototypeOf):
2974         (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
2975         (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
2976         (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById):
2977         (JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById):
2978         (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal):
2979         (JSC::FTL::DFG::LowerDFGToB3::compileDeleteById):
2980         (JSC::FTL::DFG::LowerDFGToB3::compileDeleteByVal):
2981         (JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):
2982         (JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf):
2983         (JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
2984         (JSC::FTL::DFG::LowerDFGToB3::compilePushWithScope):
2985         (JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
2986         (JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
2987         (JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
2988         (JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments):
2989         (JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments):
2990         (JSC::FTL::DFG::LowerDFGToB3::compileCreateRest):
2991         (JSC::FTL::DFG::LowerDFGToB3::compileObjectKeys):
2992         (JSC::FTL::DFG::LowerDFGToB3::compileObjectCreate):
2993         (JSC::FTL::DFG::LowerDFGToB3::compileNewPromise):
2994         (JSC::FTL::DFG::LowerDFGToB3::compileNewInternalFieldObject):
2995         (JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
2996         (JSC::FTL::DFG::LowerDFGToB3::compileNewSymbol):
2997         (JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
2998         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
2999         (JSC::FTL::DFG::LowerDFGToB3::compileCreateThis):
3000         (JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
3001         (JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject):
3002         (JSC::FTL::DFG::LowerDFGToB3::compileSpread):
3003         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
3004         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
3005         (JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
3006         (JSC::FTL::DFG::LowerDFGToB3::compileToNumber):
3007         (JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf):
3008         (JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive):
3009         (JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
3010         (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
3011         (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
3012         (JSC::FTL::DFG::LowerDFGToB3::compileNotifyWrite):
3013         (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
3014         (JSC::FTL::DFG::LowerDFGToB3::compileSameValue):
3015         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
3016         (JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
3017         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
3018         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
3019         (JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
3020         (JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs):
3021         (JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
3022         (JSC::FTL::DFG::LowerDFGToB3::compileThrow):
3023         (JSC::FTL::DFG::LowerDFGToB3::compileThrowStaticError):
3024         (JSC::FTL::DFG::LowerDFGToB3::mapHashString):
3025         (JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
3026         (JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
3027         (JSC::FTL::DFG::LowerDFGToB3::compileSetAdd):
3028         (JSC::FTL::DFG::LowerDFGToB3::compileMapSet):
3029         (JSC::FTL::DFG::LowerDFGToB3::compileWeakSetAdd):
3030         (JSC::FTL::DFG::LowerDFGToB3::compileWeakMapSet):
3031         (JSC::FTL::DFG::LowerDFGToB3::compileInByVal):
3032         (JSC::FTL::DFG::LowerDFGToB3::compileInById):
3033         (JSC::FTL::DFG::LowerDFGToB3::compileHasOwnProperty):
3034         (JSC::FTL::DFG::LowerDFGToB3::compileParseInt):
3035         (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
3036         (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom):
3037         (JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
3038         (JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty):
3039         (JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty):
3040         (JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
3041         (JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator):
3042         (JSC::FTL::DFG::LowerDFGToB3::compileToIndexString):
3043         (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
3044         (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
3045         (JSC::FTL::DFG::LowerDFGToB3::compileCheckTraps):
3046         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
3047         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExecNonGlobalOrSticky):
3048         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFastGlobal):
3049         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
3050         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFast):
3051         (JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
3052         (JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName):
3053         (JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
3054         (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
3055         (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
3056         (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
3057         (JSC::FTL::DFG::LowerDFGToB3::getById):
3058         (JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):
3059         (JSC::FTL::DFG::LowerDFGToB3::compare):
3060         (JSC::FTL::DFG::LowerDFGToB3::compileStringSlice):
3061         (JSC::FTL::DFG::LowerDFGToB3::compileToLowerCase):
3062         (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithRadix):
3063         (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithValidRadixConstant):
3064         (JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval):
3065         (JSC::FTL::DFG::LowerDFGToB3::compileResolveScope):
3066         (JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar):
3067         (JSC::FTL::DFG::LowerDFGToB3::compilePutDynamicVar):
3068         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOM):
3069         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
3070         (JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare):
3071         (JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
3072         (JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet):
3073         (JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):
3074         (JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet):
3075         (JSC::FTL::DFG::LowerDFGToB3::allocateObject):
3076         (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
3077         (JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket):
3078         (JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds):
3079         (JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):
3080         (JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):
3081         (JSC::FTL::DFG::LowerDFGToB3::callCheck):
3082         * ftl/FTLOSREntry.cpp:
3083         (JSC::FTL::prepareOSREntry):
3084         * ftl/FTLOSREntry.h:
3085         * ftl/FTLOSRExitCompiler.cpp:
3086         (JSC::FTL::compileStub):
3087         (JSC::FTL::compileFTLOSRExit):
3088         * ftl/FTLOSRExitCompiler.h:
3089         * ftl/FTLOperations.cpp:
3090         (JSC::FTL::operationPopulateObjectInOSR):
3091         (JSC::FTL::operationMaterializeObjectInOSR):
3092         (JSC::FTL::compileFTLLazySlowPath):
3093         * ftl/FTLOperations.h:
3094         * ftl/FTLSlowPathCall.h:
3095         (JSC::FTL::callOperation):
3096         * generator/Metadata.rb:
3097         * heap/Handle.h:
3098         * heap/HeapCell.h:
3099         * heap/HeapSnapshotBuilder.cpp:
3100         (JSC::HeapSnapshotBuilder::json):
3101         * inspector/ConsoleMessage.cpp:
3102         (Inspector::ConsoleMessage::ConsoleMessage):
3103         (Inspector::ConsoleMessage::autogenerateMetadata):
3104         (Inspector::ConsoleMessage::addToFrontend):
3105         (Inspector::ConsoleMessage::globalObject const):
3106         (Inspector::ConsoleMessage::scriptState const): Deleted.
3107         * inspector/ConsoleMessage.h:
3108         * inspector/InjectedScript.cpp:
3109         (Inspector::InjectedScript::wrapCallFrames const):
3110         (Inspector::InjectedScript::wrapObject const):
3111         (Inspector::InjectedScript::wrapJSONString const):
3112         (Inspector::InjectedScript::wrapTable const):
3113         (Inspector::InjectedScript::previewValue const):
3114         (Inspector::InjectedScript::arrayFromVector):
3115         * inspector/InjectedScriptBase.cpp:
3116         (Inspector::InjectedScriptBase::hasAccessToInspectedScriptState const):
3117         (Inspector::InjectedScriptBase::callFunctionWithEvalEnabled const):
3118         (Inspector::InjectedScriptBase::makeCall):
3119         (Inspector::InjectedScriptBase::makeAsyncCall):
3120         * inspector/InjectedScriptBase.h:
3121         * inspector/InjectedScriptHost.cpp:
3122         (Inspector::InjectedScriptHost::wrapper):
3123         * inspector/InjectedScriptHost.h:
3124         * inspector/InjectedScriptManager.cpp:
3125         (Inspector::InjectedScriptManager::injectedScriptIdFor):
3126         (Inspector::InjectedScriptManager::createInjectedScript):
3127         (Inspector::InjectedScriptManager::injectedScriptFor):
3128         * inspector/InjectedScriptManager.h:
3129         * inspector/InjectedScriptModule.cpp:
3130         (Inspector::InjectedScriptModule::ensureInjected):
3131         * inspector/InjectedScriptModule.h:
3132         * inspector/InspectorEnvironment.h:
3133         * inspector/JSGlobalObjectConsoleClient.cpp:
3134         (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel):
3135         (Inspector::JSGlobalObjectConsoleClient::count):
3136         (Inspector::JSGlobalObjectConsoleClient::countReset):
3137         (Inspector::JSGlobalObjectConsoleClient::profile):
3138         (Inspector::JSGlobalObjectConsoleClient::profileEnd):
3139         (Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot):
3140         (Inspector::JSGlobalObjectConsoleClient::time):
3141         (Inspector::JSGlobalObjectConsoleClient::timeLog):
3142         (Inspector::JSGlobalObjectConsoleClient::timeEnd):
3143         (Inspector::JSGlobalObjectConsoleClient::timeStamp):
3144         (Inspector::JSGlobalObjectConsoleClient::record):
3145         (Inspector::JSGlobalObjectConsoleClient::recordEnd):
3146         (Inspector::JSGlobalObjectConsoleClient::screenshot):
3147         * inspector/JSGlobalObjectConsoleClient.h:
3148         * inspector/JSGlobalObjectInspectorController.cpp:
3149         (Inspector::JSGlobalObjectInspectorController::reportAPIException):
3150         * inspector/JSGlobalObjectInspectorController.h:
3151         * inspector/JSGlobalObjectScriptDebugServer.h:
3152         * inspector/JSInjectedScriptHost.cpp:
3153         (Inspector::JSInjectedScriptHost::evaluate const):
3154         (Inspector::JSInjectedScriptHost::savedResultAlias const):
3155         (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
3156         (Inspector::JSInjectedScriptHost::internalConstructorName):
3157         (Inspector::JSInjectedScriptHost::isHTMLAllCollection):
3158         (Inspector::JSInjectedScriptHost::isPromiseRejectedWithNativeGetterTypeError):
3159         (Inspector::JSInjectedScriptHost::subtype):
3160         (Inspector::JSInjectedScriptHost::functionDetails):
3161         (Inspector::constructInternalProperty):
3162         (Inspector::JSInjectedScriptHost::getInternalProperties):
3163         (Inspector::JSInjectedScriptHost::proxyTargetValue):
3164         (Inspector::JSInjectedScriptHost::weakMapSize):
3165         (Inspector::JSInjectedScriptHost::weakMapEntries):
3166         (Inspector::JSInjectedScriptHost::weakSetSize):
3167         (Inspector::JSInjectedScriptHost::weakSetEntries):
3168         (Inspector::cloneArrayIteratorObject):
3169         (Inspector::cloneMapIteratorObject):
3170         (Inspector::cloneSetIteratorObject):
3171         (Inspector::JSInjectedScriptHost::iteratorEntries):
3172         (Inspector::checkForbiddenPrototype):
3173         (Inspector::JSInjectedScriptHost::queryInstances):
3174         (Inspector::JSInjectedScriptHost::queryHolders):
3175         * inspector/JSInjectedScriptHost.h:
3176         * inspector/JSInjectedScriptHostPrototype.cpp:
3177         (Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
3178         (Inspector::jsInjectedScriptHostPrototypeAttributeSavedResultAlias):
3179         (Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
3180         (Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
3181         (Inspector::jsInjectedScriptHostPrototypeFunctionIsPromiseRejectedWithNativeGetterTypeError):
3182         (Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
3183         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
3184         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
3185         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
3186         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
3187         (Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
3188         (Inspector::jsInjectedScriptHostPrototypeFunctionQueryInstances):
3189         (Inspector::jsInjectedScriptHostPrototypeFunctionQueryHolders):
3190         (Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
3191         (Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
3192         (Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
3193         (Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):
3194         * inspector/JSJavaScriptCallFrame.cpp:
3195         (Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
3196         (Inspector::valueForScopeLocation):
3197         (Inspector::JSJavaScriptCallFrame::scopeDescriptions):
3198         (Inspector::JSJavaScriptCallFrame::caller const):
3199         (Inspector::JSJavaScriptCallFrame::sourceID const):
3200         (Inspector::JSJavaScriptCallFrame::line const):
3201         (Inspector::JSJavaScriptCallFrame::column const):
3202         (Inspector::JSJavaScriptCallFrame::functionName const):
3203         (Inspector::JSJavaScriptCallFrame::scopeChain const):
3204         (Inspector::JSJavaScriptCallFrame::thisObject const):
3205         (Inspector::JSJavaScriptCallFrame::isTailDeleted const):
3206         (Inspector::JSJavaScriptCallFrame::type const):
3207         (Inspector::toJS):
3208         * inspector/JSJavaScriptCallFrame.h:
3209         * inspector/JSJavaScriptCallFramePrototype.cpp:
3210         (Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
3211         (Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
3212         (Inspector::jsJavaScriptCallFrameAttributeCaller):
3213         (Inspector::jsJavaScriptCallFrameAttributeSourceID):
3214         (Inspector::jsJavaScriptCallFrameAttributeLine):
3215         (Inspector::jsJavaScriptCallFrameAttributeColumn):
3216         (Inspector::jsJavaScriptCallFrameAttributeFunctionName):
3217         (Inspector::jsJavaScriptCallFrameAttributeScopeChain):
3218         (Inspector::jsJavaScriptCallFrameAttributeThisObject):
3219         (Inspector::jsJavaScriptCallFrameAttributeType):
3220         (Inspector::jsJavaScriptCallFrameIsTailDeleted):
3221         * inspector/JavaScriptCallFrame.h:
3222         (Inspector::JavaScriptCallFrame::deprecatedVMEntryGlobalObject const):
3223         (Inspector::JavaScriptCallFrame::vmEntryGlobalObject const): Deleted.
3224         * inspector/ScriptArguments.cpp:
3225         (Inspector::ScriptArguments::create):
3226         (Inspector::ScriptArguments::ScriptArguments):
3227         (Inspector::ScriptArguments::globalObject const):
3228         (Inspector::ScriptArguments::getFirstArgumentAsString const):
3229         (Inspector::ScriptArguments::isEqual const):
3230         (Inspector::ScriptArguments::globalState const): Deleted.
3231         * inspector/ScriptArguments.h:
3232         * inspector/ScriptCallStackFactory.cpp:
3233         (Inspector::createScriptCallStack):
3234         (Inspector::createScriptCallStackForConsole):
3235         (Inspector::extractSourceInformationFromException):
3236         (Inspector::createScriptCallStackFromException):
3237         (Inspector::createScriptArguments):
3238         * inspector/ScriptCallStackFactory.h:
3239         * inspector/ScriptDebugListener.h:
3240         * inspector/ScriptDebugServer.cpp:
3241         (Inspector::ScriptDebugServer::evaluateBreakpointAction):
3242         (Inspector::ScriptDebugServer::sourceParsed):
3243         (Inspector::ScriptDebugServer::handleExceptionInBreakpointCondition const):
3244         (Inspector::ScriptDebugServer::handlePause):
3245         (Inspector::ScriptDebugServer::exceptionOrCaughtValue):
3246         * inspector/ScriptDebugServer.h:
3247         * inspector/agents/InspectorAuditAgent.cpp:
3248         (Inspector::InspectorAuditAgent::setup):
3249         (Inspector::InspectorAuditAgent::populateAuditObject):
3250         * inspector/agents/InspectorAuditAgent.h:
3251         * inspector/agents/InspectorConsoleAgent.cpp:
3252         (Inspector::InspectorConsoleAgent::startTiming):
3253         (Inspector::InspectorConsoleAgent::logTiming):
3254         (Inspector::InspectorConsoleAgent::stopTiming):
3255         (Inspector::InspectorConsoleAgent::count):
3256         (Inspector::InspectorConsoleAgent::countReset):
3257         * inspector/agents/InspectorConsoleAgent.h:
3258         * inspector/agents/InspectorDebuggerAgent.cpp:
3259         (Inspector::InspectorDebuggerAgent::didScheduleAsyncCall):
3260         (Inspector::InspectorDebuggerAgent::resume):
3261         (Inspector::InspectorDebuggerAgent::didPause):
3262         (Inspector::InspectorDebuggerAgent::breakpointActionProbe):
3263         (Inspector::InspectorDebuggerAgent::didContinue):
3264         (Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState):
3265         (Inspector::InspectorDebuggerAgent::assertPaused):
3266         * inspector/agents/InspectorDebuggerAgent.h:
3267         * inspector/agents/InspectorHeapAgent.cpp:
3268         (Inspector::InspectorHeapAgent::snapshot):
3269         (Inspector::InspectorHeapAgent::getPreview):
3270         (Inspector::InspectorHeapAgent::getRemoteObject):
3271         * inspector/agents/JSGlobalObjectAuditAgent.cpp:
3272         (Inspector::JSGlobalObjectAuditAgent::injectedScriptForEval):
3273         * inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
3274         (Inspector::JSGlobalObjectDebuggerAgent::injectedScriptForEval):
3275         (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog):
3276         * inspector/agents/JSGlobalObjectDebuggerAgent.h:
3277         * inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
3278         (Inspector::JSGlobalObjectRuntimeAgent::injectedScriptForEval):
3279         * interpreter/AbstractPC.cpp:
3280         (JSC::AbstractPC::AbstractPC):
3281         * interpreter/AbstractPC.h:
3282         * interpreter/CachedCall.h:
3283         (JSC::CachedCall::CachedCall):
3284         * interpreter/CallFrame.cpp:
3285         (JSC::CallFrame::initDeprecatedCallFrameForDebugger):
3286         (JSC::CallFrame::wasmAwareLexicalGlobalObject):
3287         (JSC::CallFrame::convertToStackOverflowFrame):
3288         (JSC::ExecState::initGlobalExec): Deleted.
3289         * interpreter/CallFrame.h:
3290         (JSC::CallFrame::isDeprecatedCallFrameForDebugger const):
3291         (JSC::CallFrame::isGlobalExec const): Deleted.
3292         * interpreter/Interpreter.cpp:
3293         (JSC::eval):
3294         (JSC::sizeOfVarargs):
3295         (JSC::sizeFrameForForwardArguments):
3296         (JSC::sizeFrameForVarargs):
3297         (JSC::loadVarargs):
3298         (JSC::setupVarargsFrame):
3299         (JSC::setupVarargsFrameAndSetThis):
3300         (JSC::setupForwardArgumentsFrame):
3301         (JSC::setupForwardArgumentsFrameAndSetThis):
3302         (JSC::notifyDebuggerOfUnwinding):
3303         (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
3304         (JSC::Interpreter::executeProgram):
3305         (JSC::Interpreter::executeCall):
3306         (JSC::Interpreter::executeConstruct):
3307         (JSC::Interpreter::execute):
3308         (JSC::Interpreter::executeModuleProgram):
3309         (JSC::Interpreter::debug):
3310         * interpreter/Interpreter.h:
3311         * interpreter/InterpreterInlines.h:
3312         (JSC::Interpreter::execute):
3313         * interpreter/Register.h:
3314         * interpreter/ShadowChicken.cpp:
3315         (JSC::ShadowChicken::log):
3316         (JSC::ShadowChicken::update):
3317         (JSC::ShadowChicken::functionsOnStack):
3318         * interpreter/ShadowChicken.h:
3319         * interpreter/ShadowChickenInlines.h:
3320         (JSC::ShadowChicken::iterate):
3321         * interpreter/StackVisitor.cpp:
3322         (JSC::StackVisitor::Frame::createArguments):
3323         * interpreter/StackVisitor.h:
3324         * jit/AssemblyHelpers.cpp:
3325         (JSC::AssemblyHelpers::emitDumbVirtualCall):
3326         * jit/AssemblyHelpers.h:
3327         * jit/CCallHelpers.cpp:
3328         (JSC::CCallHelpers::ensureShadowChickenPacket):
3329         * jit/CCallHelpers.h:
3330         (JSC::CCallHelpers::prepareCallOperation):
3331         (JSC::CCallHelpers::setupArguments):
3332         * jit/HostCallReturnValue.cpp:
3333         (JSC::getHostCallReturnValueWithExecState):
3334         * jit/HostCallReturnValue.h:
3335         (JSC::initializeHostCallReturnValue):
3336         * jit/JIT.cpp:
3337         (JSC::JIT::emitEnterOptimizationCheck):
3338         (JSC::JIT::compileWithoutLinking):
3339         (JSC::JIT::privateCompileExceptionHandlers):
3340         * jit/JIT.h:
3341         * jit/JITArithmetic.cpp:
3342         (JSC::JIT::emit_compareAndJumpSlow):
3343         (JSC::JIT::emitMathICFast):
3344         (JSC::JIT::emitMathICSlow):
3345         * jit/JITArithmetic32_64.cpp:
3346         (JSC::JIT::emit_compareAndJumpSlow):
3347         * jit/JITCall.cpp:
3348         (JSC::JIT::compileSetupFrame):
3349         (JSC::JIT::compileCallEval):
3350         (JSC::JIT::compileCallEvalSlowCase):
3351         (JSC::JIT::compileOpCallSlowCase):
3352         * jit/JITCall32_64.cpp:
3353         (JSC::JIT::compileCallEval):
3354         (JSC::JIT::compileCallEvalSlowCase):
3355         (JSC::JIT::compileOpCallSlowCase):
3356         * jit/JITExceptions.cpp:
3357         (JSC::genericUnwind):
3358         * jit/JITExceptions.h:
3359         * jit/JITOpcodes.cpp:
3360         (JSC::JIT::emitSlow_op_new_object):
3361         (JSC::JIT::emitSlow_op_instanceof):
3362         (JSC::JIT::emit_op_set_function_name):
3363         (JSC::JIT::emit_op_throw):
3364         (JSC::JIT::emitSlow_op_jstricteq):
3365         (JSC::JIT::emitSlow_op_jnstricteq):
3366         (JSC::JIT::emit_op_catch):
3367         (JSC::JIT::emit_op_switch_imm):
3368         (JSC::JIT::emit_op_switch_char):
3369         (JSC::JIT::emit_op_switch_string):
3370         (JSC::JIT::emit_op_debug):
3371         (JSC::JIT::emitSlow_op_eq):
3372         (JSC::JIT::emitSlow_op_neq):
3373         (JSC::JIT::emitSlow_op_jeq):
3374         (JSC::JIT::emitSlow_op_jneq):
3375         (JSC::JIT::emitSlow_op_instanceof_custom):
3376         (JSC::JIT::emitSlow_op_loop_hint):
3377         (JSC::JIT::emitSlow_op_check_traps):
3378         (JSC::JIT::emit_op_new_regexp):
3379         (JSC::JIT::emitNewFuncCommon):
3380         (JSC::JIT::emitNewFuncExprCommon):
3381         (JSC::JIT::emit_op_new_array):
3382         (JSC::JIT::emit_op_new_array_with_size):
3383         (JSC::JIT::emitSlow_op_has_indexed_property):
3384         (JSC::JIT::emit_op_profile_type):
3385         * jit/JITOpcodes32_64.cpp:
3386         (JSC::JIT::emitSlow_op_new_object):
3387         (JSC::JIT::emit_op_catch):
3388         (JSC::JIT::emit_op_switch_imm):
3389         (JSC::JIT::emit_op_debug):
3390         (JSC::JIT::emit_op_profile_type):
3391         * jit/JITOperations.cpp:
3392         (JSC::newFunctionCommon):
3393         (JSC::getByVal):
3394         (JSC::tryGetByValOptimize):
3395         (JSC::operationNewFunctionCommon): Deleted.
3396         * jit/JITOperations.h:
3397         * jit/JITOperationsMSVC64.cpp:
3398         (JSC::getHostCallReturnValueWithExecState):
3399         * jit/JITPropertyAccess.cpp:
3400         (JSC::JIT::emitGetByValWithCachedId):
3401         (JSC::JIT::emitSlow_op_get_by_val):
3402         (JSC::JIT::emitPutByValWithCachedId):
3403         (JSC::JIT::emitSlow_op_put_by_val):
3404         (JSC::JIT::emit_op_put_getter_by_id):
3405         (JSC::JIT::emit_op_put_setter_by_id):
3406         (JSC::JIT::emit_op_put_getter_setter_by_id):
3407         (JSC::JIT::emit_op_put_getter_by_val):
3408         (JSC::JIT::emit_op_put_setter_by_val):
3409         (JSC::JIT::emit_op_del_by_id):
3410         (JSC::JIT::emit_op_del_by_val):
3411         (JSC::JIT::emitSlow_op_try_get_by_id):
3412         (JSC::JIT::emitSlow_op_get_by_id_direct):
3413         (JSC::JIT::emitSlow_op_get_by_id):
3414         (JSC::JIT::emitSlow_op_get_by_id_with_this):
3415         (JSC::JIT::emitSlow_op_put_by_id):
3416         (JSC::JIT::emitSlow_op_in_by_id):
3417         (JSC::JIT::emitSlow_op_get_from_scope):
3418         (JSC::JIT::emitSlow_op_put_to_scope):
3419         (JSC::JIT::emitWriteBarrier):
3420         * jit/PolymorphicCallStubRoutine.cpp:
3421         (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
3422         * jit/PolymorphicCallStubRoutine.h:
3423         * jit/Repatch.cpp:
3424         (JSC::forceICFailure):
3425         (JSC::tryCacheGetByID):
3426         (JSC::repatchGetByID):
3427         (JSC::tryCachePutByID):
3428         (JSC::repatchPutByID):
3429         (JSC::tryCacheInByID):
3430         (JSC::repatchInByID):
3431         (JSC::tryCacheInstanceOf):
3432         (JSC::repatchInstanceOf):
3433         (JSC::linkFor):
3434         (JSC::linkDirectFor):
3435         (JSC::linkSlowFor):
3436         (JSC::linkVirtualFor):
3437         (JSC::linkPolymorphicCall):
3438         * jit/Repatch.h:
3439         * jit/SnippetSlowPathCalls.h:
3440         * jit/ThunkGenerators.cpp:
3441         (JSC::throwExceptionFromCallSlowPathGenerator):
3442         (JSC::slowPathFor):
3443         (JSC::nativeForGenerator):
3444         (JSC::boundThisNoArgsFunctionCallGenerator):
3445         * jit/ThunkGenerators.h:
3446         * jsc.cpp:
3447         (GlobalObject::finishCreation):
3448         (GlobalObject::moduleLoaderImportModule):
3449         (GlobalObject::moduleLoaderResolve):
3450         (GlobalObject::moduleLoaderFetch):
3451         (GlobalObject::moduleLoaderCreateImportMetaProperties):
3452         (cStringFromViewWithString):
3453         (printInternal):
3454         (functionPrintStdOut):
3455         (functionPrintStdErr):
3456         (functionDebug):
3457         (functionSleepSeconds):
3458         (functionRun):
3459         (functionRunString):
3460         (functionLoad):
3461         (functionLoadString):
3462         (functionReadFile):
3463         (functionCheckSyntax):
3464         (functionSetSamplingFlags):
3465         (functionClearSamplingFlags):
3466         (functionSetRandomSeed):
3467         (functionNeverInlineFunction):
3468         (functionNoDFG):
3469         (functionNoOSRExitFuzzing):
3470         (functionOptimizeNextInvocation):
3471         (functionNumberOfDFGCompiles):
3472         (functionCallerIsOMGCompiled):
3473         (functionDollarEvalScript):
3474         (functionDollarAgentStart):
3475         (functionDollarAgentReceiveBroadcast):
3476         (functionDollarAgentReport):
3477         (functionDollarAgentSleep):
3478         (functionDollarAgentBroadcast):
3479         (functionFlashHeapAccess):
3480         (functionJSCOptions):
3481         (functionTransferArrayBuffer):
3482         (functionCheckModuleSyntax):
3483         (functionGenerateHeapSnapshot):
3484         (functionSamplingProfilerStackTraces):
3485         (functionAsyncTestStart):
3486         (functionWebAssemblyMemoryMode):
3487         (functionSetUnhandledRejectionCallback):
3488         (dumpException):
3489         (checkUncaughtException):
3490         (checkException):
3491         (runWithOptions):
3492         (runInteractive):
3493         * llint/LLIntExceptions.cpp:
3494         (JSC::LLInt::returnToThrow):
3495         (JSC::LLInt::callToThrow):
3496         * llint/LLIntExceptions.h:
3497         * llint/LLIntSlowPaths.cpp:
3498         (JSC::LLInt::getNonConstantOperand):
3499         (JSC::LLInt::getOperand):
3500         (JSC::LLInt::llint_trace_operand):
3501         (JSC::LLInt::llint_trace_value):
3502         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
3503         (JSC::LLInt::traceFunctionPrologue):
3504         (JSC::LLInt::jitCompileAndSetHeuristics):
3505         (JSC::LLInt::entryOSR):
3506         (JSC::LLInt::setupGetByIdPrototypeCache):
3507         (JSC::LLInt::getByVal):
3508         (JSC::LLInt::handleHostCall):
3509         (JSC::LLInt::setUpCall):
3510         (JSC::LLInt::genericCall):
3511         (JSC::LLInt::varargsSetup):
3512         (JSC::LLInt::commonCallEval):
3513         (JSC::LLInt::llint_throw_stack_overflow_error):
3514         (JSC::LLInt::llint_write_barrier_slow):
3515         * llint/LLIntSlowPaths.h:
3516         * llint/LowLevelInterpreter.asm:
3517         * llint/LowLevelInterpreter.cpp:
3518         (JSC::CLoopRegister::operator CallFrame*):
3519         (JSC::CLoopRegister::operator ExecState*): Deleted.
3520         * parser/ModuleAnalyzer.cpp:
3521         (JSC::ModuleAnalyzer::ModuleAnalyzer):
3522         * parser/ModuleAnalyzer.h:
3523         * parser/ParserError.h:
3524         (JSC::ParserError::toErrorObject):
3525         * profiler/ProfilerBytecode.cpp:
3526         (JSC::Profiler::Bytecode::toJS const):
3527         * profiler/ProfilerBytecode.h:
3528         * profiler/ProfilerBytecodeSequence.cpp:
3529         (JSC::Profiler::BytecodeSequence::addSequenceProperties const):
3530         * profiler/ProfilerBytecodeSequence.h:
3531         * profiler/ProfilerBytecodes.cpp:
3532         (JSC::Profiler::Bytecodes::toJS const):
3533         * profiler/ProfilerBytecodes.h:
3534         * profiler/ProfilerCompilation.cpp:
3535         (JSC::Profiler::Compilation::toJS const):
3536         * profiler/ProfilerCompilation.h:
3537         * profiler/ProfilerCompiledBytecode.cpp:
3538         (JSC::Profiler::CompiledBytecode::toJS const):
3539         * profiler/ProfilerCompiledBytecode.h:
3540         * profiler/ProfilerDatabase.cpp:
3541         (JSC::Profiler::Database::toJS const):
3542         (JSC::Profiler::Database::toJSON const):
3543         * profiler/ProfilerDatabase.h:
3544         * profiler/ProfilerEvent.cpp:
3545         (JSC::Profiler::Event::toJS const):
3546         * profiler/ProfilerEvent.h:
3547         * profiler/ProfilerOSRExit.cpp:
3548         (JSC::Profiler::OSRExit::toJS const):
3549         * profiler/ProfilerOSRExit.h:
3550         * profiler/ProfilerOSRExitSite.cpp:
3551         (JSC::Profiler::OSRExitSite::toJS const):
3552         * profiler/ProfilerOSRExitSite.h:
3553         * profiler/ProfilerOrigin.cpp:
3554         (JSC::Profiler::Origin::toJS const):
3555         * profiler/ProfilerOrigin.h:
3556         * profiler/ProfilerOriginStack.cpp:
3557         (JSC::Profiler::OriginStack::toJS const):
3558         * profiler/ProfilerOriginStack.h:
3559         * profiler/ProfilerProfiledBytecodes.cpp:
3560         (JSC::Profiler::ProfiledBytecodes::toJS const):
3561         * profiler/ProfilerProfiledBytecodes.h:
3562         * profiler/ProfilerUID.cpp:
3563         (JSC::Profiler::UID::toJS const):
3564         * profiler/ProfilerUID.h:
3565         * runtime/AbstractModuleRecord.cpp:
3566         (JSC::AbstractModuleRecord::finishCreation):
3567         (JSC::AbstractModuleRecord::hostResolveImportedModule):
3568         (JSC::AbstractModuleRecord::resolveImport):
3569         (JSC::AbstractModuleRecord::resolveExportImpl):
3570         (JSC::AbstractModuleRecord::resolveExport):
3571         (JSC::getExportedNames):
3572         (JSC::AbstractModuleRecord::getModuleNamespace):
3573         (JSC::AbstractModuleRecord::link):
3574         (JSC::AbstractModuleRecord::evaluate):
3575         * runtime/AbstractModuleRecord.h:
3576         * runtime/ArgList.h:
3577         (JSC::ArgList::ArgList):
3578         * runtime/ArrayBufferView.h:
3579         * runtime/ArrayConstructor.cpp:
3580         (JSC::constructArrayWithSizeQuirk):
3581         (JSC::constructWithArrayConstructor):
3582         (JSC::callArrayConstructor):
3583         (JSC::isArraySlowInline):
3584         (JSC::isArraySlow):
3585         (JSC::arrayConstructorPrivateFuncIsArraySlow):
3586         * runtime/ArrayConstructor.h:
3587         (JSC::isArray):
3588         * runtime/ArrayPrototype.cpp:
3589         (JSC::ArrayPrototype::finishCreation):
3590         (JSC::getProperty):
3591         (JSC::putLength):
3592         (JSC::setLength):
3593         (JSC::speciesWatchpointIsValid):
3594         (JSC::arrayProtoFuncSpeciesCreate):
3595         (JSC::argumentClampedIndexFromStartOrEnd):
3596         (JSC::shift):
3597         (JSC::unshift):
3598         (JSC::fastJoin):
3599         (JSC::arrayProtoFuncToString):
3600         (JSC::arrayProtoFuncToLocaleString):
3601         (JSC::slowJoin):
3602         (JSC::arrayProtoFuncJoin):
3603         (JSC::arrayProtoFuncPop):
3604         (JSC::arrayProtoFuncPush):
3605         (JSC::arrayProtoFuncReverse):
3606         (JSC::arrayProtoFuncShift):
3607         (JSC::arrayProtoFuncSlice):
3608         (JSC::arrayProtoFuncSplice):
3609         (JSC::arrayProtoFuncUnShift):
3610         (JSC::fastIndexOf):
3611         (JSC::arrayProtoFuncIndexOf):
3612         (JSC::arrayProtoFuncLastIndexOf):
3613         (JSC::moveElements):
3614         (JSC::concatAppendOne):
3615         (JSC::arrayProtoPrivateFuncConcatMemcpy):
3616         (JSC::arrayProtoPrivateFuncAppendMemcpy):
3617         * runtime/AsyncFunctionConstructor.cpp:
3618         (JSC::callAsyncFunctionConstructor):
3619         (JSC::constructAsyncFunctionConstructor):
3620         * runtime/AsyncGeneratorFunctionConstructor.cpp:
3621         (JSC::callAsyncGeneratorFunctionConstructor):
3622         (JSC::constructAsyncGeneratorFunctionConstructor):
3623         * runtime/AtomicsObject.cpp:
3624         (JSC::atomicsFuncAdd):
3625         (JSC::atomicsFuncAnd):
3626         (JSC::atomicsFuncCompareExchange):
3627         (JSC::atomicsFuncExchange):
3628         (JSC::atomicsFuncIsLockFree):
3629         (JSC::atomicsFuncLoad):
3630         (JSC::atomicsFuncOr):
3631         (JSC::atomicsFuncStore):
3632         (JSC::atomicsFuncSub):
3633         (JSC::atomicsFuncWait):
3634         (JSC::atomicsFuncWake):
3635         (JSC::atomicsFuncXor):
3636         (JSC::operationAtomicsAdd):
3637         (JSC::operationAtomicsAnd):
3638         (JSC::operationAtomicsCompareExchange):
3639         (JSC::operationAtomicsExchange):
3640         (JSC::operationAtomicsIsLockFree):
3641         (JSC::operationAtomicsLoad):
3642         (JSC::operationAtomicsOr):
3643         (JSC::operationAtomicsStore):
3644         (JSC::operationAtomicsSub):
3645         (JSC::operationAtomicsXor):
3646         * runtime/AtomicsObject.h:
3647         * runtime/BigIntConstructor.cpp:
3648         (JSC::toBigInt):
3649         (JSC::callBigIntConstructor):
3650         * runtime/BigIntObject.cpp:
3651         (JSC::BigIntObject::toStringName):
3652         (JSC::BigIntObject::defaultValue):
3653         * runtime/BigIntObject.h:
3654         * runtime/BigIntPrototype.cpp:
3655         (JSC::bigIntProtoFuncToStringImpl):
3656         (JSC::bigIntProtoFuncValueOf):
3657         * runtime/BooleanConstructor.cpp:
3658         (JSC::callBooleanConstructor):
3659         (JSC::constructWithBooleanConstructor):
3660         (JSC::constructBooleanFromImmediateBoolean):
3661         * runtime/BooleanConstructor.h:
3662         * runtime/BooleanPrototype.cpp:
3663         (JSC::booleanProtoFuncToString):
3664         (JSC::booleanProtoFuncValueOf):
3665         * runtime/CallData.cpp:
3666         (JSC::call):
3667         (JSC::profiledCall):
3668         * runtime/CallData.h:
3669         * runtime/ClassInfo.h:
3670         * runtime/ClonedArguments.cpp:
3671         (JSC::ClonedArguments::createEmpty):
3672         (JSC::ClonedArguments::createWithInlineFrame):
3673         (JSC::ClonedArguments::createWithMachineFrame):
3674         (JSC::ClonedArguments::createByCopyingFrom):
3675         (JSC::ClonedArguments::getOwnPropertySlot):
3676         (JSC::ClonedArguments::getOwnPropertyNames):
3677         (JSC::ClonedArguments::put):
3678         (JSC::ClonedArguments::deleteProperty):
3679         (JSC::ClonedArguments::defineOwnProperty):
3680         (JSC::ClonedArguments::materializeSpecials):
3681         (JSC::ClonedArguments::materializeSpecialsIfNecessary):
3682         * runtime/ClonedArguments.h:
3683         * runtime/CommonSlowPaths.cpp:
3684         (JSC::throwArityCheckStackOverflowError):
3685         (JSC::SLOW_PATH_DECL):
3686         (JSC::createInternalFieldObject):
3687         (JSC::updateArithProfileForBinaryArithOp):
3688         * runtime/CommonSlowPaths.h:
3689         (JSC::CommonSlowPaths::codeBlockFromCallFrameCallee):
3690         (JSC::CommonSlowPaths::arityCheckFor):
3691         (JSC::CommonSlowPaths::opInByVal):
3692         (JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
3693         (JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal):
3694         (JSC::CommonSlowPaths::putDirectWithReify):
3695         (JSC::CommonSlowPaths::putDirectAccessorWithReify):
3696         * runtime/Completion.cpp:
3697         (JSC::checkSyntax):
3698         (JSC::checkModuleSyntax):
3699         (JSC::evaluate):
3700         (JSC::profiledEvaluate):
3701         (JSC::evaluateWithScopeExtension):
3702         (JSC::rejectPromise):
3703         (JSC::loadAndEvaluateModule):
3704         (JSC::loadModule):
3705         (JSC::linkAndEvaluateModule):
3706         (JSC::importModule):
3707         * runtime/Completion.h:
3708         (JSC::evaluate):
3709         (JSC::profiledEvaluate):
3710         * runtime/ConsoleClient.cpp:
3711         (JSC::ConsoleClient::printConsoleMessageWithArguments):
3712         (JSC::ConsoleClient::internalMessageWithTypeAndLevel):
3713         (JSC::ConsoleClient::logWithLevel):
3714         (JSC::ConsoleClient::clear):
3715         (JSC::ConsoleClient::dir):
3716         (JSC::ConsoleClient::dirXML):
3717         (JSC::ConsoleClient::table):
3718         (JSC::ConsoleClient::trace):
3719         (JSC::ConsoleClient::assertion):
3720         (JSC::ConsoleClient::group):
3721         (JSC::ConsoleClient::groupCollapsed):
3722         (JSC::ConsoleClient::groupEnd):
3723         * runtime/ConsoleClient.h:
3724         * runtime/ConsoleObject.cpp:
3725         (JSC::valueOrDefaultLabelString):
3726         (JSC::valueToStringWithUndefinedOrNullCheck):
3727         (JSC::consoleLogWithLevel):
3728         (JSC::consoleProtoFuncDebug):
3729         (JSC::consoleProtoFuncError):
3730         (JSC::consoleProtoFuncLog):
3731         (JSC::consoleProtoFuncInfo):
3732         (JSC::consoleProtoFuncWarn):
3733         (JSC::consoleProtoFuncClear):
3734         (JSC::consoleProtoFuncDir):
3735         (JSC::consoleProtoFuncDirXML):
3736         (JSC::consoleProtoFuncTable):
3737         (JSC::consoleProtoFuncTrace):
3738         (JSC::consoleProtoFuncAssert):
3739         (JSC::consoleProtoFuncCount):
3740         (JSC::consoleProtoFuncCountReset):
3741         (JSC::consoleProtoFuncProfile):
3742         (JSC::consoleProtoFuncProfileEnd):
3743         (JSC::consoleProtoFuncTakeHeapSnapshot):
3744         (JSC::consoleProtoFuncTime):
3745         (JSC::consoleProtoFuncTimeLog):
3746         (JSC::consoleProtoFuncTimeEnd):
3747         (JSC::consoleProtoFuncTimeStamp):
3748         (JSC::consoleProtoFuncGroup):
3749         (JSC::consoleProtoFuncGroupCollapsed):
3750         (JSC::consoleProtoFuncGroupEnd):
3751         (JSC::consoleProtoFuncRecord):
3752         (JSC::consoleProtoFuncRecordEnd):
3753         (JSC::consoleProtoFuncScreenshot):
3754         * runtime/ConstructData.cpp:
3755         (JSC::construct):
3756         (JSC::profiledConstruct):
3757         * runtime/ConstructData.h:
3758         (JSC::construct):
3759         (JSC::profiledConstruct):
3760         * runtime/CustomGetterSetter.cpp:
3761         (JSC::callCustomSetter):
3762         * runtime/CustomGetterSetter.h:
3763         * runtime/DataView.cpp:
3764         (JSC::DataView::wrap):
3765         * runtime/DataView.h:
3766         * runtime/DateConstructor.cpp:
3767         (JSC::millisecondsFromComponents):
3768         (JSC::constructDate):
3769         (JSC::constructWithDateConstructor):
3770         (JSC::dateParse):
3771         (JSC::dateUTC):
3772         * runtime/DateConstructor.h:
3773         * runtime/DateInstance.cpp:
3774         (JSC::DateInstance::calculateGregorianDateTime const):
3775         (JSC::DateInstance::calculateGregorianDateTimeUTC const):
3776         * runtime/DateInstance.h:
3777         * runtime/DatePrototype.cpp:
3778         (JSC::formatLocaleDate):
3779         (JSC::formateDateInstance):
3780         (JSC::fillStructuresUsingTimeArgs):
3781         (JSC::fillStructuresUsingDateArgs):
3782         (JSC::dateProtoFuncToString):
3783         (JSC::dateProtoFuncToUTCString):
3784         (JSC::dateProtoFuncToISOString):
3785         (JSC::dateProtoFuncToDateString):
3786         (JSC::dateProtoFuncToTimeString):
3787         (JSC::dateProtoFuncToLocaleString):
3788         (JSC::dateProtoFuncToLocaleDateString):
3789         (JSC::dateProtoFuncToLocaleTimeString):
3790         (JSC::dateProtoFuncToPrimitiveSymbol):
3791         (JSC::dateProtoFuncGetTime):
3792         (JSC::dateProtoFuncGetFullYear):
3793         (JSC::dateProtoFuncGetUTCFullYear):
3794         (JSC::dateProtoFuncGetMonth):
3795         (JSC::dateProtoFuncGetUTCMonth):
3796         (JSC::dateProtoFuncGetDate):
3797         (JSC::dateProtoFuncGetUTCDate):
3798         (JSC::dateProtoFuncGetDay):
3799         (JSC::dateProtoFuncGetUTCDay):
3800         (JSC::dateProtoFuncGetHours):
3801         (JSC::dateProtoFuncGetUTCHours):
3802         (JSC::dateProtoFuncGetMinutes):
3803         (JSC::dateProtoFuncGetUTCMinutes):
3804         (JSC::dateProtoFuncGetSeconds):
3805         (JSC::dateProtoFuncGetUTCSeconds):
3806         (JSC::dateProtoFuncGetMilliSeconds):
3807         (JSC::dateProtoFuncGetUTCMilliseconds):
3808         (JSC::dateProtoFuncGetTimezoneOffset):
3809         (JSC::dateProtoFuncSetTime):
3810         (JSC::setNewValueFromTimeArgs):
3811         (JSC::setNewValueFromDateArgs):
3812         (JSC::dateProtoFuncSetMilliSeconds):
3813         (JSC::dateProtoFuncSetUTCMilliseconds):
3814         (JSC::dateProtoFuncSetSeconds):
3815         (JSC::dateProtoFuncSetUTCSeconds):
3816         (JSC::dateProtoFuncSetMinutes):
3817         (JSC::dateProtoFuncSetUTCMinutes):
3818         (JSC::dateProtoFuncSetHours):
3819         (JSC::dateProtoFuncSetUTCHours):
3820         (JSC::dateProtoFuncSetDate):
3821         (JSC::dateProtoFuncSetUTCDate):
3822         (JSC::dateProtoFuncSetMonth):
3823         (JSC::dateProtoFuncSetUTCMonth):
3824         (JSC::dateProtoFuncSetFullYear):
3825         (JSC::dateProtoFuncSetUTCFullYear):
3826         (JSC::dateProtoFuncSetYear):
3827         (JSC::dateProtoFuncGetYear):
3828         (JSC::dateProtoFuncToJSON):
3829         * runtime/DirectArguments.cpp:
3830         (JSC::DirectArguments::createByCopying):
3831         (JSC::DirectArguments::copyToArguments):
3832         * runtime/DirectArguments.h:
3833         * runtime/DirectEvalExecutable.cpp:
3834         (JSC::DirectEvalExecutable::create):
3835         (JSC::DirectEvalExecutable::DirectEvalExecutable):
3836         * runtime/DirectEvalExecutable.h:
3837         * runtime/Error.cpp:
3838         (JSC::createError):
3839         (JSC::createEvalError):
3840         (JSC::createRangeError):
3841         (JSC::createReferenceError):
3842         (JSC::createSyntaxError):
3843         (JSC::createTypeError):
3844         (JSC::createNotEnoughArgumentsError):
3845         (JSC::createURIError):
3846         (JSC::createGetterTypeError):
3847         (JSC::getStackTrace):
3848         (JSC::getBytecodeOffset):
3849         (JSC::addErrorInfo):
3850         (JSC::throwConstructorCannotBeCalledAsFunctionTypeError):
3851         (JSC::throwTypeError):
3852         (JSC::throwSyntaxError):
3853         (JSC::throwGetterTypeError):
3854         (JSC::throwDOMAttributeGetterTypeError):
3855         (JSC::createOutOfMemoryError):
3856         * runtime/Error.h:
3857         (JSC::throwRangeError):
3858         (JSC::throwVMError):
3859         (JSC::throwVMTypeError):
3860         (JSC::throwVMRangeError):
3861         (JSC::throwVMGetterTypeError):
3862         (JSC::throwVMDOMAttributeGetterTypeError):
3863         * runtime/ErrorConstructor.cpp:
3864         (JSC::constructErrorConstructor):
3865         (JSC::callErrorConstructor):
3866         (JSC::ErrorConstructor::put):
3867         (JSC::ErrorConstructor::deleteProperty):
3868         * runtime/ErrorConstructor.h:
3869         * runtime/ErrorInstance.cpp:
3870         (JSC::ErrorInstance::create):
3871         (JSC::appendSourceToError):
3872         (JSC::ErrorInstance::finishCreation):
3873         (JSC::ErrorInstance::sanitizedToString):
3874         (JSC::ErrorInstance::getOwnPropertySlot):
3875         (JSC::ErrorInstance::getOwnNonIndexPropertyNames):
3876         (JSC::ErrorInstance::getStructurePropertyNames):
3877         (JSC::ErrorInstance::defineOwnProperty):
3878         (JSC::ErrorInstance::put):
3879         (JSC::ErrorInstance::deleteProperty):
3880         * runtime/ErrorInstance.h:
3881         (JSC::ErrorInstance::create):
3882         * runtime/ErrorPrototype.cpp:
3883         (JSC::errorProtoFuncToString):
3884         * runtime/EvalExecutable.cpp:
3885         (JSC::EvalExecutable::EvalExecutable):
3886         * runtime/EvalExecutable.h:
3887         * runtime/ExceptionFuzz.cpp:
3888         (JSC::doExceptionFuzzing):
3889         * runtime/ExceptionFuzz.h:
3890         (JSC::doExceptionFuzzingIfEnabled):
3891         * runtime/ExceptionHelpers.cpp:
3892         (JSC::TerminatedExecutionError::defaultValue):
3893         (JSC::createStackOverflowError):
3894         (JSC::createUndefinedVariableError):
3895         (JSC::errorDescriptionForValue):
3896         (JSC::createError):
3897         (JSC::createInvalidFunctionApplyParameterError):
3898         (JSC::createInvalidInParameterError):
3899         (JSC::createInvalidInstanceofParameterErrorNotFunction):
3900         (JSC::createInvalidInstanceofParameterErrorHasInstanceValueNotFunction):
3901         (JSC::createNotAConstructorError):
3902         (JSC::createNotAFunctionError):
3903         (JSC::createNotAnObjectError):
3904         (JSC::createErrorForInvalidGlobalAssignment):
3905         (JSC::createTDZError):
3906         (JSC::throwOutOfMemoryError):
3907         (JSC::throwStackOverflowError):
3908         (JSC::throwTerminatedExecutionException):
3909         * runtime/ExceptionHelpers.h:
3910         * runtime/FunctionConstructor.cpp:
3911