[JSC] Optimize Promise runtime functions
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>
2
3         [JSC] Optimize Promise runtime functions
4         https://bugs.webkit.org/show_bug.cgi?id=203454
5
6         Reviewed by Keith Miller.
7
8         This patch optimizes Promise runtime functions a bit.
9
10         1. Add fast paths to Promise.resolve / Promise.reject.
11         2. Remove state check in async-functions. Unlike generators, async-function's next function is not exposed to users.
12            It is called by runtime so we can control state perfectly.
13         3. Add "enqueueJob" name to make sampling profiler work for this function.
14         4. Make Promise/InternalPromise constructor inlinable size
15
16                                               ToT                     Patched
17
18             promise-creation-many       25.5794+-0.3681     ^     22.5410+-0.3229        ^ definitely 1.1348x faster
19             promise-resolve             32.3793+-0.4252     ^      9.4219+-0.1114        ^ definitely 3.4366x faster
20             promise-reject             108.5968+-0.7741     ^     36.9383+-0.3770        ^ definitely 2.9400x faster
21
22         * builtins/AsyncFunctionPrototype.js:
23         (globalPrivate.asyncFunctionResume):
24         * builtins/PromiseConstructor.js:
25         (reject):
26         (resolve):
27         (nakedConstructor.Promise.reject):
28         (nakedConstructor.Promise):
29         (nakedConstructor.InternalPromise.reject):
30         (nakedConstructor.InternalPromise):
31         (nakedConstructor.Promise.resolve): Deleted.
32         (nakedConstructor.InternalPromise.resolve): Deleted.
33         * builtins/PromiseOperations.js:
34         (globalPrivate.newPromiseCapability.resolve):
35         (globalPrivate.newPromiseCapability.reject):
36         (globalPrivate.newPromiseCapability):
37         (globalPrivate.promiseResolveSlow):
38         (globalPrivate.promiseRejectSlow):
39         * runtime/JSGlobalObject.cpp:
40         (JSC::JSGlobalObject::init):
41
42 2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>
43
44         [JSC] Use FTLOutput::callWithoutSideEffects if operation does not have side effects
45         https://bugs.webkit.org/show_bug.cgi?id=203485
46
47         Reviewed by Mark Lam.
48
49         This makes Call's Effect none, and encourages optimizations around it.
50
51         * ftl/FTLLowerDFGToB3.cpp:
52         (JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
53         (JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
54         (JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52):
55
56 2019-10-28  Tuomas Karkkainen  <tuomas.webkit@apple.com>
57
58         dumpSpeculation in SpeculatedType.cpp prints to the wrong stream and has wrong capitalization for NaN
59         https://bugs.webkit.org/show_bug.cgi?id=203486
60
61         Reviewed by Antti Koivisto.
62
63         * bytecode/SpeculatedType.cpp:
64         (JSC::dumpSpeculation):
65
66 2019-10-28  Fujii Hironori  <Hironori.Fujii@sony.com>
67
68         [Windows][Clang] error LNK2001: unresolved external symbol "void * __cdecl JSC::allocateCell<class JSC::JSGenericTypedArrayView<struct JSC::Float32Adaptor> >(class JSC::Heap &,unsigned __int64)"
69         https://bugs.webkit.org/show_bug.cgi?id=203483
70
71         Unreviewed build fix for clang-cl builds.
72
73         * runtime/JSGenericTypedArrayViewInlines.h: Added #include "JSCellInlines.h".
74
75 2019-10-26  Chris Lord  <clord@igalia.com>
76
77         Put OffscreenCanvas behind a build flag
78         https://bugs.webkit.org/show_bug.cgi?id=203146
79
80         Reviewed by Ryosuke Niwa.
81
82         * Configurations/FeatureDefines.xcconfig:
83
84 2019-10-25  Yury Semikhatsky  <yurys@chromium.org>
85
86         Web Inspector: support emulateUserGesture parameter in Runtime.callFunctionOn
87         https://bugs.webkit.org/show_bug.cgi?id=200262
88
89         Reviewed by Devin Rousso.
90
91         * inspector/agents/InspectorRuntimeAgent.cpp:
92         (Inspector::InspectorRuntimeAgent::callFunctionOn):
93         * inspector/agents/InspectorRuntimeAgent.h:
94         * inspector/protocol/Runtime.json:
95
96 2019-10-24  Mark Lam  <mark.lam@apple.com>
97
98         Move JSC::Register inline methods into RegisterInlines.h.
99         https://bugs.webkit.org/show_bug.cgi?id=203391
100
101         Reviewed by Yusuke Suzuki and Keith Miller.
102
103         We're doing this because:
104         1. RegisterInlines.h is the canonical place to put inline Register methods.
105         2. It helps reduce build time.
106            e.g. build-jsc went from 208.02 to 196.81 seconds (about a 5% reduction).
107         3. This enables experimental work to box JSCells in JSValue.
108
109         This patch also handles the fallout of this change, which necessitates more
110         inline methods being moved from <file>.h to their respective <file>Inlines.h.
111
112         JSArray.h used to include ButterflyInlines.h and JSCellInlines.h.  This is a
113         violation of inclusion ordering (.h should not #include Inlines.h).  This
114         violation has been removed.
115
116         * API/JSAPIGlobalObject.mm:
117         * CMakeLists.txt:
118         * JavaScriptCore.xcodeproj/project.pbxproj:
119         * bytecode/CodeBlock.h:
120         (JSC::CallFrame::r): Deleted.
121         (JSC::CallFrame::uncheckedR): Deleted.
122         * bytecode/MetadataTable.cpp:
123         * ftl/FTLLowerDFGToB3.cpp:
124         * interpreter/CallFrame.h:
125         (JSC::CallFrame::guaranteedJSValueCallee const): Deleted.
126         (JSC::CallFrame::jsCallee const): Deleted.
127         (JSC::CallFrame::codeBlock const): Deleted.
128         (JSC::CallFrame::unsafeCodeBlock const): Deleted.
129         (JSC::CallFrame::scope const): Deleted.
130         (JSC::CallFrame::topOfFrame): Deleted.
131         (JSC::CallFrame::setScope): Deleted.
132         (JSC::CallFrame::setCallee): Deleted.
133         (JSC::CallFrame::setCodeBlock): Deleted.
134         * interpreter/CallFrameInlines.h:
135         (JSC::CallFrame::r):
136         (JSC::CallFrame::uncheckedR):
137         (JSC::CallFrame::guaranteedJSValueCallee const):
138         (JSC::CallFrame::jsCallee const):
139         (JSC::CallFrame::codeBlock const):
140         (JSC::CallFrame::unsafeCodeBlock const):
141         (JSC::CallFrame::lexicalGlobalObject const):
142         (JSC::CallFrame::setCallee):
143         (JSC::CallFrame::setCodeBlock):
144         (JSC::CallFrame::setScope):
145         (JSC::CallFrame::scope const):
146         (JSC::CallFrame::topOfFrame):
147         * interpreter/Interpreter.cpp:
148         * interpreter/ProtoCallFrame.h:
149         (JSC::ProtoCallFrame::init): Deleted.
150         * interpreter/ProtoCallFrameInlines.h: Added.
151         (JSC::ProtoCallFrame::init):
152         (JSC::ProtoCallFrame::callee const):
153         (JSC::ProtoCallFrame::setCallee):
154         (JSC::ProtoCallFrame::codeBlock const):
155         (JSC::ProtoCallFrame::setCodeBlock):
156         * interpreter/Register.h:
157         (JSC::Register::callFrame const): Deleted.
158         (JSC::Register::codeBlock const): Deleted.
159         (JSC::Register::asanUnsafeCodeBlock const): Deleted.
160         * interpreter/RegisterInlines.h: Added.
161         (JSC::Register::callFrame const):
162         (JSC::Register::codeBlock const):
163         (JSC::Register::asanUnsafeCodeBlock const):
164         (JSC::Register::object const):
165         (JSC::Register::operator=):
166         (JSC::Register::scope const):
167         * interpreter/StackVisitor.cpp:
168         * jit/AssemblyHelpers.h:
169         * llint/LLIntSlowPaths.cpp:
170         * runtime/ArrayStorage.h:
171         (JSC::ArrayStorage::optimalVectorLength): Deleted.
172         * runtime/ArrayStorageInlines.h: Added.
173         (JSC::ArrayStorage::availableVectorLength):
174         (JSC::ArrayStorage::optimalVectorLength):
175         (JSC::ArrayStorage::totalSize const):
176         * runtime/ButterflyInlines.h:
177         * runtime/ClassInfo.h:
178         * runtime/GetVM.h: Added.
179         * runtime/JSArray.h:
180         * runtime/JSArrayInlines.h:
181         * runtime/JSCellInlines.h:
182         * runtime/JSGlobalObject.h:
183         * runtime/JSObject.h:
184         (JSC::Register::object const): Deleted.
185         (JSC::Register::operator=): Deleted.
186         * runtime/JSObjectInlines.h:
187         * runtime/JSScope.h:
188         (JSC::Register::operator=): Deleted.
189         (JSC::Register::scope const): Deleted.
190         (JSC::CallFrame::lexicalGlobalObject const): Deleted.
191         * runtime/JSString.h:
192         * runtime/PropertyNameArray.h:
193         * runtime/PropertySlot.h:
194         * runtime/VMInlines.h:
195         * tools/HeapVerifier.cpp:
196         * wasm/js/WebAssemblyFunction.cpp:
197
198 2019-10-24  Zan Dobersek  <zdobersek@igalia.com>
199
200         REGRESSION(r251468): Build, test failures in 32-bit JSC after BytecodeIndex refactoring
201         https://bugs.webkit.org/show_bug.cgi?id=203290
202
203         Reviewed by Keith Miller.
204
205         * bytecode/BytecodeIndex.h:
206         (JSC::BytecodeIndex::BytecodeIndex):
207         Add a BytecodeIndex(WTF::HashTableDeletedValueType) constructor.
208         * bytecode/CodeOrigin.h:
209         (JSC::CodeOrigin::CodeOrigin):
210         Have the CodeOrigin(WTF::HashTableDeletedValueType) constructor
211         initialize the BytecodeIndex object accordingly, as a deleted value.
212         (JSC::CodeOrigin::isHashTableDeletedValue const):
213         Test BytecodeIndex object's deleted-value condition through the
214         corresponding BytecodeIndex::isHashTableDeletedValue() method.
215         * profiler/ProfilerOrigin.h:
216         (JSC::Profiler::Origin::Origin):
217         Simplify the m_bytecodeIndex member initialization for a deleted value.
218         (JSC::Profiler::Origin::operator! const):
219         Fix the negation operator, returning true if the m_bytecodeIndex is
220         either empty or deleted.
221
222 2019-10-24  Sihui Liu  <sihui_liu@apple.com>
223
224         [ Mac WK1 ] REGRESSION (r251261): Layout Test inspector/console/webcore-logging.html is consistently Failing
225         https://bugs.webkit.org/show_bug.cgi?id=203173
226         <rdar://problem/56424721>
227
228         Hold a strong reference to JSGlobalOjbect in ConsoleMessage so that object is not garbage collected before
229         WebConsoleAgent::frameWindowDiscarded.
230
231         Covered by existing test: inspector/console/webcore-logging.html.
232
233         Reviewed by Geoffrey Garen.
234
235         * inspector/ConsoleMessage.cpp:
236         (Inspector::ConsoleMessage::ConsoleMessage):
237         (Inspector::ConsoleMessage::clear):
238         * inspector/ConsoleMessage.h:
239
240 2019-10-24  Yusuke Suzuki  <ysuzuki@apple.com>
241
242         [JSC] Properly organize wasm operations
243         https://bugs.webkit.org/show_bug.cgi?id=203360
244
245         Reviewed by Keith Miller.
246
247         This patch cleans up operation functions called from Wasm.
248
249         1. Properly name these operations with prefix "operation".
250         2. Do not use lambda. Define function with JIT_OPERATION.
251         3. Consolidate them in WasmOperations.cpp.
252
253         * wasm/WasmAirIRGenerator.cpp:
254         (JSC::Wasm::AirIRGenerator::addRefFunc):
255         (JSC::Wasm::AirIRGenerator::addTableGet):
256         (JSC::Wasm::AirIRGenerator::addTableSet):
257         (JSC::Wasm::AirIRGenerator::addTableSize):
258         (JSC::Wasm::AirIRGenerator::addTableGrow):
259         (JSC::Wasm::AirIRGenerator::addTableFill):
260         (JSC::Wasm::AirIRGenerator::addGrowMemory):
261         (JSC::Wasm::AirIRGenerator::emitWriteBarrierForJSWrapper):
262         (JSC::Wasm::AirIRGenerator::addOp<OpType::I32Popcnt>):
263         (JSC::Wasm::AirIRGenerator::addOp<OpType::I64Popcnt>):
264         * wasm/WasmB3IRGenerator.cpp:
265         (JSC::Wasm::B3IRGenerator::addTableGet):
266         (JSC::Wasm::B3IRGenerator::addTableSet):
267         (JSC::Wasm::B3IRGenerator::addRefFunc):
268         (JSC::Wasm::B3IRGenerator::addTableSize):
269         (JSC::Wasm::B3IRGenerator::addTableGrow):
270         (JSC::Wasm::B3IRGenerator::addTableFill):
271         (JSC::Wasm::B3IRGenerator::addGrowMemory):
272         (JSC::Wasm::B3IRGenerator::emitWriteBarrierForJSWrapper):
273         (JSC::Wasm::B3IRGenerator::addOp<OpType::I32Popcnt>):
274         (JSC::Wasm::B3IRGenerator::addOp<OpType::I64Popcnt>):
275         * wasm/WasmInstance.cpp:
276         (JSC::Wasm::getWasmTableElement): Deleted.
277         (JSC::Wasm::setWasmTableElement): Deleted.
278         (JSC::Wasm::doWasmTableGrow): Deleted.
279         (JSC::Wasm::doWasmTableFill): Deleted.
280         (JSC::Wasm::doWasmRefFunc): Deleted.
281         * wasm/WasmInstance.h:
282         * wasm/WasmOperations.cpp:
283         (JSC::Wasm::operationWasmUnwind):
284         (JSC::Wasm::operationConvertToF64):
285         (JSC::Wasm::operationConvertToI32):
286         (JSC::Wasm::operationConvertToF32):
287         (JSC::Wasm::operationIterateResults):
288         (JSC::Wasm::operationAllocateResultsArray):
289         (JSC::Wasm::operationWasmWriteBarrierSlowPath):
290         (JSC::Wasm::operationPopcount32):
291         (JSC::Wasm::operationPopcount64):
292         (JSC::Wasm::operationGrowMemory):
293         (JSC::Wasm::operationGetWasmTableElement):
294         (JSC::Wasm::setWasmTableElement):
295         (JSC::Wasm::operationSetWasmTableElement):
296         (JSC::Wasm::operationWasmTableGrow):
297         (JSC::Wasm::operationWasmTableFill):
298         (JSC::Wasm::operationWasmRefFunc):
299         (JSC::Wasm::operationGetWasmTableSize):
300         (JSC::Wasm::operationWasmToJSException):
301         * wasm/WasmOperations.h:
302         * wasm/js/JSToWasm.cpp:
303         (JSC::Wasm::marshallJSResult):
304         (JSC::Wasm::allocateResultsArray): Deleted.
305         * wasm/js/WasmToJS.cpp:
306         (JSC::Wasm::wasmToJS):
307         (JSC::Wasm::operationWasmToJSException): Deleted.
308         * wasm/js/WasmToJS.h:
309         * wasm/js/WebAssemblyInstanceConstructor.cpp:
310
311 2019-10-24  Yusuke Suzuki  <ysuzuki@apple.com>
312
313         [JSC] Remove LLInt's Callee size assumption
314         https://bugs.webkit.org/show_bug.cgi?id=203282
315
316         Reviewed by Mark Lam.
317
318         LLInt code still assumes that Callee is always allocated in non-LargeAllocation.
319         This patch removes this assumption by following three changes.
320
321         1. If we can get CodeBlock, we get VM& from CodeBlock.
322         2. In nativeCallTrampoline and internalFunctionCallTrampoline, we get VM& from JSGlobalObject. It involves one more pointer-chasing but it is OK
323            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.
324         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
325            exception unwinding happens, and which is an expensive operation anyway.
326
327         * heap/LargeAllocation.h:
328         (JSC::LargeAllocation::headerSize):
329         * heap/WeakSet.h:
330         (JSC::WeakSet::WeakSet):
331         (JSC::WeakSet::vm const):
332         * llint/LowLevelInterpreter.asm:
333         * llint/LowLevelInterpreter32_64.asm:
334         * llint/LowLevelInterpreter64.asm:
335         * runtime/JSGlobalObject.cpp:
336         (JSC::JSGlobalObject::JSGlobalObject):
337         (JSC::JSGlobalObject::init):
338         * runtime/JSGlobalObject.h:
339         (JSC::JSGlobalObject::vm const):
340         (JSC::JSGlobalObject::defaultCodeGenerationMode const):
341         * runtime/VM.h:
342         (JSC::WeakSet::heap const):
343
344 2019-10-24  Zan Dobersek  <zdobersek@igalia.com>
345
346         [JSC] Get 32-bit ports back into building order
347         https://bugs.webkit.org/show_bug.cgi?id=203358
348
349         Reviewed by Carlos Garcia Campos.
350
351         Get JSC building again on 32-bit architectures after changes in r251468.
352         Some 32-bit code in LLint and JIT is brought back, and additional casts
353         around BytecodeIndex construction are added as necessary.
354
355         * dfg/DFGOSRExit.cpp:
356         (JSC::DFG::reifyInlinedCallFrames):
357         * dfg/DFGOSRExitCompilerCommon.cpp:
358         (JSC::DFG::reifyInlinedCallFrames):
359         * interpreter/CallFrame.cpp:
360         (JSC::CallFrame::setCurrentVPC):
361         * jit/JITCall32_64.cpp:
362         (JSC::JIT::compileCallEvalSlowCase):
363         (JSC::JIT::compileOpCall):
364         * jit/JITInlines.h:
365         (JSC::JIT::updateTopCallFrame):
366         * jit/JITOpcodes32_64.cpp:
367         (JSC::JIT::emit_op_log_shadow_chicken_tail):
368         * jit/JITPropertyAccess32_64.cpp:
369         (JSC::JIT::emit_op_get_by_val):
370         (JSC::JIT::emitGetByValWithCachedId):
371         (JSC::JIT::emit_op_put_by_val):
372         (JSC::JIT::emitPutByValWithCachedId):
373         (JSC::JIT::emit_op_try_get_by_id):
374         (JSC::JIT::emit_op_get_by_id_direct):
375         (JSC::JIT::emit_op_get_by_id):
376         (JSC::JIT::emit_op_get_by_id_with_this):
377         (JSC::JIT::emit_op_put_by_id):
378         (JSC::JIT::emit_op_in_by_id):
379         * llint/LLIntSlowPaths.cpp:
380         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
381
382 2019-10-24  Paulo Matos  <pmatos@igalia.com>
383
384         Disable pichdr generation on MIPS for return location labels
385         https://bugs.webkit.org/show_bug.cgi?id=203040
386
387         Reviewed by Yusuke Suzuki.
388
389         Disable generation of pichdr for return location labels generated in
390         defineOSRExitReturnLabel. Since r250806 (Allow OSR exit to the LLInt),
391         MIPS was segfaulting since the pichdr after an OSR exit was corruption
392         the gp register.
393
394         * offlineasm/mips.rb:
395
396 2019-10-23  Devin Rousso  <drousso@apple.com>
397
398         Web Inspector: provide a way to inject "bootstrap" JavaScript into the page as the first script executed
399         https://bugs.webkit.org/show_bug.cgi?id=195847
400         <rdar://problem/48950551>
401
402         Reviewed by Joseph Pecoraro.
403
404         When debugging webpages, it's often useful to be able to swizzle various functions in order
405         to add extra logs for when they're called (e.g. `Event.prototype.preventDefault`). Sometimes
406         this can be difficult, such as if the page saves a copy of the function and references that
407         instead, in which case it would be helpful to have a way to guarantee that the swizzled code
408         is the first thing evaluated after the context is created.
409
410         This change adds support for that concept, which has been named Inspector Bootstrap Script.
411         Once created, it will be injected as the first user script to every new global object that
412         is created afterwards. Modifications to the Inspector Bootstrap Script take effect for all
413         new global objects created _after_ the modification happened.
414
415         * inspector/protocol/Page.json:
416         Add `setBoostrapScript` command.
417
418 2019-10-23  Yusuke Suzuki  <ysuzuki@apple.com>
419
420         [JSC] Remove wasmAwareLexicalGlobalObject
421         https://bugs.webkit.org/show_bug.cgi?id=203351
422
423         Reviewed by Mark Lam.
424
425         CallFrame::lexicalGlobalObject() is no longer called frequently. We can just make the current wasmAwareLexicalGlobalObject as CallFrame::lexicalGlobalObject,
426         and remove wasmAwareLexicalGlobalObject function.
427
428         * debugger/Debugger.cpp:
429         (JSC::Debugger::hasBreakpoint):
430         (JSC::Debugger::breakProgram):
431         (JSC::lexicalGlobalObjectForCallFrame):
432         * debugger/DebuggerCallFrame.cpp:
433         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
434         (JSC::DebuggerCallFrame::scope):
435         (JSC::DebuggerCallFrame::thisValue const):
436         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
437         * debugger/DebuggerCallFrame.h:
438         * inspector/JSJavaScriptCallFrame.cpp:
439         (Inspector::JSJavaScriptCallFrame::thisObject const):
440         * inspector/JavaScriptCallFrame.h:
441         (Inspector::JavaScriptCallFrame::thisValue const):
442         * interpreter/CallFrame.cpp:
443         (JSC::CallFrame::lexicalGlobalObjectFromWasmCallee const):
444         (JSC::CallFrame::wasmAwareLexicalGlobalObject): Deleted.
445         * interpreter/CallFrame.h:
446         * interpreter/Interpreter.cpp:
447         (JSC::notifyDebuggerOfUnwinding):
448         (JSC::Interpreter::debug):
449         * interpreter/StackVisitor.cpp:
450         (JSC::StackVisitor::Frame::createArguments):
451         * interpreter/StackVisitor.h:
452         * llint/LLIntSlowPaths.cpp:
453         (JSC::LLInt::llint_throw_stack_overflow_error):
454         * runtime/JSFunction.cpp:
455         (JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
456         (JSC::RetrieveArgumentsFunctor::operator() const):
457         (JSC::retrieveArguments):
458         * runtime/JSScope.h:
459         (JSC::CallFrame::lexicalGlobalObject const):
460         * runtime/RegExpInlines.h:
461         (JSC::RegExp::matchInline):
462         * wasm/js/WasmToJS.cpp:
463         (JSC::Wasm::wasmToJS):
464
465 2019-10-23  Keith Miller  <keith_miller@apple.com>
466
467         Undo incidental change from BytecodeIndex class patch
468         https://bugs.webkit.org/show_bug.cgi?id=203339
469
470         Reviewed by Mark Lam.
471
472         It's not totally clear why we need to claim our bytecode index is
473         0 when we can't figure what the true index is. I'd rather unbreak
474         our build for now, however, and fix the underlying issue in
475         https://bugs.webkit.org/show_bug.cgi?id=203340
476
477         * runtime/Error.cpp:
478         (JSC::getBytecodeIndex):
479
480 2019-10-23  Yusuke Suzuki  <ysuzuki@apple.com>
481
482         [JSC] Figure out missing prepareCallOperation
483         https://bugs.webkit.org/show_bug.cgi?id=203285
484
485         Reviewed by Mark Lam.
486
487         We start using __builtin_frame_address to get CallFrame* in JIT operations. For the platform which is not supporting this API (MSVC),
488         we put frame-pointer to vm.topCallFrame in the caller side. The problem is that all Apple platform is now using __builtin_frame_address,
489         and we are not testing vm.topCallFrame version at all.
490
491         To find missing prepareCallOperation call, we introduce JITOperationPrologueCallFrameTracer. When USE(BUILTIN_FRAME_ADDRESS) is enabled and
492         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
493         CallFrame* gained by __builtin_frame_address. By doing this, we can find places missing this call in debug build of Apple ports.
494
495         We also found that FTL's custom getter calling is putting wrong value to vm.topCallFrame. This patch fixes it too.
496
497         * dfg/DFGOSRExit.cpp:
498         (JSC::DFG::OSRExit::emitRestoreArguments):
499         (JSC::DFG::operationCompileOSRExit):
500         (JSC::DFG::OSRExit::compileExit):
501         (JSC::DFG::operationDebugPrintSpeculationFailure):
502         (JSC::DFG::OSRExit::compileOSRExit): Deleted.
503         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure): Deleted.
504         * dfg/DFGOSRExit.h:
505         * dfg/DFGOSRExitCompilerCommon.cpp:
506         (JSC::DFG::handleExitCounts):
507         (JSC::DFG::osrWriteBarrier):
508         * dfg/DFGOSRExitCompilerCommon.h:
509         * dfg/DFGOperations.cpp:
510         * dfg/DFGOperations.h:
511         * dfg/DFGSpeculativeJIT64.cpp:
512         (JSC::DFG::SpeculativeJIT::compile):
513         * dfg/DFGThunks.cpp:
514         (JSC::DFG::osrExitThunkGenerator):
515         (JSC::DFG::osrExitGenerationThunkGenerator):
516         * ftl/FTLLowerDFGToB3.cpp:
517         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
518         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
519         (JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
520         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
521         (JSC::FTL::DFG::LowerDFGToB3::callPreflight):
522         (JSC::FTL::DFG::LowerDFGToB3::callCheck):
523         * ftl/FTLOSRExitCompiler.cpp:
524         (JSC::FTL::compileStub):
525         (JSC::FTL::operationCompileFTLOSRExit):
526         (JSC::FTL::compileFTLOSRExit): Deleted.
527         * ftl/FTLOSRExitCompiler.h:
528         * ftl/FTLOperations.cpp:
529         (JSC::FTL::operationPopulateObjectInOSR):
530         (JSC::FTL::operationMaterializeObjectInOSR):
531         (JSC::FTL::operationCompileFTLLazySlowPath):
532         (JSC::FTL::compileFTLLazySlowPath): Deleted.
533         * ftl/FTLOperations.h:
534         * ftl/FTLSlowPathCall.cpp:
535         (JSC::FTL::SlowPathCallContext::makeCall):
536         * ftl/FTLThunks.cpp:
537         (JSC::FTL::genericGenerationThunkGenerator):
538         (JSC::FTL::osrExitGenerationThunkGenerator):
539         (JSC::FTL::lazySlowPathGenerationThunkGenerator):
540         (JSC::FTL::slowPathCallThunkGenerator):
541         * ftl/FTLThunks.h:
542         (JSC::FTL::generateIfNecessary):
543         (JSC::FTL::Thunks::getSlowPathCallThunk):
544         * interpreter/FrameTracers.h:
545         (JSC::SlowPathFrameTracer::SlowPathFrameTracer):
546         (JSC::JITOperationPrologueCallFrameTracer::JITOperationPrologueCallFrameTracer):
547         (JSC::JITOperationPrologueCallFrameTracer::~JITOperationPrologueCallFrameTracer):
548         * jit/AssemblyHelpers.cpp:
549         (JSC::AssemblyHelpers::callExceptionFuzz):
550         (JSC::AssemblyHelpers::debugCall):
551         * jit/AssemblyHelpers.h:
552         (JSC::AssemblyHelpers::prepareCallOperation):
553         * jit/CCallHelpers.cpp:
554         (JSC::CCallHelpers::ensureShadowChickenPacket):
555         * jit/CCallHelpers.h:
556         (JSC::CCallHelpers::prepareCallOperation): Deleted.
557         * jit/JITOperations.cpp:
558         * jit/JITOperations.h:
559         * jit/Repatch.cpp:
560         (JSC::ftlThunkAwareRepatchCall):
561         * jit/ThunkGenerators.cpp:
562         (JSC::boundThisNoArgsFunctionCallGenerator):
563         * llint/LLIntSlowPaths.cpp:
564         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
565         (JSC::LLInt::handleHostCall):
566         * runtime/AtomicsObject.cpp:
567         (JSC::operationAtomicsAdd):
568         (JSC::operationAtomicsAnd):
569         (JSC::operationAtomicsCompareExchange):
570         (JSC::operationAtomicsExchange):
571         (JSC::operationAtomicsIsLockFree):
572         (JSC::operationAtomicsLoad):
573         (JSC::operationAtomicsOr):
574         (JSC::operationAtomicsStore):
575         (JSC::operationAtomicsSub):
576         (JSC::operationAtomicsXor):
577         * runtime/CommonSlowPaths.cpp:
578         (JSC::SLOW_PATH_DECL):
579         * runtime/StringPrototype.cpp:
580         (JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
581         (JSC::operationStringProtoFuncReplaceRegExpString):
582         (JSC::operationStringProtoFuncReplaceGeneric):
583         * tools/JSDollarVM.cpp:
584         (IGNORE_WARNINGS_BEGIN):
585         * wasm/WasmAirIRGenerator.cpp:
586         (JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
587         * wasm/WasmB3IRGenerator.cpp:
588         (JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):
589         * wasm/WasmOperations.cpp:
590         (JSC::Wasm::operationWasmThrowBadI64):
591         (JSC::Wasm::operationWasmTriggerOSREntryNow):
592         (JSC::Wasm::operationWasmTriggerTierUpNow):
593         (JSC::Wasm::operationThrowBadI64): Deleted.
594         (JSC::Wasm::triggerOSREntryNow): Deleted.
595         (JSC::Wasm::triggerTierUpNow): Deleted.
596         * wasm/WasmOperations.h:
597         * wasm/WasmThunks.cpp:
598         (JSC::Wasm::triggerOMGEntryTierUpThunkGenerator):
599         * wasm/js/JSWebAssembly.cpp:
600         (JSC::instantiate):
601         * wasm/js/WasmToJS.cpp:
602         (JSC::Wasm::handleBadI64Use):
603         (JSC::Wasm::operationWasmToJSException):
604         (JSC::Wasm::emitThrowWasmToJSException):
605         (JSC::Wasm::wasmToJSException): Deleted.
606         * wasm/js/WasmToJS.h:
607         * wasm/js/WebAssemblyInstanceConstructor.cpp:
608         (JSC::constructJSWebAssemblyInstance):
609
610 2019-10-23  Truitt Savell  <tsavell@apple.com>
611
612         Unreviewed, rolling out r251482.
613
614         r251261 broke multiple tests, reverting this as part of that
615         rollout.
616
617         Reverted changeset:
618
619         "[ Mac WK1 ] REGRESSION (r251261): Layout Test
620         inspector/console/webcore-logging.html is consistently
621         Failing"
622         https://bugs.webkit.org/show_bug.cgi?id=203173
623         https://trac.webkit.org/changeset/251482
624
625 2019-10-23  Yury Semikhatsky  <yurys@chromium.org>
626
627         Web Inspector: notify inspector when provisional page is created, committed and destroyed
628         https://bugs.webkit.org/show_bug.cgi?id=202704
629
630         Reviewed by Devin Rousso.
631
632         * inspector/InspectorTarget.h: changed InspectorTarget to not require FrontendChannel as
633         all messages are routed by means of the owning InspectorTargetAgent.
634         * inspector/agents/InspectorTargetAgent.cpp:
635         (Inspector::InspectorTargetAgent::InspectorTargetAgent):
636         (Inspector::buildTargetInfoObject):
637         (Inspector::InspectorTargetAgent::targetCreated):
638         (Inspector::InspectorTargetAgent::targetDestroyed):
639         (Inspector::InspectorTargetAgent::didCommitProvisionalTarget): this method is used to
640         notify frontend that corresponding provisional target has committed and replaced previous
641         target.
642         (Inspector::InspectorTargetAgent::connectionType const):
643         (Inspector::InspectorTargetAgent::connectToTargets):
644         (Inspector::InspectorTargetAgent::disconnectFromTargets):
645         * inspector/agents/InspectorTargetAgent.h:
646         * inspector/protocol/Target.json: extended TargetInfo with provisional page details and
647         added event which is fired when provisional page gets committed. If provisional
648         load fails there will be targetDestroyed event without corresponding commit.
649
650 2019-10-23  Ross Kirsling  <ross.kirsling@sony.com>
651
652         String.prototype.matchAll should throw on non-global regex
653         https://bugs.webkit.org/show_bug.cgi?id=202838
654
655         Reviewed by Keith Miller.
656
657         * builtins/StringPrototype.js:
658         (matchAll):
659         Implement normative change from https://github.com/tc39/ecma262/pull/1716.
660
661         * builtins/BuiltinNames.h:
662         * runtime/JSGlobalObject.cpp:
663         (JSC::JSGlobalObject::init):
664         * runtime/RegExpConstructor.cpp:
665         (JSC::esSpecIsRegExp): Added.
666         * runtime/RegExpConstructor.h:
667         Expose isRegExp to builtins. (This differs from @isRegExpObject by first checking for Symbol.match.)
668
669 2019-10-23  Sihui Liu  <sihui_liu@apple.com>
670
671         [ Mac WK1 ] REGRESSION (r251261): Layout Test inspector/console/webcore-logging.html is consistently Failing
672         https://bugs.webkit.org/show_bug.cgi?id=203173
673         <rdar://problem/56424721>
674
675         Hold a strong reference to JSGlobalOjbect in ConsoleMessage so that object is not garbage collected before
676         WebConsoleAgent::frameWindowDiscarded.
677
678         Covered by existing test: inspector/console/webcore-logging.html.
679
680         Reviewed by Geoffrey Garen.
681
682         * inspector/ConsoleMessage.cpp:
683         (Inspector::ConsoleMessage::ConsoleMessage):
684         (Inspector::ConsoleMessage::clear):
685         * inspector/ConsoleMessage.h:
686
687 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
688
689         Make `JSGlobalObject*` threading change more stabilized by adding tests and assertions
690         https://bugs.webkit.org/show_bug.cgi?id=203274
691
692         Reviewed by Saam Barati.
693
694         This patch does some follow-up changes after r251425.
695
696         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.
697         2. Add assertion to ensure that `DECLARE_CALL_FRAME` is only called in JIT operation's prologue.
698         3. Remove some of ExecState::deprecatedVM call.
699         4. Define `USE(BUILTIN_FRAME_ADDRESS)` when using __builtin_frame_address to get CallFrame.
700
701         * API/tests/testapi.cpp:
702         (TestAPI::topCallFrameAccess):
703         (testCAPIViaCpp):
704         * interpreter/CallFrame.cpp:
705         (JSC::isFromJSCode):
706         * interpreter/CallFrame.h:
707         * jit/CCallHelpers.h:
708         (JSC::CCallHelpers::prepareCallOperation):
709         * tools/VMInspector.cpp:
710         (JSC::VMInspector::dumpRegisters):
711
712 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
713
714         Unreviewed, WinCairo build fix after r251468
715         https://bugs.webkit.org/show_bug.cgi?id=203276
716
717         * jit/JIT.h:
718
719 2019-10-22  Keith Miller  <keith_miller@apple.com>
720
721         BytecodeIndex should be a proper C++ class
722         https://bugs.webkit.org/show_bug.cgi?id=203276
723
724         Reviewed by Mark Lam.
725
726         This patch makes a change to how we refer to the bytecode index in
727         a bytecode stream. Previously we just used an unsigned number to
728         represent the index, this patch changes most of the code to use a
729         BytecodeIndex class instead. The only places where this patch does
730         not change this is for jump and switch targets / deltas.
731
732         Additionally, this patch attempts to canonicalize the terminology
733         around how we refer to bytecode indices. Now we use the word index
734         to refer to the bytecode index class and offset to refer to the
735         unsigned byte offset into the instruction stream.
736
737         * JavaScriptCore.xcodeproj/project.pbxproj:
738         * Sources.txt:
739         * bytecode/ByValInfo.h:
740         (JSC::ByValInfo::ByValInfo):
741         (JSC::getByValInfoBytecodeIndex):
742         * bytecode/BytecodeBasicBlock.cpp:
743         (JSC::BytecodeBasicBlock::computeImpl):
744         * bytecode/BytecodeGeneratorification.cpp:
745         (JSC::GeneratorLivenessAnalysis::run):
746         * bytecode/BytecodeIndex.cpp: Added.
747         (JSC::BytecodeIndex::dump const):
748         * bytecode/BytecodeIndex.h: Added.
749         (JSC::BytecodeIndex::BytecodeIndex):
750         (JSC::BytecodeIndex::offset const):
751         (JSC::BytecodeIndex::asBits const):
752         (JSC::BytecodeIndex::hash const):
753         (JSC::BytecodeIndex::deletedValue):
754         (JSC::BytecodeIndex::isHashTableDeletedValue const):
755         (JSC::BytecodeIndex::operator bool const):
756         (JSC::BytecodeIndex::operator == const):
757         (JSC::BytecodeIndex::operator != const):
758         (JSC::BytecodeIndex::operator < const):
759         (JSC::BytecodeIndex::operator > const):
760         (JSC::BytecodeIndex::operator <= const):
761         (JSC::BytecodeIndex::operator >= const):
762         (JSC::BytecodeIndex::fromBits):
763         (JSC::BytecodeIndexHash::hash):
764         (JSC::BytecodeIndexHash::equal):
765         * bytecode/BytecodeLivenessAnalysis.cpp:
766         (JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeIndex):
767         (JSC::BytecodeLivenessAnalysis::computeFullLiveness):
768         (JSC::BytecodeLivenessAnalysis::computeKills):
769         (JSC::BytecodeLivenessAnalysis::dumpResults):
770         (JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeOffset): Deleted.
771         * bytecode/BytecodeLivenessAnalysis.h:
772         * bytecode/BytecodeLivenessAnalysisInlines.h:
773         (JSC::BytecodeLivenessPropagation::stepOverInstruction):
774         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBytecodeIndex):
775         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBlock):
776         (JSC::BytecodeLivenessPropagation::getLivenessInfoAtBytecodeIndex):
777         (JSC::BytecodeLivenessPropagation::computeLocalLivenessForBytecodeOffset): Deleted.
778         (JSC::BytecodeLivenessPropagation::getLivenessInfoAtBytecodeOffset): Deleted.
779         * bytecode/BytecodeUseDef.h:
780         (JSC::computeUsesForBytecodeIndex):
781         (JSC::computeDefsForBytecodeIndex):
782         (JSC::computeUsesForBytecodeOffset): Deleted.
783         (JSC::computeDefsForBytecodeOffset): Deleted.
784         * bytecode/CallLinkStatus.cpp:
785         (JSC::CallLinkStatus::computeFromLLInt):
786         (JSC::CallLinkStatus::computeFor):
787         (JSC::CallLinkStatus::computeExitSiteData):
788         * bytecode/CallLinkStatus.h:
789         * bytecode/CodeBlock.cpp:
790         (JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
791         (JSC::CodeBlock::addRareCaseProfile):
792         (JSC::CodeBlock::rareCaseProfileForBytecodeIndex):
793         (JSC::CodeBlock::rareCaseProfileCountForBytecodeIndex):
794         (JSC::CodeBlock::handlerForBytecodeIndex):
795         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndex):
796         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndexSlow):
797         (JSC::CodeBlock::lineNumberForBytecodeIndex):
798         (JSC::CodeBlock::columnNumberForBytecodeIndex):
799         (JSC::CodeBlock::expressionRangeForBytecodeIndex const):
800         (JSC::CodeBlock::hasOpDebugForLineAndColumn):
801         (JSC::CodeBlock::getArrayProfile):
802         (JSC::CodeBlock::tryGetValueProfileForBytecodeIndex):
803         (JSC::CodeBlock::valueProfilePredictionForBytecodeIndex):
804         (JSC::CodeBlock::valueProfileForBytecodeIndex):
805         (JSC::CodeBlock::validate):
806         (JSC::CodeBlock::arithProfileForBytecodeIndex):
807         (JSC::CodeBlock::couldTakeSpecialArithFastCase):
808         (JSC::CodeBlock::bytecodeIndexFromCallSiteIndex):
809         (JSC::CodeBlock::rareCaseProfileForBytecodeOffset): Deleted.
810         (JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset): Deleted.
811         (JSC::CodeBlock::handlerForBytecodeOffset): Deleted.
812         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffset): Deleted.
813         (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffsetSlow): Deleted.
814         (JSC::CodeBlock::lineNumberForBytecodeOffset): Deleted.
815         (JSC::CodeBlock::columnNumberForBytecodeOffset): Deleted.
816         (JSC::CodeBlock::expressionRangeForBytecodeOffset const): Deleted.
817         (JSC::CodeBlock::tryGetValueProfileForBytecodeOffset): Deleted.
818         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset): Deleted.
819         (JSC::CodeBlock::valueProfileForBytecodeOffset): Deleted.
820         (JSC::CodeBlock::arithProfileForBytecodeOffset): Deleted.
821         (JSC::CodeBlock::couldTakeSpecialFastCase): Deleted.
822         (JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex): Deleted.
823         * bytecode/CodeBlock.h:
824         (JSC::CodeBlock::likelyToTakeSlowCase):
825         (JSC::CodeBlock::couldTakeSlowCase):
826         (JSC::CodeBlock::bytecodeIndex):
827         * bytecode/CodeOrigin.cpp:
828         (JSC::CodeOrigin::approximateHash const):
829         (JSC::CodeOrigin::dump const):
830         * bytecode/CodeOrigin.h:
831         (JSC::CodeOrigin::CodeOrigin):
832         (JSC::CodeOrigin::isSet const):
833         (JSC::CodeOrigin::isHashTableDeletedValue const):
834         (JSC::CodeOrigin::bytecodeIndex const):
835         (JSC::CodeOrigin::OutOfLineCodeOrigin::OutOfLineCodeOrigin):
836         (JSC::CodeOrigin::buildCompositeValue):
837         (JSC::CodeOrigin::hash const):
838         * bytecode/DFGExitProfile.cpp:
839         (JSC::DFG::FrequentExitSite::dump const):
840         (JSC::DFG::ExitProfile::exitSitesFor):
841         * bytecode/DFGExitProfile.h:
842         (JSC::DFG::FrequentExitSite::FrequentExitSite):
843         (JSC::DFG::FrequentExitSite::operator== const):
844         (JSC::DFG::FrequentExitSite::subsumes const):
845         (JSC::DFG::FrequentExitSite::hash const):
846         (JSC::DFG::FrequentExitSite::bytecodeIndex const):
847         (JSC::DFG::FrequentExitSite::isHashTableDeletedValue const):
848         (JSC::DFG::QueryableExitProfile::hasExitSite const):
849         (JSC::DFG::FrequentExitSite::bytecodeOffset const): Deleted.
850         * bytecode/DeferredSourceDump.cpp:
851         (JSC::DeferredSourceDump::DeferredSourceDump):
852         (JSC::DeferredSourceDump::dump):
853         * bytecode/DeferredSourceDump.h:
854         (): Deleted.
855         * bytecode/FullBytecodeLiveness.h:
856         (JSC::FullBytecodeLiveness::getLiveness const):
857         (JSC::FullBytecodeLiveness::operandIsLive const):
858         * bytecode/GetByIdStatus.cpp:
859         (JSC::GetByIdStatus::computeFromLLInt):
860         (JSC::GetByIdStatus::computeFor):
861         (JSC::GetByIdStatus::computeForStubInfo):
862         * bytecode/GetByIdStatus.h:
863         * bytecode/ICStatusUtils.cpp:
864         (JSC::hasBadCacheExitSite):
865         * bytecode/ICStatusUtils.h:
866         * bytecode/InByIdStatus.cpp:
867         (JSC::InByIdStatus::computeFor):
868         * bytecode/InByIdStatus.h:
869         * bytecode/InlineCallFrame.cpp:
870         (JSC::InlineCallFrame::dumpInContext const):
871         * bytecode/InstanceOfStatus.cpp:
872         (JSC::InstanceOfStatus::computeFor):
873         * bytecode/InstanceOfStatus.h:
874         * bytecode/InstructionStream.h:
875         (JSC::InstructionStream::BaseRef::offset const):
876         (JSC::InstructionStream::BaseRef::index const):
877         (JSC::InstructionStream::at const):
878         * bytecode/LazyOperandValueProfile.h:
879         (JSC::LazyOperandValueProfileKey::LazyOperandValueProfileKey):
880         (JSC::LazyOperandValueProfileKey::operator== const):
881         (JSC::LazyOperandValueProfileKey::hash const):
882         (JSC::LazyOperandValueProfileKey::bytecodeIndex const):
883         (JSC::LazyOperandValueProfileKey::isHashTableDeletedValue const):
884         (JSC::LazyOperandValueProfileKey::bytecodeOffset const): Deleted.
885         * bytecode/MethodOfGettingAValueProfile.cpp:
886         (JSC::MethodOfGettingAValueProfile::fromLazyOperand):
887         * bytecode/MethodOfGettingAValueProfile.h:
888         * bytecode/PutByIdStatus.cpp:
889         (JSC::PutByIdStatus::computeFromLLInt):
890         (JSC::PutByIdStatus::computeFor):
891         * bytecode/PutByIdStatus.h:
892         * bytecode/StructureStubInfo.cpp:
893         (JSC::StructureStubInfo::StructureStubInfo):
894         * bytecode/UnlinkedCodeBlock.cpp:
895         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeIndex):
896         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):
897         (JSC::UnlinkedCodeBlock::handlerForBytecodeIndex):
898         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
899         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset const): Deleted.
900         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
901         * bytecode/UnlinkedCodeBlock.h:
902         * bytecode/ValueProfile.h:
903         (JSC::RareCaseProfile::RareCaseProfile):
904         (JSC::getRareCaseProfileBytecodeIndex):
905         (JSC::getRareCaseProfileBytecodeOffset): Deleted.
906         * bytecompiler/BytecodeGenerator.cpp:
907         (JSC::ForInContext::finalize):
908         * debugger/DebuggerCallFrame.cpp:
909         (JSC::DebuggerCallFrame::currentPosition):
910         * dfg/DFGBasicBlock.cpp:
911         (JSC::DFG::BasicBlock::BasicBlock):
912         * dfg/DFGBasicBlock.h:
913         (JSC::DFG::getBytecodeBeginForBlock):
914         (JSC::DFG::blockForBytecodeIndex):
915         (JSC::DFG::blockForBytecodeOffset): Deleted.
916         * dfg/DFGBlockInsertionSet.cpp:
917         (JSC::DFG::BlockInsertionSet::insert):
918         * dfg/DFGByteCodeParser.cpp:
919         (JSC::DFG::ByteCodeParser::flushForTerminalImpl):
920         (JSC::DFG::ByteCodeParser::flushIfTerminal):
921         (JSC::DFG::ByteCodeParser::branchData):
922         (JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
923         (JSC::DFG::ByteCodeParser::getPrediction):
924         (JSC::DFG::ByteCodeParser::getArrayMode):
925         (JSC::DFG::ByteCodeParser::makeSafe):
926         (JSC::DFG::ByteCodeParser::makeDivSafe):
927         (JSC::DFG::ByteCodeParser::allocateTargetableBlock):
928         (JSC::DFG::ByteCodeParser::allocateUntargetableBlock):
929         (JSC::DFG::ByteCodeParser::makeBlockTargetable):
930         (JSC::DFG::ByteCodeParser::handleCall):
931         (JSC::DFG::ByteCodeParser::handleRecursiveTailCall):
932         (JSC::DFG::ByteCodeParser::inlineCall):
933         (JSC::DFG::ByteCodeParser::handleCallVariant):
934         (JSC::DFG::ByteCodeParser::handleInlining):
935         (JSC::DFG::ByteCodeParser::parseBlock):
936         (JSC::DFG::ByteCodeParser::linkBlock):
937         (JSC::DFG::ByteCodeParser::parseCodeBlock):
938         (JSC::DFG::ByteCodeParser::parse):
939         * dfg/DFGCommonData.cpp:
940         (JSC::DFG::CommonData::addCodeOrigin):
941         (JSC::DFG::CommonData::addUniqueCallSiteIndex):
942         (JSC::DFG::CommonData::lastCallSite const):
943         * dfg/DFGCommonData.h:
944         (JSC::DFG::CommonData::catchOSREntryDataForBytecodeIndex):
945         (JSC::DFG::CommonData::appendCatchEntrypoint):
946         * dfg/DFGDriver.cpp:
947         (JSC::DFG::compileImpl):
948         (JSC::DFG::compile):
949         * dfg/DFGDriver.h:
950         * dfg/DFGGraph.cpp:
951         (JSC::DFG::Graph::dump):
952         (JSC::DFG::Graph::methodOfGettingAValueProfileFor):
953         (JSC::DFG::Graph::willCatchExceptionInMachineFrame):
954         * dfg/DFGGraph.h:
955         * dfg/DFGJITCode.cpp:
956         (JSC::DFG::JITCode::clearOSREntryBlockAndResetThresholds):
957         * dfg/DFGJITCode.h:
958         (JSC::DFG::JITCode::appendOSREntryData):
959         (JSC::DFG::JITCode::osrEntryDataForBytecodeIndex):
960         * dfg/DFGJITCompiler.cpp:
961         (JSC::DFG::JITCompiler::JITCompiler):
962         (JSC::DFG::JITCompiler::compile):
963         (JSC::DFG::JITCompiler::compileFunction):
964         * dfg/DFGJITCompiler.h:
965         (JSC::DFG::JITCompiler::setStartOfCode):
966         * dfg/DFGLiveCatchVariablePreservationPhase.cpp:
967         (JSC::DFG::LiveCatchVariablePreservationPhase::handleBlockForTryCatch):
968         * dfg/DFGOSREntry.cpp:
969         (JSC::DFG::OSREntryData::dumpInContext const):
970         (JSC::DFG::prepareOSREntry):
971         (JSC::DFG::prepareCatchOSREntry):
972         * dfg/DFGOSREntry.h:
973         (JSC::DFG::getOSREntryDataBytecodeIndex):
974         (JSC::DFG::prepareOSREntry):
975         * dfg/DFGOSREntrypointCreationPhase.cpp:
976         (JSC::DFG::OSREntrypointCreationPhase::run):
977         * dfg/DFGOSRExit.cpp:
978         (JSC::DFG::OSRExit::executeOSRExit):
979         (JSC::DFG::reifyInlinedCallFrames):
980         (JSC::DFG::adjustAndJumpToTarget):
981         (JSC::DFG::printOSRExit):
982         (JSC::DFG::OSRExit::compileExit):
983         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
984         * dfg/DFGOSRExit.h:
985         * dfg/DFGOSRExitCompilerCommon.cpp:
986         (JSC::DFG::callerReturnPC):
987         (JSC::DFG::reifyInlinedCallFrames):
988         (JSC::DFG::adjustAndJumpToTarget):
989         * dfg/DFGOSRExitCompilerCommon.h:
990         * dfg/DFGOperations.cpp:
991         * dfg/DFGOperations.h:
992         * dfg/DFGPlan.cpp:
993         (JSC::DFG::Plan::Plan):
994         (JSC::DFG::Plan::compileInThreadImpl):
995         (JSC::DFG::Plan::cleanMustHandleValuesIfNecessary):
996         * dfg/DFGPlan.h:
997         (JSC::DFG::Plan::osrEntryBytecodeIndex const):
998         (JSC::DFG::Plan::tierUpInLoopHierarchy):
999         (JSC::DFG::Plan::tierUpAndOSREnterBytecodes):
1000         * dfg/DFGSSAConversionPhase.cpp:
1001         (JSC::DFG::SSAConversionPhase::run):
1002         * dfg/DFGSpeculativeJIT.cpp:
1003         (JSC::DFG::SpeculativeJIT::compileCurrentBlock):
1004         (JSC::DFG::SpeculativeJIT::checkArgumentTypes):
1005         (JSC::DFG::SpeculativeJIT::compileValueAdd):
1006         (JSC::DFG::SpeculativeJIT::compileValueSub):
1007         (JSC::DFG::SpeculativeJIT::compileValueNegate):
1008         (JSC::DFG::SpeculativeJIT::compileValueMul):
1009         (JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
1010         * dfg/DFGSpeculativeJIT64.cpp:
1011         (JSC::DFG::SpeculativeJIT::compile):
1012         * dfg/DFGTierUpCheckInjectionPhase.cpp:
1013         (JSC::DFG::TierUpCheckInjectionPhase::run):
1014         (JSC::DFG::TierUpCheckInjectionPhase::buildNaturalLoopToLoopHintMap):
1015         * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:
1016         (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):
1017         * dfg/DFGValidate.cpp:
1018         * ftl/FTLCompile.cpp:
1019         (JSC::FTL::compile):
1020         * ftl/FTLForOSREntryJITCode.h:
1021         (JSC::FTL::ForOSREntryJITCode::setBytecodeIndex):
1022         (JSC::FTL::ForOSREntryJITCode::bytecodeIndex const):
1023         * ftl/FTLLowerDFGToB3.cpp:
1024         (JSC::FTL::DFG::LowerDFGToB3::lower):
1025         (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
1026         (JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
1027         (JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
1028         (JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub):
1029         (JSC::FTL::DFG::LowerDFGToB3::compileValueNegate):
1030         * ftl/FTLOSREntry.cpp:
1031         (JSC::FTL::prepareOSREntry):
1032         * ftl/FTLOSREntry.h:
1033         * interpreter/CallFrame.cpp:
1034         (JSC::CallFrame::callSiteIndex const):
1035         (JSC::CallFrame::unsafeCallSiteIndex const):
1036         (JSC::CallFrame::setCurrentVPC):
1037         (JSC::CallFrame::bytecodeIndex):
1038         (JSC::CallFrame::codeOrigin):
1039         (JSC::CallFrame::dump):
1040         (JSC::CallFrame::bytecodeOffset): Deleted.
1041         * interpreter/CallFrame.h:
1042         (JSC::CallSiteIndex::CallSiteIndex):
1043         (JSC::CallSiteIndex::operator bool const):
1044         (JSC::CallSiteIndex::operator== const):
1045         (JSC::CallSiteIndex::bits const):
1046         (JSC::CallSiteIndex::bytecodeIndex const):
1047         (JSC::DisposableCallSiteIndex::DisposableCallSiteIndex):
1048         (): Deleted.
1049         * interpreter/Interpreter.cpp:
1050         (JSC::GetStackTraceFunctor::operator() const):
1051         (JSC::findExceptionHandler):
1052         * interpreter/ShadowChicken.cpp:
1053         (JSC::ShadowChicken::update):
1054         * interpreter/StackVisitor.cpp:
1055         (JSC::StackVisitor::readNonInlinedFrame):
1056         (JSC::StackVisitor::readInlinedFrame):
1057         (JSC::StackVisitor::Frame::retrieveExpressionInfo const):
1058         (JSC::StackVisitor::Frame::dump const):
1059         * interpreter/StackVisitor.h:
1060         (JSC::StackVisitor::Frame::bytecodeIndex const):
1061         (JSC::StackVisitor::Frame::bytecodeOffset const): Deleted.
1062         * jit/JIT.cpp:
1063         (JSC::JIT::JIT):
1064         (JSC::JIT::emitEnterOptimizationCheck):
1065         (JSC::JIT::privateCompileMainPass):
1066         (JSC::JIT::privateCompileSlowCases):
1067         (JSC::JIT::compileWithoutLinking):
1068         (JSC::JIT::link):
1069         (JSC::JIT::privateCompileExceptionHandlers):
1070         * jit/JIT.h:
1071         (JSC::CallRecord::CallRecord):
1072         (JSC::SlowCaseEntry::SlowCaseEntry):
1073         (JSC::SwitchRecord::SwitchRecord):
1074         (JSC::ByValCompilationInfo::ByValCompilationInfo):
1075         * jit/JITCall.cpp:
1076         (JSC::JIT::compileCallEvalSlowCase):
1077         (JSC::JIT::compileOpCall):
1078         * jit/JITCodeMap.h:
1079         (JSC::JITCodeMap::Entry::Entry):
1080         (JSC::JITCodeMap::Entry::bytecodeIndex const):
1081         (JSC::JITCodeMap::append):
1082         (JSC::JITCodeMap::find const):
1083         * jit/JITDisassembler.cpp:
1084         (JSC::JITDisassembler::dumpVectorForInstructions):
1085         (JSC::JITDisassembler::reportInstructions):
1086         * jit/JITDisassembler.h:
1087         * jit/JITInlines.h:
1088         (JSC::JIT::emitNakedCall):
1089         (JSC::JIT::emitNakedTailCall):
1090         (JSC::JIT::updateTopCallFrame):
1091         (JSC::JIT::linkAllSlowCasesForBytecodeIndex):
1092         (JSC::JIT::addSlowCase):
1093         (JSC::JIT::addJump):
1094         (JSC::JIT::emitJumpSlowToHot):
1095         (JSC::JIT::emitGetVirtualRegister):
1096         (JSC::JIT::linkAllSlowCasesForBytecodeOffset): Deleted.
1097         * jit/JITOpcodes.cpp:
1098         (JSC::JIT::emit_op_instanceof):
1099         (JSC::JIT::emit_op_catch):
1100         (JSC::JIT::emit_op_switch_imm):
1101         (JSC::JIT::emit_op_switch_char):
1102         (JSC::JIT::emit_op_switch_string):
1103         (JSC::JIT::emitSlow_op_loop_hint):
1104         (JSC::JIT::emit_op_has_indexed_property):
1105         (JSC::JIT::emit_op_log_shadow_chicken_tail):
1106         * jit/JITOpcodes32_64.cpp:
1107         (JSC::JIT::emit_op_instanceof):
1108         (JSC::JIT::emit_op_catch):
1109         (JSC::JIT::emit_op_switch_imm):
1110         (JSC::JIT::emit_op_switch_char):
1111         (JSC::JIT::emit_op_switch_string):
1112         (JSC::JIT::emit_op_has_indexed_property):
1113         * jit/JITOperations.cpp:
1114         (JSC::getByVal):
1115         (JSC::tryGetByValOptimize):
1116         * jit/JITPropertyAccess.cpp:
1117         (JSC::JIT::emit_op_get_by_val):
1118         (JSC::JIT::emitGetByValWithCachedId):
1119         (JSC::JIT::emit_op_put_by_val):
1120         (JSC::JIT::emitPutByValWithCachedId):
1121         (JSC::JIT::emit_op_try_get_by_id):
1122         (JSC::JIT::emit_op_get_by_id_direct):
1123         (JSC::JIT::emit_op_get_by_id):
1124         (JSC::JIT::emit_op_get_by_id_with_this):
1125         (JSC::JIT::emit_op_put_by_id):
1126         (JSC::JIT::emit_op_in_by_id):
1127         * jit/JITWorklist.cpp:
1128         (JSC::JITWorklist::Plan::Plan):
1129         (JSC::JITWorklist::Plan::compileNow):
1130         (JSC::JITWorklist::compileLater):
1131         (JSC::JITWorklist::compileNow):
1132         * jit/JITWorklist.h:
1133         * jit/PCToCodeOriginMap.cpp:
1134         (JSC::PCToCodeOriginMap::PCToCodeOriginMap):
1135         (JSC::PCToCodeOriginMap::findPC const):
1136         * jit/PCToCodeOriginMap.h:
1137         (JSC::PCToCodeOriginMapBuilder::defaultCodeOrigin):
1138         * jit/SlowPathCall.h:
1139         (JSC::JITSlowPathCall::call):
1140         * llint/LLIntSlowPaths.cpp:
1141         (JSC::LLInt::jitCompileAndSetHeuristics):
1142         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
1143         * profiler/ProfilerOrigin.cpp:
1144         (JSC::Profiler::Origin::Origin):
1145         (JSC::Profiler::Origin::dump const):
1146         (JSC::Profiler::Origin::toJS const):
1147         * profiler/ProfilerOrigin.h:
1148         (JSC::Profiler::Origin::Origin):
1149         (JSC::Profiler::Origin::operator! const):
1150         (JSC::Profiler::Origin::bytecodeIndex const):
1151         (JSC::Profiler::Origin::hash const):
1152         (JSC::Profiler::Origin::isHashTableDeletedValue const):
1153         * runtime/Error.cpp:
1154         (JSC::getBytecodeIndex):
1155         (JSC::getBytecodeOffset): Deleted.
1156         * runtime/Error.h:
1157         * runtime/ErrorInstance.cpp:
1158         (JSC::appendSourceToError):
1159         (JSC::ErrorInstance::finishCreation):
1160         * runtime/SamplingProfiler.cpp:
1161         (JSC::tryGetBytecodeIndex):
1162         (JSC::SamplingProfiler::processUnverifiedStackTraces):
1163         (JSC::SamplingProfiler::reportTopBytecodes):
1164         * runtime/SamplingProfiler.h:
1165         (JSC::SamplingProfiler::StackFrame::CodeLocation::hasBytecodeIndex const):
1166         * runtime/StackFrame.cpp:
1167         (JSC::StackFrame::StackFrame):
1168         (JSC::StackFrame::computeLineAndColumn const):
1169         * runtime/StackFrame.h:
1170         (JSC::StackFrame::hasBytecodeIndex const):
1171         (JSC::StackFrame::bytecodeIndex):
1172         (JSC::StackFrame::hasBytecodeOffset const): Deleted.
1173         (JSC::StackFrame::bytecodeOffset): Deleted.
1174         * tools/VMInspector.cpp:
1175         (JSC::VMInspector::dumpRegisters):
1176
1177 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
1178
1179         Unreviewed, make 32bit JIT built
1180         https://bugs.webkit.org/show_bug.cgi?id=202392
1181
1182         This patch makes 32bit JIT built at least.
1183
1184         * jit/JITOpcodes32_64.cpp:
1185         (JSC::JIT::emit_op_throw):
1186         * jit/JITPropertyAccess32_64.cpp:
1187         (JSC::JIT::emitGetByValWithCachedId):
1188         (JSC::JIT::emitSlow_op_get_by_id_direct):
1189         (JSC::JIT::emitSlow_op_get_by_id):
1190         (JSC::JIT::emitSlow_op_get_by_id_with_this):
1191         (JSC::JIT::emitSlow_op_get_from_scope):
1192
1193 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
1194
1195         [JSC] Remove non-LargeAllocation restriction for JSCallee
1196         https://bugs.webkit.org/show_bug.cgi?id=203260
1197
1198         Reviewed by Saam Barati.
1199
1200         We now pass JSGlobalObject* instead of ExecState*. And we are getting VM& from JSGlobalObject*.
1201         Because now accessing ExecState::vm() becomes less frequent, we can remove the restriction that
1202         callee is only allocated in non-LargeAllocation, which restriction made ExecState::vm fast.
1203
1204         This patch renames `CallFrame::vm` to `CallFrame::deprecatedVM`. And we avoid using it as much as possible.
1205         And we also remove the restriction that callee needs to be in non-LargeAllocation.
1206
1207         * API/JSContextRef.cpp:
1208         (JSContextCreateBacktrace):
1209         * bytecode/CodeBlock.cpp:
1210         (JSC::CodeBlock::noticeIncomingCall):
1211         * debugger/DebuggerCallFrame.cpp:
1212         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
1213         (JSC::DebuggerCallFrame::functionName const):
1214         (JSC::DebuggerCallFrame::scope):
1215         (JSC::DebuggerCallFrame::type const):
1216         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
1217         (JSC::DebuggerCallFrame::positionForCallFrame):
1218         * dfg/DFGOSRExit.cpp:
1219         (JSC::DFG::OSRExit::executeOSRExit):
1220         (JSC::DFG::OSRExit::compileOSRExit):
1221         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
1222         * dfg/DFGOperations.cpp:
1223         * ftl/FTLOSRExitCompiler.cpp:
1224         (JSC::FTL::compileFTLOSRExit):
1225         * ftl/FTLOperations.cpp:
1226         (JSC::FTL::compileFTLLazySlowPath):
1227         * inspector/JSInjectedScriptHost.cpp:
1228         (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
1229         * inspector/ScriptCallStackFactory.cpp:
1230         (Inspector::createScriptCallStack):
1231         (Inspector::createScriptCallStackForConsole):
1232         * interpreter/CallFrame.cpp:
1233         (JSC::CallFrame::callerSourceOrigin):
1234         (JSC::CallFrame::friendlyFunctionName):
1235         * interpreter/CallFrame.h:
1236         (JSC::CallFrame::iterate):
1237         * interpreter/Interpreter.cpp:
1238         (JSC::sizeOfVarargs):
1239         (JSC::sizeFrameForVarargs):
1240         (JSC::Interpreter::getStackTrace):
1241         (JSC::Interpreter::unwind):
1242         (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
1243         (JSC::Interpreter::debug):
1244         * interpreter/Interpreter.h:
1245         * interpreter/ShadowChicken.cpp:
1246         (JSC::ShadowChicken::update):
1247         * interpreter/StackVisitor.cpp:
1248         (JSC::StackVisitor::StackVisitor):
1249         (JSC::StackVisitor::Frame::functionName const):
1250         * interpreter/StackVisitor.h:
1251         (JSC::StackVisitor::visit):
1252         * jit/HostCallReturnValue.cpp:
1253         (JSC::getHostCallReturnValueWithExecState):
1254         * jit/JITOperations.cpp:
1255         * jit/Repatch.cpp:
1256         (JSC::linkFor):
1257         (JSC::linkPolymorphicCall):
1258         * jit/Repatch.h:
1259         * jsc.cpp:
1260         (functionJSCStack):
1261         (functionRunString):
1262         (functionLoadString):
1263         (functionCallerSourceOrigin):
1264         (functionCallerIsOMGCompiled):
1265         (functionDollarEvalScript):
1266         * llint/LLIntSlowPaths.cpp:
1267         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
1268         * runtime/Error.cpp:
1269         (JSC::getBytecodeOffset):
1270         * runtime/FunctionConstructor.cpp:
1271         (JSC::constructFunction):
1272         * runtime/JSCellInlines.h:
1273         (JSC::CallFrame::deprecatedVM const):
1274         (JSC::CallFrame::vm const): Deleted.
1275         * runtime/JSFunction.cpp:
1276         (JSC::retrieveArguments):
1277         (JSC::JSFunction::argumentsGetter):
1278         (JSC::retrieveCallerFunction):
1279         (JSC::JSFunction::callerGetter):
1280         (JSC::JSFunction::defineOwnProperty):
1281         * runtime/JSGlobalObject.cpp:
1282         (JSC::assertCall):
1283         * runtime/JSGlobalObjectFunctions.cpp:
1284         (JSC::globalFuncEval):
1285         (JSC::globalFuncImportModule):
1286         * runtime/NullSetterFunction.cpp:
1287         (JSC::callerIsStrict):
1288         (JSC::NullSetterFunctionInternal::callReturnUndefined):
1289         * tools/JSDollarVM.cpp:
1290         (IGNORE_WARNINGS_BEGIN):
1291         (JSC::functionLLintTrue):
1292         (JSC::functionJITTrue):
1293         (JSC::functionDumpRegisters):
1294         (JSC::functionShadowChickenFunctionsOnStack):
1295         * tools/VMInspector.cpp:
1296         (JSC::VMInspector::codeBlockForFrame):
1297         (JSC::VMInspector::dumpCallFrame):
1298         (JSC::VMInspector::dumpRegisters):
1299         (JSC::VMInspector::dumpStack):
1300         * wasm/js/WasmToJS.cpp:
1301         (JSC::Wasm::wasmToJS):
1302
1303 2019-10-22  Mark Lam  <mark.lam@apple.com>
1304
1305         Clients of JSArray::tryCreateUninitializedRestricted() should invoke the mutatorFence().
1306         https://bugs.webkit.org/show_bug.cgi?id=203231
1307         <rdar://problem/56486552>
1308
1309         Reviewed by Saam Barati.
1310
1311         Clients of JSArray::tryCreateUninitializedRestricted() creates a partially
1312         initialized JSArray butterfly, with the contract that it (the client) will take
1313         care of filling in all the missing indexed properties before setting the newly
1314         created array loose in the world.  We intentionally do not unconditionally write
1315         barrier the newly created array but, instead, rely on an owner object (or GC root)
1316         that it gets put into to scan it.
1317
1318         That said, we do need to ensure that all the stores are completed before this
1319         array is put in an owner object (or GC root) which makes it scannable by the GC.
1320         This ensures that the GC will not be scanning a partially initialized array
1321         butterfly.  To achieve this, we should invoke the mutatorFence after the clients
1322         of JSArray::tryCreateUninitializedRestricted() finish initializing the array.
1323
1324         By design, all clients of tryCreateUninitializedRestricted() must instantiate an
1325         ObjectInitializationScope RAII object.  This patch makes use of the
1326         ObjectInitializationScope destructor to invoke the mutatorFence.
1327
1328         Note: we technically only need to invoke the fence if we succeeded in allocating
1329         the array.  However, we just invoke the fence unconditionally because we expect
1330         that in the common path, we will succeed in allocating the array.  The release
1331         build version of ObjectInitializationScope does not keep record of whether we
1332         succeed in allocating the array anyway.  To keep the behavior consistent, the
1333         debug build version of ObjectInitializationScope will also unconditionally
1334         invoke the fence even if we failed to allocate the array.
1335
1336         This patch also does the following:
1337
1338         1. Replaced the setting of the public length in arrayProtoPrivateFuncConcatMemcpy()
1339            with an assertion.  The public length was already set by
1340            tryCreateUninitializedRestricted() earlier.
1341
1342            Ditto for JSArray::fastSlice().
1343
1344         2. Removed a redundant instance of ObjectInitializationScope in
1345            createEmptyRegExpMatchesArray().
1346
1347         * runtime/ArrayPrototype.cpp:
1348         (JSC::arrayProtoPrivateFuncConcatMemcpy):
1349         * runtime/JSArray.cpp:
1350         (JSC::JSArray::fastSlice):
1351         * runtime/ObjectInitializationScope.cpp:
1352         (JSC::ObjectInitializationScope::~ObjectInitializationScope):
1353         * runtime/ObjectInitializationScope.h:
1354         (JSC::ObjectInitializationScope::~ObjectInitializationScope):
1355         * runtime/RegExpMatchesArray.cpp:
1356         (JSC::createEmptyRegExpMatchesArray):
1357
1358 2019-10-22  Mark Lam  <mark.lam@apple.com>
1359
1360         Fix incorrect assertion in operationRegExpExecNonGlobalOrSticky().
1361         https://bugs.webkit.org/show_bug.cgi?id=203230
1362         <rdar://problem/56460749>
1363
1364         Reviewed by Robin Morisset.
1365
1366         operationRegExpExecNonGlobalOrSticky() was asserting no exception when
1367         createRegExpMatchesArray() returns null.  createRegExpMatchesArray() only returns
1368         null when RegExp::matchInline() returns -1.  RegExp::matchInline() can return -1
1369         either when there's an error, or if the match fails.  When there's an error,
1370         RegExp::matchInline() also throws an exception via a throwError() helper.
1371
1372         This patch fixes operationRegExpExecNonGlobalOrSticky() to check for an exception
1373         being thrown, or createRegExpMatchesArray() returning a null array due to a failed
1374         match.
1375
1376         * dfg/DFGOperations.cpp:
1377
1378 2019-10-22  Adrian Perez de Castro  <aperez@igalia.com>
1379
1380         [GTK][WPE] Fix non-unified builds after r251326
1381         https://bugs.webkit.org/show_bug.cgi?id=203244
1382
1383         Reviewed by Youenn Fablet.
1384
1385         * ftl/FTLOSREntry.h: Add missing forward declaration of JSC::VM.
1386         * inspector/ScriptCallStackFactory.h: Add missing forward declaration of JSC::JSGlobalObject.
1387         * llint/LLIntExceptions.h: Add missing forward declaration of JSC::VM.
1388         * runtime/ExceptionFuzz.h: Add missing forward declaration of JSC::JSGlobalObject.
1389         * runtime/JSDateMath.h: Ditto.
1390         * runtime/JSStringJoiner.h: Add missing inclusion of the JSGlobalObject.h header.
1391         * runtime/Watchdog.h: Add missing forward declaration of JSC::JSGlobalObject.
1392         * wasm/WasmOperations.h: Add missing forward declaration of JSC::JSWebAssemblyInstance.
1393
1394 2019-10-21  Yusuke Suzuki  <ysuzuki@apple.com>
1395
1396         [JSC] Thread JSGlobalObject* instead of ExecState*
1397         https://bugs.webkit.org/show_bug.cgi?id=202392
1398
1399         Reviewed by Geoffrey Garen.
1400
1401         This patch replaces JSC's convention entirely: instead of passing ExecState*, we pass lexical JSGlobalObject*.
1402         We have many issues historically.
1403
1404         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.
1405         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*.
1406
1407         This patch attempts to remove these issues entirely by passing JSGlobalObject* instead of ExecState*.
1408
1409         1. We change ExecState* to JSGlobalObject*.
1410         2. JIT operations should take JSGlobalObject* instead of ExecState* to reflect the inlinee's JSGlobalObject* correctly.
1411         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.
1412         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.
1413         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.
1414         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.
1415         7. This patch does not fix complicated JSGlobalObject* issues. But we put FIXME if it seems wrong and it needs to be revisited.
1416         8. FunctionConstructor, ArrayConstructor etc. are exposed from JSGlobalObject to use it for InternalFunction::createStructure() without using `CallFrame*`.
1417
1418         * API/APICallbackFunction.h:
1419         (JSC::APICallbackFunction::call):
1420         (JSC::APICallbackFunction::construct):
1421         * API/APICast.h:
1422         (toJS):
1423         (toJSGlobalObject):
1424         (toJSForGC):
1425         (toRef):
1426         (toGlobalRef):
1427         * API/APIUtils.h:
1428         (handleExceptionIfNeeded):
1429         (setException):
1430         * API/JSAPIGlobalObject.h:
1431         * API/JSAPIGlobalObject.mm:
1432         (JSC::JSAPIGlobalObject::moduleLoaderResolve):
1433         (JSC::JSAPIGlobalObject::moduleLoaderImportModule):
1434         (JSC::JSAPIGlobalObject::moduleLoaderFetch):
1435         (JSC::JSAPIGlobalObject::moduleLoaderCreateImportMetaProperties):
1436         (JSC::JSAPIGlobalObject::moduleLoaderEvaluate):
1437         (JSC::JSAPIGlobalObject::loadAndEvaluateJSScriptModule):
1438         * API/JSAPIValueWrapper.h:
1439         * API/JSBase.cpp:
1440         (JSEvaluateScriptInternal):
1441         (JSEvaluateScript):
1442         (JSCheckScriptSyntax):
1443         (JSGarbageCollect):
1444         (JSReportExtraMemoryCost):
1445         (JSSynchronousGarbageCollectForDebugging):
1446         (JSSynchronousEdenCollectForDebugging):
1447         * API/JSBaseInternal.h:
1448         * API/JSCTestRunnerUtils.cpp:
1449         (JSC::failNextNewCodeBlock):
1450         (JSC::numberOfDFGCompiles):
1451         (JSC::setNeverInline):
1452         (JSC::setNeverOptimize):
1453         * API/JSCallbackConstructor.h:
1454         * API/JSCallbackObject.h:
1455         * API/JSCallbackObjectFunctions.h:
1456         (JSC::JSCallbackObject<Parent>::JSCallbackObject):
1457         (JSC::JSCallbackObject<Parent>::finishCreation):
1458         (JSC::JSCallbackObject<Parent>::init):
1459         (JSC::JSCallbackObject<Parent>::toStringName):
1460         (JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
1461         (JSC::JSCallbackObject<Parent>::getOwnPropertySlotByIndex):
1462         (JSC::JSCallbackObject<Parent>::defaultValue):
1463         (JSC::JSCallbackObject<Parent>::put):
1464         (JSC::JSCallbackObject<Parent>::putByIndex):
1465         (JSC::JSCallbackObject<Parent>::deleteProperty):
1466         (JSC::JSCallbackObject<Parent>::deletePropertyByIndex):
1467         (JSC::JSCallbackObject<Parent>::construct):
1468         (JSC::JSCallbackObject<Parent>::customHasInstance):
1469         (JSC::JSCallbackObject<Parent>::call):
1470         (JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames):
1471         (JSC::JSCallbackObject<Parent>::getStaticValue):
1472         (JSC::JSCallbackObject<Parent>::staticFunctionGetter):
1473         (JSC::JSCallbackObject<Parent>::callbackGetter):
1474         * API/JSClassRef.cpp:
1475         (OpaqueJSClass::contextData):
1476         (OpaqueJSClass::staticValues):
1477         (OpaqueJSClass::staticFunctions):
1478         (OpaqueJSClass::prototype):
1479         * API/JSClassRef.h:
1480         * API/JSContext.mm:
1481         (-[JSContext ensureWrapperMap]):
1482         (-[JSContext evaluateJSScript:]):
1483         (-[JSContext dependencyIdentifiersForModuleJSScript:]):
1484         (-[JSContext setException:]):
1485         (-[JSContext initWithGlobalContextRef:]):
1486         (-[JSContext wrapperMap]):
1487         * API/JSContextRef.cpp:
1488         (internalScriptTimeoutCallback):
1489         (JSGlobalContextCreateInGroup):
1490         (JSGlobalContextRetain):
1491         (JSGlobalContextRelease):
1492         (JSContextGetGlobalObject):
1493         (JSContextGetGroup):
1494         (JSContextGetGlobalContext):
1495         (JSGlobalContextCopyName):
1496         (JSGlobalContextSetName):
1497         (JSGlobalContextSetUnhandledRejectionCallback):
1498         (JSContextCreateBacktrace):
1499         (JSGlobalContextGetRemoteInspectionEnabled):
1500         (JSGlobalContextSetRemoteInspectionEnabled):
1501         (JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions):
1502         (JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions):
1503         (JSGlobalContextGetDebuggerRunLoop):
1504         (JSGlobalContextSetDebuggerRunLoop):
1505         (JSGlobalContextGetAugmentableInspectorController):
1506         * API/JSManagedValue.mm:
1507         (-[JSManagedValue initWithValue:]):
1508         (-[JSManagedValue value]):
1509         * API/JSObjectRef.cpp:
1510         (JSObjectMake):
1511         (JSObjectMakeFunctionWithCallback):
1512         (JSObjectMakeConstructor):
1513         (JSObjectMakeFunction):
1514         (JSObjectMakeArray):
1515         (JSObjectMakeDate):
1516         (JSObjectMakeError):
1517         (JSObjectMakeRegExp):
1518         (JSObjectMakeDeferredPromise):
1519         (JSObjectGetPrototype):
1520         (JSObjectSetPrototype):
1521         (JSObjectHasProperty):
1522         (JSObjectGetProperty):
1523         (JSObjectSetProperty):
1524         (JSObjectHasPropertyForKey):
1525         (JSObjectGetPropertyForKey):
1526         (JSObjectSetPropertyForKey):
1527         (JSObjectDeletePropertyForKey):
1528         (JSObjectGetPropertyAtIndex):
1529         (JSObjectSetPropertyAtIndex):
1530         (JSObjectDeleteProperty):
1531         (JSObjectGetPrivateProperty):
1532         (JSObjectSetPrivateProperty):
1533         (JSObjectDeletePrivateProperty):
1534         (JSObjectIsFunction):
1535         (JSObjectCallAsFunction):
1536         (JSObjectIsConstructor):
1537         (JSObjectCallAsConstructor):
1538         (JSObjectCopyPropertyNames):
1539         (JSObjectGetGlobalContext):
1540         * API/JSScriptRef.cpp:
1541         * API/JSTypedArray.cpp:
1542         (createTypedArray):
1543         (JSValueGetTypedArrayType):
1544         (JSObjectMakeTypedArray):
1545         (JSObjectMakeTypedArrayWithBytesNoCopy):
1546         (JSObjectMakeTypedArrayWithArrayBuffer):
1547         (JSObjectMakeTypedArrayWithArrayBufferAndOffset):
1548         (JSObjectGetTypedArrayBytesPtr):
1549         (JSObjectGetTypedArrayLength):
1550         (JSObjectGetTypedArrayByteLength):
1551         (JSObjectGetTypedArrayByteOffset):
1552         (JSObjectGetTypedArrayBuffer):
1553         (JSObjectMakeArrayBufferWithBytesNoCopy):
1554         (JSObjectGetArrayBufferBytesPtr):
1555         (JSObjectGetArrayBufferByteLength):
1556         * API/JSValue.mm:
1557         (JSContainerConvertor::add):
1558         (reportExceptionToInspector):
1559         (valueToObjectWithoutCopy):
1560         (ObjcContainerConvertor::add):
1561         * API/JSValueRef.cpp:
1562         (JSValueGetType):
1563         (JSValueIsUndefined):
1564         (JSValueIsNull):
1565         (JSValueIsBoolean):
1566         (JSValueIsNumber):
1567         (JSValueIsString):
1568         (JSValueIsObject):
1569         (JSValueIsSymbol):
1570         (JSValueIsArray):
1571         (JSValueIsDate):
1572         (JSValueIsObjectOfClass):
1573         (JSValueIsEqual):
1574         (JSValueIsStrictEqual):
1575         (JSValueIsInstanceOfConstructor):
1576         (JSValueMakeUndefined):
1577         (JSValueMakeNull):
1578         (JSValueMakeBoolean):
1579         (JSValueMakeNumber):
1580         (JSValueMakeSymbol):
1581         (JSValueMakeString):
1582         (JSValueMakeFromJSONString):
1583         (JSValueCreateJSONString):
1584         (JSValueToBoolean):
1585         (JSValueToNumber):
1586         (JSValueToStringCopy):
1587         (JSValueToObject):
1588         (JSValueProtect):
1589         (JSValueUnprotect):
1590         * API/JSWeakObjectMapRefPrivate.cpp:
1591         * API/JSWrapperMap.mm:
1592         (constructorHasInstance):
1593         (makeWrapper):
1594         (putNonEnumerable):
1595         (copyMethodsToObject):
1596         (-[JSObjCClassInfo wrapperForObject:inContext:]):
1597         (-[JSObjCClassInfo structureInContext:]):
1598         * API/ObjCCallbackFunction.mm:
1599         (JSC::objCCallbackFunctionCallAsFunction):
1600         (JSC::objCCallbackFunctionCallAsConstructor):
1601         (objCCallbackFunctionForInvocation):
1602         * API/glib/JSCCallbackFunction.cpp:
1603         (JSC::JSCCallbackFunction::call):
1604         (JSC::JSCCallbackFunction::construct):
1605         * API/glib/JSCClass.cpp:
1606         (isWrappedObject):
1607         (jscContextForObject):
1608         (jscClassCreateConstructor):
1609         (jscClassAddMethod):
1610         * API/glib/JSCContext.cpp:
1611         (jsc_context_evaluate_in_object):
1612         (jsc_context_check_syntax):
1613         * API/glib/JSCException.cpp:
1614         (jscExceptionCreate):
1615         * API/glib/JSCValue.cpp:
1616         (jsc_value_object_define_property_data):
1617         (jsc_value_object_define_property_accessor):
1618         (jscValueFunctionCreate):
1619         * API/glib/JSCWeakValue.cpp:
1620         (jscWeakValueInitialize):
1621         (jsc_weak_value_get_value):
1622         * API/glib/JSCWrapperMap.cpp:
1623         (JSC::WrapperMap::createJSWrappper):
1624         (JSC::WrapperMap::createContextWithJSWrappper):
1625         * API/tests/JSONParseTest.cpp:
1626         (testJSONParse):
1627         * API/tests/JSObjectGetProxyTargetTest.cpp:
1628         (testJSObjectGetProxyTarget):
1629         * API/tests/JSWrapperMapTests.mm:
1630         (+[JSWrapperMapTests testStructureIdentity]):
1631         * API/tests/testapi.cpp:
1632         (APIContext::APIContext):
1633         (APIContext::operator JSC::JSGlobalObject*):
1634         (APIContext::operator JSC::ExecState*): Deleted.
1635         * CMakeLists.txt:
1636         * JavaScriptCore.xcodeproj/project.pbxproj:
1637         * bindings/ScriptFunctionCall.cpp:
1638         (Deprecated::ScriptCallArgumentHandler::appendArgument):
1639         (Deprecated::ScriptFunctionCall::ScriptFunctionCall):
1640         (Deprecated::ScriptFunctionCall::call):
1641         * bindings/ScriptFunctionCall.h:
1642         * bindings/ScriptObject.cpp:
1643         (Deprecated::ScriptObject::ScriptObject):
1644         * bindings/ScriptObject.h:
1645         (Deprecated::ScriptObject::globalObject const):
1646         (Deprecated::ScriptObject::scriptState const): Deleted.
1647         * bindings/ScriptValue.cpp:
1648         (Inspector::jsToInspectorValue):
1649         (Inspector::toInspectorValue):
1650         * bindings/ScriptValue.h:
1651         * bytecode/AccessCase.cpp:
1652         (JSC::AccessCase::generateImpl):
1653         * bytecode/AccessCaseSnippetParams.cpp:
1654         (JSC::SlowPathCallGeneratorWithArguments::generateImpl):
1655         * bytecode/CodeBlock.cpp:
1656         (JSC::CodeBlock::finishCreation):
1657         (JSC::CodeBlock::setConstantIdentifierSetRegisters):
1658         (JSC::CodeBlock::setConstantRegisters):
1659         (JSC::CodeBlock::linkIncomingCall):
1660         (JSC::CodeBlock::linkIncomingPolymorphicCall):
1661         (JSC::CodeBlock::noticeIncomingCall):
1662         * bytecode/CodeBlock.h:
1663         (JSC::CallFrame::r):
1664         (JSC::CallFrame::uncheckedR):
1665         (JSC::ExecState::r): Deleted.
1666         (JSC::ExecState::uncheckedR): Deleted.
1667         * bytecode/DirectEvalCodeCache.cpp:
1668         (JSC::DirectEvalCodeCache::setSlow):
1669         * bytecode/DirectEvalCodeCache.h:
1670         (JSC::DirectEvalCodeCache::set):
1671         * bytecode/InlineCallFrame.cpp:
1672         (JSC::InlineCallFrame::calleeForCallFrame const):
1673         * bytecode/InlineCallFrame.h:
1674         * bytecode/InternalFunctionAllocationProfile.h:
1675         (JSC::InternalFunctionAllocationProfile::createAllocationStructureFromBase):
1676         * bytecode/ObjectPropertyConditionSet.cpp:
1677         (JSC::generateConditionsForPropertyMiss):
1678         (JSC::generateConditionsForPropertySetterMiss):
1679         (JSC::generateConditionsForPrototypePropertyHit):
1680         (JSC::generateConditionsForPrototypePropertyHitCustom):
1681         (JSC::generateConditionsForInstanceOf):
1682         * bytecode/ObjectPropertyConditionSet.h:
1683         * bytecode/PolymorphicAccess.cpp:
1684         (JSC::AccessGenerationState::emitExplicitExceptionHandler):
1685         * bytecode/StructureStubInfo.h:
1686         (JSC::appropriateGenericGetByIdFunction):
1687         * bytecode/UnlinkedFunctionExecutable.cpp:
1688         (JSC::UnlinkedFunctionExecutable::fromGlobalCode):
1689         * bytecode/UnlinkedFunctionExecutable.h:
1690         * bytecode/ValueRecovery.cpp:
1691         (JSC::ValueRecovery::recover const):
1692         * bytecode/ValueRecovery.h:
1693         * debugger/Debugger.cpp:
1694         (JSC::Debugger::attach):
1695         (JSC::Debugger::hasBreakpoint):
1696         (JSC::Debugger::breakProgram):
1697         (JSC::lexicalGlobalObjectForCallFrame):
1698         (JSC::Debugger::updateCallFrame):
1699         (JSC::Debugger::pauseIfNeeded):
1700         (JSC::Debugger::exception):
1701         (JSC::Debugger::atStatement):
1702         (JSC::Debugger::atExpression):
1703         (JSC::Debugger::callEvent):
1704         (JSC::Debugger::returnEvent):
1705         (JSC::Debugger::unwindEvent):
1706         (JSC::Debugger::willExecuteProgram):
1707         (JSC::Debugger::didExecuteProgram):
1708         (JSC::Debugger::didReachBreakpoint):
1709         * debugger/Debugger.h:
1710         * debugger/DebuggerCallFrame.cpp:
1711         (JSC::DebuggerCallFrame::create):
1712         (JSC::DebuggerCallFrame::globalObject):
1713         (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const):
1714         (JSC::DebuggerCallFrame::thisValue const):
1715         (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
1716         (JSC::DebuggerCallFrame::sourceIDForCallFrame):
1717         (JSC::DebuggerCallFrame::globalExec): Deleted.
1718         (JSC::DebuggerCallFrame::vmEntryGlobalObject const): Deleted.
1719         * debugger/DebuggerCallFrame.h:
1720         * debugger/DebuggerEvalEnabler.h:
1721         (JSC::DebuggerEvalEnabler::DebuggerEvalEnabler):
1722         (JSC::DebuggerEvalEnabler::~DebuggerEvalEnabler):
1723         * debugger/DebuggerScope.cpp:
1724         (JSC::DebuggerScope::toStringName):
1725         (JSC::DebuggerScope::getOwnPropertySlot):
1726         (JSC::DebuggerScope::put):
1727         (JSC::DebuggerScope::deleteProperty):
1728         (JSC::DebuggerScope::getOwnPropertyNames):
1729         (JSC::DebuggerScope::defineOwnProperty):
1730         (JSC::DebuggerScope::caughtValue const):
1731         * debugger/DebuggerScope.h:
1732         * dfg/DFGAbstractInterpreterInlines.h:
1733         (JSC::DFG::AbstractInterpreter<AbstractStateType>::booleanResult):
1734         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
1735         * dfg/DFGArithMode.h:
1736         * dfg/DFGArrayifySlowPathGenerator.h:
1737         * dfg/DFGCallArrayAllocatorSlowPathGenerator.h:
1738         (JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
1739         (JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):
1740         (JSC::DFG::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator):
1741         * dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h:
1742         * dfg/DFGGraph.h:
1743         (JSC::DFG::Graph::globalThisObjectFor):
1744         * dfg/DFGJITCode.cpp:
1745         (JSC::DFG::JITCode::reconstruct):
1746         * dfg/DFGJITCode.h:
1747         * dfg/DFGJITCompiler.cpp:
1748         (JSC::DFG::JITCompiler::compileExceptionHandlers):
1749         (JSC::DFG::JITCompiler::compileFunction):
1750         * dfg/DFGOSREntry.cpp:
1751         (JSC::DFG::prepareOSREntry):
1752         (JSC::DFG::prepareCatchOSREntry):
1753         * dfg/DFGOSREntry.h:
1754         (JSC::DFG::prepareOSREntry):
1755         * dfg/DFGOSRExit.cpp:
1756         (JSC::DFG::createClonedArgumentsDuringExit):
1757         (JSC::DFG::OSRExit::executeOSRExit):
1758         (JSC::DFG::adjustAndJumpToTarget):
1759         (JSC::DFG::printOSRExit):
1760         (JSC::DFG::OSRExit::emitRestoreArguments):
1761         (JSC::DFG::OSRExit::compileOSRExit):
1762         (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
1763         * dfg/DFGOSRExit.h:
1764         * dfg/DFGOSRExitCompilerCommon.cpp:
1765         (JSC::DFG::osrWriteBarrier):
1766         (JSC::DFG::adjustAndJumpToTarget):
1767         * dfg/DFGOperations.cpp:
1768         (JSC::DFG::putByVal):
1769         (JSC::DFG::putByValInternal):
1770         (JSC::DFG::putByValCellInternal):
1771         (JSC::DFG::putByValCellStringInternal):
1772         (JSC::DFG::newTypedArrayWithSize):
1773         (JSC::DFG::putWithThis):
1774         (JSC::DFG::binaryOp):
1775         (JSC::DFG::bitwiseBinaryOp):
1776         (JSC::DFG::getByValObject):
1777         * dfg/DFGOperations.h:
1778         * dfg/DFGSaneStringGetByValSlowPathGenerator.h:
1779         (JSC::DFG::SaneStringGetByValSlowPathGenerator::SaneStringGetByValSlowPathGenerator):
1780         * dfg/DFGSpeculativeJIT.cpp:
1781         (JSC::DFG::SpeculativeJIT::compileInById):
1782         (JSC::DFG::SpeculativeJIT::compileInByVal):
1783         (JSC::DFG::SpeculativeJIT::compileDeleteById):
1784         (JSC::DFG::SpeculativeJIT::compileDeleteByVal):
1785         (JSC::DFG::SpeculativeJIT::compilePushWithScope):
1786         (JSC::DFG::SpeculativeJIT::compileStringSlice):
1787         (JSC::DFG::SpeculativeJIT::compileToLowerCase):
1788         (JSC::DFG::SpeculativeJIT::compileCheckTraps):
1789         (JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
1790         (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
1791         (JSC::DFG::SpeculativeJIT::compileFromCharCode):
1792         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
1793         (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithString):
1794         (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithSymbol):
1795         (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithString):
1796         (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithSymbol):
1797         (JSC::DFG::SpeculativeJIT::compileGetByValWithThis):
1798         (JSC::DFG::SpeculativeJIT::compileParseInt):
1799         (JSC::DFG::SpeculativeJIT::compileInstanceOfForCells):
1800         (JSC::DFG::SpeculativeJIT::compileValueBitNot):
1801         (JSC::DFG::SpeculativeJIT::emitUntypedBitOp):
1802         (JSC::DFG::SpeculativeJIT::compileValueBitwiseOp):
1803         (JSC::DFG::SpeculativeJIT::emitUntypedRightShiftBitOp):
1804         (JSC::DFG::SpeculativeJIT::compileValueLShiftOp):
1805         (JSC::DFG::SpeculativeJIT::compileValueBitRShift):
1806         (JSC::DFG::SpeculativeJIT::compileValueAdd):
1807         (JSC::DFG::SpeculativeJIT::compileValueSub):
1808         (JSC::DFG::SpeculativeJIT::compileMathIC):
1809         (JSC::DFG::SpeculativeJIT::compileInstanceOfCustom):
1810         (JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor):
1811         (JSC::DFG::SpeculativeJIT::compileArithAbs):
1812         (JSC::DFG::SpeculativeJIT::compileArithClz32):
1813         (JSC::DFG::SpeculativeJIT::compileArithDoubleUnaryOp):
1814         (JSC::DFG::SpeculativeJIT::compileValueMul):
1815         (JSC::DFG::SpeculativeJIT::compileValueDiv):
1816         (JSC::DFG::SpeculativeJIT::compileArithFRound):
1817         (JSC::DFG::SpeculativeJIT::compileValueMod):
1818         (JSC::DFG::SpeculativeJIT::compileArithRounding):
1819         (JSC::DFG::SpeculativeJIT::compileArithSqrt):
1820         (JSC::DFG::SpeculativeJIT::compileValuePow):
1821         (JSC::DFG::SpeculativeJIT::compileStringEquality):
1822         (JSC::DFG::SpeculativeJIT::compileStringCompare):
1823         (JSC::DFG::SpeculativeJIT::compileSameValue):
1824         (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
1825         (JSC::DFG::SpeculativeJIT::compileGetByValOnDirectArguments):
1826         (JSC::DFG::SpeculativeJIT::compileNewFunction):
1827         (JSC::DFG::SpeculativeJIT::compileSetFunctionName):
1828         (JSC::DFG::SpeculativeJIT::compileLoadVarargs):
1829         (JSC::DFG::SpeculativeJIT::compileCreateActivation):
1830         (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
1831         (JSC::DFG::SpeculativeJIT::compileCreateScopedArguments):
1832         (JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):
1833         (JSC::DFG::SpeculativeJIT::compileCreateRest):
1834         (JSC::DFG::SpeculativeJIT::compileSpread):
1835         (JSC::DFG::SpeculativeJIT::compileNewArray):
1836         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
1837         (JSC::DFG::SpeculativeJIT::compileArraySlice):
1838         (JSC::DFG::SpeculativeJIT::compileArrayIndexOf):
1839         (JSC::DFG::SpeculativeJIT::compileArrayPush):
1840         (JSC::DFG::SpeculativeJIT::compileNotifyWrite):
1841         (JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
1842         (JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
1843         (JSC::DFG::SpeculativeJIT::compileCallDOM):
1844         (JSC::DFG::SpeculativeJIT::compileCallDOMGetter):
1845         (JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOrStringValueOf):
1846         (JSC::DFG::SpeculativeJIT::compileNumberToStringWithValidRadixConstant):
1847         (JSC::DFG::SpeculativeJIT::compileNumberToStringWithRadix):
1848         (JSC::DFG::SpeculativeJIT::compileNewStringObject):
1849         (JSC::DFG::SpeculativeJIT::compileNewSymbol):
1850         (JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):
1851         (JSC::DFG::SpeculativeJIT::compileNewRegexp):
1852         (JSC::DFG::SpeculativeJIT::emitSwitchImm):
1853         (JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
1854         (JSC::DFG::SpeculativeJIT::emitSwitchChar):
1855         (JSC::DFG::SpeculativeJIT::emitSwitchStringOnString):
1856         (JSC::DFG::SpeculativeJIT::emitSwitchString):
1857         (JSC::DFG::SpeculativeJIT::compileStoreBarrier):
1858         (JSC::DFG::SpeculativeJIT::compilePutAccessorById):
1859         (JSC::DFG::SpeculativeJIT::compilePutGetterSetterById):
1860         (JSC::DFG::SpeculativeJIT::compileResolveScope):
1861         (JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):
1862         (JSC::DFG::SpeculativeJIT::compileGetDynamicVar):
1863         (JSC::DFG::SpeculativeJIT::compilePutDynamicVar):
1864         (JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):
1865         (JSC::DFG::SpeculativeJIT::compileStringReplace):
1866         (JSC::DFG::SpeculativeJIT::compileDefineDataProperty):
1867         (JSC::DFG::SpeculativeJIT::compileDefineAccessorProperty):
1868         (JSC::DFG::SpeculativeJIT::compileThrow):
1869         (JSC::DFG::SpeculativeJIT::compileThrowStaticError):
1870         (JSC::DFG::SpeculativeJIT::compileHasGenericProperty):
1871         (JSC::DFG::SpeculativeJIT::compileToIndexString):
1872         (JSC::DFG::SpeculativeJIT::compilePutByIdWithThis):
1873         (JSC::DFG::SpeculativeJIT::compileHasStructureProperty):
1874         (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
1875         (JSC::DFG::SpeculativeJIT::compileStrCat):
1876         (JSC::DFG::SpeculativeJIT::compileNewArrayBuffer):
1877         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSize):
1878         (JSC::DFG::SpeculativeJIT::compileNewTypedArray):
1879         (JSC::DFG::SpeculativeJIT::compileToThis):
1880         (JSC::DFG::SpeculativeJIT::compileObjectKeys):
1881         (JSC::DFG::SpeculativeJIT::compileObjectCreate):
1882         (JSC::DFG::SpeculativeJIT::compileCreateThis):
1883         (JSC::DFG::SpeculativeJIT::compileCreatePromise):
1884         (JSC::DFG::SpeculativeJIT::compileCreateInternalFieldObject):
1885         (JSC::DFG::SpeculativeJIT::compileNewObject):
1886         (JSC::DFG::SpeculativeJIT::compileNewPromise):
1887         (JSC::DFG::SpeculativeJIT::compileNewInternalFieldObject):
1888         (JSC::DFG::SpeculativeJIT::compileToPrimitive):
1889         (JSC::DFG::SpeculativeJIT::compileSetAdd):
1890         (JSC::DFG::SpeculativeJIT::compileMapSet):
1891         (JSC::DFG::SpeculativeJIT::compileWeakSetAdd):
1892         (JSC::DFG::SpeculativeJIT::compileWeakMapSet):
1893         (JSC::DFG::SpeculativeJIT::compileGetPrototypeOf):
1894         (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
1895         (JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):
1896         (JSC::DFG::SpeculativeJIT::compileGetDirectPname):
1897         (JSC::DFG::SpeculativeJIT::compileProfileType):
1898         (JSC::DFG::SpeculativeJIT::cachedPutById):
1899         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
1900         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
1901         (JSC::DFG::SpeculativeJIT::compileBigIntEquality):
1902         (JSC::DFG::SpeculativeJIT::compileMakeRope):
1903         * dfg/DFGSpeculativeJIT.h:
1904         (JSC::DFG::SpeculativeJIT::callOperationWithCallFrameRollbackOnException):
1905         (JSC::DFG::SpeculativeJIT::prepareForExternalCall):
1906         * dfg/DFGSpeculativeJIT32_64.cpp:
1907         (JSC::DFG::SpeculativeJIT::cachedGetById):
1908         (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
1909         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
1910         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
1911         (JSC::DFG::SpeculativeJIT::emitCall):
1912         (JSC::DFG::SpeculativeJIT::compileContiguousPutByVal):
1913         (JSC::DFG::SpeculativeJIT::compile):
1914         * dfg/DFGSpeculativeJIT64.cpp:
1915         (JSC::DFG::SpeculativeJIT::cachedGetById):
1916         (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
1917         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
1918         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
1919         (JSC::DFG::SpeculativeJIT::emitCall):
1920         (JSC::DFG::SpeculativeJIT::compile):
1921         * dynbench.cpp:
1922         (main):
1923         * ftl/FTLCompile.cpp:
1924         (JSC::FTL::compile):
1925         * ftl/FTLGeneratedFunction.h:
1926         * ftl/FTLLink.cpp:
1927         (JSC::FTL::link):
1928         * ftl/FTLLowerDFGToB3.cpp:
1929         (JSC::FTL::DFG::LowerDFGToB3::lower):
1930         (JSC::FTL::DFG::LowerDFGToB3::compileToObjectOrCallObjectConstructor):
1931         (JSC::FTL::DFG::LowerDFGToB3::compileToThis):
1932         (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
1933         (JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
1934         (JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
1935         (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
1936         (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
1937         (JSC::FTL::DFG::LowerDFGToB3::compileStrCat):
1938         (JSC::FTL::DFG::LowerDFGToB3::compileArithClz32):
1939         (JSC::FTL::DFG::LowerDFGToB3::compileValueDiv):
1940         (JSC::FTL::DFG::LowerDFGToB3::compileValueMod):
1941         (JSC::FTL::DFG::LowerDFGToB3::compileArithAbs):
1942         (JSC::FTL::DFG::LowerDFGToB3::compileArithUnary):
1943         (JSC::FTL::DFG::LowerDFGToB3::compileValuePow):
1944         (JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
1945         (JSC::FTL::DFG::LowerDFGToB3::compileArithFloor):
1946         (JSC::FTL::DFG::LowerDFGToB3::compileArithCeil):
1947         (JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc):
1948         (JSC::FTL::DFG::LowerDFGToB3::compileArithSqrt):
1949         (JSC::FTL::DFG::LowerDFGToB3::compileArithFRound):
1950         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot):
1951         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitAnd):
1952         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitOr):
1953         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitXor):
1954         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitRShift):
1955         (JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift):
1956         (JSC::FTL::DFG::LowerDFGToB3::compileArrayify):
1957         (JSC::FTL::DFG::LowerDFGToB3::compileGetById):
1958         (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
1959         (JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis):
1960         (JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis):
1961         (JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis):
1962         (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
1963         (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsIsLockFree):
1964         (JSC::FTL::DFG::LowerDFGToB3::compileDefineDataProperty):
1965         (JSC::FTL::DFG::LowerDFGToB3::compileDefineAccessorProperty):
1966         (JSC::FTL::DFG::LowerDFGToB3::compilePutById):
1967         (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
1968         (JSC::FTL::DFG::LowerDFGToB3::compileGetPrototypeOf):
1969         (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
1970         (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
1971         (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById):
1972         (JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById):
1973         (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal):
1974         (JSC::FTL::DFG::LowerDFGToB3::compileDeleteById):
1975         (JSC::FTL::DFG::LowerDFGToB3::compileDeleteByVal):
1976         (JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):
1977         (JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf):
1978         (JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
1979         (JSC::FTL::DFG::LowerDFGToB3::compilePushWithScope):
1980         (JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
1981         (JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
1982         (JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
1983         (JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments):
1984         (JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments):
1985         (JSC::FTL::DFG::LowerDFGToB3::compileCreateRest):
1986         (JSC::FTL::DFG::LowerDFGToB3::compileObjectKeys):
1987         (JSC::FTL::DFG::LowerDFGToB3::compileObjectCreate):
1988         (JSC::FTL::DFG::LowerDFGToB3::compileNewPromise):
1989         (JSC::FTL::DFG::LowerDFGToB3::compileNewInternalFieldObject):
1990         (JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
1991         (JSC::FTL::DFG::LowerDFGToB3::compileNewSymbol):
1992         (JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
1993         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
1994         (JSC::FTL::DFG::LowerDFGToB3::compileCreateThis):
1995         (JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
1996         (JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject):
1997         (JSC::FTL::DFG::LowerDFGToB3::compileSpread):
1998         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
1999         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
2000         (JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
2001         (JSC::FTL::DFG::LowerDFGToB3::compileToNumber):
2002         (JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf):
2003         (JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive):
2004         (JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
2005         (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
2006         (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
2007         (JSC::FTL::DFG::LowerDFGToB3::compileNotifyWrite):
2008         (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
2009         (JSC::FTL::DFG::LowerDFGToB3::compileSameValue):
2010         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
2011         (JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
2012         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
2013         (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
2014         (JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
2015         (JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs):
2016         (JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
2017         (JSC::FTL::DFG::LowerDFGToB3::compileThrow):
2018         (JSC::FTL::DFG::LowerDFGToB3::compileThrowStaticError):
2019         (JSC::FTL::DFG::LowerDFGToB3::mapHashString):
2020         (JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
2021         (JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
2022         (JSC::FTL::DFG::LowerDFGToB3::compileSetAdd):
2023         (JSC::FTL::DFG::LowerDFGToB3::compileMapSet):
2024         (JSC::FTL::DFG::LowerDFGToB3::compileWeakSetAdd):
2025         (JSC::FTL::DFG::LowerDFGToB3::compileWeakMapSet):
2026         (JSC::FTL::DFG::LowerDFGToB3::compileInByVal):
2027         (JSC::FTL::DFG::LowerDFGToB3::compileInById):
2028         (JSC::FTL::DFG::LowerDFGToB3::compileHasOwnProperty):
2029         (JSC::FTL::DFG::LowerDFGToB3::compileParseInt):
2030         (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
2031         (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom):
2032         (JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
2033         (JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty):
2034         (JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty):
2035         (JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
2036         (JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator):
2037         (JSC::FTL::DFG::LowerDFGToB3::compileToIndexString):
2038         (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
2039         (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
2040         (JSC::FTL::DFG::LowerDFGToB3::compileCheckTraps):
2041         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
2042         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExecNonGlobalOrSticky):
2043         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFastGlobal):
2044         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
2045         (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFast):
2046         (JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
2047         (JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName):
2048         (JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
2049         (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
2050         (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
2051         (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
2052         (JSC::FTL::DFG::LowerDFGToB3::getById):
2053         (JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):
2054         (JSC::FTL::DFG::LowerDFGToB3::compare):
2055         (JSC::FTL::DFG::LowerDFGToB3::compileStringSlice):
2056         (JSC::FTL::DFG::LowerDFGToB3::compileToLowerCase):
2057         (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithRadix):
2058         (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithValidRadixConstant):
2059         (JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval):
2060         (JSC::FTL::DFG::LowerDFGToB3::compileResolveScope):
2061         (JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar):
2062         (JSC::FTL::DFG::LowerDFGToB3::compilePutDynamicVar):
2063         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOM):
2064         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
2065         (JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare):
2066         (JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
2067         (JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet):
2068         (JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):
2069         (JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet):
2070         (JSC::FTL::DFG::LowerDFGToB3::allocateObject):
2071         (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
2072         (JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket):
2073         (JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds):
2074         (JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):
2075         (JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):
2076         (JSC::FTL::DFG::LowerDFGToB3::callCheck):
2077         * ftl/FTLOSREntry.cpp:
2078         (JSC::FTL::prepareOSREntry):
2079         * ftl/FTLOSREntry.h:
2080         * ftl/FTLOSRExitCompiler.cpp:
2081         (JSC::FTL::compileStub):
2082         (JSC::FTL::compileFTLOSRExit):
2083         * ftl/FTLOSRExitCompiler.h:
2084         * ftl/FTLOperations.cpp:
2085         (JSC::FTL::operationPopulateObjectInOSR):
2086         (JSC::FTL::operationMaterializeObjectInOSR):
2087         (JSC::FTL::compileFTLLazySlowPath):
2088         * ftl/FTLOperations.h:
2089         * ftl/FTLSlowPathCall.h:
2090         (JSC::FTL::callOperation):
2091         * generator/Metadata.rb:
2092         * heap/Handle.h:
2093         * heap/HeapCell.h:
2094         * heap/HeapSnapshotBuilder.cpp:
2095         (JSC::HeapSnapshotBuilder::json):
2096         * inspector/ConsoleMessage.cpp:
2097         (Inspector::ConsoleMessage::ConsoleMessage):
2098         (Inspector::ConsoleMessage::autogenerateMetadata):
2099         (Inspector::ConsoleMessage::addToFrontend):
2100         (Inspector::ConsoleMessage::globalObject const):
2101         (Inspector::ConsoleMessage::scriptState const): Deleted.
2102         * inspector/ConsoleMessage.h:
2103         * inspector/InjectedScript.cpp:
2104         (Inspector::InjectedScript::wrapCallFrames const):
2105         (Inspector::InjectedScript::wrapObject const):
2106         (Inspector::InjectedScript::wrapJSONString const):
2107         (Inspector::InjectedScript::wrapTable const):
2108         (Inspector::InjectedScript::previewValue const):
2109         (Inspector::InjectedScript::arrayFromVector):
2110         * inspector/InjectedScriptBase.cpp:
2111         (Inspector::InjectedScriptBase::hasAccessToInspectedScriptState const):
2112         (Inspector::InjectedScriptBase::callFunctionWithEvalEnabled const):
2113         (Inspector::InjectedScriptBase::makeCall):
2114         (Inspector::InjectedScriptBase::makeAsyncCall):
2115         * inspector/InjectedScriptBase.h:
2116         * inspector/InjectedScriptHost.cpp:
2117         (Inspector::InjectedScriptHost::wrapper):
2118         * inspector/InjectedScriptHost.h:
2119         * inspector/InjectedScriptManager.cpp:
2120         (Inspector::InjectedScriptManager::injectedScriptIdFor):
2121         (Inspector::InjectedScriptManager::createInjectedScript):
2122         (Inspector::InjectedScriptManager::injectedScriptFor):
2123         * inspector/InjectedScriptManager.h:
2124         * inspector/InjectedScriptModule.cpp:
2125         (Inspector::InjectedScriptModule::ensureInjected):
2126         * inspector/InjectedScriptModule.h:
2127         * inspector/InspectorEnvironment.h:
2128         * inspector/JSGlobalObjectConsoleClient.cpp:
2129         (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel):
2130         (Inspector::JSGlobalObjectConsoleClient::count):
2131         (Inspector::JSGlobalObjectConsoleClient::countReset):
2132         (Inspector::JSGlobalObjectConsoleClient::profile):
2133         (Inspector::JSGlobalObjectConsoleClient::profileEnd):
2134         (Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot):
2135         (Inspector::JSGlobalObjectConsoleClient::time):
2136         (Inspector::JSGlobalObjectConsoleClient::timeLog):
2137         (Inspector::JSGlobalObjectConsoleClient::timeEnd):
2138         (Inspector::JSGlobalObjectConsoleClient::timeStamp):
2139         (Inspector::JSGlobalObjectConsoleClient::record):
2140         (Inspector::JSGlobalObjectConsoleClient::recordEnd):
2141         (Inspector::JSGlobalObjectConsoleClient::screenshot):
2142         * inspector/JSGlobalObjectConsoleClient.h:
2143         * inspector/JSGlobalObjectInspectorController.cpp:
2144         (Inspector::JSGlobalObjectInspectorController::reportAPIException):
2145         * inspector/JSGlobalObjectInspectorController.h:
2146         * inspector/JSGlobalObjectScriptDebugServer.h:
2147         * inspector/JSInjectedScriptHost.cpp:
2148         (Inspector::JSInjectedScriptHost::evaluate const):
2149         (Inspector::JSInjectedScriptHost::savedResultAlias const):
2150         (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
2151         (Inspector::JSInjectedScriptHost::internalConstructorName):
2152         (Inspector::JSInjectedScriptHost::isHTMLAllCollection):
2153         (Inspector::JSInjectedScriptHost::isPromiseRejectedWithNativeGetterTypeError):
2154         (Inspector::JSInjectedScriptHost::subtype):
2155         (Inspector::JSInjectedScriptHost::functionDetails):
2156         (Inspector::constructInternalProperty):
2157         (Inspector::JSInjectedScriptHost::getInternalProperties):
2158         (Inspector::JSInjectedScriptHost::proxyTargetValue):
2159         (Inspector::JSInjectedScriptHost::weakMapSize):
2160         (Inspector::JSInjectedScriptHost::weakMapEntries):
2161         (Inspector::JSInjectedScriptHost::weakSetSize):
2162         (Inspector::JSInjectedScriptHost::weakSetEntries):
2163         (Inspector::cloneArrayIteratorObject):
2164         (Inspector::cloneMapIteratorObject):
2165         (Inspector::cloneSetIteratorObject):
2166         (Inspector::JSInjectedScriptHost::iteratorEntries):
2167         (Inspector::checkForbiddenPrototype):
2168         (Inspector::JSInjectedScriptHost::queryInstances):
2169         (Inspector::JSInjectedScriptHost::queryHolders):
2170         * inspector/JSInjectedScriptHost.h:
2171         * inspector/JSInjectedScriptHostPrototype.cpp:
2172         (Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
2173         (Inspector::jsInjectedScriptHostPrototypeAttributeSavedResultAlias):
2174         (Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
2175         (Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
2176         (Inspector::jsInjectedScriptHostPrototypeFunctionIsPromiseRejectedWithNativeGetterTypeError):
2177         (Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
2178         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
2179         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
2180         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
2181         (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
2182         (Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
2183         (Inspector::jsInjectedScriptHostPrototypeFunctionQueryInstances):
2184         (Inspector::jsInjectedScriptHostPrototypeFunctionQueryHolders):
2185         (Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
2186         (Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
2187         (Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
2188         (Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):
2189         * inspector/JSJavaScriptCallFrame.cpp:
2190         (Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
2191         (Inspector::valueForScopeLocation):
2192         (Inspector::JSJavaScriptCallFrame::scopeDescriptions):
2193         (Inspector::JSJavaScriptCallFrame::caller const):
2194         (Inspector::JSJavaScriptCallFrame::sourceID const):
2195         (Inspector::JSJavaScriptCallFrame::line const):
2196         (Inspector::JSJavaScriptCallFrame::column const):
2197         (Inspector::JSJavaScriptCallFrame::functionName const):
2198         (Inspector::JSJavaScriptCallFrame::scopeChain const):
2199         (Inspector::JSJavaScriptCallFrame::thisObject const):
2200         (Inspector::JSJavaScriptCallFrame::isTailDeleted const):
2201         (Inspector::JSJavaScriptCallFrame::type const):
2202         (Inspector::toJS):
2203         * inspector/JSJavaScriptCallFrame.h:
2204         * inspector/JSJavaScriptCallFramePrototype.cpp:
2205         (Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
2206         (Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
2207         (Inspector::jsJavaScriptCallFrameAttributeCaller):
2208         (Inspector::jsJavaScriptCallFrameAttributeSourceID):
2209         (Inspector::jsJavaScriptCallFrameAttributeLine):
2210         (Inspector::jsJavaScriptCallFrameAttributeColumn):
2211         (Inspector::jsJavaScriptCallFrameAttributeFunctionName):
2212         (Inspector::jsJavaScriptCallFrameAttributeScopeChain):
2213         (Inspector::jsJavaScriptCallFrameAttributeThisObject):
2214         (Inspector::jsJavaScriptCallFrameAttributeType):
2215         (Inspector::jsJavaScriptCallFrameIsTailDeleted):
2216         * inspector/JavaScriptCallFrame.h:
2217         (Inspector::JavaScriptCallFrame::deprecatedVMEntryGlobalObject const):
2218         (Inspector::JavaScriptCallFrame::vmEntryGlobalObject const): Deleted.
2219         * inspector/ScriptArguments.cpp:
2220         (Inspector::ScriptArguments::create):
2221         (Inspector::ScriptArguments::ScriptArguments):
2222         (Inspector::ScriptArguments::globalObject const):
2223         (Inspector::ScriptArguments::getFirstArgumentAsString const):
2224         (Inspector::ScriptArguments::isEqual const):
2225         (Inspector::ScriptArguments::globalState const): Deleted.
2226         * inspector/ScriptArguments.h:
2227         * inspector/ScriptCallStackFactory.cpp:
2228         (Inspector::createScriptCallStack):
2229         (Inspector::createScriptCallStackForConsole):
2230         (Inspector::extractSourceInformationFromException):
2231         (Inspector::createScriptCallStackFromException):
2232         (Inspector::createScriptArguments):
2233         * inspector/ScriptCallStackFactory.h:
2234         * inspector/ScriptDebugListener.h:
2235         * inspector/ScriptDebugServer.cpp:
2236         (Inspector::ScriptDebugServer::evaluateBreakpointAction):
2237         (Inspector::ScriptDebugServer::sourceParsed):
2238         (Inspector::ScriptDebugServer::handleExceptionInBreakpointCondition const):
2239         (Inspector::ScriptDebugServer::handlePause):
2240         (Inspector::ScriptDebugServer::exceptionOrCaughtValue):
2241         * inspector/ScriptDebugServer.h:
2242         * inspector/agents/InspectorAuditAgent.cpp:
2243         (Inspector::InspectorAuditAgent::setup):
2244         (Inspector::InspectorAuditAgent::populateAuditObject):
2245         * inspector/agents/InspectorAuditAgent.h:
2246         * inspector/agents/InspectorConsoleAgent.cpp:
2247         (Inspector::InspectorConsoleAgent::startTiming):
2248         (Inspector::InspectorConsoleAgent::logTiming):
2249         (Inspector::InspectorConsoleAgent::stopTiming):
2250         (Inspector::InspectorConsoleAgent::count):
2251         (Inspector::InspectorConsoleAgent::countReset):
2252         * inspector/agents/InspectorConsoleAgent.h:
2253         * inspector/agents/InspectorDebuggerAgent.cpp:
2254         (Inspector::InspectorDebuggerAgent::didScheduleAsyncCall):
2255         (Inspector::InspectorDebuggerAgent::resume):
2256         (Inspector::InspectorDebuggerAgent::didPause):
2257         (Inspector::InspectorDebuggerAgent::breakpointActionProbe):
2258         (Inspector::InspectorDebuggerAgent::didContinue):
2259         (Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState):
2260         (Inspector::InspectorDebuggerAgent::assertPaused):
2261         * inspector/agents/InspectorDebuggerAgent.h:
2262         * inspector/agents/InspectorHeapAgent.cpp:
2263         (Inspector::InspectorHeapAgent::snapshot):
2264         (Inspector::InspectorHeapAgent::getPreview):
2265         (Inspector::InspectorHeapAgent::getRemoteObject):
2266         * inspector/agents/JSGlobalObjectAuditAgent.cpp:
2267         (Inspector::JSGlobalObjectAuditAgent::injectedScriptForEval):
2268         * inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
2269         (Inspector::JSGlobalObjectDebuggerAgent::injectedScriptForEval):
2270         (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog):
2271         * inspector/agents/JSGlobalObjectDebuggerAgent.h:
2272         * inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
2273         (Inspector::JSGlobalObjectRuntimeAgent::injectedScriptForEval):
2274         * interpreter/AbstractPC.cpp:
2275         (JSC::AbstractPC::AbstractPC):
2276         * interpreter/AbstractPC.h:
2277         * interpreter/CachedCall.h:
2278         (JSC::CachedCall::CachedCall):
2279         * interpreter/CallFrame.cpp:
2280         (JSC::CallFrame::initDeprecatedCallFrameForDebugger):
2281         (JSC::CallFrame::wasmAwareLexicalGlobalObject):
2282         (JSC::CallFrame::convertToStackOverflowFrame):
2283         (JSC::ExecState::initGlobalExec): Deleted.
2284         * interpreter/CallFrame.h:
2285         (JSC::CallFrame::isDeprecatedCallFrameForDebugger const):
2286         (JSC::CallFrame::isGlobalExec const): Deleted.
2287         * interpreter/Interpreter.cpp:
2288         (JSC::eval):
2289         (JSC::sizeOfVarargs):
2290         (JSC::sizeFrameForForwardArguments):
2291         (JSC::sizeFrameForVarargs):
2292         (JSC::loadVarargs):
2293         (JSC::setupVarargsFrame):
2294         (JSC::setupVarargsFrameAndSetThis):
2295         (JSC::setupForwardArgumentsFrame):
2296         (JSC::setupForwardArgumentsFrameAndSetThis):
2297         (JSC::notifyDebuggerOfUnwinding):
2298         (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
2299         (JSC::Interpreter::executeProgram):
2300         (JSC::Interpreter::executeCall):
2301         (JSC::Interpreter::executeConstruct):
2302         (JSC::Interpreter::execute):
2303         (JSC::Interpreter::executeModuleProgram):
2304         (JSC::Interpreter::debug):
2305         * interpreter/Interpreter.h:
2306         * interpreter/InterpreterInlines.h:
2307         (JSC::Interpreter::execute):
2308         * interpreter/Register.h:
2309         * interpreter/ShadowChicken.cpp:
2310         (JSC::ShadowChicken::log):
2311         (JSC::ShadowChicken::update):
2312         (JSC::ShadowChicken::functionsOnStack):
2313         * interpreter/ShadowChicken.h:
2314         * interpreter/ShadowChickenInlines.h:
2315         (JSC::ShadowChicken::iterate):
2316         * interpreter/StackVisitor.cpp:
2317         (JSC::StackVisitor::Frame::createArguments):
2318         * interpreter/StackVisitor.h:
2319         * jit/AssemblyHelpers.cpp:
2320         (JSC::AssemblyHelpers::emitDumbVirtualCall):
2321         * jit/AssemblyHelpers.h:
2322         * jit/CCallHelpers.cpp:
2323         (JSC::CCallHelpers::ensureShadowChickenPacket):
2324         * jit/CCallHelpers.h:
2325         (JSC::CCallHelpers::prepareCallOperation):
2326         (JSC::CCallHelpers::setupArguments):
2327         * jit/HostCallReturnValue.cpp:
2328         (JSC::getHostCallReturnValueWithExecState):
2329         * jit/HostCallReturnValue.h:
2330         (JSC::initializeHostCallReturnValue):
2331         * jit/JIT.cpp:
2332         (JSC::JIT::emitEnterOptimizationCheck):
2333         (JSC::JIT::compileWithoutLinking):
2334         (JSC::JIT::privateCompileExceptionHandlers):
2335         * jit/JIT.h:
2336         * jit/JITArithmetic.cpp:
2337         (JSC::JIT::emit_compareAndJumpSlow):
2338         (JSC::JIT::emitMathICFast):
2339         (JSC::JIT::emitMathICSlow):
2340         * jit/JITArithmetic32_64.cpp:
2341         (JSC::JIT::emit_compareAndJumpSlow):
2342         * jit/JITCall.cpp:
2343         (JSC::JIT::compileSetupFrame):
2344         (JSC::JIT::compileCallEval):
2345         (JSC::JIT::compileCallEvalSlowCase):
2346         (JSC::JIT::compileOpCallSlowCase):
2347         * jit/JITCall32_64.cpp:
2348         (JSC::JIT::compileCallEval):
2349         (JSC::JIT::compileCallEvalSlowCase):
2350         (JSC::JIT::compileOpCallSlowCase):
2351         * jit/JITExceptions.cpp:
2352         (JSC::genericUnwind):
2353         * jit/JITExceptions.h:
2354         * jit/JITOpcodes.cpp:
2355         (JSC::JIT::emitSlow_op_new_object):
2356         (JSC::JIT::emitSlow_op_instanceof):
2357         (JSC::JIT::emit_op_set_function_name):
2358         (JSC::JIT::emit_op_throw):
2359         (JSC::JIT::emitSlow_op_jstricteq):
2360         (JSC::JIT::emitSlow_op_jnstricteq):
2361         (JSC::JIT::emit_op_catch):
2362         (JSC::JIT::emit_op_switch_imm):
2363         (JSC::JIT::emit_op_switch_char):
2364         (JSC::JIT::emit_op_switch_string):
2365         (JSC::JIT::emit_op_debug):
2366         (JSC::JIT::emitSlow_op_eq):
2367         (JSC::JIT::emitSlow_op_neq):
2368         (JSC::JIT::emitSlow_op_jeq):
2369         (JSC::JIT::emitSlow_op_jneq):
2370         (JSC::JIT::emitSlow_op_instanceof_custom):
2371         (JSC::JIT::emitSlow_op_loop_hint):
2372         (JSC::JIT::emitSlow_op_check_traps):
2373         (JSC::JIT::emit_op_new_regexp):
2374         (JSC::JIT::emitNewFuncCommon):
2375         (JSC::JIT::emitNewFuncExprCommon):
2376         (JSC::JIT::emit_op_new_array):
2377         (JSC::JIT::emit_op_new_array_with_size):
2378         (JSC::JIT::emitSlow_op_has_indexed_property):
2379         (JSC::JIT::emit_op_profile_type):
2380         * jit/JITOpcodes32_64.cpp:
2381         (JSC::JIT::emitSlow_op_new_object):
2382         (JSC::JIT::emit_op_catch):
2383         (JSC::JIT::emit_op_switch_imm):
2384         (JSC::JIT::emit_op_debug):
2385         (JSC::JIT::emit_op_profile_type):
2386         * jit/JITOperations.cpp:
2387         (JSC::newFunctionCommon):
2388         (JSC::getByVal):
2389         (JSC::tryGetByValOptimize):
2390         (JSC::operationNewFunctionCommon): Deleted.
2391         * jit/JITOperations.h:
2392         * jit/JITOperationsMSVC64.cpp:
2393         (JSC::getHostCallReturnValueWithExecState):
2394         * jit/JITPropertyAccess.cpp:
2395         (JSC::JIT::emitGetByValWithCachedId):
2396         (JSC::JIT::emitSlow_op_get_by_val):
2397         (JSC::JIT::emitPutByValWithCachedId):
2398         (JSC::JIT::emitSlow_op_put_by_val):
2399         (JSC::JIT::emit_op_put_getter_by_id):
2400         (JSC::JIT::emit_op_put_setter_by_id):
2401         (JSC::JIT::emit_op_put_getter_setter_by_id):
2402         (JSC::JIT::emit_op_put_getter_by_val):
2403         (JSC::JIT::emit_op_put_setter_by_val):
2404         (JSC::JIT::emit_op_del_by_id):
2405         (JSC::JIT::emit_op_del_by_val):
2406         (JSC::JIT::emitSlow_op_try_get_by_id):
2407         (JSC::JIT::emitSlow_op_get_by_id_direct):
2408         (JSC::JIT::emitSlow_op_get_by_id):
2409         (JSC::JIT::emitSlow_op_get_by_id_with_this):
2410         (JSC::JIT::emitSlow_op_put_by_id):
2411         (JSC::JIT::emitSlow_op_in_by_id):
2412         (JSC::JIT::emitSlow_op_get_from_scope):
2413         (JSC::JIT::emitSlow_op_put_to_scope):
2414         (JSC::JIT::emitWriteBarrier):
2415         * jit/PolymorphicCallStubRoutine.cpp:
2416         (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
2417         * jit/PolymorphicCallStubRoutine.h:
2418         * jit/Repatch.cpp:
2419         (JSC::forceICFailure):
2420         (JSC::tryCacheGetByID):
2421         (JSC::repatchGetByID):
2422         (JSC::tryCachePutByID):
2423         (JSC::repatchPutByID):
2424         (JSC::tryCacheInByID):
2425         (JSC::repatchInByID):
2426         (JSC::tryCacheInstanceOf):
2427         (JSC::repatchInstanceOf):
2428         (JSC::linkFor):
2429         (JSC::linkDirectFor):
2430         (JSC::linkSlowFor):
2431         (JSC::linkVirtualFor):
2432         (JSC::linkPolymorphicCall):
2433         * jit/Repatch.h:
2434         * jit/SnippetSlowPathCalls.h:
2435         * jit/ThunkGenerators.cpp:
2436         (JSC::throwExceptionFromCallSlowPathGenerator):
2437         (JSC::slowPathFor):
2438         (JSC::nativeForGenerator):
2439         (JSC::boundThisNoArgsFunctionCallGenerator):
2440         * jit/ThunkGenerators.h:
2441         * jsc.cpp:
2442         (GlobalObject::finishCreation):
2443         (GlobalObject::moduleLoaderImportModule):
2444         (GlobalObject::moduleLoaderResolve):
2445         (GlobalObject::moduleLoaderFetch):
2446         (GlobalObject::moduleLoaderCreateImportMetaProperties):
2447         (cStringFromViewWithString):
2448         (printInternal):
2449         (functionPrintStdOut):
2450         (functionPrintStdErr):
2451         (functionDebug):
2452         (functionSleepSeconds):
2453         (functionRun):
2454         (functionRunString):
2455         (functionLoad):
2456         (functionLoadString):
2457         (functionReadFile):
2458         (functionCheckSyntax):
2459         (functionSetSamplingFlags):
2460         (functionClearSamplingFlags):
2461         (functionSetRandomSeed):
2462         (functionNeverInlineFunction):
2463         (functionNoDFG):
2464         (functionNoOSRExitFuzzing):
2465         (functionOptimizeNextInvocation):
2466         (functionNumberOfDFGCompiles):
2467         (functionCallerIsOMGCompiled):
2468         (functionDollarEvalScript):
2469         (functionDollarAgentStart):
2470         (functionDollarAgentReceiveBroadcast):
2471         (functionDollarAgentReport):
2472         (functionDollarAgentSleep):
2473         (functionDollarAgentBroadcast):
2474         (functionFlashHeapAccess):
2475         (functionJSCOptions):
2476         (functionTransferArrayBuffer):
2477         (functionCheckModuleSyntax):
2478         (functionGenerateHeapSnapshot):
2479         (functionSamplingProfilerStackTraces):
2480         (functionAsyncTestStart):
2481         (functionWebAssemblyMemoryMode):
2482         (functionSetUnhandledRejectionCallback):
2483         (dumpException):
2484         (checkUncaughtException):
2485         (checkException):
2486         (runWithOptions):
2487         (runInteractive):
2488         * llint/LLIntExceptions.cpp:
2489         (JSC::LLInt::returnToThrow):
2490         (JSC::LLInt::callToThrow):
2491         * llint/LLIntExceptions.h:
2492         * llint/LLIntSlowPaths.cpp:
2493         (JSC::LLInt::getNonConstantOperand):
2494         (JSC::LLInt::getOperand):
2495         (JSC::LLInt::llint_trace_operand):
2496         (JSC::LLInt::llint_trace_value):
2497         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2498         (JSC::LLInt::traceFunctionPrologue):
2499         (JSC::LLInt::jitCompileAndSetHeuristics):
2500         (JSC::LLInt::entryOSR):
2501         (JSC::LLInt::setupGetByIdPrototypeCache):
2502         (JSC::LLInt::getByVal):
2503         (JSC::LLInt::handleHostCall):
2504         (JSC::LLInt::setUpCall):
2505         (JSC::LLInt::genericCall):
2506         (JSC::LLInt::varargsSetup):
2507         (JSC::LLInt::commonCallEval):
2508         (JSC::LLInt::llint_throw_stack_overflow_error):
2509         (JSC::LLInt::llint_write_barrier_slow):
2510         * llint/LLIntSlowPaths.h:
2511         * llint/LowLevelInterpreter.asm:
2512         * llint/LowLevelInterpreter.cpp:
2513         (JSC::CLoopRegister::operator CallFrame*):
2514         (JSC::CLoopRegister::operator ExecState*): Deleted.
2515         * parser/ModuleAnalyzer.cpp:
2516         (JSC::ModuleAnalyzer::ModuleAnalyzer):
2517         * parser/ModuleAnalyzer.h:
2518         * parser/ParserError.h:
2519         (JSC::ParserError::toErrorObject):
2520         * profiler/ProfilerBytecode.cpp:
2521         (JSC::Profiler::Bytecode::toJS const):
2522         * profiler/ProfilerBytecode.h:
2523         * profiler/ProfilerBytecodeSequence.cpp:
2524         (JSC::Profiler::BytecodeSequence::addSequenceProperties const):
2525         * profiler/ProfilerBytecodeSequence.h:
2526         * profiler/ProfilerBytecodes.cpp:
2527         (JSC::Profiler::Bytecodes::toJS const):
2528         * profiler/ProfilerBytecodes.h:
2529         * profiler/ProfilerCompilation.cpp:
2530         (JSC::Profiler::Compilation::toJS const):
2531         * profiler/ProfilerCompilation.h:
2532         * profiler/ProfilerCompiledBytecode.cpp:
2533         (JSC::Profiler::CompiledBytecode::toJS const):
2534         * profiler/ProfilerCompiledBytecode.h:
2535         * profiler/ProfilerDatabase.cpp:
2536         (JSC::Profiler::Database::toJS const):
2537         (JSC::Profiler::Database::toJSON const):
2538         * profiler/ProfilerDatabase.h:
2539         * profiler/ProfilerEvent.cpp:
2540         (JSC::Profiler::Event::toJS const):
2541         * profiler/ProfilerEvent.h:
2542         * profiler/ProfilerOSRExit.cpp:
2543         (JSC::Profiler::OSRExit::toJS const):
2544         * profiler/ProfilerOSRExit.h:
2545         * profiler/ProfilerOSRExitSite.cpp:
2546         (JSC::Profiler::OSRExitSite::toJS const):
2547         * profiler/ProfilerOSRExitSite.h:
2548         * profiler/ProfilerOrigin.cpp:
2549         (JSC::Profiler::Origin::toJS const):
2550         * profiler/ProfilerOrigin.h:
2551         * profiler/ProfilerOriginStack.cpp:
2552         (JSC::Profiler::OriginStack::toJS const):
2553         * profiler/ProfilerOriginStack.h:
2554         * profiler/ProfilerProfiledBytecodes.cpp:
2555         (JSC::Profiler::ProfiledBytecodes::toJS const):
2556         * profiler/ProfilerProfiledBytecodes.h:
2557         * profiler/ProfilerUID.cpp:
2558         (JSC::Profiler::UID::toJS const):
2559         * profiler/ProfilerUID.h:
2560         * runtime/AbstractModuleRecord.cpp:
2561         (JSC::AbstractModuleRecord::finishCreation):
2562         (JSC::AbstractModuleRecord::hostResolveImportedModule):
2563         (JSC::AbstractModuleRecord::resolveImport):
2564         (JSC::AbstractModuleRecord::resolveExportImpl):
2565         (JSC::AbstractModuleRecord::resolveExport):
2566         (JSC::getExportedNames):
2567         (JSC::AbstractModuleRecord::getModuleNamespace):
2568         (JSC::AbstractModuleRecord::link):
2569         (JSC::AbstractModuleRecord::evaluate):
2570         * runtime/AbstractModuleRecord.h:
2571         * runtime/ArgList.h:
2572         (JSC::ArgList::ArgList):
2573         * runtime/ArrayBufferView.h:
2574         * runtime/ArrayConstructor.cpp:
2575         (JSC::constructArrayWithSizeQuirk):
2576         (JSC::constructWithArrayConstructor):
2577         (JSC::callArrayConstructor):
2578         (JSC::isArraySlowInline):
2579         (JSC::isArraySlow):
2580         (JSC::arrayConstructorPrivateFuncIsArraySlow):
2581         * runtime/ArrayConstructor.h:
2582         (JSC::isArray):
2583         * runtime/ArrayPrototype.cpp:
2584         (JSC::ArrayPrototype::finishCreation):
2585         (JSC::getProperty):
2586         (JSC::putLength):
2587         (JSC::setLength):
2588         (JSC::speciesWatchpointIsValid):
2589         (JSC::arrayProtoFuncSpeciesCreate):
2590         (JSC::argumentClampedIndexFromStartOrEnd):
2591         (JSC::shift):
2592         (JSC::unshift):
2593         (JSC::fastJoin):
2594         (JSC::arrayProtoFuncToString):
2595         (JSC::arrayProtoFuncToLocaleString):
2596         (JSC::slowJoin):
2597         (JSC::arrayProtoFuncJoin):
2598         (JSC::arrayProtoFuncPop):
2599         (JSC::arrayProtoFuncPush):
2600         (JSC::arrayProtoFuncReverse):
2601         (JSC::arrayProtoFuncShift):
2602         (JSC::arrayProtoFuncSlice):
2603         (JSC::arrayProtoFuncSplice):
2604         (JSC::arrayProtoFuncUnShift):
2605         (JSC::fastIndexOf):
2606         (JSC::arrayProtoFuncIndexOf):
2607         (JSC::arrayProtoFuncLastIndexOf):
2608         (JSC::moveElements):
2609         (JSC::concatAppendOne):
2610         (JSC::arrayProtoPrivateFuncConcatMemcpy):
2611         (JSC::arrayProtoPrivateFuncAppendMemcpy):
2612         * runtime/AsyncFunctionConstructor.cpp:
2613         (JSC::callAsyncFunctionConstructor):
2614         (JSC::constructAsyncFunctionConstructor):
2615         * runtime/AsyncGeneratorFunctionConstructor.cpp:
2616         (JSC::callAsyncGeneratorFunctionConstructor):
2617         (JSC::constructAsyncGeneratorFunctionConstructor):
2618         * runtime/AtomicsObject.cpp:
2619         (JSC::atomicsFuncAdd):
2620         (JSC::atomicsFuncAnd):
2621         (JSC::atomicsFuncCompareExchange):
2622         (JSC::atomicsFuncExchange):
2623         (JSC::atomicsFuncIsLockFree):
2624         (JSC::atomicsFuncLoad):
2625         (JSC::atomicsFuncOr):
2626         (JSC::atomicsFuncStore):
2627         (JSC::atomicsFuncSub):
2628         (JSC::atomicsFuncWait):
2629         (JSC::atomicsFuncWake):
2630         (JSC::atomicsFuncXor):
2631         (JSC::operationAtomicsAdd):
2632         (JSC::operationAtomicsAnd):
2633         (JSC::operationAtomicsCompareExchange):
2634         (JSC::operationAtomicsExchange):
2635         (JSC::operationAtomicsIsLockFree):
2636         (JSC::operationAtomicsLoad):
2637         (JSC::operationAtomicsOr):
2638         (JSC::operationAtomicsStore):
2639         (JSC::operationAtomicsSub):
2640         (JSC::operationAtomicsXor):
2641         * runtime/AtomicsObject.h:
2642         * runtime/BigIntConstructor.cpp:
2643         (JSC::toBigInt):
2644         (JSC::callBigIntConstructor):
2645         * runtime/BigIntObject.cpp:
2646         (JSC::BigIntObject::toStringName):
2647         (JSC::BigIntObject::defaultValue):
2648         * runtime/BigIntObject.h:
2649         * runtime/BigIntPrototype.cpp:
2650         (JSC::bigIntProtoFuncToStringImpl):
2651         (JSC::bigIntProtoFuncValueOf):
2652         * runtime/BooleanConstructor.cpp:
2653         (JSC::callBooleanConstructor):
2654         (JSC::constructWithBooleanConstructor):
2655         (JSC::constructBooleanFromImmediateBoolean):
2656         * runtime/BooleanConstructor.h:
2657         * runtime/BooleanPrototype.cpp:
2658         (JSC::booleanProtoFuncToString):
2659         (JSC::booleanProtoFuncValueOf):
2660         * runtime/CallData.cpp:
2661         (JSC::call):
2662         (JSC::profiledCall):
2663         * runtime/CallData.h:
2664         * runtime/ClassInfo.h:
2665         * runtime/ClonedArguments.cpp:
2666         (JSC::ClonedArguments::createEmpty):
2667         (JSC::ClonedArguments::createWithInlineFrame):
2668         (JSC::ClonedArguments::createWithMachineFrame):
2669         (JSC::ClonedArguments::createByCopyingFrom):
2670         (JSC::ClonedArguments::getOwnPropertySlot):
2671         (JSC::ClonedArguments::getOwnPropertyNames):
2672         (JSC::ClonedArguments::put):
2673         (JSC::ClonedArguments::deleteProperty):
2674         (JSC::ClonedArguments::defineOwnProperty):
2675         (JSC::ClonedArguments::materializeSpecials):
2676         (JSC::ClonedArguments::materializeSpecialsIfNecessary):
2677         * runtime/ClonedArguments.h:
2678         * runtime/CommonSlowPaths.cpp:
2679         (JSC::throwArityCheckStackOverflowError):
2680         (JSC::SLOW_PATH_DECL):
2681         (JSC::createInternalFieldObject):
2682         (JSC::updateArithProfileForBinaryArithOp):
2683         * runtime/CommonSlowPaths.h:
2684         (JSC::CommonSlowPaths::codeBlockFromCallFrameCallee):
2685         (JSC::CommonSlowPaths::arityCheckFor):
2686         (JSC::CommonSlowPaths::opInByVal):
2687         (JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
2688         (JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal):
2689         (JSC::CommonSlowPaths::putDirectWithReify):
2690         (JSC::CommonSlowPaths::putDirectAccessorWithReify):
2691         * runtime/Completion.cpp:
2692         (JSC::checkSyntax):
2693         (JSC::checkModuleSyntax):
2694         (JSC::evaluate):
2695         (JSC::profiledEvaluate):
2696         (JSC::evaluateWithScopeExtension):
2697         (JSC::rejectPromise):
2698         (JSC::loadAndEvaluateModule):
2699         (JSC::loadModule):
2700         (JSC::linkAndEvaluateModule):
2701         (JSC::importModule):
2702         * runtime/Completion.h:
2703         (JSC::evaluate):
2704         (JSC::profiledEvaluate):
2705         * runtime/ConsoleClient.cpp:
2706         (JSC::ConsoleClient::printConsoleMessageWithArguments):
2707         (JSC::ConsoleClient::internalMessageWithTypeAndLevel):
2708         (JSC::ConsoleClient::logWithLevel):
2709         (JSC::ConsoleClient::clear):
2710         (JSC::ConsoleClient::dir):
2711         (JSC::ConsoleClient::dirXML):
2712         (JSC::ConsoleClient::table):
2713         (JSC::ConsoleClient::trace):
2714         (JSC::ConsoleClient::assertion):
2715         (JSC::ConsoleClient::group):
2716         (JSC::ConsoleClient::groupCollapsed):
2717         (JSC::ConsoleClient::groupEnd):
2718         * runtime/ConsoleClient.h:
2719         * runtime/ConsoleObject.cpp:
2720         (JSC::valueOrDefaultLabelString):
2721         (JSC::valueToStringWithUndefinedOrNullCheck):
2722         (JSC::consoleLogWithLevel):
2723         (JSC::consoleProtoFuncDebug):
2724         (JSC::consoleProtoFuncError):
2725         (JSC::consoleProtoFuncLog):
2726         (JSC::consoleProtoFuncInfo):
2727         (JSC::consoleProtoFuncWarn):
2728         (JSC::consoleProtoFuncClear):
2729         (JSC::consoleProtoFuncDir):
2730         (JSC::consoleProtoFuncDirXML):
2731         (JSC::consoleProtoFuncTable):
2732         (JSC::consoleProtoFuncTrace):
2733         (JSC::consoleProtoFuncAssert):
2734         (JSC::consoleProtoFuncCount):
2735         (JSC::consoleProtoFuncCountReset):
2736         (JSC::consoleProtoFuncProfile):
2737         (JSC::consoleProtoFuncProfileEnd):
2738         (JSC::consoleProtoFuncTakeHeapSnapshot):
2739         (JSC::consoleProtoFuncTime):
2740         (JSC::consoleProtoFuncTimeLog):
2741         (JSC::consoleProtoFuncTimeEnd):
2742         (JSC::consoleProtoFuncTimeStamp):
2743         (JSC::consoleProtoFuncGroup):
2744         (JSC::consoleProtoFuncGroupCollapsed):
2745         (JSC::consoleProtoFuncGroupEnd):
2746         (JSC::consoleProtoFuncRecord):
2747         (JSC::consoleProtoFuncRecordEnd):
2748         (JSC::consoleProtoFuncScreenshot):
2749         * runtime/ConstructData.cpp:
2750         (JSC::construct):
2751         (JSC::profiledConstruct):
2752         * runtime/ConstructData.h:
2753         (JSC::construct):
2754         (JSC::profiledConstruct):
2755         * runtime/CustomGetterSetter.cpp:
2756         (JSC::callCustomSetter):
2757         * runtime/CustomGetterSetter.h:
2758         * runtime/DataView.cpp:
2759         (JSC::DataView::wrap):
2760         * runtime/DataView.h:
2761         * runtime/DateConstructor.cpp:
2762         (JSC::millisecondsFromComponents):
2763         (JSC::constructDate):
2764         (JSC::constructWithDateConstructor):
2765         (JSC::dateParse):
2766         (JSC::dateUTC):
2767         * runtime/DateConstructor.h:
2768         * runtime/DateInstance.cpp:
2769         (JSC::DateInstance::calculateGregorianDateTime const):
2770         (JSC::DateInstance::calculateGregorianDateTimeUTC const):
2771         * runtime/DateInstance.h:
2772         * runtime/DatePrototype.cpp:
2773         (JSC::formatLocaleDate):
2774         (JSC::formateDateInstance):
2775         (JSC::fillStructuresUsingTimeArgs):
2776         (JSC::fillStructuresUsingDateArgs):
2777         (JSC::dateProtoFuncToString):
2778         (JSC::dateProtoFuncToUTCString):
2779         (JSC::dateProtoFuncToISOString):
2780         (JSC::dateProtoFuncToDateString):
2781         (JSC::dateProtoFuncToTimeString):
2782         (JSC::dateProtoFuncToLocaleString):
2783         (JSC::dateProtoFuncToLocaleDateString):
2784         (JSC::dateProtoFuncToLocaleTimeString):
2785         (JSC::dateProtoFuncToPrimitiveSymbol):
2786         (JSC::dateProtoFuncGetTime):
2787         (JSC::dateProtoFuncGetFullYear):
2788         (JSC::dateProtoFuncGetUTCFullYear):
2789         (JSC::dateProtoFuncGetMonth):
2790         (JSC::dateProtoFuncGetUTCMonth):
2791         (JSC::dateProtoFuncGetDate):
2792         (JSC::dateProtoFuncGetUTCDate):
2793         (JSC::dateProtoFuncGetDay):
2794         (JSC::dateProtoFuncGetUTCDay):
2795         (JSC::dateProtoFuncGetHours):
2796         (JSC::dateProtoFuncGetUTCHours):
2797         (JSC::dateProtoFuncGetMinutes):
2798         (JSC::dateProtoFuncGetUTCMinutes):
2799         (JSC::dateProtoFuncGetSeconds):
2800         (JSC::dateProtoFuncGetUTCSeconds):
2801         (JSC::dateProtoFuncGetMilliSeconds):
2802         (JSC::dateProtoFuncGetUTCMilliseconds):
2803         (JSC::dateProtoFuncGetTimezoneOffset):
2804         (JSC::dateProtoFuncSetTime):
2805         (JSC::setNewValueFromTimeArgs):
2806         (JSC::setNewValueFromDateArgs):
2807         (JSC::dateProtoFuncSetMilliSeconds):
2808         (JSC::dateProtoFuncSetUTCMilliseconds):
2809         (JSC::dateProtoFuncSetSeconds):
2810         (JSC::dateProtoFuncSetUTCSeconds):
2811         (JSC::dateProtoFuncSetMinutes):
2812         (JSC::dateProtoFuncSetUTCMinutes):
2813         (JSC::dateProtoFuncSetHours):
2814         (JSC::dateProtoFuncSetUTCHours):
2815         (JSC::dateProtoFuncSetDate):
2816         (JSC::dateProtoFuncSetUTCDate):
2817         (JSC::dateProtoFuncSetMonth):
2818         (JSC::dateProtoFuncSetUTCMonth):
2819         (JSC::dateProtoFuncSetFullYear):
2820         (JSC::dateProtoFuncSetUTCFullYear):
2821         (JSC::dateProtoFuncSetYear):
2822         (JSC::dateProtoFuncGetYear):
2823         (JSC::dateProtoFuncToJSON):
2824         * runtime/DirectArguments.cpp:
2825         (JSC::DirectArguments::createByCopying):
2826         (JSC::DirectArguments::copyToArguments):
2827         * runtime/DirectArguments.h:
2828         * runtime/DirectEvalExecutable.cpp:
2829         (JSC::DirectEvalExecutable::create):
2830         (JSC::DirectEvalExecutable::DirectEvalExecutable):
2831         * runtime/DirectEvalExecutable.h:
2832         * runtime/Error.cpp:
2833         (JSC::createError):
2834         (JSC::createEvalError):
2835         (JSC::createRangeError):
2836         (JSC::createReferenceError):
2837         (JSC::createSyntaxError):
2838         (JSC::createTypeError):
2839         (JSC::createNotEnoughArgumentsError):
2840         (JSC::createURIError):
2841         (JSC::createGetterTypeError):
2842         (JSC::getStackTrace):
2843         (JSC::getBytecodeOffset):
2844         (JSC::addErrorInfo):
2845         (JSC::throwConstructorCannotBeCalledAsFunctionTypeError):
2846         (JSC::throwTypeError):
2847         (JSC::throwSyntaxError):
2848         (JSC::throwGetterTypeError):
2849         (JSC::throwDOMAttributeGetterTypeError):
2850         (JSC::createOutOfMemoryError):
2851         * runtime/Error.h:
2852         (JSC::throwRangeError):
2853         (JSC::throwVMError):
2854         (JSC::throwVMTypeError):
2855         (JSC::throwVMRangeError):
2856         (JSC::throwVMGetterTypeError):
2857         (JSC::throwVMDOMAttributeGetterTypeError):
2858         * runtime/ErrorConstructor.cpp:
2859         (JSC::constructErrorConstructor):
2860         (JSC::callErrorConstructor):
2861         (JSC::ErrorConstructor::put):
2862         (JSC::ErrorConstructor::deleteProperty):
2863         * runtime/ErrorConstructor.h:
2864         * runtime/ErrorInstance.cpp:
2865         (JSC::ErrorInstance::create):
2866         (JSC::appendSourceToError):
2867         (JSC::ErrorInstance::finishCreation):
2868         (JSC::ErrorInstance::sanitizedToString):
2869         (JSC::ErrorInstance::getOwnPropertySlot):
2870         (JSC::ErrorInstance::getOwnNonIndexPropertyNames):
2871         (JSC::ErrorInstance::getStructurePropertyNames):
2872         (JSC::ErrorInstance::defineOwnProperty):
2873         (JSC::ErrorInstance::put):
2874         (JSC::ErrorInstance::deleteProperty):
2875         * runtime/ErrorInstance.h:
2876         (JSC::ErrorInstance::create):
2877         * runtime/ErrorPrototype.cpp:
2878         (JSC::errorProtoFuncToString):
2879         * runtime/EvalExecutable.cpp:
2880         (JSC::EvalExecutable::EvalExecutable):
2881         * runtime/EvalExecutable.h:
2882         * runtime/ExceptionFuzz.cpp:
2883         (JSC::doExceptionFuzzing):
2884         * runtime/ExceptionFuzz.h:
2885         (JSC::doExceptionFuzzingIfEnabled):
2886         * runtime/ExceptionHelpers.cpp:
2887         (JSC::TerminatedExecutionError::defaultValue):
2888         (JSC::createStackOverflowError):
2889         (JSC::createUndefinedVariableError):
2890         (JSC::errorDescriptionForValue):
2891         (JSC::createError):
2892         (JSC::createInvalidFunctionApplyParameterError):
2893         (JSC::createInvalidInParameterError):
2894         (JSC::createInvalidInstanceofParameterErrorNotFunction):
2895         (JSC::createInvalidInstanceofParameterErrorHasInstanceValueNotFunction):
2896         (JSC::createNotAConstructorError):
2897         (JSC::createNotAFunctionError):
2898         (JSC::createNotAnObjectError):
2899         (JSC::createErrorForInvalidGlobalAssignment):
2900         (JSC::createTDZError):
2901         (JSC::throwOutOfMemoryError):
2902         (JSC::throwStackOverflowError):
2903         (JSC::throwTerminatedExecutionException):
2904         * runtime/ExceptionHelpers.h:
2905         * runtime/FunctionConstructor.cpp:
2906         (JSC::constructWithFunctionConstructor):
2907         (JSC::callFunctionConstructor):
2908         (JSC::constructFunction):
2909         (JSC::constructFunctionSkippingEvalEnabledCheck):
2910         * runtime/FunctionConstructor.h:
2911         * runtime/FunctionExecutable.cpp:
2912         (JSC::FunctionExecutable::fromGlobalCode):
2913         * runtime/FunctionExecutable.h:
2914         * runtime/FunctionPrototype.cpp:
2915         (JSC::functionProtoFuncToString):
2916         * runtime/FunctionRareData.h:
2917         * runtime/GeneratorFunctionConstructor.cpp:
2918         (JSC::callGeneratorFunctionConstructor):
2919         (JSC::constructGeneratorFunctionConstructor):
2920         * runtime/GenericArguments.h:
2921         * runtime/GenericArgumentsInlines.h:
2922         (JSC::GenericArguments<Type>::getOwnPropertySlot):
2923         (JSC::GenericArguments<Type>::getOwnPropertySlotByIndex):
2924         (JSC::GenericArguments<Type>::getOwnPropertyNames):
2925         (JSC::GenericArguments<Type>::put):
2926         (JSC::GenericArguments<Type>::putByIndex):
2927         (JSC::GenericArguments<Type>::deleteProperty):
2928         (JSC::GenericArguments<Type>::deletePropertyByIndex):
2929         (JSC::GenericArguments<Type>::defineOwnProperty):
2930         (JSC::GenericArguments<Type>::copyToArguments):
2931         * runtime/GenericTypedArrayView.h:
2932         * runtime/GenericTypedArrayViewInlines.h:
2933         (JSC::GenericTypedArrayView<Adaptor>::wrap):
2934         * runtime/GetterSetter.cpp:
2935         (JSC::callGetter):
2936         (JSC::callSetter):
2937         * runtime/GetterSetter.h:
2938         * runtime/HashMapImpl.h:
2939         (JSC::HashMapBuffer::create):
2940         (JSC::areKeysEqual):
2941         (JSC::jsMapHash):
2942         (JSC::HashMapImpl::finishCreation):
2943         (JSC::HashMapImpl::findBucket):
2944         (JSC::HashMapImpl::get):
2945         (JSC::HashMapImpl::has):
2946         (JSC::HashMapImpl::add):
2947         (JSC::HashMapImpl::addNormalized):
2948         (JSC::HashMapImpl::remove):
2949         (JSC::HashMapImpl::clear):
2950         (JSC::HashMapImpl::setUpHeadAndTail):
2951         (JSC::HashMapImpl::addNormalizedNonExistingForCloning):
2952         (JSC::HashMapImpl::addNormalizedInternal):
2953         (JSC::HashMapImpl::findBucketAlreadyHashedAndNormalized):
2954         (JSC::HashMapImpl::rehash):
2955         (JSC::HashMapImpl::makeAndSetNewBuffer):
2956         * runtime/Identifier.h:
2957         * runtime/IndirectEvalExecutable.cpp:
2958         (JSC::IndirectEvalExecutable::create):
2959         (JSC::IndirectEvalExecutable::IndirectEvalExecutable):
2960         * runtime/IndirectEvalExecutable.h:
2961         * runtime/InspectorInstrumentationObject.cpp:
2962         (JSC::inspectorInstrumentationObjectLog):
2963         * runtime/InternalFunction.cpp:
2964         (JSC::InternalFunction::InternalFunction):
2965         (JSC::InternalFunction::createSubclassStructureSlow):
2966         * runtime/InternalFunction.h:
2967         (JSC::InternalFunction::createSubclassStructure):
2968         * runtime/IntlCollator.cpp:
2969         (JSC::IntlCollator::initializeCollator):
2970         (JSC::IntlCollator::createCollator):
2971         (JSC::IntlCollator::compareStrings):
2972         (JSC::IntlCollator::resolvedOptions):
2973         * runtime/IntlCollator.h:
2974         * runtime/IntlCollatorConstructor.cpp:
2975         (JSC::constructIntlCollator):
2976         (JSC::callIntlCollator):
2977         (JSC::IntlCollatorConstructorFuncSupportedLocalesOf):
2978         * runtime/IntlCollatorPrototype.cpp:
2979         (JSC::IntlCollatorFuncCompare):
2980         (JSC::IntlCollatorPrototypeGetterCompare):
2981         (JSC::IntlCollatorPrototypeFuncResolvedOptions):
2982         * runtime/IntlDateTimeFormat.cpp:
2983         (JSC::IntlDTFInternal::toDateTimeOptionsAnyDate):
2984         (JSC::IntlDateTimeFormat::initializeDateTimeFormat):
2985         (JSC::IntlDateTimeFormat::resolvedOptions):
2986         (JSC::IntlDateTimeFormat::format):
2987         (JSC::IntlDateTimeFormat::formatToParts):
2988         * runtime/IntlDateTimeFormat.h:
2989         * runtime/IntlDateTimeFormatConstructor.cpp:
2990         (JSC::constructIntlDateTimeFormat):
2991         (JSC::callIntlDateTimeFormat):
2992         (JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf):
2993         * runtime/IntlDateTimeFormatPrototype.cpp:
2994         (JSC::IntlDateTimeFormatFuncFormatDateTime):
2995         (JSC::IntlDateTimeFormatPrototypeGetterFormat):
2996         (JSC::IntlDateTimeFormatPrototypeFuncFormatToParts):
2997         (JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):
2998         * runtime/IntlNumberFormat.cpp:
2999         (JSC::IntlNumberFormat::initializeNumberFormat):
3000         (JSC::IntlNumberFormat::formatNumber):
3001         (JSC::IntlNumberFormat::resolvedOptions):
3002         (JSC::IntlNumberFormat::formatToParts):
3003         * runtime/IntlNumberFormat.h:
3004         * runtime/IntlNumberFormatConstructor.cpp:
3005         (JSC::constructIntlNumberFormat):
3006         (JSC::callIntlNumberFormat):
3007         (JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf):
3008         * runtime/IntlNumberFormatPrototype.cpp:
3009         (JSC::IntlNumberFormatFuncFormatNumber):
3010         (JSC::IntlNumberFormatPrototypeGetterFormat):
3011         (JSC::IntlNumberFormatPrototypeFuncFormatToParts):
3012         (JSC::IntlNumberFormatPrototypeFuncResolvedOptions):
3013         * runtime/IntlObject.cpp:
3014         (JSC::intlBooleanOption):
3015         (JSC::intlStringOption):
3016         (JSC::intlNumberOption):
3017         (JSC::intlDefaultNumberOption):
3018         (JSC::canonicalizeLocaleList):
3019         (JSC::defaultLocale):
3020         (JSC::lookupMatcher):
3021         (JSC::bestFitMatcher):
3022         (JSC::resolveLocale):
3023         (JSC::lookupSupportedLocales):
3024         (JSC::bestFitSupportedLocales):
3025         (JSC::supportedLocales):
3026         (JSC::intlObjectFuncGetCanonicalLocales):
3027         * runtime/IntlObject.h:
3028         * runtime/IntlObjectInlines.h:
3029         (JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
3030         * runtime/IntlPluralRules.cpp:
3031         (JSC::IntlPluralRules::initializePluralRules):
3032         (JSC::IntlPluralRules::resolvedOptions):
3033         (JSC::IntlPluralRules::select):
3034         * runtime/IntlPluralRules.h:
3035         * runtime/IntlPluralRulesConstructor.cpp:
3036         (JSC::constructIntlPluralRules):
3037         (JSC::callIntlPluralRules):
3038         (JSC::IntlPluralRulesConstructorFuncSupportedLocalesOf):
3039         * runtime/IntlPluralRulesPrototype.cpp:
3040         (JSC::IntlPluralRulesPrototypeFuncSelect):
3041         (JSC::IntlPluralRulesPrototypeFuncResolvedOptions):
3042         * runtime/IteratorOperations.cpp:
3043         (JSC::iteratorNext):
3044         (JSC::iteratorValue):
3045         (JSC::iteratorComplete):
3046         (JSC::iteratorStep):
3047         (JSC::iteratorClose):
3048         (JSC::createIteratorResultObject):
3049         (JSC::hasIteratorMethod):
3050         (JSC::iteratorMethod):
3051         (JSC::iteratorForIterable):
3052         * runtime/IteratorOperations.h:
3053         (JSC::forEachInIterable):
3054         * runtime/JSArray.cpp:
3055         (JSC::JSArray::setLengthWritable):
3056         (JSC::JSArray::defineOwnProperty):
3057         (JSC::JSArray::getOwnPropertySlot):
3058         (JSC::JSArray::put):
3059         (JSC::JSArray::deleteProperty):
3060         (JSC::JSArray::getOwnNonIndexPropertyNames):
3061         (JSC::JSArray::setLengthWithArrayStorage):
3062         (JSC::JSArray::appendMemcpy):
3063         (JSC::JSArray::setLength):
3064         (JSC::JSArray::pop):
3065         (JSC::JSArray::push):
3066         (JSC::JSArray::fastSlice):
3067         (JSC::JSArray::shiftCountWithAnyIndexingType):
3068         (JSC::JSArray::unshiftCountWithArrayStorage):
3069         (JSC::JSArray::unshiftCountWithAnyIndexingType):
3070         (JSC::JSArray::fillArgList):
3071         (JSC::JSArray::copyToArguments):
3072         (JSC::constructArray):
3073         (JSC::constructArrayNegativeIndexed):
3074         * runtime/JSArray.h:
3075         (JSC::JSArray::shiftCountForShift):
3076         (JSC::JSArray::shiftCountForSplice):
3077         (JSC::JSArray::shiftCount):
3078         (JSC::JSArray::unshiftCountForShift):
3079         (JSC::JSArray::unshiftCountForSplice):
3080         (JSC::JSArray::unshiftCount):
3081         * runtime/JSArrayBufferConstructor.cpp:
3082         (JSC::JSGenericArrayBufferConstructor<sharingMode>::constructArrayBuffer):
3083         (JSC::callArrayBuffer):
3084         * runtime/JSArrayBufferPrototype.cpp:
3085         (JSC::arrayBufferProtoFuncSlice):
3086         (JSC::arrayBufferProtoGetterFuncByteLength):
3087         (JSC::sharedArrayBufferProtoGetterFuncByteLength):
3088         * runtime/JSArrayBufferView.cpp:
3089         (JSC::JSArrayBufferView::toStringName):
3090         (JSC::JSArrayBufferView::put):
3091         (JSC::JSArrayBufferView::unsharedJSBuffer):
3092         (JSC::JSArrayBufferView::possiblySharedJSBuffer):
3093         (JSC::JSArrayBufferView::slowDownAndWasteMemory):
3094         * runtime/JSArrayBufferView.h:
3095         * runtime/JSArrayInlines.h:
3096         (JSC::toLength):
3097         (JSC::JSArray::pushInline):
3098         * runtime/JSBigInt.cpp:
3099         (JSC::JSBigInt::tryCreateWithLength):
3100         (JSC::JSBigInt::toPrimitive const):
3101         (JSC::JSBigInt::parseInt):
3102         (JSC::JSBigInt::stringToBigInt):
3103         (JSC::JSBigInt::toString):
3104         (JSC::JSBigInt::exponentiate):
3105         (JSC::JSBigInt::multiply):
3106         (JSC::JSBigInt::divide):
3107         (JSC::JSBigInt::remainder):
3108         (JSC::JSBigInt::add):
3109         (JSC::JSBigInt::sub):
3110         (JSC::JSBigInt::bitwiseAnd):
3111         (JSC::JSBigInt::bitwiseOr):
3112         (JSC::JSBigInt::bitwiseXor):
3113         (JSC::JSBigInt::leftShift):
3114         (JSC::JSBigInt::signedRightShift):
3115         (JSC::JSBigInt::bitwiseNot):
3116         (JSC::JSBigInt::absoluteAdd):
3117         (JSC::JSBigInt::absoluteDivWithBigIntDivisor):
3118         (JSC::JSBigInt::absoluteLeftShiftAlwaysCopy):
3119         (JSC::JSBigInt::absoluteAddOne):
3120         (JSC::JSBigInt::absoluteSubOne):
3121         (JSC::JSBigInt::leftShiftByAbsolute):
3122         (JSC::JSBigInt::rightShiftByAbsolute):
3123         (JSC::JSBigInt::toStringBasePowerOfTwo):
3124         (JSC::JSBigInt::toStringGeneric):
3125         (JSC::JSBigInt::allocateFor):
3126         (JSC::JSBigInt::toNumber const):
3127         (JSC::JSBigInt::getPrimitiveNumber const):
3128         (JSC::JSBigInt::toObject const):
3129         * runtime/JSBigInt.h:
3130         * runtime/JSBoundFunction.cpp:
3131         (JSC::boundThisNoArgsFunctionCall):
3132         (JSC::boundFunctionCall):
3133         (JSC::boundThisNoArgsFunctionConstruct):
3134         (JSC::boundFunctionConstruct):
3135         (JSC::hasInstanceBoundFunction):
3136         (JSC::getBoundFunctionStructure):
3137         (JSC::JSBoundFunction::create):
3138         (JSC::JSBoundFunction::customHasInstance):
3139         (JSC::JSBoundFunction::boundArgsCopy):
3140         * runtime/JSBoundFunction.h:
3141         * runtime/JSCJSValue.cpp:
3142         (JSC::JSValue::toInteger const):
3143         (JSC::JSValue::toIntegerPreserveNaN const):
3144         (JSC::JSValue::toLength const):
3145         (JSC::JSValue::toNumberSlowCase const):
3146         (JSC::JSValue::toObjectSlowCase const):
3147         (JSC::JSValue::toThisSlowCase const):
3148         (JSC::JSValue::synthesizePrototype const):
3149         (JSC::JSValue::putToPrimitive):
3150         (JSC::JSValue::putToPrimitiveByIndex):
3151         (JSC::JSValue::toStringSlowCase const):
3152         (JSC::JSValue::toWTFStringSlowCase const):
3153         * runtime/JSCJSValue.h:
3154         (JSC::JSValue::toFloat const):
3155         * runtime/JSCJSValueInlines.h:
3156         (JSC::JSValue::toInt32 const):
3157         (JSC::JSValue::toUInt32 const):
3158         (JSC::JSValue::toIndex const):
3159         (JSC::JSValue::getString const):
3160         (JSC::Unknown>::getString const):
3161         (JSC::JSValue::toPropertyKey const):
3162         (JSC::JSValue::toPrimitive const):
3163         (JSC::toPreferredPrimitiveType):
3164         (JSC::JSValue::getPrimitiveNumber):
3165         (JSC::JSValue::toNumber const):
3166         (JSC::JSValue::toNumeric const):
3167         (JSC::JSValue::toBigIntOrInt32 const):
3168         (JSC::JSValue::toObject const):
3169         (JSC::JSValue::toThis const):
3170         (JSC::JSValue::get const):
3171         (JSC::JSValue::getPropertySlot const):
3172         (JSC::JSValue::getOwnPropertySlot const):
3173         (JSC::JSValue::put):
3174         (JSC::JSValue::putInline):
3175         (JSC::JSValue::putByIndex):
3176         (JSC::JSValue::equal):
3177         (JSC::JSValue::equalSlowCaseInline):
3178         (JSC::JSValue::strictEqualSlowCaseInline):
3179         (JSC::JSValue::strictEqual):
3180         (JSC::JSValue::requireObjectCoercible const):
3181         (JSC::sameValue):
3182         * runtime/JSCell.cpp:
3183         (JSC::JSCell::getString const):
3184         (JSC::JSCell::put):
3185         (JSC::JSCell::putByIndex):
3186         (JSC::JSCell::deleteProperty):
3187         (JSC::JSCell::deletePropertyByIndex):
3188         (JSC::JSCell::toThis):
3189         (JSC::JSCell::toPrimitive const):
3190         (JSC::JSCell::getPrimitiveNumber const):
3191         (JSC::JSCell::toNumber const):
3192         (JSC::JSCell::toObjectSlow const):
3193         (JSC::JSCell::defaultValue):
3194         (JSC::JSCell::getOwnPropertySlot):
3195         (JSC::JSCell::getOwnPropertySlotByIndex):
3196         (JSC::JSCell::doPutPropertySecurityCheck):
3197         (JSC::JSCell::getOwnPropertyNames):
3198         (JSC::JSCell::getOwnNonIndexPropertyNames):
3199         (JSC::JSCell::toStringName):
3200         (JSC::JSCell::getPropertyNames):
3201         (JSC::JSCell::customHasInstance):
3202         (JSC::JSCell::defineOwnProperty):
3203         (JSC::JSCell::getEnumerableLength):
3204         (JSC::JSCell::getStructurePropertyNames):
3205         (JSC::JSCell::getGenericPropertyNames):
3206         (JSC::JSCell::preventExtensions):
3207         (JSC::JSCell::isExtensible):
3208         (JSC::JSCell::setPrototype):
3209         (JSC::JSCell::getPrototype):
3210         * runtime/JSCell.h:
3211         * runtime/JSCellInlines.h:
3212         (JSC::CallFrame::vm const):
3213         (JSC::JSCell::toBoolean const):
3214         (JSC::JSCell::toObject const):
3215         (JSC::JSCell::putInline):
3216         (JSC::ExecState::vm const): Deleted.
3217         * runtime/JSCustomGetterSetterFunction.cpp:
3218         (JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall):
3219         * runtime/JSDataView.cpp:
3220         (JSC::JSDataView::create):
3221         (JSC::JSDataView::createUninitialized):
3222         (JSC::JSDataView::set):
3223         (JSC::JSDataView::setIndex):
3224         (JSC::JSDataView::getOwnPropertySlot):
3225         (JSC::JSDataView::put):
3226         (JSC::JSDataView::defineOwnProperty):
3227         (JSC::JSDataView::deleteProperty):
3228         (JSC::JSDataView::getOwnNonIndexPropertyNames):
3229         * runtime/JSDataView.h:
3230         * runtime/JSDataViewPrototype.cpp:
3231         (JSC::getData):
3232         (JSC::setData):
3233         (JSC::dataViewProtoGetterBuffer):
3234         (JSC::dataViewProtoGetterByteLength):
3235         (JSC::dataViewProtoGetterByteOffset):
3236         * runtime/JSDateMath.cpp:
3237         (JSC::parseDate):
3238         * runtime/JSDateMath.h:
3239         * runtime/JSFixedArray.cpp:
3240         (JSC::JSFixedArray::copyToArguments):
3241         * runtime/JSFixedArray.h:
3242         * runtime/JSFunction.cpp:
3243         (JSC::callHostFunctionAsConstructor):
3244         (JSC::JSFunction::prototypeForConstruction):
3245         (JSC::JSFunction::allocateAndInitializeRareData):
3246         (JSC::JSFunction::initializeRareData):
3247         (JSC::retrieveArguments):
3248         (JSC::JSFunction::argumentsGetter):
3249         (JSC::retrieveCallerFunction):
3250         (JSC::JSFunction::callerGetter):
3251         (JSC::JSFunction::getOwnPropertySlot):
3252         (JSC::JSFunction::getOwnNonIndexPropertyNames):
3253         (JSC::JSFunction::put):
3254         (JSC::JSFunction::deleteProperty):
3255         (JSC::JSFunction::defineOwnProperty):
3256         (JSC::JSFunction::setFunctionName):
3257         (JSC::JSFunction::reifyName):
3258         (JSC::JSFunction::reifyLazyPropertyIfNeeded):
3259         (JSC::JSFunction::reifyLazyPropertyForHostOrBuiltinIfNeeded):
3260         (JSC::JSFunction::reifyLazyLengthIfNeeded):
3261         (JSC::JSFunction::reifyLazyNameIfNeeded):
3262         (JSC::JSFunction::reifyLazyBoundNameIfNeeded):
3263         * runtime/JSFunction.h:
3264         * runtime/JSFunctionInlines.h:
3265         (JSC::JSFunction::ensureRareDataAndAllocationProfile):
3266         * runtime/JSGenericTypedArrayView.h:
3267         * runtime/JSGenericTypedArrayViewConstructorInlines.h:
3268         (JSC::constructGenericTypedArrayViewFromIterator):
3269         (JSC::constructGenericTypedArrayViewWithArguments):
3270         (JSC::constructGenericTypedArrayView):
3271         (JSC::callGenericTypedArrayView):
3272         * runtime/JSGenericTypedArrayViewInlines.h:
3273         (JSC::JSGenericTypedArrayView<Adaptor>::create):
3274         (JSC::JSGenericTypedArrayView<Adaptor>::createWithFastVector):
3275         (JSC::JSGenericTypedArrayView<Adaptor>::createUninitialized):
3276         (JSC::JSGenericTypedArrayView<Adaptor>::validateRange):
3277         (JSC::JSGenericTypedArrayView<Adaptor>::setWithSpecificType):
3278         (JSC::JSGenericTypedArrayView<Adaptor>::set):
3279         (JSC::JSGenericTypedArrayView<Adaptor>::throwNeuteredTypedArrayTypeError):
3280         (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlot):
3281         (JSC::JSGenericTypedArrayView<Adaptor>::put):
3282         (JSC::JSGenericTypedArrayView<Adaptor>::defineOwnProperty):
3283         (JSC::JSGenericTypedArrayView<Adaptor>::deleteProperty):
3284         (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlotByIndex):
3285         (JSC::JSGenericTypedArrayView<Adaptor>::putByIndex):
3286         (JSC::JSGenericTypedArrayView<Adaptor>::deletePropertyByIndex):
3287         (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertyNames):
3288         * runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
3289         (JSC::speciesConstruct):
3290         (JSC::argumentClampedIndexFromStartOrEnd):
3291         (JSC::genericTypedArrayViewProtoFuncSet):
3292         (JSC::genericTypedArrayViewProtoFuncCopyWithin):
3293         (JSC::genericTypedArrayViewProtoFuncIncludes):
3294         (JSC::genericTypedArrayViewProtoFuncIndexOf):
3295         (JSC::genericTypedArrayViewProtoFuncJoin):
3296         (JSC::genericTypedArrayViewProtoFuncLastIndexOf):
3297         (JSC::genericTypedArrayViewProtoGetterFuncBuffer):
3298         (JSC::genericTypedArrayViewProtoGetterFuncLength):
3299         (JSC::genericTypedArrayViewProtoGetterFuncByteLength):
3300         (JSC::genericTypedArrayViewProtoGetterFuncByteOffset):
3301         (JSC::genericTypedArrayViewProtoFuncReverse):
3302         (JSC::genericTypedArrayViewPrivateFuncSort):
3303         (JSC::genericTypedArrayViewProtoFuncSlice):
3304         (JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
3305         * runtime/JSGlobalLexicalEnvironment.cpp:
3306         (JSC::JSGlobalLexicalEnvironment::getOwnPropertySlot):
3307         (JSC::JSGlobalLexicalEnvironment::put):
3308         * runtime/JSGlobalLexicalEnvironment.h:
3309         * runtime/JSGlobalObject.cpp:
3310         (JSC::createConsoleProperty):
3311         (JSC::makeBoundFunction):
3312         (JSC::hasOwnLengthProperty):
3313         (JSC::getGetterById):
3314         (JSC::JSGlobalObject::init):
3315         (JSC::JSGlobalObject::put):
3316         (JSC::JSGlobalObject::defineOwnProperty):
3317         (JSC::JSGlobalObject::addFunction):
3318         (JSC::JSGlobalObject::visitChildren):
3319         (JSC::JSGlobalObject::deprecatedCallFrameForDebugger):
3320         (JSC::JSGlobalObject::exposeDollarVM):
3321         (JSC::JSGlobalObject::getOwnPropertySlot):
3322         (JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint):
3323         (JSC::JSGlobalObject::defaultCollator):
3324         (JSC::JSGlobalObject::globalExec): Deleted.
3325         * runtime/JSGlobalObject.h:
3326         (JSC::JSGlobalObject::addVar):
3327         (JSC::JSGlobalObject::regExpConstructor const):
3328         (JSC::JSGlobalObject::functionConstructor const):
3329         (JSC::JSGlobalObject::arrayStructureForProfileDuringAllocation const):
3330         (JSC::JSGlobalObject::supportsRichSourceInfo):
3331         (JSC::JSGlobalObject::globalObjectAtDebuggerEntry const):
3332         (JSC::JSGlobalObject::setGlobalObjectAtDebuggerEntry):
3333         (JSC::constructEmptyArray):
3334         (JSC::constructArray):
3335         (JSC::constructArrayNegativeIndexed):
3336         (JSC::JSGlobalObject::callFrameAtDebuggerEntry const): Deleted.
3337         (JSC::JSGlobalObject::setCallFrameAtDebuggerEntry): Deleted.
3338         (JSC::ExecState::globalThisValue const): Deleted.
3339         * runtime/JSGlobalObjectFunctions.cpp:
3340         (JSC::encode):
3341         (JSC::decode):
3342         (JSC::globalFuncEval):
3343         (JSC::globalFuncParseInt):
3344         (JSC::globalFuncParseFloat):
3345         (JSC::globalFuncDecodeURI):
3346         (JSC::globalFuncDecodeURIComponent):
3347         (JSC::globalFuncEncodeURI):
3348         (JSC::globalFuncEncodeURIComponent):
3349         (JSC::globalFuncEscape):
3350         (JSC::globalFuncUnescape):
3351         (JSC::globalFuncThrowTypeError):
3352         (JSC::globalFuncThrowTypeErrorArgumentsCalleeAndCaller):
3353         (JSC::globalFuncMakeTypeError):
3354         (JSC::globalFuncProtoGetter):
3355         (JSC::globalFuncProtoSetter):
3356         (JSC::globalFuncHostPromiseRejectionTracker):