test262: DataView get methods should allow for missing offset, set methods should...
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2016-11-11  Joseph Pecoraro  <pecoraro@apple.com>
2
3         test262: DataView get methods should allow for missing offset, set methods should allow for missing value
4         https://bugs.webkit.org/show_bug.cgi?id=164451
5
6         Reviewed by Darin Adler.
7
8         * runtime/JSDataViewPrototype.cpp:
9         (JSC::getData):
10         Missing offset is still valid and will be coerced to 0.
11
12         (JSC::setData):
13         Missing value is still valid and will be coerced to 0.
14
15 2016-11-11  Saam Barati  <sbarati@apple.com>
16
17         We should have a more concise way of determining when we're varargs calling a function using rest parameters
18         https://bugs.webkit.org/show_bug.cgi?id=164258
19
20         Reviewed by Yusuke Suzuki.
21
22         This patch adds two new bytecodes and DFG nodes for the following code patterns:
23
24         ```
25         foo(a, b, ...c)
26         let x = [a, b, ...c];
27         ```
28
29         To do this, I've introduced two new bytecode operations (and their
30         corresponding DFG nodes):
31
32         op_spread and op_new_array_with_spread.
33
34         op_spread takes a single input and performs the ES6 iteration protocol on it.
35         It returns the result of doing the spread inside a new class I've
36         made called JSFixedArray. JSFixedArray is a cell with a single 'size'
37         field and a buffer of values allocated inline in the cell. Abstracting
38         the protocol into a single node is good because it will make IR analysis
39         in the future much simpler. For now, it's also good because it allows
40         us to create fast paths for array iteration (which is quite common).
41         This fast path allows us to emit really good code for array iteration
42         inside the DFG/FTL.
43
44         op_new_array_with_spread is a variable argument bytecode that also
45         has a bit vector associated with it. The bit vector indicates if
46         any particular argument is to be spread or not. Arguments that
47         are spread are known to be JSFixedArray because we must emit an
48         op_spread before op_new_array_with_spread consumes the value.
49         For example, for this array:
50         [a, b, ...c, d, ...e]
51         we will have this bit vector:
52         [0, 0, 1, 0, 1]
53
54         The reason I've chosen this IR is that it will make eliminating
55         a rest allocation for this type of code much easier:
56
57         ```
58         function foo(...args) {
59             return bar(a, b, ...args);
60         }
61         ```
62
63         It will be easier to analyze the IR now that the operations
64         will be described at a high level.
65
66         This patch is an ~8% speedup on ES6SampleBench on my MBP.
67
68         * CMakeLists.txt:
69         * DerivedSources.make:
70         * JavaScriptCore.xcodeproj/project.pbxproj:
71         * builtins/IteratorHelpers.js: Added.
72         (performIteration):
73         * bytecode/BytecodeList.json:
74         * bytecode/BytecodeUseDef.h:
75         (JSC::computeUsesForBytecodeOffset):
76         (JSC::computeDefsForBytecodeOffset):
77         * bytecode/CodeBlock.cpp:
78         (JSC::CodeBlock::dumpBytecode):
79         * bytecode/ObjectPropertyConditionSet.cpp:
80         (JSC::generateConditionForSelfEquivalence):
81         * bytecode/ObjectPropertyConditionSet.h:
82         * bytecode/TrackedReferences.cpp:
83         (JSC::TrackedReferences::check):
84         * bytecode/UnlinkedCodeBlock.h:
85         (JSC::UnlinkedCodeBlock::bitVectors):
86         (JSC::UnlinkedCodeBlock::bitVector):
87         (JSC::UnlinkedCodeBlock::addBitVector):
88         (JSC::UnlinkedCodeBlock::shrinkToFit):
89         * bytecompiler/BytecodeGenerator.cpp:
90         (JSC::BytecodeGenerator::emitNewArrayWithSpread):
91         * bytecompiler/BytecodeGenerator.h:
92         * bytecompiler/NodesCodegen.cpp:
93         (JSC::ArrayNode::emitBytecode):
94         * dfg/DFGAbstractInterpreterInlines.h:
95         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
96         * dfg/DFGByteCodeParser.cpp:
97         (JSC::DFG::ByteCodeParser::addToGraph):
98         (JSC::DFG::ByteCodeParser::parseBlock):
99         * dfg/DFGCapabilities.cpp:
100         (JSC::DFG::capabilityLevel):
101         * dfg/DFGClobberize.h:
102         (JSC::DFG::clobberize):
103         * dfg/DFGDoesGC.cpp:
104         (JSC::DFG::doesGC):
105         * dfg/DFGFixupPhase.cpp:
106         (JSC::DFG::FixupPhase::fixupNode):
107         (JSC::DFG::FixupPhase::watchHavingABadTime):
108         * dfg/DFGGraph.h:
109         (JSC::DFG::Graph::isWatchingArrayIteratorProtocolWatchpoint):
110         * dfg/DFGNode.h:
111         (JSC::DFG::Node::bitVector):
112         * dfg/DFGNodeType.h:
113         * dfg/DFGOperations.cpp:
114         * dfg/DFGOperations.h:
115         * dfg/DFGPredictionPropagationPhase.cpp:
116         * dfg/DFGSafeToExecute.h:
117         (JSC::DFG::safeToExecute):
118         * dfg/DFGSpeculativeJIT.cpp:
119         (JSC::DFG::SpeculativeJIT::compileSpread):
120         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
121         * dfg/DFGSpeculativeJIT.h:
122         (JSC::DFG::SpeculativeJIT::callOperation):
123         * dfg/DFGSpeculativeJIT32_64.cpp:
124         (JSC::DFG::SpeculativeJIT::compile):
125         * dfg/DFGSpeculativeJIT64.cpp:
126         (JSC::DFG::SpeculativeJIT::compile):
127         * dfg/DFGStructureRegistrationPhase.cpp:
128         (JSC::DFG::StructureRegistrationPhase::run):
129         * ftl/FTLAbstractHeapRepository.h:
130         * ftl/FTLCapabilities.cpp:
131         (JSC::FTL::canCompile):
132         * ftl/FTLLowerDFGToB3.cpp:
133         (JSC::FTL::DFG::LowerDFGToB3::compileNode):
134         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
135         (JSC::FTL::DFG::LowerDFGToB3::compileSpread):
136         (JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedCell):
137         * jit/AssemblyHelpers.h:
138         (JSC::AssemblyHelpers::emitAllocateVariableSizedCell):
139         (JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
140         * jit/JIT.cpp:
141         (JSC::JIT::privateCompileMainPass):
142         * jit/JIT.h:
143         * jit/JITOpcodes.cpp:
144         (JSC::JIT::emit_op_new_array_with_spread):
145         (JSC::JIT::emit_op_spread):
146         * jit/JITOperations.h:
147         * llint/LLIntData.cpp:
148         (JSC::LLInt::Data::performAssertions):
149         * llint/LLIntSlowPaths.cpp:
150         * llint/LowLevelInterpreter.asm:
151         * runtime/ArrayIteratorAdaptiveWatchpoint.cpp: Added.
152         (JSC::ArrayIteratorAdaptiveWatchpoint::ArrayIteratorAdaptiveWatchpoint):
153         (JSC::ArrayIteratorAdaptiveWatchpoint::handleFire):
154         * runtime/ArrayIteratorAdaptiveWatchpoint.h: Added.
155         * runtime/CommonSlowPaths.cpp:
156         (JSC::SLOW_PATH_DECL):
157         * runtime/CommonSlowPaths.h:
158         * runtime/IteratorOperations.h:
159         (JSC::forEachInIterable):
160         * runtime/JSCInlines.h:
161         * runtime/JSFixedArray.cpp: Added.
162         (JSC::JSFixedArray::visitChildren):
163         * runtime/JSFixedArray.h: Added.
164         (JSC::JSFixedArray::createStructure):
165         (JSC::JSFixedArray::createFromArray):
166         (JSC::JSFixedArray::get):
167         (JSC::JSFixedArray::buffer):
168         (JSC::JSFixedArray::size):
169         (JSC::JSFixedArray::offsetOfSize):
170         (JSC::JSFixedArray::offsetOfData):
171         (JSC::JSFixedArray::create):
172         (JSC::JSFixedArray::JSFixedArray):
173         (JSC::JSFixedArray::allocationSize):
174         * runtime/JSGlobalObject.cpp:
175         (JSC::JSGlobalObject::JSGlobalObject):
176         (JSC::JSGlobalObject::init):
177         (JSC::JSGlobalObject::visitChildren):
178         (JSC::JSGlobalObject::objectPrototypeIsSane): Deleted.
179         (JSC::JSGlobalObject::arrayPrototypeChainIsSane): Deleted.
180         (JSC::JSGlobalObject::stringPrototypeChainIsSane): Deleted.
181         * runtime/JSGlobalObject.h:
182         (JSC::JSGlobalObject::arrayIteratorProtocolWatchpoint):
183         (JSC::JSGlobalObject::iteratorProtocolFunction):
184         * runtime/JSGlobalObjectInlines.h: Added.
185         (JSC::JSGlobalObject::objectPrototypeIsSane):
186         (JSC::JSGlobalObject::arrayPrototypeChainIsSane):
187         (JSC::JSGlobalObject::stringPrototypeChainIsSane):
188         (JSC::JSGlobalObject::isArrayIteratorProtocolFastAndNonObservable):
189         * runtime/JSType.h:
190         * runtime/VM.cpp:
191         (JSC::VM::VM):
192         * runtime/VM.h:
193
194 2016-11-11  Keith Miller  <keith_miller@apple.com>
195
196         Move Wasm tests to JS
197         https://bugs.webkit.org/show_bug.cgi?id=164611
198
199         Reviewed by Geoffrey Garen.
200
201         This patch translates most of the tests from testWasm.cpp to the JS testing api. Most of the
202         ommited tests were earliest tests, which tested trivial things, like adding two
203         constants. Some tests are ommited for other reasons, however. These are:
204
205         1) Tests using I64 since the testing api does not yet know how to handle 64-bit numbers.  2)
206         Tests that would validate the memory of the module once wasm was done with it since that's
207         not really possible in JS.
208
209         In order to make such a translation easier this patch also adds some features to the JS
210         testing api:
211
212         1) Blocks can now be done lexically by adding a lambda as the last argument of the block
213         opcode. For example one can do:
214             ...
215             .Block("i32", b => b.I32Const(1) )
216
217         and the nested lambda will automatically have an end attached.
218
219         2) The JS testing api can now handle inline signature types.
220
221         3) Relocate some code to make it easier to follow and prevent 44 space indentation.
222
223         4) Rename varuint/varint to varuint32/varint32, this lets them be directly called from the
224         wasm.json without being remapped.
225
226         5) Add support for Memory and Function sections to the Builder.
227
228         6) Add support for local variables.
229
230         On the JSC side, we needed to expose a new function to validate the compiled wasm code
231         behaves the way we expect. At least until the JS Wasm API is finished. The new validation
232         function, testWasmModuleFunctions, takes an array buffer containing the wasm binary, the
233         number of functions in the blob and tests for each of those functions.
234
235         * jsc.cpp:
236         (GlobalObject::finishCreation):
237         (box):
238         (callWasmFunction):
239         (functionTestWasmModuleFunctions):
240         * testWasm.cpp:
241         (checkPlan):
242         (runWasmTests):
243         * wasm/WasmB3IRGenerator.cpp:
244         (JSC::Wasm::parseAndCompile):
245         * wasm/WasmFunctionParser.h:
246         (JSC::Wasm::FunctionParser<Context>::parse):
247         (JSC::Wasm::FunctionParser<Context>::parseBody):
248         (JSC::Wasm::FunctionParser<Context>::parseBlock): Deleted.
249         * wasm/WasmModuleParser.cpp:
250         (JSC::Wasm::ModuleParser::parseMemory):
251         (JSC::Wasm::ModuleParser::parseExport):
252         * wasm/WasmPlan.cpp:
253         (JSC::Wasm::Plan::Plan):
254         (JSC::Wasm::Plan::run):
255         * wasm/WasmPlan.h:
256         * wasm/js/WebAssemblyModuleConstructor.cpp:
257         (JSC::constructJSWebAssemblyModule):
258
259 2016-11-11  Saam Barati  <sbarati@apple.com>
260
261         Unreviewed try to fix windows build after https://bugs.webkit.org/show_bug.cgi?id=164650
262
263         * dfg/DFGByteCodeParser.cpp:
264         (JSC::DFG::ByteCodeParser::parseBlock):
265
266 2016-11-11  Saam Barati  <sbarati@apple.com>
267
268         We recursively grab a lock in the DFGBytecodeParser causing us to deadlock
269         https://bugs.webkit.org/show_bug.cgi?id=164650
270
271         Reviewed by Geoffrey Garen.
272
273         Some code was incorrectly holding a lock when recursively calling
274         back into the bytecode parser's via inlining a put_by_val as a put_by_id.
275         This can cause a deadlock if the inlinee CodeBlock is something we're
276         already holding a lock for. I've changed the range of the lock holder
277         to be as narrow as possible.
278
279         * dfg/DFGByteCodeParser.cpp:
280         (JSC::DFG::ByteCodeParser::parseBlock):
281
282 2016-11-11  Chris Dumez  <cdumez@apple.com>
283
284         Unreviewed, rolling out r208584.
285
286         Seems to have regressed Speedometer by 1% on Mac
287
288         Reverted changeset:
289
290         "We should have a more concise way of determining when we're
291         varargs calling a function using rest parameters"
292         https://bugs.webkit.org/show_bug.cgi?id=164258
293         http://trac.webkit.org/changeset/208584
294
295 2016-11-11  Chris Dumez  <cdumez@apple.com>
296
297         Unreviewed, rolling out r208117 and r208160.
298
299         Regressed Speedometer by >1.5%
300
301         Reverted changesets:
302
303         "We should have a way of profiling when a get_by_id is pure
304         and to emit a PureGetById in the DFG/FTL"
305         https://bugs.webkit.org/show_bug.cgi?id=163305
306         http://trac.webkit.org/changeset/208117
307
308         "Debug JSC test microbenchmarks/pure-get-by-id-cse-2.js timing
309         out"
310         https://bugs.webkit.org/show_bug.cgi?id=164227
311         http://trac.webkit.org/changeset/208160
312
313 2016-11-11  Saam Barati  <sbarati@apple.com>
314
315         We should have a more concise way of determining when we're varargs calling a function using rest parameters
316         https://bugs.webkit.org/show_bug.cgi?id=164258
317
318         Reviewed by Yusuke Suzuki.
319
320         This patch adds two new bytecodes and DFG nodes for the following code patterns:
321
322         ```
323         foo(a, b, ...c)
324         let x = [a, b, ...c];
325         ```
326
327         To do this, I've introduced two new bytecode operations (and their
328         corresponding DFG nodes):
329
330         op_spread and op_new_array_with_spread.
331
332         op_spread takes a single input and performs the ES6 iteration protocol on it.
333         It returns the result of doing the spread inside a new class I've
334         made called JSFixedArray. JSFixedArray is a cell with a single 'size'
335         field and a buffer of values allocated inline in the cell. Abstracting
336         the protocol into a single node is good because it will make IR analysis
337         in the future much simpler. For now, it's also good because it allows
338         us to create fast paths for array iteration (which is quite common).
339         This fast path allows us to emit really good code for array iteration
340         inside the DFG/FTL.
341
342         op_new_array_with_spread is a variable argument bytecode that also
343         has a bit vector associated with it. The bit vector indicates if
344         any particular argument is to be spread or not. Arguments that
345         are spread are known to be JSFixedArray because we must emit an
346         op_spread before op_new_array_with_spread consumes the value.
347         For example, for this array:
348         [a, b, ...c, d, ...e]
349         we will have this bit vector:
350         [0, 0, 1, 0, 1]
351
352         The reason I've chosen this IR is that it will make eliminating
353         a rest allocation for this type of code much easier:
354
355         ```
356         function foo(...args) {
357             return bar(a, b, ...args);
358         }
359         ```
360
361         It will be easier to analyze the IR now that the operations
362         will be described at a high level.
363
364         This patch is an ~8% speedup on ES6SampleBench on my MBP.
365
366         * CMakeLists.txt:
367         * DerivedSources.make:
368         * JavaScriptCore.xcodeproj/project.pbxproj:
369         * builtins/IteratorHelpers.js: Added.
370         (performIteration):
371         * bytecode/BytecodeList.json:
372         * bytecode/BytecodeUseDef.h:
373         (JSC::computeUsesForBytecodeOffset):
374         (JSC::computeDefsForBytecodeOffset):
375         * bytecode/CodeBlock.cpp:
376         (JSC::CodeBlock::dumpBytecode):
377         * bytecode/ObjectPropertyConditionSet.cpp:
378         (JSC::generateConditionForSelfEquivalence):
379         * bytecode/ObjectPropertyConditionSet.h:
380         * bytecode/TrackedReferences.cpp:
381         (JSC::TrackedReferences::check):
382         * bytecode/UnlinkedCodeBlock.h:
383         (JSC::UnlinkedCodeBlock::bitVectors):
384         (JSC::UnlinkedCodeBlock::bitVector):
385         (JSC::UnlinkedCodeBlock::addBitVector):
386         (JSC::UnlinkedCodeBlock::shrinkToFit):
387         * bytecompiler/BytecodeGenerator.cpp:
388         (JSC::BytecodeGenerator::emitNewArrayWithSpread):
389         * bytecompiler/BytecodeGenerator.h:
390         * bytecompiler/NodesCodegen.cpp:
391         (JSC::ArrayNode::emitBytecode):
392         * dfg/DFGAbstractInterpreterInlines.h:
393         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
394         * dfg/DFGByteCodeParser.cpp:
395         (JSC::DFG::ByteCodeParser::addToGraph):
396         (JSC::DFG::ByteCodeParser::parseBlock):
397         * dfg/DFGCapabilities.cpp:
398         (JSC::DFG::capabilityLevel):
399         * dfg/DFGClobberize.h:
400         (JSC::DFG::clobberize):
401         * dfg/DFGDoesGC.cpp:
402         (JSC::DFG::doesGC):
403         * dfg/DFGFixupPhase.cpp:
404         (JSC::DFG::FixupPhase::fixupNode):
405         (JSC::DFG::FixupPhase::watchHavingABadTime):
406         * dfg/DFGGraph.h:
407         (JSC::DFG::Graph::isWatchingArrayIteratorProtocolWatchpoint):
408         * dfg/DFGNode.h:
409         (JSC::DFG::Node::bitVector):
410         * dfg/DFGNodeType.h:
411         * dfg/DFGOperations.cpp:
412         * dfg/DFGOperations.h:
413         * dfg/DFGPredictionPropagationPhase.cpp:
414         * dfg/DFGSafeToExecute.h:
415         (JSC::DFG::safeToExecute):
416         * dfg/DFGSpeculativeJIT.cpp:
417         (JSC::DFG::SpeculativeJIT::compileSpread):
418         (JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
419         * dfg/DFGSpeculativeJIT.h:
420         (JSC::DFG::SpeculativeJIT::callOperation):
421         * dfg/DFGSpeculativeJIT32_64.cpp:
422         (JSC::DFG::SpeculativeJIT::compile):
423         * dfg/DFGSpeculativeJIT64.cpp:
424         (JSC::DFG::SpeculativeJIT::compile):
425         * dfg/DFGStructureRegistrationPhase.cpp:
426         (JSC::DFG::StructureRegistrationPhase::run):
427         * ftl/FTLAbstractHeapRepository.h:
428         * ftl/FTLCapabilities.cpp:
429         (JSC::FTL::canCompile):
430         * ftl/FTLLowerDFGToB3.cpp:
431         (JSC::FTL::DFG::LowerDFGToB3::compileNode):
432         (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
433         (JSC::FTL::DFG::LowerDFGToB3::compileSpread):
434         (JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedCell):
435         * jit/AssemblyHelpers.h:
436         (JSC::AssemblyHelpers::emitAllocateVariableSizedCell):
437         (JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
438         * jit/JIT.cpp:
439         (JSC::JIT::privateCompileMainPass):
440         * jit/JIT.h:
441         * jit/JITOpcodes.cpp:
442         (JSC::JIT::emit_op_new_array_with_spread):
443         (JSC::JIT::emit_op_spread):
444         * jit/JITOperations.h:
445         * llint/LLIntData.cpp:
446         (JSC::LLInt::Data::performAssertions):
447         * llint/LLIntSlowPaths.cpp:
448         * llint/LowLevelInterpreter.asm:
449         * runtime/ArrayIteratorAdaptiveWatchpoint.cpp: Added.
450         (JSC::ArrayIteratorAdaptiveWatchpoint::ArrayIteratorAdaptiveWatchpoint):
451         (JSC::ArrayIteratorAdaptiveWatchpoint::handleFire):
452         * runtime/ArrayIteratorAdaptiveWatchpoint.h: Added.
453         * runtime/CommonSlowPaths.cpp:
454         (JSC::SLOW_PATH_DECL):
455         * runtime/CommonSlowPaths.h:
456         * runtime/IteratorOperations.h:
457         (JSC::forEachInIterable):
458         * runtime/JSCInlines.h:
459         * runtime/JSFixedArray.cpp: Added.
460         (JSC::JSFixedArray::visitChildren):
461         * runtime/JSFixedArray.h: Added.
462         (JSC::JSFixedArray::createStructure):
463         (JSC::JSFixedArray::createFromArray):
464         (JSC::JSFixedArray::get):
465         (JSC::JSFixedArray::buffer):
466         (JSC::JSFixedArray::size):
467         (JSC::JSFixedArray::offsetOfSize):
468         (JSC::JSFixedArray::offsetOfData):
469         (JSC::JSFixedArray::create):
470         (JSC::JSFixedArray::JSFixedArray):
471         (JSC::JSFixedArray::allocationSize):
472         * runtime/JSGlobalObject.cpp:
473         (JSC::JSGlobalObject::JSGlobalObject):
474         (JSC::JSGlobalObject::init):
475         (JSC::JSGlobalObject::visitChildren):
476         (JSC::JSGlobalObject::objectPrototypeIsSane): Deleted.
477         (JSC::JSGlobalObject::arrayPrototypeChainIsSane): Deleted.
478         (JSC::JSGlobalObject::stringPrototypeChainIsSane): Deleted.
479         * runtime/JSGlobalObject.h:
480         (JSC::JSGlobalObject::arrayIteratorProtocolWatchpoint):
481         (JSC::JSGlobalObject::iteratorProtocolFunction):
482         * runtime/JSGlobalObjectInlines.h: Added.
483         (JSC::JSGlobalObject::objectPrototypeIsSane):
484         (JSC::JSGlobalObject::arrayPrototypeChainIsSane):
485         (JSC::JSGlobalObject::stringPrototypeChainIsSane):
486         (JSC::JSGlobalObject::isArrayIteratorProtocolFastAndNonObservable):
487         * runtime/JSType.h:
488         * runtime/VM.cpp:
489         (JSC::VM::VM):
490         * runtime/VM.h:
491
492 2016-11-10  JF Bastien  <jfbastien@apple.com>
493
494         ASSERTION FAILED: length > offset encountered with wasm.yaml/wasm/js-api/test_Module.js.default-wasm
495         https://bugs.webkit.org/show_bug.cgi?id=164597
496
497         Reviewed by Keith Miller.
498
499         * wasm/WasmParser.h:
500         (JSC::Wasm::Parser::parseVarUInt32): move closer to other parsers
501         (JSC::Wasm::Parser::parseVarUInt64): move closer to other parsers
502
503 2016-11-10  Joseph Pecoraro  <pecoraro@apple.com>
504
505         test262: DataView / TypedArray methods should throw RangeErrors for negative numbers (ToIndex)
506         https://bugs.webkit.org/show_bug.cgi?id=164450
507
508         Reviewed by Darin Adler.
509
510         * runtime/JSCJSValue.h:
511         * runtime/JSCJSValueInlines.h:
512         (JSC::JSValue::toIndex):
513         Introduce a method for toIndex, which is used by DataView and TypedArrays
514         to convert an argument to a number with the possibility of throwing
515         RangeErrors for negative values. We also throw RangeErrors for large
516         values, because wherever this is used we expect an unsigned.
517
518         * runtime/JSArrayBufferConstructor.cpp:
519         (JSC::constructArrayBuffer):
520         * runtime/JSDataViewPrototype.cpp:
521         (JSC::getData):
522         (JSC::setData):
523         * runtime/JSGenericTypedArrayViewConstructorInlines.h:
524         (JSC::constructGenericTypedArrayViewWithArguments):
525         (JSC::constructGenericTypedArrayView):
526         Use toIndex instead of toUint32 where required.
527
528 2016-11-10  Mark Lam  <mark.lam@apple.com>
529
530         A few bits of minor code clean up.
531         https://bugs.webkit.org/show_bug.cgi?id=164523
532
533         Reviewed by Yusuke Suzuki.
534
535         * interpreter/StackVisitor.cpp:
536         (JSC::StackVisitor::Frame::dump):
537         - Insert a space to make the dump more legible.
538
539         * runtime/Options.h:
540         - Fixed some typos.
541
542         * runtime/StringPrototype.cpp:
543         (JSC::stringProtoFuncReplaceUsingRegExp):
544         (JSC::stringProtoFuncReplaceUsingStringSearch):
545         - Use the VM& that is already available.
546
547 2016-11-10  Mark Lam  <mark.lam@apple.com>
548
549         Graph::methodOfGettingAValueProfileFor() should be returning the profile for the operand node.
550         https://bugs.webkit.org/show_bug.cgi?id=164600
551         <rdar://problem/28828676>
552
553         Reviewed by Filip Pizlo.
554
555         Currently, Graph::methodOfGettingAValueProfileFor() assumes that the operand DFG
556         node that it is provided with always has a different origin than the node that is
557         using that operand.  For example, in a DFG graph that looks like this:
558
559             a: ...
560             b: ArithAdd(@a, ...)
561
562         ... when emitting speculation checks on @a for the ArithAdd node at @b,
563         Graph::methodOfGettingAValueProfileFor() is passed @a, and expects @a's to
564         originate from a different bytecode than @b.  The intent here is to get the
565         profile for @a so that the OSR exit ramp for @b can update @a's profile with the
566         observed result type from @a so that future type prediction on incoming args for
567         the ArithAdd node can take this into consideration.
568
569         However, op_negate can be compiled into the following series of nodes:
570
571             a: ...
572             b: BooleanToNumber(@a)
573             c: DoubleRep(@b)
574             d: ArithNegate(@c)
575
576         All 3 nodes @b, @c, and @d maps to the same op_negate bytecode i.e. they have the
577         same origin.  When the speculativeJIT emits a speculationCheck for DoubleRep, it
578         calls Graph::methodOfGettingAValueProfileFor() to get the ArithProfile for the
579         BooleanToNumber node.  But because all 3 nodes have the same origin,
580         Graph::methodOfGettingAValueProfileFor() erroneously returns the ArithProfile for
581         the op_negate.  Subsequently, the OSR exit ramp will modify the ArithProfile of
582         the op_negate and corrupt its profile.  Instead, what the OSR exit ramp should be
583         doing is update the ArithProfile of op_negate's operand i.e. BooleanToNumber's
584         operand @a in this case.
585
586         The fix is to always pass the current node we're generating code for (in addition
587         to the operand node) to Graph::methodOfGettingAValueProfileFor().  This way, we
588         know the profile is valid if and only if the current node and its operand node
589         does not have the same origin.
590
591         In this patch, we also fixed the following:
592         1. Teach Graph::methodOfGettingAValueProfileFor() to get the profile for
593            BooleanToNumber's operand if the operand node it is given is BooleanToNumber.
594         2. Change JITCompiler::appendExceptionHandlingOSRExit() to explicitly pass an
595            empty MethodOfGettingAValueProfile().  It was implicitly doing this before.
596         3. Change SpeculativeJIT::emitInvalidationPoint() to pass an empty
597            MethodOfGettingAValueProfile().  It has no child node.  Hence, it doesn't
598            make sense to call Graph::methodOfGettingAValueProfileFor() for a child node
599            that does not exist.
600
601         * dfg/DFGGraph.cpp:
602         (JSC::DFG::Graph::methodOfGettingAValueProfileFor):
603         * dfg/DFGGraph.h:
604         * dfg/DFGJITCompiler.cpp:
605         (JSC::DFG::JITCompiler::appendExceptionHandlingOSRExit):
606         * dfg/DFGSpeculativeJIT.cpp:
607         (JSC::DFG::SpeculativeJIT::speculationCheck):
608         (JSC::DFG::SpeculativeJIT::emitInvalidationPoint):
609         * ftl/FTLLowerDFGToB3.cpp:
610         (JSC::FTL::DFG::LowerDFGToB3::appendOSRExitDescriptor):
611
612 2016-11-10  Aaron Chu  <aaron_chu@apple.com>
613
614         Web Inspector: AXI: clarify button roles (e.g. toggle or popup button)
615         https://bugs.webkit.org/show_bug.cgi?id=130726
616         <rdar://problem/16420420>
617
618         Reviewed by Brian Burg.
619
620         Add the isPopupButton flag to the AccessibilityProperties type.
621
622         * inspector/protocol/DOM.json:
623
624 2016-11-10  Csaba Osztrogon√°c  <ossy@webkit.org>
625
626         [ARM] Unreviewed buildfix after r208450.
627
628         * assembler/MacroAssemblerARM.h:
629         (JSC::MacroAssemblerARM::load8SignedExtendTo32): Added.
630
631 2016-11-08  Yusuke Suzuki  <utatane.tea@gmail.com>
632
633         [JSC] Avoid cloned arguments allocation in ArrayPrototype methods
634         https://bugs.webkit.org/show_bug.cgi?id=164502
635
636         Reviewed by Saam Barati.
637
638         In many builtin functions, we use `arguments` to just get optional parameters.
639         While FTL argument elimination can drop `arguments` allocations, it leaves
640         the allocations in LLInt, Baseline, and DFG. And we found that DFG compiled
641         Array#map is heavily used in ES6SampleBench/Basic. And it always creates
642         a meaningless ClonedArguments.
643
644         Using ES6 default parameter here is not a solution. It increases the number
645         of parameters of the CodeBlock (not `function.length`). And the optional
646         parameters in Array.prototype.xxx methods are not typically passed. For
647         example, we typically do not pass `thisArg` to `Array.prototype.map` function.
648         In this case, the arity check frequently fails. It requires the additional C
649         call to fixup arguments and it becomes pure overhead.
650
651         To solve this problem, this patch introduces a new bytecode intrinsic @argument().
652         This offers the way to retrieve the argument value without increasing the
653         arity of the function. And if the argument is not passed (out of bounds), it
654         just returns `undefined`. The semantics of this intrinsic is the same to the C++
655         ExecState::argument(). This operation does not require `arguments` object. And we
656         can drop the `argument` references even in lower 3 tiers.
657
658         We implement op_get_argument for this intrinsic. And later this will be converted
659         to DFG GetArgument node. All the tiers handles this feature.
660
661         This patch improves ES6SampleBench/Basic 13.8% in steady state. And in summary,
662         it improves 4.5%.
663
664         In the future, we can improve the implementation of the default parameters.
665         Currently, the default parameter always increases the arity of the function. So
666         if you do not pass the argument, the arity check fails. But since it is the default
667         parameter, it is likely that we don't pass the argument. Using op_get_argument to
668         implement the default parameter can decrease the case in which the arity check
669         frequently fails. And it can change the builtin implementation to use the ES6
670         default parameters instead of using the special @argument() intrinsic in the future.
671         And at that case, the user code also receives the benefit.
672
673         ES6SampleBench/Basic.
674             Baseline:
675                 Running... Basic ( 1  to go)
676                 firstIteration:     39.38 ms +- 4.48 ms
677                 averageWorstCase:   20.79 ms +- 0.96 ms
678                 steadyState:        1959.22 ms +- 65.55 ms
679
680             Patched:
681                 Running... Basic ( 1  to go)
682                 firstIteration:     37.85 ms +- 4.09 ms
683                 averageWorstCase:   18.60 ms +- 0.76 ms
684                 steadyState:        1721.89 ms +- 57.58 ms
685
686         All summary.
687             Baseline:
688                 summary:            164.34 ms +- 5.01 ms
689             Patched:
690                 summary:            157.26 ms +- 5.96 ms
691
692         * builtins/ArrayConstructor.js:
693         * builtins/ArrayPrototype.js:
694         (reduce):
695         (reduceRight):
696         (every):
697         (forEach):
698         (filter):
699         (map):
700         (some):
701         (fill):
702         (find):
703         (findIndex):
704         (includes):
705         (copyWithin):
706         * builtins/DatePrototype.js:
707         (toLocaleString):
708         (toLocaleDateString):
709         (toLocaleTimeString):
710         * builtins/MapPrototype.js:
711         (forEach):
712         * builtins/NumberPrototype.js:
713         (toLocaleString):
714         * builtins/SetPrototype.js:
715         (forEach):
716         * builtins/StringPrototype.js:
717         (padStart):
718         (padEnd):
719         (localeCompare):
720         * builtins/TypedArrayConstructor.js:
721         * builtins/TypedArrayPrototype.js:
722         (every):
723         (fill):
724         (find):
725         (findIndex):
726         (forEach):
727         (some):
728         (reduce):
729         (reduceRight):
730         (map):
731         (filter):
732         * bytecode/BytecodeIntrinsicRegistry.h:
733         * bytecode/BytecodeList.json:
734         * bytecode/BytecodeUseDef.h:
735         (JSC::computeUsesForBytecodeOffset):
736         (JSC::computeDefsForBytecodeOffset):
737         * bytecode/CodeBlock.cpp:
738         (JSC::CodeBlock::dumpBytecode):
739         (JSC::CodeBlock::finishCreation):
740         * bytecompiler/BytecodeGenerator.cpp:
741         (JSC::BytecodeGenerator::emitGetArgument):
742         * bytecompiler/BytecodeGenerator.h:
743         * bytecompiler/NodesCodegen.cpp:
744         (JSC::BytecodeIntrinsicNode::emit_intrinsic_argument):
745         * dfg/DFGAbstractInterpreterInlines.h:
746         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
747         * dfg/DFGByteCodeParser.cpp:
748         (JSC::DFG::ByteCodeParser::parseBlock):
749         * dfg/DFGCapabilities.cpp:
750         (JSC::DFG::capabilityLevel):
751         * dfg/DFGClobberize.h:
752         (JSC::DFG::clobberize):
753         * dfg/DFGDoesGC.cpp:
754         (JSC::DFG::doesGC):
755         * dfg/DFGFixupPhase.cpp:
756         (JSC::DFG::FixupPhase::fixupNode):
757         * dfg/DFGNode.h:
758         (JSC::DFG::Node::hasHeapPrediction):
759         (JSC::DFG::Node::hasArgumentIndex):
760         (JSC::DFG::Node::argumentIndex):
761         * dfg/DFGNodeType.h:
762         * dfg/DFGPreciseLocalClobberize.h:
763         (JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
764         * dfg/DFGPredictionPropagationPhase.cpp:
765         * dfg/DFGSafeToExecute.h:
766         (JSC::DFG::safeToExecute):
767         * dfg/DFGSpeculativeJIT.cpp:
768         (JSC::DFG::SpeculativeJIT::compileGetArgument):
769         * dfg/DFGSpeculativeJIT.h:
770         * dfg/DFGSpeculativeJIT32_64.cpp:
771         (JSC::DFG::SpeculativeJIT::compile):
772         * dfg/DFGSpeculativeJIT64.cpp:
773         (JSC::DFG::SpeculativeJIT::compile):
774         * ftl/FTLCapabilities.cpp:
775         (JSC::FTL::canCompile):
776         * ftl/FTLLowerDFGToB3.cpp:
777         (JSC::FTL::DFG::LowerDFGToB3::compileNode):
778         (JSC::FTL::DFG::LowerDFGToB3::compileGetArgument):
779         * jit/JIT.cpp:
780         (JSC::JIT::privateCompileMainPass):
781         * jit/JIT.h:
782         * jit/JITOpcodes.cpp:
783         (JSC::JIT::emit_op_get_argument):
784         * jit/JITOpcodes32_64.cpp:
785         (JSC::JIT::emit_op_get_argument):
786         * llint/LowLevelInterpreter32_64.asm:
787         * llint/LowLevelInterpreter64.asm:
788
789 2016-11-08  Joseph Pecoraro  <pecoraro@apple.com>
790
791         Web Inspector: DebuggerManager.Event.Resumed introduces test flakiness
792         https://bugs.webkit.org/show_bug.cgi?id=161951
793         <rdar://problem/28295767>
794
795         Reviewed by Brian Burg.
796
797         This removes an ambiguity in the protocol when stepping through
798         JavaScript. Previously, when paused and issuing a Debugger.step*
799         command the frontend would always receive a Debugger.resumed event and
800         then, maybe, a Debugger.paused event indicating we paused again (after
801         stepping). However, this ambiguity means that the frontend needs to
802         wait for a short period of time to determine if we really resumed
803         or not. And even still that decision may be incorrect if the step
804         takes a sufficiently long period of time.
805
806         The new approach removes this ambiguity. Now, in response to a
807         Debugger.step* command the backend MUST send a single Debugger.paused
808         event or Debugger.resumed event. Now the frontend knows that the
809         next Debugger event it receives after issuing the step command is
810         the result (stepped and paused, or stepped and resumed).
811
812         To make resuming consistent in all cases, a Debugger.resume command
813         will always respond with a Debugger.resumed event.
814
815         Finally, Debugger.continueToLocation is treated like a "big step"
816         in cases where we can resolve the location. If we can't resolve the
817         location it is treated as a resume, maintaining the old behavior.
818
819         * inspector/agents/InspectorDebuggerAgent.h:
820         * inspector/agents/InspectorDebuggerAgent.cpp:
821         (Inspector::InspectorDebuggerAgent::stepOver):
822         (Inspector::InspectorDebuggerAgent::stepInto):
823         (Inspector::InspectorDebuggerAgent::stepOut):
824         (Inspector::InspectorDebuggerAgent::willStepAndMayBecomeIdle):
825         (Inspector::InspectorDebuggerAgent::didBecomeIdleAfterStepping):
826         When stepping register a VM exit observer so that we can issue
827         a Debugger.resumed event if the step caused us to exit the VM.
828
829         (Inspector::InspectorDebuggerAgent::resume):
830         Set a flag to issue a Debugger.resumed event once we break out
831         of the nested run loop.
832
833         (Inspector::InspectorDebuggerAgent::didPause):
834         We are issuing Debugger.paused so clear the state to indicate that
835         we no longer need to issue Debugger.resumed event, we have paused.
836
837         (Inspector::InspectorDebuggerAgent::didContinue):
838         Only issue the Debugger.resumed event if needed (explicitly asked
839         to resume).
840
841         (Inspector::InspectorDebuggerAgent::continueToLocation):
842         (Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState):
843         All places that do continueProgram should be audited. In error cases,
844         if we are paused and continue we should remember to send Debugger.resumed.
845
846         * inspector/protocol/Debugger.json:
847         Clarify in the protocol description the contract of these methods.
848
849 2016-11-09  Joseph Pecoraro  <pecoraro@apple.com>
850
851         Web Inspector: Associate Worker Resources with the Worker and not the Page
852         https://bugs.webkit.org/show_bug.cgi?id=164342
853         <rdar://problem/29075775>
854
855         Reviewed by Timothy Hatcher.
856
857         * inspector/protocol/Network.json:
858         * inspector/protocol/Page.json:
859         Associate Resource data with a target.
860
861 2016-11-09  Keith Miller  <keith_miller@apple.com>
862
863         jsc CLI should work with the remote inspector
864         https://bugs.webkit.org/show_bug.cgi?id=164569
865
866         Reviewed by Joseph Pecoraro.
867
868         This patch enables using the remote inspector on the jsc CLI.
869         In order to use the remote inspector, jsc users need to pass an option.
870
871         * jsc.cpp:
872         (CommandLine::parseArguments):
873         (runJSC):
874
875 2016-11-09  Saam Barati  <sbarati@apple.com>
876
877         Math.min()/Math.max() with no arguments is lowered incorrectly in the BytecodeParser
878         https://bugs.webkit.org/show_bug.cgi?id=164464
879         <rdar://problem/29131452>
880
881         Reviewed by Darin Adler.
882
883         We were incorrectly matching this pattern inside the bytecode parser
884         to return NaN. Instead, we must return:
885           Infinity for Math.min()
886          -Infinity for Math.max()
887
888         * dfg/DFGByteCodeParser.cpp:
889         (JSC::DFG::ByteCodeParser::handleMinMax):
890
891 2016-11-09  Saam Barati  <sbarati@apple.com>
892
893         TypeProfiler and running GC collection on another thread don't play nicely with each other
894         https://bugs.webkit.org/show_bug.cgi?id=164441
895         <rdar://problem/29132174>
896
897         Reviewed by Geoffrey Garen.
898
899         This fix here is simple: we now treat the type profiler log as a GC root.
900         GC will make sure that we mark any values/structures that are in the log.
901         It's easy to reason about the correctness of this, and it also solves
902         the problem that we were clearing the log on the GC thread. Clearing the
903         log on the GC thread was a problem because when we clear the log, we may
904         allocate, which we're not allowed to do from the GC thread.
905
906         * heap/Heap.cpp:
907         (JSC::Heap::markRoots):
908         (JSC::Heap::visitTypeProfiler):
909         (JSC::Heap::collectInThread):
910         * heap/Heap.h:
911         * runtime/TypeProfilerLog.cpp:
912         (JSC::TypeProfilerLog::processLogEntries):
913         (JSC::TypeProfilerLog::visit):
914         * runtime/TypeProfilerLog.h:
915
916 2016-11-09  JF Bastien  <jfbastien@apple.com>
917
918         WebAssembly: Silence noisy warning
919         https://bugs.webkit.org/show_bug.cgi?id=164459
920
921         Reviewed by Yusuke Suzuki.
922
923         * wasm/WasmPlan.cpp:
924         (JSC::Wasm::Plan::Plan):
925
926 2016-11-07  Yusuke Suzuki  <utatane.tea@gmail.com>
927
928         [JSC] The implementation of 8 bit operation in MacroAssembler should care about uint8_t / int8_t
929         https://bugs.webkit.org/show_bug.cgi?id=164432
930
931         Reviewed by Michael Saboff.
932
933         Except for X86, our supported MacroAssemblers do not have native 8bit instructions.
934         It means that all the 8bit instructions are converted to 32bit operations by using
935         scratch registers. For example, ARM64 branch8 implementation is the following.
936
937             Jump branch8(RelationCondition cord, Address left, TrustedImm32 right)
938             {
939                 TrustedImm32 right8(static_cast<int8_t>(right.m_value));
940                 load8(left, getCachedMemoryTempRegisterIDAndInvalidate());
941                 return branch32(cone, memoryTempRegister, right8);
942             }
943
944         The problem is that we exclusively use zero-extended load instruction (load8). Even
945         for signed RelationConditions, we do not perform sign extension. It makes signed
946         operations with negative numbers incorrect! Consider the |left| address holds `-1`
947         in int8_t form. However load8 will load it as 255 into 32bit register. On the other hand,
948         |right| will be sign extended. If you pass 0 as |right| and LessThan condition, this
949         branch8 should jump based on the answer of `-1 < 0`. But the current MacroAssembler
950         performs `255 < 0` in int32_t context and returns the incorrect result.
951
952         We should follow the x86 model. So we should select the appropriate load operation and masking
953         operation based on the RelationCondition. This patch introduces mask8OnCondition and load8OnCondition.
954         And we use them in 8bit operations including branch8, branchTest8, compare8, and test8.
955
956         We intentionally do not change anything on x86 assembler since it has the native signed 8bit operations.
957
958         * JavaScriptCore.xcodeproj/project.pbxproj:
959         * assembler/AbstractMacroAssembler.h:
960         * assembler/MacroAssembler.h:
961         (JSC::MacroAssembler::isSigned):
962         (JSC::MacroAssembler::isUnsigned):
963         (JSC::MacroAssembler::branchTest8):
964         * assembler/MacroAssemblerARM.h:
965         (JSC::MacroAssemblerARM::branch8):
966         (JSC::MacroAssemblerARM::branchTest8):
967         (JSC::MacroAssemblerARM::compare8):
968         (JSC::MacroAssemblerARM::test8):
969         * assembler/MacroAssemblerARM64.h:
970         (JSC::MacroAssemblerARM64::load8SignedExtendTo32):
971         (JSC::MacroAssemblerARM64::branch8):
972         (JSC::MacroAssemblerARM64::branchTest8):
973         (JSC::MacroAssemblerARM64::compare8):
974         (JSC::MacroAssemblerARM64::test8):
975         * assembler/MacroAssemblerARMv7.h:
976         (JSC::MacroAssemblerARMv7::branch8):
977         (JSC::MacroAssemblerARMv7::branchTest8):
978         (JSC::MacroAssemblerARMv7::compare8):
979         (JSC::MacroAssemblerARMv7::test8):
980         * assembler/MacroAssemblerHelpers.h: Added.
981         (JSC::MacroAssemblerHelpers::isSigned):
982         (JSC::MacroAssemblerHelpers::isUnsigned):
983         (JSC::MacroAssemblerHelpers::mask8OnCondition):
984         (JSC::MacroAssemblerHelpers::load8OnCondition):
985         * assembler/MacroAssemblerMIPS.h:
986         (JSC::MacroAssemblerMIPS::branch8):
987         (JSC::MacroAssemblerMIPS::compare8):
988         (JSC::MacroAssemblerMIPS::branchTest8):
989         (JSC::MacroAssemblerMIPS::test8):
990         * assembler/MacroAssemblerSH4.h:
991         (JSC::MacroAssemblerSH4::branchTest8):
992         (JSC::MacroAssemblerSH4::branch8):
993         (JSC::MacroAssemblerSH4::compare8):
994         (JSC::MacroAssemblerSH4::test8):
995         * assembler/MacroAssemblerX86_64.h:
996         (JSC::MacroAssemblerX86_64::branch8):
997
998 2016-11-08  Geoffrey Garen  <ggaren@apple.com>
999
1000         REGRESSION: date-format-tofte.js is super slow
1001         https://bugs.webkit.org/show_bug.cgi?id=164499
1002
1003         Reviewed by Sam Weinig.
1004
1005         * bytecode/EvalCodeCache.h:
1006         (JSC::EvalCodeCache::CacheKey::operator==): Use character comparison,
1007         not pointer comparison. (This function was always wrong, but I started
1008         calling it in more places.)
1009
1010 2016-11-08  Saam Barati  <sbarati@apple.com>
1011
1012         REGRESSION: Crashes in StringImpl destructor during GC when clearing the HasOwnPropertyCache
1013         https://bugs.webkit.org/show_bug.cgi?id=164433
1014
1015         Reviewed by Mark Lam.
1016
1017         Clearing the HasOwnPropertyCache will call deref() on the StringImpls
1018         in the cache. We were doing this from the collector thread, which is
1019         not allowed. It must be done from the mutator thread. We now clear the
1020         cache in Heap::finalize() which happens before the mutator begins
1021         executing JS after a collection happens.
1022
1023         * heap/Heap.cpp:
1024         (JSC::Heap::collectInThread):
1025         (JSC::Heap::finalize):
1026
1027 2016-11-05  Konstantin Tokarev  <annulen@yandex.ru>
1028
1029         Fixed compilation of LLInt with MinGW
1030         https://bugs.webkit.org/show_bug.cgi?id=164449
1031
1032         Reviewed by Michael Catanzaro.
1033
1034         MinGW uses LLIntAssembly.h with GNU assembler syntax, just like GCC on
1035         other platforms.
1036
1037         * llint/LowLevelInterpreter.cpp: Include LLIntAssembly.h with
1038         appropriate preamble.
1039
1040 2016-11-04  Filip Pizlo  <fpizlo@apple.com>
1041
1042         WTF::ParkingLot should stop using std::chrono because std::chrono::duration casts are prone to overflows
1043         https://bugs.webkit.org/show_bug.cgi?id=152045
1044
1045         Reviewed by Andy Estes.
1046         
1047         Probably the nicest example of why this patch is a good idea is the change in
1048         AtomicsObject.cpp.
1049
1050         * jit/ICStats.cpp:
1051         (JSC::ICStats::ICStats):
1052         * runtime/AtomicsObject.cpp:
1053         (JSC::atomicsFuncWait):
1054
1055 2016-11-04  JF Bastien  <jfbastien@apple.com>
1056
1057         testWASM should be very sad if no options are provided
1058         https://bugs.webkit.org/show_bug.cgi?id=164444
1059
1060         Reviewed by Saam Barati.
1061
1062         Detect missing or invalid options on the command line.
1063
1064         * testWasm.cpp:
1065         (CommandLine::parseArguments):
1066
1067 2016-11-04  Mark Lam  <mark.lam@apple.com>
1068
1069         Error description code should be able to handle Symbol values.
1070         https://bugs.webkit.org/show_bug.cgi?id=164436
1071         <rdar://problem/29115583>
1072
1073         Reviewed by Filip Pizlo and Saam Barati.
1074
1075         Previously, we try to toString() the Symbol value, resulting in it throwing an
1076         exception in errorDescriptionForValue() which breaks the invariant that
1077         errorDescriptionForValue() should not throw.
1078
1079         We fixed this by making errorDescriptionForValue() aware of the Symbol type, and
1080         not so a toString() on Symbol values.  Also fixed notAFunctionSourceAppender()
1081         to build a nicer message for Symbol values.
1082
1083         * runtime/ExceptionHelpers.cpp:
1084         (JSC::errorDescriptionForValue):
1085         (JSC::notAFunctionSourceAppender):
1086
1087 2016-11-02  Geoffrey Garen  <ggaren@apple.com>
1088
1089         EvalCodeCache should not give up in strict mode and other cases
1090         https://bugs.webkit.org/show_bug.cgi?id=164357
1091
1092         Reviewed by Michael Saboff.
1093
1094         EvalCodeCache gives up in non-trivial cases because generated eval code
1095         can't soundly migrate from, for example, a let scope to a non-let scope.
1096         The number of cases has grown over time.
1097
1098         Instead, let's cache eval code based on the location of the call to
1099         eval(). That way, we never relocate the code, and it's sound to make
1100         normal assumptions about our surrounding scope.
1101
1102         * bytecode/EvalCodeCache.h:
1103         (JSC::EvalCodeCache::CacheKey::CacheKey): Use CallSiteIndex to uniquely
1104         identify the location of our call to eval().
1105
1106         (JSC::EvalCodeCache::CacheKey::hash):
1107         (JSC::EvalCodeCache::CacheKey::operator==):
1108         (JSC::EvalCodeCache::CacheKey::Hash::equal): Use CallSiteIndex instead
1109         of lots of other flags.
1110
1111         (JSC::EvalCodeCache::tryGet): No need to include details that are implied
1112         by our CallSiteIndex.
1113
1114         (JSC::EvalCodeCache::getSlow): No need to skip caching in complex
1115         situations. We promise we'll never relocate the cached code.
1116
1117         (JSC::EvalCodeCache::isCacheableScope): Deleted.
1118         (JSC::EvalCodeCache::isCacheable): Deleted.
1119
1120         * interpreter/Interpreter.cpp:
1121         (JSC::eval): Pass through a CallSiteIndex to uniquely identify this call
1122         to eval().
1123
1124 2016-11-04  Keith Miller  <keith_miller@apple.com>
1125
1126         Add support for Wasm br_table
1127         https://bugs.webkit.org/show_bug.cgi?id=164429
1128
1129         Reviewed by Michael Saboff.
1130
1131         This patch adds support for Wasm br_table. The Wasm br_table
1132         opcode essentially directly maps to B3's switch opcode.
1133
1134         There are also three other minor changes:
1135         1) all non-argument locals should be initialized to zero at function entry.
1136         2) add new setErrorMessage member to WasmFunctionParser.h
1137         3) return does not decode an extra immediate anymore.
1138
1139         * testWasm.cpp:
1140         (runWasmTests):
1141         * wasm/WasmB3IRGenerator.cpp:
1142         * wasm/WasmFunctionParser.h:
1143         (JSC::Wasm::FunctionParser::setErrorMessage):
1144         (JSC::Wasm::FunctionParser<Context>::parseExpression):
1145         (JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
1146         (JSC::Wasm::FunctionParser<Context>::popExpressionStack):
1147         * wasm/WasmValidate.cpp:
1148         (JSC::Wasm::Validate::checkBranchTarget):
1149         (JSC::Wasm::Validate::addBranch):
1150         (JSC::Wasm::Validate::addSwitch):
1151
1152 2016-11-04  JF Bastien  <jfbastien@apple.com>
1153
1154         WebAssembly JS API: implement more sections
1155         https://bugs.webkit.org/show_bug.cgi?id=164023
1156
1157         Reviewed by Keith Miller.
1158
1159         On the JSC side:
1160
1161          - Put in parser stubs for all WebAssembly sections.
1162          - Parse Import, Export sections.
1163          - Use tryReserveCapacity instead of reserve, and bail out of the parser if it fails. This prevents the parser from bringing everything down when faced with a malicious input.
1164          - Encapsulate all parsed module information into its own structure, making it easier to pass around (from parser to Plan to Module to Instance).
1165          - Create WasmFormat.cpp to hold parsed module information's dtor to avoid including WasmMemory.h needlessly.
1166          - Remove all remainders of polyfill-prototype-1, and update license.
1167          - Add missing WasmOps.h and WasmValidateInlines.h auto-generation for cmake build.
1168
1169         On the Builder.js testing side:
1170
1171          - Implement Type, Import (function only), Export (function only) sections.
1172          - Check section order and uniqueness.
1173          - Optionally auto-generate the Type section from subsequent Export / Import / Code entries.
1174          - Allow re-exporting an import.
1175
1176         * CMakeLists.txt: missing auto-genration
1177         * JavaScriptCore.xcodeproj/project.pbxproj: merge conflict
1178         * testWasm.cpp: update for API changes, no functional change
1179         (checkPlan):
1180         (runWasmTests):
1181         * wasm/WasmFormat.cpp: add a dtor which requires extra headers which I'd rather not include in WasmFormat.h
1182         (JSC::Wasm::ModuleInformation::~ModuleInformation):
1183         * wasm/WasmFormat.h: Add External, Import, Functioninformation, Export, ModuleInformation, CompiledFunction, and remove obsolete stuff which was a holdover from the first implementation (all that code is now gone, so remove its license)
1184         (JSC::Wasm::External::isValid):
1185         * wasm/WasmModuleParser.cpp: simplify some, make names consistent with the WebAssembly section names, check memory allocations so they can fail early
1186         (JSC::Wasm::ModuleParser::parse):
1187         (JSC::Wasm::ModuleParser::parseType):
1188         (JSC::Wasm::ModuleParser::parseImport):
1189         (JSC::Wasm::ModuleParser::parseFunction):
1190         (JSC::Wasm::ModuleParser::parseTable):
1191         (JSC::Wasm::ModuleParser::parseMemory):
1192         (JSC::Wasm::ModuleParser::parseGlobal):
1193         (JSC::Wasm::ModuleParser::parseExport):
1194         (JSC::Wasm::ModuleParser::parseStart):
1195         (JSC::Wasm::ModuleParser::parseElement):
1196         (JSC::Wasm::ModuleParser::parseCode): avoid overflow through function size.
1197         (JSC::Wasm::ModuleParser::parseData):
1198         * wasm/WasmModuleParser.h:
1199         (JSC::Wasm::ModuleParser::moduleInformation):
1200         * wasm/WasmParser.h:
1201         (JSC::Wasm::Parser::consumeUTF8String): add as required by spec
1202         (JSC::Wasm::Parser::parseExternalKind): add as per spec
1203         * wasm/WasmPlan.cpp:
1204         (JSC::Wasm::Plan::Plan): fix some ownership, improve some error messages
1205         * wasm/WasmPlan.h: fix some ownership
1206         (JSC::Wasm::Plan::getModuleInformation):
1207         (JSC::Wasm::Plan::getMemory):
1208         (JSC::Wasm::Plan::compiledFunctionCount):
1209         (JSC::Wasm::Plan::compiledFunction):
1210         (JSC::Wasm::Plan::getCompiledFunctions):
1211         * wasm/WasmSections.h: macroize with description, so that error messages are super pretty. This could be auto-generated.
1212         * wasm/js/JSWebAssemblyModule.cpp:
1213         (JSC::JSWebAssemblyModule::create): take module information
1214         (JSC::JSWebAssemblyModule::JSWebAssemblyModule): ditto
1215         * wasm/js/JSWebAssemblyModule.h:
1216         (JSC::JSWebAssemblyModule::moduleInformation):
1217         * wasm/js/WebAssemblyInstanceConstructor.cpp:
1218         (JSC::constructJSWebAssemblyInstance): check that modules with imports are instantiated with an import object, as per spec. This needs to be tested.
1219         * wasm/js/WebAssemblyMemoryConstructor.cpp:
1220         (JSC::constructJSWebAssemblyMemory):
1221         * wasm/js/WebAssemblyModuleConstructor.cpp:
1222         (JSC::constructJSWebAssemblyModule):
1223         * wasm/js/WebAssemblyTableConstructor.cpp:
1224         (JSC::constructJSWebAssemblyTable):
1225
1226 2016-11-03  Mark Lam  <mark.lam@apple.com>
1227
1228         ClonedArguments need to also support haveABadTime mode.
1229         https://bugs.webkit.org/show_bug.cgi?id=164200
1230         <rdar://problem/27211336>
1231
1232         Reviewed by Geoffrey Garen.
1233
1234         For those who are not familiar with the parlance, "have a bad time" in the VM
1235         means that Object.prototype has been modified in such a way that we can no longer
1236         trivially do indexed property accesses without consulting the Object.prototype.
1237         This defeats JIT indexed put optimizations, and hence, makes the VM "have a
1238         bad time".
1239
1240         Once the VM enters haveABadTime mode, all existing objects are converted to use
1241         slow put storage.  Thereafter, JSArrays are always created with slow put storage.
1242         JSObjects are always created with a blank indexing type.  When a new indexed
1243         property is put into the new object, its indexing type will be converted to the
1244         slow put array indexing type just before we perform the put operation.  This is
1245         how we ensure that the objects will also use slow put storage.
1246
1247         However, ClonedArguments is an object which was previously created unconditionally
1248         to use contiguous storage.  Subsequently, if we try to call Object.preventExtensions()
1249         on that ClonedArguments object, Object.preventExtensions() will:
1250         1. make the ClonedArguments enter dictionary indexing mode, which means it will
1251         2. first ensure that the ClonedArguments is using slow put array storage via
1252            JSObject::ensureArrayStorageSlow().
1253
1254         However, JSObject::ensureArrayStorageSlow() expects that we never see an object
1255         with contiguous storage once we're in haveABadTime mode.  Our ClonedArguments
1256         object did not obey this invariant.
1257
1258         The fix is to make the ClonedArguments factories create objects that use slow put
1259         array storage when in haveABadTime mode.  This means:
1260
1261         1. JSGlobalObject::haveABadTime() now changes m_clonedArgumentsStructure to use
1262            its slow put version.
1263
1264            Also the caching of the slow put version of m_regExpMatchesArrayStructure,
1265            because we only need to create it when we are having a bad time. 
1266
1267         2. The ClonedArguments factories now allocates a butterfly with slow put array
1268            storage if we're in haveABadTime mode.
1269
1270            Also added some assertions in ClonedArguments' factory methods to ensure that
1271            the created object has the slow put indexing type when it needsSlowPutIndexing().
1272
1273         3. DFGFixupPhase now watches the havingABadTimeWatchpoint because ClonedArguments'
1274            structure will change when having a bad time.
1275
1276         4. DFGArgumentEliminationPhase and DFGVarargsForwardingPhase need not be changed
1277            because it is still valid to eliminate the creation of the arguments object
1278            even having a bad time, as long as the arguments object does not escape.
1279
1280         5. The DFGAbstractInterpreterInlines now checks for haveABadTime, and sets the
1281            predicted type to be SpecObject.
1282
1283         Note: this issue does not apply to DirectArguments and ScopedArguments because
1284         they use a blank indexing type (just like JSObject).
1285
1286         * dfg/DFGAbstractInterpreterInlines.h:
1287         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
1288         * dfg/DFGArrayMode.cpp:
1289         (JSC::DFG::ArrayMode::dump):
1290         * dfg/DFGFixupPhase.cpp:
1291         (JSC::DFG::FixupPhase::fixupNode):
1292         * runtime/ClonedArguments.cpp:
1293         (JSC::ClonedArguments::createEmpty):
1294         (JSC::ClonedArguments::createWithInlineFrame):
1295         (JSC::ClonedArguments::createWithMachineFrame):
1296         (JSC::ClonedArguments::createByCopyingFrom):
1297         (JSC::ClonedArguments::createStructure):
1298         (JSC::ClonedArguments::createSlowPutStructure):
1299         * runtime/ClonedArguments.h:
1300         * runtime/JSGlobalObject.cpp:
1301         (JSC::JSGlobalObject::init):
1302         (JSC::JSGlobalObject::haveABadTime):
1303         (JSC::JSGlobalObject::visitChildren):
1304         * runtime/JSGlobalObject.h:
1305
1306 2016-11-03  Filip Pizlo  <fpizlo@apple.com>
1307
1308         DFG plays fast and loose with the shadow values of a Phi
1309         https://bugs.webkit.org/show_bug.cgi?id=164309
1310
1311         Reviewed by Saam Barati.
1312         
1313         Oh boy, what an embarrassing mistake! The style of SSA I like to use avoids block/value
1314         tuples as parameters of a Phi, thereby simplifying CFG transformations and making Phi largely
1315         not a special case for most compiler transforms. It does this by introducing another value
1316         called Upsilon, which stores a value into some Phi.
1317         
1318         B3 uses this also. The easiest way to understand what Upsilon/Phi behave like is to look at
1319         the B3->Air lowering. Air is not SSA - it has Tmps that you can assign to and use as many
1320         times as you like. B3 allocates one Tmp per Value, and an extra "phiTmp" for Phis, so that
1321         Phis get two Tmps total. Upsilon stores the value into the phiTmp of the Phi, while Phi moves
1322         the value from its phiTmp to its tmp.
1323         
1324         This is necessary to support scenarios like this:
1325         
1326             a: Phi()
1327             b: Upsilon(@x, ^a)
1328             c: Use(@a)
1329         
1330         Here, we want @c to see @a's value before @b. That's a very basic requirement of SSA: that
1331         the a value (like @a) doesn't change during its lifetime.
1332         
1333         Unfortunately, DFG's liveness analysis, abstract interpreter, and integer range optimization
1334         all failed to correctly model Upsilon/Phi this way. They would assume that it's accurate to
1335         model the Upsilon as storing into the Phi directly.
1336         
1337         Because DFG does flow analysis over SSA, making it correct means enabling it to speak of the
1338         shadow value. This change addresses this problem by introducing the concept of a
1339         NodeFlowProjection. This is a key that lets us speak of both a Node's primary value and its
1340         optional "shadow" value. Liveness, AI, and integer range are now keyed by NodeFlowProjection
1341         rather than Node*. Conceptually this turns out to be a very simple change, but it does touch
1342         a good amount of code.
1343         
1344         This looks to be perf-neutral.
1345
1346         Rolled back in after fixing the debug build.
1347
1348         * CMakeLists.txt:
1349         * JavaScriptCore.xcodeproj/project.pbxproj:
1350         * b3/air/AirLiveness.h:
1351         (JSC::B3::Air::TmpLivenessAdapter::numIndices):
1352         (JSC::B3::Air::StackSlotLivenessAdapter::numIndices):
1353         (JSC::B3::Air::RegLivenessAdapter::numIndices):
1354         (JSC::B3::Air::AbstractLiveness::AbstractLiveness):
1355         (JSC::B3::Air::TmpLivenessAdapter::maxIndex): Deleted.
1356         (JSC::B3::Air::StackSlotLivenessAdapter::maxIndex): Deleted.
1357         (JSC::B3::Air::RegLivenessAdapter::maxIndex): Deleted.
1358         * dfg/DFGAbstractInterpreter.h:
1359         (JSC::DFG::AbstractInterpreter::forNode):
1360         * dfg/DFGAbstractInterpreterInlines.h:
1361         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
1362         (JSC::DFG::AbstractInterpreter<AbstractStateType>::forAllValues):
1363         (JSC::DFG::AbstractInterpreter<AbstractStateType>::dump):
1364         * dfg/DFGAtTailAbstractState.cpp:
1365         (JSC::DFG::AtTailAbstractState::createValueForNode):
1366         (JSC::DFG::AtTailAbstractState::forNode):
1367         * dfg/DFGAtTailAbstractState.h:
1368         * dfg/DFGBasicBlock.h:
1369         * dfg/DFGCombinedLiveness.cpp:
1370         (JSC::DFG::liveNodesAtHead):
1371         * dfg/DFGCombinedLiveness.h:
1372         * dfg/DFGFlowIndexing.cpp: Added.
1373         (JSC::DFG::FlowIndexing::FlowIndexing):
1374         (JSC::DFG::FlowIndexing::~FlowIndexing):
1375         (JSC::DFG::FlowIndexing::recompute):
1376         * dfg/DFGFlowIndexing.h: Added.
1377         (JSC::DFG::FlowIndexing::graph):
1378         (JSC::DFG::FlowIndexing::numIndices):
1379         (JSC::DFG::FlowIndexing::index):
1380         (JSC::DFG::FlowIndexing::shadowIndex):
1381         (JSC::DFG::FlowIndexing::nodeProjection):
1382         * dfg/DFGFlowMap.h: Added.
1383         (JSC::DFG::FlowMap::FlowMap):
1384         (JSC::DFG::FlowMap::resize):
1385         (JSC::DFG::FlowMap::graph):
1386         (JSC::DFG::FlowMap::at):
1387         (JSC::DFG::FlowMap::atShadow):
1388         (WTF::printInternal):
1389         * dfg/DFGGraph.cpp:
1390         (JSC::DFG::Graph::Graph):
1391         * dfg/DFGGraph.h:
1392         (JSC::DFG::Graph::abstractValuesCache): Deleted.
1393         * dfg/DFGInPlaceAbstractState.cpp:
1394         (JSC::DFG::InPlaceAbstractState::InPlaceAbstractState):
1395         (JSC::DFG::InPlaceAbstractState::beginBasicBlock):
1396         (JSC::DFG::setLiveValues):
1397         (JSC::DFG::InPlaceAbstractState::endBasicBlock):
1398         (JSC::DFG::InPlaceAbstractState::merge):
1399         * dfg/DFGInPlaceAbstractState.h:
1400         (JSC::DFG::InPlaceAbstractState::createValueForNode):
1401         (JSC::DFG::InPlaceAbstractState::forNode):
1402         * dfg/DFGIntegerRangeOptimizationPhase.cpp:
1403         * dfg/DFGLivenessAnalysisPhase.cpp:
1404         (JSC::DFG::LivenessAnalysisPhase::LivenessAnalysisPhase):
1405         (JSC::DFG::LivenessAnalysisPhase::run):
1406         (JSC::DFG::LivenessAnalysisPhase::processBlock):
1407         (JSC::DFG::LivenessAnalysisPhase::addChildUse): Deleted.
1408         * dfg/DFGNode.h:
1409         (JSC::DFG::NodeComparator::operator()):
1410         (JSC::DFG::nodeListDump):
1411         (JSC::DFG::nodeMapDump):
1412         (JSC::DFG::nodeValuePairListDump):
1413         (JSC::DFG::nodeComparator): Deleted.
1414         * dfg/DFGNodeAbstractValuePair.cpp: Added.
1415         (JSC::DFG::NodeAbstractValuePair::dump):
1416         * dfg/DFGNodeAbstractValuePair.h: Added.
1417         (JSC::DFG::NodeAbstractValuePair::NodeAbstractValuePair):
1418         * dfg/DFGNodeFlowProjection.cpp: Added.
1419         (JSC::DFG::NodeFlowProjection::dump):
1420         * dfg/DFGNodeFlowProjection.h: Added.
1421         (JSC::DFG::NodeFlowProjection::NodeFlowProjection):
1422         (JSC::DFG::NodeFlowProjection::operator bool):
1423         (JSC::DFG::NodeFlowProjection::kind):
1424         (JSC::DFG::NodeFlowProjection::node):
1425         (JSC::DFG::NodeFlowProjection::operator*):
1426         (JSC::DFG::NodeFlowProjection::operator->):
1427         (JSC::DFG::NodeFlowProjection::hash):
1428         (JSC::DFG::NodeFlowProjection::operator==):
1429         (JSC::DFG::NodeFlowProjection::operator!=):
1430         (JSC::DFG::NodeFlowProjection::operator<):
1431         (JSC::DFG::NodeFlowProjection::operator>):
1432         (JSC::DFG::NodeFlowProjection::operator<=):
1433         (JSC::DFG::NodeFlowProjection::operator>=):
1434         (JSC::DFG::NodeFlowProjection::isHashTableDeletedValue):
1435         (JSC::DFG::NodeFlowProjection::isStillValid):
1436         (JSC::DFG::NodeFlowProjection::forEach):
1437         (JSC::DFG::NodeFlowProjectionHash::hash):
1438         (JSC::DFG::NodeFlowProjectionHash::equal):
1439         * dfg/DFGStoreBarrierInsertionPhase.cpp:
1440
1441 2016-11-03  Commit Queue  <commit-queue@webkit.org>
1442
1443         Unreviewed, rolling out r208364.
1444         https://bugs.webkit.org/show_bug.cgi?id=164402
1445
1446         broke the build (Requested by smfr on #webkit).
1447
1448         Reverted changeset:
1449
1450         "DFG plays fast and loose with the shadow values of a Phi"
1451         https://bugs.webkit.org/show_bug.cgi?id=164309
1452         http://trac.webkit.org/changeset/208364
1453
1454 2016-11-03  Filip Pizlo  <fpizlo@apple.com>
1455
1456         DFG plays fast and loose with the shadow values of a Phi
1457         https://bugs.webkit.org/show_bug.cgi?id=164309
1458
1459         Reviewed by Saam Barati.
1460         
1461         Oh boy, what an embarrassing mistake! The style of SSA I like to use avoids block/value
1462         tuples as parameters of a Phi, thereby simplifying CFG transformations and making Phi largely
1463         not a special case for most compiler transforms. It does this by introducing another value
1464         called Upsilon, which stores a value into some Phi.
1465         
1466         B3 uses this also. The easiest way to understand what Upsilon/Phi behave like is to look at
1467         the B3->Air lowering. Air is not SSA - it has Tmps that you can assign to and use as many
1468         times as you like. B3 allocates one Tmp per Value, and an extra "phiTmp" for Phis, so that
1469         Phis get two Tmps total. Upsilon stores the value into the phiTmp of the Phi, while Phi moves
1470         the value from its phiTmp to its tmp.
1471         
1472         This is necessary to support scenarios like this:
1473         
1474             a: Phi()
1475             b: Upsilon(@x, ^a)
1476             c: Use(@a)
1477         
1478         Here, we want @c to see @a's value before @b. That's a very basic requirement of SSA: that
1479         the a value (like @a) doesn't change during its lifetime.
1480         
1481         Unfortunately, DFG's liveness analysis, abstract interpreter, and integer range optimization
1482         all failed to correctly model Upsilon/Phi this way. They would assume that it's accurate to
1483         model the Upsilon as storing into the Phi directly.
1484         
1485         Because DFG does flow analysis over SSA, making it correct means enabling it to speak of the
1486         shadow value. This change addresses this problem by introducing the concept of a
1487         NodeFlowProjection. This is a key that lets us speak of both a Node's primary value and its
1488         optional "shadow" value. Liveness, AI, and integer range are now keyed by NodeFlowProjection
1489         rather than Node*. Conceptually this turns out to be a very simple change, but it does touch
1490         a good amount of code.
1491         
1492         This looks to be perf-neutral.
1493
1494         * CMakeLists.txt:
1495         * JavaScriptCore.xcodeproj/project.pbxproj:
1496         * b3/air/AirLiveness.h:
1497         (JSC::B3::Air::TmpLivenessAdapter::numIndices):
1498         (JSC::B3::Air::StackSlotLivenessAdapter::numIndices):
1499         (JSC::B3::Air::RegLivenessAdapter::numIndices):
1500         (JSC::B3::Air::AbstractLiveness::AbstractLiveness):
1501         (JSC::B3::Air::TmpLivenessAdapter::maxIndex): Deleted.
1502         (JSC::B3::Air::StackSlotLivenessAdapter::maxIndex): Deleted.
1503         (JSC::B3::Air::RegLivenessAdapter::maxIndex): Deleted.
1504         * dfg/DFGAbstractInterpreter.h:
1505         (JSC::DFG::AbstractInterpreter::forNode):
1506         * dfg/DFGAbstractInterpreterInlines.h:
1507         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
1508         (JSC::DFG::AbstractInterpreter<AbstractStateType>::forAllValues):
1509         (JSC::DFG::AbstractInterpreter<AbstractStateType>::dump):
1510         * dfg/DFGAtTailAbstractState.cpp:
1511         (JSC::DFG::AtTailAbstractState::createValueForNode):
1512         (JSC::DFG::AtTailAbstractState::forNode):
1513         * dfg/DFGAtTailAbstractState.h:
1514         * dfg/DFGBasicBlock.h:
1515         * dfg/DFGCombinedLiveness.cpp:
1516         (JSC::DFG::liveNodesAtHead):
1517         * dfg/DFGCombinedLiveness.h:
1518         * dfg/DFGFlowIndexing.cpp: Added.
1519         (JSC::DFG::FlowIndexing::FlowIndexing):
1520         (JSC::DFG::FlowIndexing::~FlowIndexing):
1521         (JSC::DFG::FlowIndexing::recompute):
1522         * dfg/DFGFlowIndexing.h: Added.
1523         (JSC::DFG::FlowIndexing::graph):
1524         (JSC::DFG::FlowIndexing::numIndices):
1525         (JSC::DFG::FlowIndexing::index):
1526         (JSC::DFG::FlowIndexing::shadowIndex):
1527         (JSC::DFG::FlowIndexing::nodeProjection):
1528         * dfg/DFGFlowMap.h: Added.
1529         (JSC::DFG::FlowMap::FlowMap):
1530         (JSC::DFG::FlowMap::resize):
1531         (JSC::DFG::FlowMap::graph):
1532         (JSC::DFG::FlowMap::at):
1533         (JSC::DFG::FlowMap::atShadow):
1534         (WTF::printInternal):
1535         * dfg/DFGGraph.cpp:
1536         (JSC::DFG::Graph::Graph):
1537         * dfg/DFGGraph.h:
1538         (JSC::DFG::Graph::abstractValuesCache): Deleted.
1539         * dfg/DFGInPlaceAbstractState.cpp:
1540         (JSC::DFG::InPlaceAbstractState::InPlaceAbstractState):
1541         (JSC::DFG::InPlaceAbstractState::beginBasicBlock):
1542         (JSC::DFG::setLiveValues):
1543         (JSC::DFG::InPlaceAbstractState::endBasicBlock):
1544         (JSC::DFG::InPlaceAbstractState::merge):
1545         * dfg/DFGInPlaceAbstractState.h:
1546         (JSC::DFG::InPlaceAbstractState::createValueForNode):
1547         (JSC::DFG::InPlaceAbstractState::forNode):
1548         * dfg/DFGIntegerRangeOptimizationPhase.cpp:
1549         * dfg/DFGLivenessAnalysisPhase.cpp:
1550         (JSC::DFG::LivenessAnalysisPhase::LivenessAnalysisPhase):
1551         (JSC::DFG::LivenessAnalysisPhase::run):
1552         (JSC::DFG::LivenessAnalysisPhase::processBlock):
1553         (JSC::DFG::LivenessAnalysisPhase::addChildUse): Deleted.
1554         * dfg/DFGNode.h:
1555         (JSC::DFG::NodeComparator::operator()):
1556         (JSC::DFG::nodeListDump):
1557         (JSC::DFG::nodeMapDump):
1558         (JSC::DFG::nodeValuePairListDump):
1559         (JSC::DFG::nodeComparator): Deleted.
1560         * dfg/DFGNodeAbstractValuePair.cpp: Added.
1561         (JSC::DFG::NodeAbstractValuePair::dump):
1562         * dfg/DFGNodeAbstractValuePair.h: Added.
1563         (JSC::DFG::NodeAbstractValuePair::NodeAbstractValuePair):
1564         * dfg/DFGNodeFlowProjection.cpp: Added.
1565         (JSC::DFG::NodeFlowProjection::dump):
1566         * dfg/DFGNodeFlowProjection.h: Added.
1567         (JSC::DFG::NodeFlowProjection::NodeFlowProjection):
1568         (JSC::DFG::NodeFlowProjection::operator bool):
1569         (JSC::DFG::NodeFlowProjection::kind):
1570         (JSC::DFG::NodeFlowProjection::node):
1571         (JSC::DFG::NodeFlowProjection::operator*):
1572         (JSC::DFG::NodeFlowProjection::operator->):
1573         (JSC::DFG::NodeFlowProjection::hash):
1574         (JSC::DFG::NodeFlowProjection::operator==):
1575         (JSC::DFG::NodeFlowProjection::operator!=):
1576         (JSC::DFG::NodeFlowProjection::operator<):
1577         (JSC::DFG::NodeFlowProjection::operator>):
1578         (JSC::DFG::NodeFlowProjection::operator<=):
1579         (JSC::DFG::NodeFlowProjection::operator>=):
1580         (JSC::DFG::NodeFlowProjection::isHashTableDeletedValue):
1581         (JSC::DFG::NodeFlowProjection::isStillValid):
1582         (JSC::DFG::NodeFlowProjection::forEach):
1583         (JSC::DFG::NodeFlowProjectionHash::hash):
1584         (JSC::DFG::NodeFlowProjectionHash::equal):
1585         * dfg/DFGStoreBarrierInsertionPhase.cpp:
1586
1587 2016-11-03  Keith Miller  <keith_miller@apple.com>
1588
1589         Unreviewed, changelog fix due to failed git rebase..
1590
1591 2016-11-03  Keith Miller  <keith_miller@apple.com>
1592
1593         Wasm starts a new stack whenever it adds a new block and has return types for blocks.
1594         https://bugs.webkit.org/show_bug.cgi?id=164100
1595
1596         Reviewed by Saam Barati.
1597
1598         This patch overhauls much of the Wasm function parser, validator, and B3 IR generator
1599         to work with block return types. In Wasm, blocks can act as expressions and have a
1600         return value. Most of the control flow operators needed to be rewritten in order to
1601         support this feature. To enable return types the function parser needed to be able
1602         to save and restore the expression stack from previous blocks, which is done via the
1603         control stack.
1604
1605         This patch also removes the lazy continuation block system added previously. It's
1606         not clear if there would be any performance win from such a system. There are likely
1607         many other things with orders of magnitude more impact on B3 IR generation. The
1608         complexity cost of such a system is not worth the effort without sufficient evidence
1609         otherwise.
1610
1611         * testWasm.cpp:
1612         (runWasmTests):
1613         * wasm/WasmB3IRGenerator.cpp:
1614         * wasm/WasmFunctionParser.h:
1615         (JSC::Wasm::FunctionParser<Context>::parseBlock):
1616         (JSC::Wasm::FunctionParser<Context>::addReturn):
1617         (JSC::Wasm::FunctionParser<Context>::parseExpression):
1618         (JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
1619         (JSC::Wasm::FunctionParser<Context>::popExpressionStack):
1620         * wasm/WasmValidate.cpp:
1621         (JSC::Wasm::Validate::ControlData::hasNonVoidSignature):
1622         (JSC::Wasm::Validate::addElse):
1623         (JSC::Wasm::Validate::addElseToUnreachable):
1624         (JSC::Wasm::Validate::addBranch):
1625         (JSC::Wasm::Validate::endBlock):
1626         (JSC::Wasm::Validate::addEndToUnreachable):
1627         (JSC::Wasm::Validate::dump):
1628         (JSC::Wasm::validateFunction):
1629         (JSC::Wasm::Validate::isContinuationReachable): Deleted.
1630
1631 2016-11-03  Saam Barati  <sbarati@apple.com>
1632
1633         Asking for a value profile prediction should be defensive against not finding a value profile
1634         https://bugs.webkit.org/show_bug.cgi?id=164306
1635
1636         Reviewed by Mark Lam.
1637
1638         Currently, the code that calls CodeBlock::valueProfilePredictionForBytecodeOffset
1639         in the DFG assumes it will always be at a value producing node. However, this isn't
1640         true if we tail call from an inlined setter. When we're at a tail call, we try
1641         to find the first caller that isn't a tail call to see what value the
1642         tail_call produces. If we inline a setter, however, we will end up finding
1643         the put_by_id as our first non-tail-called "caller", and that won't have a
1644         value profile associated with it since it's not a value producing node.
1645         CodeBlock::valueProfilePredictionForBytecodeOffset should be defensive
1646         against finding a null value profile.
1647
1648         * bytecode/CodeBlock.h:
1649         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset):
1650         * dfg/DFGByteCodeParser.cpp:
1651         (JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
1652
1653 2016-11-02  Yusuke Suzuki  <utatane.tea@gmail.com>
1654
1655         Unreviewed, fix CLoop build after r208320.
1656         https://bugs.webkit.org/show_bug.cgi?id=162980
1657
1658         Add required forward declarations.
1659
1660         * domjit/DOMJITHeapRange.cpp:
1661         * domjit/DOMJITSignature.h:
1662         * runtime/VM.h:
1663
1664 2016-11-02  Yusuke Suzuki  <utatane.tea@gmail.com>
1665
1666         [DOMJIT] Add DOMJIT::Signature
1667         https://bugs.webkit.org/show_bug.cgi?id=162980
1668
1669         Reviewed by Saam Barati and Sam Weinig.
1670
1671         This patch introduces a new mechanism called DOMJIT::Signature. We can annotate the function with DOMJIT::Signature.
1672         DOMJIT::Signature has type information of that function. And it also maintains the effect of the function and the
1673         pointer to the unsafe function. The unsafe function means the function without type and argument count checks.
1674         By using these information, we can separate type and argument count checks from the function. And we can emit
1675         these things as DFG checks and convert the function call itself to CallDOM node. CallDOM node can call the unsafe
1676         function directly without any checks. Furthermore, this CallDOM node can represent its own clobberizing rules based
1677         on DOMJIT::Effect maintained by DOMJIT::Signature. It allows us to make opaque Call node to a CallDOM node that
1678         merely reads some part of heap. These changes (1) can drop duplicate type checks in DFG, (2) offer ability to move
1679         CallDOM node to somewhere, and (3) track more detailed heap reads and writes of CallDOM nodes.
1680
1681         We first emit Call node with DOMJIT::Signature in DFGByteCodeParser. And in the fixup phase, we attempt to lower
1682         Call node to CallDOM node with checks & edge filters. This is because we do not know the type predictions in
1683         DFGByteCodeParser phase. If we always emit CallDOM node in DFGByteCodeParser, if we evaluate `div.getAttribute(true)`
1684         thingy, the Uncountable OSR exits repeatedly happen because AI figures out the abstract value is cleared.
1685
1686         Currently, DOMJIT signature only allows the types that can reside in GPR. This is because the types of the unsafe
1687         function arguments are represented as the sequence of void*. In the future, we will extend to accept other types like
1688         float, double etc.
1689
1690         We annotate several functions in Element. In particular, we annotate Element::getAttribute. This allows us to perform
1691         LICM in Dromaeo dom-attr test. In the Dromaeo dom-attr getAttribute test, we can see 32x improvement. (134974.8 v.s. 4203.4)
1692
1693         * JavaScriptCore.xcodeproj/project.pbxproj:
1694         * bytecode/CallVariant.h:
1695         (JSC::CallVariant::functionExecutable):
1696         (JSC::CallVariant::nativeExecutable):
1697         (JSC::CallVariant::signatureFor):
1698         * bytecode/SpeculatedType.h:
1699         (JSC::isNotStringSpeculation):
1700         (JSC::isNotInt32Speculation):
1701         (JSC::isNotBooleanSpeculation):
1702         * dfg/DFGAbstractInterpreterInlines.h:
1703         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
1704         * dfg/DFGByteCodeParser.cpp:
1705         (JSC::DFG::ByteCodeParser::addCall):
1706         (JSC::DFG::ByteCodeParser::handleCall):
1707         (JSC::DFG::ByteCodeParser::attemptToInlineCall):
1708         (JSC::DFG::ByteCodeParser::handleInlining):
1709         (JSC::DFG::ByteCodeParser::handleDOMJITCall):
1710         (JSC::DFG::ByteCodeParser::parseBlock):
1711         * dfg/DFGClobberize.h:
1712         (JSC::DFG::clobberize):
1713         * dfg/DFGDoesGC.cpp:
1714         (JSC::DFG::doesGC):
1715         * dfg/DFGFixupPhase.cpp:
1716         (JSC::DFG::FixupPhase::fixupNode):
1717         (JSC::DFG::FixupPhase::attemptToMakeCallDOM):
1718         (JSC::DFG::FixupPhase::fixupCheckDOM):
1719         (JSC::DFG::FixupPhase::fixupCallDOM):
1720         * dfg/DFGNode.cpp:
1721         (JSC::DFG::Node::convertToCallDOM):
1722         * dfg/DFGNode.h:
1723         (JSC::DFG::Node::hasHeapPrediction):
1724         (JSC::DFG::Node::shouldSpeculateNotInt32):
1725         (JSC::DFG::Node::shouldSpeculateNotBoolean):
1726         (JSC::DFG::Node::shouldSpeculateNotString):
1727         (JSC::DFG::Node::hasSignature):
1728         (JSC::DFG::Node::signature):
1729         * dfg/DFGNodeType.h:
1730         * dfg/DFGPredictionPropagationPhase.cpp:
1731         * dfg/DFGSafeToExecute.h:
1732         (JSC::DFG::safeToExecute):
1733         * dfg/DFGSpeculativeJIT.cpp:
1734         (JSC::DFG::SpeculativeJIT::compileCallDOM):
1735         * dfg/DFGSpeculativeJIT.h:
1736         (JSC::DFG::SpeculativeJIT::callOperation):
1737         * dfg/DFGSpeculativeJIT32_64.cpp:
1738         (JSC::DFG::SpeculativeJIT::compile):
1739         * dfg/DFGSpeculativeJIT64.cpp:
1740         (JSC::DFG::SpeculativeJIT::compile):
1741         * domjit/DOMJITEffect.h:
1742         (JSC::DOMJIT::Effect::Effect):
1743         (JSC::DOMJIT::Effect::forWrite):
1744         (JSC::DOMJIT::Effect::forRead):
1745         (JSC::DOMJIT::Effect::forReadWrite):
1746         (JSC::DOMJIT::Effect::forPure):
1747         (JSC::DOMJIT::Effect::forDef):
1748         (JSC::DOMJIT::Effect::mustGenerate):
1749         In clang, we cannot make this Effect constructor constexpr if we use Optional<HeapRange>.
1750         So we use HeapRange::top() for Nullopt def now.
1751
1752         * domjit/DOMJITHeapRange.h:
1753         (JSC::DOMJIT::HeapRange::fromRaw):
1754         (JSC::DOMJIT::HeapRange::operator bool):
1755         (JSC::DOMJIT::HeapRange::operator==):
1756         (JSC::DOMJIT::HeapRange::operator!=):
1757         (JSC::DOMJIT::HeapRange::fromConstant):
1758         * domjit/DOMJITSignature.h: Copied from Source/JavaScriptCore/domjit/DOMJITEffect.h.
1759         (JSC::DOMJIT::Signature::Signature):
1760         (JSC::DOMJIT::Signature::argumentCount):
1761         (JSC::DOMJIT::Signature::checkDOM):
1762         * ftl/FTLCapabilities.cpp:
1763         (JSC::FTL::canCompile):
1764         * ftl/FTLLowerDFGToB3.cpp:
1765         (JSC::FTL::DFG::LowerDFGToB3::compileNode):
1766         (JSC::FTL::DFG::LowerDFGToB3::compileCallDOM):
1767         * jit/JITOperations.h:
1768         * jit/JITThunks.cpp:
1769         (JSC::JITThunks::hostFunctionStub):
1770         * jit/JITThunks.h:
1771         * runtime/JSBoundFunction.cpp:
1772         (JSC::JSBoundFunction::create):
1773         * runtime/JSCell.h:
1774         * runtime/JSFunction.cpp:
1775         (JSC::JSFunction::create):
1776         * runtime/JSFunction.h:
1777         * runtime/JSNativeStdFunction.cpp:
1778         (JSC::JSNativeStdFunction::create):
1779         * runtime/JSObject.cpp:
1780         (JSC::JSObject::putDirectNativeFunction):
1781         * runtime/JSObject.h:
1782         * runtime/Lookup.h:
1783         (JSC::HashTableValue::functionLength):
1784         (JSC::HashTableValue::signature):
1785         (JSC::reifyStaticProperty):
1786         * runtime/NativeExecutable.cpp:
1787         (JSC::NativeExecutable::create):
1788         (JSC::NativeExecutable::NativeExecutable):
1789         * runtime/NativeExecutable.h:
1790         * runtime/PropertySlot.h:
1791         * runtime/VM.cpp:
1792         (JSC::VM::getHostFunction):
1793         * runtime/VM.h:
1794
1795 2016-11-02  Andreas Kling  <akling@apple.com>
1796
1797         MarkedSpace should have specialized size classes for popular engine objects.
1798         <https://webkit.org/b/164345>
1799
1800         Reviewed by Filip Pizlo.
1801
1802         The MarkedSpace size classes were recently reworked to minimize wasted space
1803         at the end of MarkedBlocks.
1804
1805         However, we know that some specific objects will be allocated in very high volume.
1806         Adding specialized size classes for those object sizes achieves greater utilization
1807         since we're basically guaranteed to allocate them all the time.
1808
1809         Inject specialized size classes for these four objects:
1810
1811             - FunctionCodeBlock
1812                 560 bytes instead of 624
1813                 28 per block instead of 26 (+2)
1814
1815             - FunctionExecutable
1816                 176 bytes instead of 224
1817                 92 per block instead of 72 (+20)
1818
1819             - UnlinkedFunctionCodeBlock
1820                 256 bytes instead of 320
1821                 63 per block instead of 50 (+13)
1822
1823             - UnlinkedFunctionExecutable
1824                 192 bytes instead of 224
1825                 84 per block instead of 72 (+12)
1826
1827         * heap/MarkedSpace.cpp:
1828
1829 2016-11-02  Geoffrey Garen  <ggaren@apple.com>
1830
1831         One file per class for UnlinkedCodeBlock.h/.cpp
1832         https://bugs.webkit.org/show_bug.cgi?id=164348
1833
1834         Reviewed by Saam Barati.
1835
1836         * CMakeLists.txt:
1837         * JavaScriptCore.xcodeproj/project.pbxproj:
1838         * bytecode/FunctionCodeBlock.h:
1839         * bytecode/ModuleProgramCodeBlock.h:
1840         * bytecode/ProgramCodeBlock.h:
1841         * bytecode/UnlinkedCodeBlock.cpp:
1842         (JSC::UnlinkedProgramCodeBlock::visitChildren): Deleted.
1843         (JSC::UnlinkedModuleProgramCodeBlock::visitChildren): Deleted.
1844         (JSC::UnlinkedProgramCodeBlock::destroy): Deleted.
1845         (JSC::UnlinkedModuleProgramCodeBlock::destroy): Deleted.
1846         (JSC::UnlinkedEvalCodeBlock::destroy): Deleted.
1847         (JSC::UnlinkedFunctionCodeBlock::destroy): Deleted.
1848         (JSC::UnlinkedFunctionExecutable::destroy): Deleted.
1849         * bytecode/UnlinkedCodeBlock.h:
1850         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): Deleted.
1851         * bytecode/UnlinkedEvalCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp.
1852         (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.
1853         (JSC::UnlinkedCodeBlock::visitChildren): Deleted.
1854         (JSC::UnlinkedCodeBlock::estimatedSize): Deleted.
1855         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
1856         (JSC::UnlinkedCodeBlock::getLineAndColumn): Deleted.
1857         (JSC::dumpLineColumnEntry): Deleted.
1858         (JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo): Deleted.
1859         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset): Deleted.
1860         (JSC::UnlinkedCodeBlock::addExpressionInfo): Deleted.
1861         (JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset): Deleted.
1862         (JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo): Deleted.
1863         (JSC::UnlinkedProgramCodeBlock::visitChildren): Deleted.
1864         (JSC::UnlinkedModuleProgramCodeBlock::visitChildren): Deleted.
1865         (JSC::UnlinkedCodeBlock::~UnlinkedCodeBlock): Deleted.
1866         (JSC::UnlinkedProgramCodeBlock::destroy): Deleted.
1867         (JSC::UnlinkedModuleProgramCodeBlock::destroy): Deleted.
1868         (JSC::UnlinkedFunctionCodeBlock::destroy): Deleted.
1869         (JSC::UnlinkedFunctionExecutable::destroy): Deleted.
1870         (JSC::UnlinkedCodeBlock::setInstructions): Deleted.
1871         (JSC::UnlinkedCodeBlock::instructions): Deleted.
1872         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
1873         (JSC::UnlinkedCodeBlock::handlerForIndex): Deleted.
1874         (JSC::UnlinkedCodeBlock::applyModification): Deleted.
1875         * bytecode/UnlinkedEvalCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h.
1876         (JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
1877         (JSC::UnlinkedSimpleJumpTable::add): Deleted.
1878         (JSC::UnlinkedInstruction::UnlinkedInstruction): Deleted.
1879         (JSC::UnlinkedCodeBlock::isConstructor): Deleted.
1880         (JSC::UnlinkedCodeBlock::isStrictMode): Deleted.
1881         (JSC::UnlinkedCodeBlock::usesEval): Deleted.
1882         (JSC::UnlinkedCodeBlock::parseMode): Deleted.
1883         (JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.
1884         (JSC::UnlinkedCodeBlock::derivedContextType): Deleted.
1885         (JSC::UnlinkedCodeBlock::evalContextType): Deleted.
1886         (JSC::UnlinkedCodeBlock::isArrowFunctionContext): Deleted.
1887         (JSC::UnlinkedCodeBlock::isClassContext): Deleted.
1888         (JSC::UnlinkedCodeBlock::hasExpressionInfo): Deleted.
1889         (JSC::UnlinkedCodeBlock::expressionInfo): Deleted.
1890         (JSC::UnlinkedCodeBlock::setThisRegister): Deleted.
1891         (JSC::UnlinkedCodeBlock::setScopeRegister): Deleted.
1892         (JSC::UnlinkedCodeBlock::usesGlobalObject): Deleted.
1893         (JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
1894         (JSC::UnlinkedCodeBlock::globalObjectRegister): Deleted.
1895         (JSC::UnlinkedCodeBlock::setNumParameters): Deleted.
1896         (JSC::UnlinkedCodeBlock::addParameter): Deleted.
1897         (JSC::UnlinkedCodeBlock::numParameters): Deleted.
1898         (JSC::UnlinkedCodeBlock::addRegExp): Deleted.
1899         (JSC::UnlinkedCodeBlock::numberOfRegExps): Deleted.
1900         (JSC::UnlinkedCodeBlock::regexp): Deleted.
1901         (JSC::UnlinkedCodeBlock::numberOfIdentifiers): Deleted.
1902         (JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
1903         (JSC::UnlinkedCodeBlock::identifier): Deleted.
1904         (JSC::UnlinkedCodeBlock::identifiers): Deleted.
1905         (JSC::UnlinkedCodeBlock::addConstant): Deleted.
1906         (JSC::UnlinkedCodeBlock::registerIndexForLinkTimeConstant): Deleted.
1907         (JSC::UnlinkedCodeBlock::constantRegisters): Deleted.
1908         (JSC::UnlinkedCodeBlock::constantRegister): Deleted.
1909         (JSC::UnlinkedCodeBlock::isConstantRegisterIndex): Deleted.
1910         (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): Deleted.
1911         (JSC::UnlinkedCodeBlock::numberOfJumpTargets): Deleted.
1912         (JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
1913         (JSC::UnlinkedCodeBlock::jumpTarget): Deleted.
1914         (JSC::UnlinkedCodeBlock::lastJumpTarget): Deleted.
1915         (JSC::UnlinkedCodeBlock::isBuiltinFunction): Deleted.
1916         (JSC::UnlinkedCodeBlock::constructorKind): Deleted.
1917         (JSC::UnlinkedCodeBlock::superBinding): Deleted.
1918         (JSC::UnlinkedCodeBlock::scriptMode): Deleted.
1919         (JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
1920         (JSC::UnlinkedCodeBlock::numCalleeLocals): Deleted.
1921         (JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables): Deleted.
1922         (JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
1923         (JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
1924         (JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables): Deleted.
1925         (JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
1926         (JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.
1927         (JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
1928         (JSC::UnlinkedCodeBlock::functionDecl): Deleted.
1929         (JSC::UnlinkedCodeBlock::numberOfFunctionDecls): Deleted.
1930         (JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
1931         (JSC::UnlinkedCodeBlock::functionExpr): Deleted.
1932         (JSC::UnlinkedCodeBlock::numberOfFunctionExprs): Deleted.
1933         (JSC::UnlinkedCodeBlock::numberOfExceptionHandlers): Deleted.
1934         (JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
1935         (JSC::UnlinkedCodeBlock::exceptionHandler): Deleted.
1936         (JSC::UnlinkedCodeBlock::addArrayProfile): Deleted.
1937         (JSC::UnlinkedCodeBlock::numberOfArrayProfiles): Deleted.
1938         (JSC::UnlinkedCodeBlock::addArrayAllocationProfile): Deleted.
1939         (JSC::UnlinkedCodeBlock::numberOfArrayAllocationProfiles): Deleted.
1940         (JSC::UnlinkedCodeBlock::addObjectAllocationProfile): Deleted.
1941         (JSC::UnlinkedCodeBlock::numberOfObjectAllocationProfiles): Deleted.
1942         (JSC::UnlinkedCodeBlock::addValueProfile): Deleted.
1943         (JSC::UnlinkedCodeBlock::numberOfValueProfiles): Deleted.
1944         (JSC::UnlinkedCodeBlock::addLLIntCallLinkInfo): Deleted.
1945         (JSC::UnlinkedCodeBlock::numberOfLLintCallLinkInfos): Deleted.
1946         (JSC::UnlinkedCodeBlock::codeType): Deleted.
1947         (JSC::UnlinkedCodeBlock::thisRegister): Deleted.
1948         (JSC::UnlinkedCodeBlock::scopeRegister): Deleted.
1949         (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction): Deleted.
1950         (JSC::UnlinkedCodeBlock::numberOfPropertyAccessInstructions): Deleted.
1951         (JSC::UnlinkedCodeBlock::propertyAccessInstructions): Deleted.
1952         (JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
1953         (JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
1954         (JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
1955         (JSC::UnlinkedCodeBlock::hasRareData): Deleted.
1956         (JSC::UnlinkedCodeBlock::recordParse): Deleted.
1957         (JSC::UnlinkedCodeBlock::sourceURLDirective): Deleted.
1958         (JSC::UnlinkedCodeBlock::sourceMappingURLDirective): Deleted.
1959         (JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.
1960         (JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.
1961         (JSC::UnlinkedCodeBlock::codeFeatures): Deleted.
1962         (JSC::UnlinkedCodeBlock::hasCapturedVariables): Deleted.
1963         (JSC::UnlinkedCodeBlock::firstLine): Deleted.
1964         (JSC::UnlinkedCodeBlock::lineCount): Deleted.
1965         (JSC::UnlinkedCodeBlock::startColumn): Deleted.
1966         (JSC::UnlinkedCodeBlock::endColumn): Deleted.
1967         (JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
1968         (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets): Deleted.
1969         (JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets): Deleted.
1970         (JSC::UnlinkedCodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
1971         (JSC::UnlinkedCodeBlock::didOptimize): Deleted.
1972         (JSC::UnlinkedCodeBlock::setDidOptimize): Deleted.
1973         (JSC::UnlinkedCodeBlock::finishCreation): Deleted.
1974         (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): Deleted.
1975         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): Deleted.
1976         * bytecode/UnlinkedFunctionCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp.
1977         (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.
1978         (JSC::UnlinkedCodeBlock::visitChildren): Deleted.
1979         (JSC::UnlinkedCodeBlock::estimatedSize): Deleted.
1980         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
1981         (JSC::UnlinkedCodeBlock::getLineAndColumn): Deleted.
1982         (JSC::dumpLineColumnEntry): Deleted.
1983         (JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo): Deleted.
1984         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset): Deleted.
1985         (JSC::UnlinkedCodeBlock::addExpressionInfo): Deleted.
1986         (JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset): Deleted.
1987         (JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo): Deleted.
1988         (JSC::UnlinkedProgramCodeBlock::visitChildren): Deleted.
1989         (JSC::UnlinkedModuleProgramCodeBlock::visitChildren): Deleted.
1990         (JSC::UnlinkedCodeBlock::~UnlinkedCodeBlock): Deleted.
1991         (JSC::UnlinkedProgramCodeBlock::destroy): Deleted.
1992         (JSC::UnlinkedModuleProgramCodeBlock::destroy): Deleted.
1993         (JSC::UnlinkedEvalCodeBlock::destroy): Deleted.
1994         (JSC::UnlinkedFunctionExecutable::destroy): Deleted.
1995         (JSC::UnlinkedCodeBlock::setInstructions): Deleted.
1996         (JSC::UnlinkedCodeBlock::instructions): Deleted.
1997         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
1998         (JSC::UnlinkedCodeBlock::handlerForIndex): Deleted.
1999         (JSC::UnlinkedCodeBlock::applyModification): Deleted.
2000         * bytecode/UnlinkedFunctionCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h.
2001         (JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
2002         (JSC::UnlinkedSimpleJumpTable::add): Deleted.
2003         (JSC::UnlinkedInstruction::UnlinkedInstruction): Deleted.
2004         (JSC::UnlinkedCodeBlock::isConstructor): Deleted.
2005         (JSC::UnlinkedCodeBlock::isStrictMode): Deleted.
2006         (JSC::UnlinkedCodeBlock::usesEval): Deleted.
2007         (JSC::UnlinkedCodeBlock::parseMode): Deleted.
2008         (JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.
2009         (JSC::UnlinkedCodeBlock::derivedContextType): Deleted.
2010         (JSC::UnlinkedCodeBlock::evalContextType): Deleted.
2011         (JSC::UnlinkedCodeBlock::isArrowFunctionContext): Deleted.
2012         (JSC::UnlinkedCodeBlock::isClassContext): Deleted.
2013         (JSC::UnlinkedCodeBlock::hasExpressionInfo): Deleted.
2014         (JSC::UnlinkedCodeBlock::expressionInfo): Deleted.
2015         (JSC::UnlinkedCodeBlock::setThisRegister): Deleted.
2016         (JSC::UnlinkedCodeBlock::setScopeRegister): Deleted.
2017         (JSC::UnlinkedCodeBlock::usesGlobalObject): Deleted.
2018         (JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
2019         (JSC::UnlinkedCodeBlock::globalObjectRegister): Deleted.
2020         (JSC::UnlinkedCodeBlock::setNumParameters): Deleted.
2021         (JSC::UnlinkedCodeBlock::addParameter): Deleted.
2022         (JSC::UnlinkedCodeBlock::numParameters): Deleted.
2023         (JSC::UnlinkedCodeBlock::addRegExp): Deleted.
2024         (JSC::UnlinkedCodeBlock::numberOfRegExps): Deleted.
2025         (JSC::UnlinkedCodeBlock::regexp): Deleted.
2026         (JSC::UnlinkedCodeBlock::numberOfIdentifiers): Deleted.
2027         (JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
2028         (JSC::UnlinkedCodeBlock::identifier): Deleted.
2029         (JSC::UnlinkedCodeBlock::identifiers): Deleted.
2030         (JSC::UnlinkedCodeBlock::addConstant): Deleted.
2031         (JSC::UnlinkedCodeBlock::registerIndexForLinkTimeConstant): Deleted.
2032         (JSC::UnlinkedCodeBlock::constantRegisters): Deleted.
2033         (JSC::UnlinkedCodeBlock::constantRegister): Deleted.
2034         (JSC::UnlinkedCodeBlock::isConstantRegisterIndex): Deleted.
2035         (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): Deleted.
2036         (JSC::UnlinkedCodeBlock::numberOfJumpTargets): Deleted.
2037         (JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
2038         (JSC::UnlinkedCodeBlock::jumpTarget): Deleted.
2039         (JSC::UnlinkedCodeBlock::lastJumpTarget): Deleted.
2040         (JSC::UnlinkedCodeBlock::isBuiltinFunction): Deleted.
2041         (JSC::UnlinkedCodeBlock::constructorKind): Deleted.
2042         (JSC::UnlinkedCodeBlock::superBinding): Deleted.
2043         (JSC::UnlinkedCodeBlock::scriptMode): Deleted.
2044         (JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
2045         (JSC::UnlinkedCodeBlock::numCalleeLocals): Deleted.
2046         (JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables): Deleted.
2047         (JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
2048         (JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
2049         (JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables): Deleted.
2050         (JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
2051         (JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.
2052         (JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
2053         (JSC::UnlinkedCodeBlock::functionDecl): Deleted.
2054         (JSC::UnlinkedCodeBlock::numberOfFunctionDecls): Deleted.
2055         (JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
2056         (JSC::UnlinkedCodeBlock::functionExpr): Deleted.
2057         (JSC::UnlinkedCodeBlock::numberOfFunctionExprs): Deleted.
2058         (JSC::UnlinkedCodeBlock::numberOfExceptionHandlers): Deleted.
2059         (JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
2060         (JSC::UnlinkedCodeBlock::exceptionHandler): Deleted.
2061         (JSC::UnlinkedCodeBlock::addArrayProfile): Deleted.
2062         (JSC::UnlinkedCodeBlock::numberOfArrayProfiles): Deleted.
2063         (JSC::UnlinkedCodeBlock::addArrayAllocationProfile): Deleted.
2064         (JSC::UnlinkedCodeBlock::numberOfArrayAllocationProfiles): Deleted.
2065         (JSC::UnlinkedCodeBlock::addObjectAllocationProfile): Deleted.
2066         (JSC::UnlinkedCodeBlock::numberOfObjectAllocationProfiles): Deleted.
2067         (JSC::UnlinkedCodeBlock::addValueProfile): Deleted.
2068         (JSC::UnlinkedCodeBlock::numberOfValueProfiles): Deleted.
2069         (JSC::UnlinkedCodeBlock::addLLIntCallLinkInfo): Deleted.
2070         (JSC::UnlinkedCodeBlock::numberOfLLintCallLinkInfos): Deleted.
2071         (JSC::UnlinkedCodeBlock::codeType): Deleted.
2072         (JSC::UnlinkedCodeBlock::thisRegister): Deleted.
2073         (JSC::UnlinkedCodeBlock::scopeRegister): Deleted.
2074         (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction): Deleted.
2075         (JSC::UnlinkedCodeBlock::numberOfPropertyAccessInstructions): Deleted.
2076         (JSC::UnlinkedCodeBlock::propertyAccessInstructions): Deleted.
2077         (JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
2078         (JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
2079         (JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
2080         (JSC::UnlinkedCodeBlock::hasRareData): Deleted.
2081         (JSC::UnlinkedCodeBlock::recordParse): Deleted.
2082         (JSC::UnlinkedCodeBlock::sourceURLDirective): Deleted.
2083         (JSC::UnlinkedCodeBlock::sourceMappingURLDirective): Deleted.
2084         (JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.
2085         (JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.
2086         (JSC::UnlinkedCodeBlock::codeFeatures): Deleted.
2087         (JSC::UnlinkedCodeBlock::hasCapturedVariables): Deleted.
2088         (JSC::UnlinkedCodeBlock::firstLine): Deleted.
2089         (JSC::UnlinkedCodeBlock::lineCount): Deleted.
2090         (JSC::UnlinkedCodeBlock::startColumn): Deleted.
2091         (JSC::UnlinkedCodeBlock::endColumn): Deleted.
2092         (JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
2093         (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets): Deleted.
2094         (JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets): Deleted.
2095         (JSC::UnlinkedCodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
2096         (JSC::UnlinkedCodeBlock::didOptimize): Deleted.
2097         (JSC::UnlinkedCodeBlock::setDidOptimize): Deleted.
2098         (JSC::UnlinkedCodeBlock::finishCreation): Deleted.
2099         (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): Deleted.
2100         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): Deleted.
2101         * bytecode/UnlinkedFunctionExecutable.cpp:
2102         (JSC::UnlinkedFunctionExecutable::destroy):
2103         * bytecode/UnlinkedGlobalCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h.
2104         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock):
2105         (JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
2106         (JSC::UnlinkedSimpleJumpTable::add): Deleted.
2107         (JSC::UnlinkedInstruction::UnlinkedInstruction): Deleted.
2108         (): Deleted.
2109         (JSC::UnlinkedCodeBlock::isConstructor): Deleted.
2110         (JSC::UnlinkedCodeBlock::isStrictMode): Deleted.
2111         (JSC::UnlinkedCodeBlock::usesEval): Deleted.
2112         (JSC::UnlinkedCodeBlock::parseMode): Deleted.
2113         (JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.
2114         (JSC::UnlinkedCodeBlock::derivedContextType): Deleted.
2115         (JSC::UnlinkedCodeBlock::evalContextType): Deleted.
2116         (JSC::UnlinkedCodeBlock::isArrowFunctionContext): Deleted.
2117         (JSC::UnlinkedCodeBlock::isClassContext): Deleted.
2118         (JSC::UnlinkedCodeBlock::hasExpressionInfo): Deleted.
2119         (JSC::UnlinkedCodeBlock::expressionInfo): Deleted.
2120         (JSC::UnlinkedCodeBlock::setThisRegister): Deleted.
2121         (JSC::UnlinkedCodeBlock::setScopeRegister): Deleted.
2122         (JSC::UnlinkedCodeBlock::usesGlobalObject): Deleted.
2123         (JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
2124         (JSC::UnlinkedCodeBlock::globalObjectRegister): Deleted.
2125         (JSC::UnlinkedCodeBlock::setNumParameters): Deleted.
2126         (JSC::UnlinkedCodeBlock::addParameter): Deleted.
2127         (JSC::UnlinkedCodeBlock::numParameters): Deleted.
2128         (JSC::UnlinkedCodeBlock::addRegExp): Deleted.
2129         (JSC::UnlinkedCodeBlock::numberOfRegExps): Deleted.
2130         (JSC::UnlinkedCodeBlock::regexp): Deleted.
2131         (JSC::UnlinkedCodeBlock::numberOfIdentifiers): Deleted.
2132         (JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
2133         (JSC::UnlinkedCodeBlock::identifier): Deleted.
2134         (JSC::UnlinkedCodeBlock::identifiers): Deleted.
2135         (JSC::UnlinkedCodeBlock::addConstant): Deleted.
2136         (JSC::UnlinkedCodeBlock::registerIndexForLinkTimeConstant): Deleted.
2137         (JSC::UnlinkedCodeBlock::constantRegisters): Deleted.
2138         (JSC::UnlinkedCodeBlock::constantRegister): Deleted.
2139         (JSC::UnlinkedCodeBlock::isConstantRegisterIndex): Deleted.
2140         (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): Deleted.
2141         (JSC::UnlinkedCodeBlock::numberOfJumpTargets): Deleted.
2142         (JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
2143         (JSC::UnlinkedCodeBlock::jumpTarget): Deleted.
2144         (JSC::UnlinkedCodeBlock::lastJumpTarget): Deleted.
2145         (JSC::UnlinkedCodeBlock::isBuiltinFunction): Deleted.
2146         (JSC::UnlinkedCodeBlock::constructorKind): Deleted.
2147         (JSC::UnlinkedCodeBlock::superBinding): Deleted.
2148         (JSC::UnlinkedCodeBlock::scriptMode): Deleted.
2149         (JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
2150         (JSC::UnlinkedCodeBlock::numCalleeLocals): Deleted.
2151         (JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables): Deleted.
2152         (JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
2153         (JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
2154         (JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables): Deleted.
2155         (JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
2156         (JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.
2157         (JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
2158         (JSC::UnlinkedCodeBlock::functionDecl): Deleted.
2159         (JSC::UnlinkedCodeBlock::numberOfFunctionDecls): Deleted.
2160         (JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
2161         (JSC::UnlinkedCodeBlock::functionExpr): Deleted.
2162         (JSC::UnlinkedCodeBlock::numberOfFunctionExprs): Deleted.
2163         (JSC::UnlinkedCodeBlock::numberOfExceptionHandlers): Deleted.
2164         (JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
2165         (JSC::UnlinkedCodeBlock::exceptionHandler): Deleted.
2166         (JSC::UnlinkedCodeBlock::addArrayProfile): Deleted.
2167         (JSC::UnlinkedCodeBlock::numberOfArrayProfiles): Deleted.
2168         (JSC::UnlinkedCodeBlock::addArrayAllocationProfile): Deleted.
2169         (JSC::UnlinkedCodeBlock::numberOfArrayAllocationProfiles): Deleted.
2170         (JSC::UnlinkedCodeBlock::addObjectAllocationProfile): Deleted.
2171         (JSC::UnlinkedCodeBlock::numberOfObjectAllocationProfiles): Deleted.
2172         (JSC::UnlinkedCodeBlock::addValueProfile): Deleted.
2173         (JSC::UnlinkedCodeBlock::numberOfValueProfiles): Deleted.
2174         (JSC::UnlinkedCodeBlock::addLLIntCallLinkInfo): Deleted.
2175         (JSC::UnlinkedCodeBlock::numberOfLLintCallLinkInfos): Deleted.
2176         (JSC::UnlinkedCodeBlock::codeType): Deleted.
2177         (JSC::UnlinkedCodeBlock::thisRegister): Deleted.
2178         (JSC::UnlinkedCodeBlock::scopeRegister): Deleted.
2179         (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction): Deleted.
2180         (JSC::UnlinkedCodeBlock::numberOfPropertyAccessInstructions): Deleted.
2181         (JSC::UnlinkedCodeBlock::propertyAccessInstructions): Deleted.
2182         (JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
2183         (JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
2184         (JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
2185         (JSC::UnlinkedCodeBlock::hasRareData): Deleted.
2186         (JSC::UnlinkedCodeBlock::recordParse): Deleted.
2187         (JSC::UnlinkedCodeBlock::sourceURLDirective): Deleted.
2188         (JSC::UnlinkedCodeBlock::sourceMappingURLDirective): Deleted.
2189         (JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.
2190         (JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.
2191         (JSC::UnlinkedCodeBlock::codeFeatures): Deleted.
2192         (JSC::UnlinkedCodeBlock::hasCapturedVariables): Deleted.
2193         (JSC::UnlinkedCodeBlock::firstLine): Deleted.
2194         (JSC::UnlinkedCodeBlock::lineCount): Deleted.
2195         (JSC::UnlinkedCodeBlock::startColumn): Deleted.
2196         (JSC::UnlinkedCodeBlock::endColumn): Deleted.
2197         (JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
2198         (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets): Deleted.
2199         (JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets): Deleted.
2200         (JSC::UnlinkedCodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
2201         (JSC::UnlinkedCodeBlock::didOptimize): Deleted.
2202         (JSC::UnlinkedCodeBlock::setDidOptimize): Deleted.
2203         (JSC::UnlinkedCodeBlock::finishCreation): Deleted.
2204         (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): Deleted.
2205         * bytecode/UnlinkedModuleProgramCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp.
2206         (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.
2207         (JSC::UnlinkedCodeBlock::visitChildren): Deleted.
2208         (JSC::UnlinkedCodeBlock::estimatedSize): Deleted.
2209         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
2210         (JSC::UnlinkedCodeBlock::getLineAndColumn): Deleted.
2211         (JSC::dumpLineColumnEntry): Deleted.
2212         (JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo): Deleted.
2213         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset): Deleted.
2214         (JSC::UnlinkedCodeBlock::addExpressionInfo): Deleted.
2215         (JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset): Deleted.
2216         (JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo): Deleted.
2217         (JSC::UnlinkedProgramCodeBlock::visitChildren): Deleted.
2218         (JSC::UnlinkedCodeBlock::~UnlinkedCodeBlock): Deleted.
2219         (JSC::UnlinkedProgramCodeBlock::destroy): Deleted.
2220         (JSC::UnlinkedEvalCodeBlock::destroy): Deleted.
2221         (JSC::UnlinkedFunctionCodeBlock::destroy): Deleted.
2222         (JSC::UnlinkedFunctionExecutable::destroy): Deleted.
2223         (JSC::UnlinkedCodeBlock::setInstructions): Deleted.
2224         (JSC::UnlinkedCodeBlock::instructions): Deleted.
2225         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
2226         (JSC::UnlinkedCodeBlock::handlerForIndex): Deleted.
2227         (JSC::UnlinkedCodeBlock::applyModification): Deleted.
2228         * bytecode/UnlinkedModuleProgramCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h.
2229         (JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
2230         (JSC::UnlinkedSimpleJumpTable::add): Deleted.
2231         (JSC::UnlinkedInstruction::UnlinkedInstruction): Deleted.
2232         (JSC::UnlinkedCodeBlock::isConstructor): Deleted.
2233         (JSC::UnlinkedCodeBlock::isStrictMode): Deleted.
2234         (JSC::UnlinkedCodeBlock::usesEval): Deleted.
2235         (JSC::UnlinkedCodeBlock::parseMode): Deleted.
2236         (JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.
2237         (JSC::UnlinkedCodeBlock::derivedContextType): Deleted.
2238         (JSC::UnlinkedCodeBlock::evalContextType): Deleted.
2239         (JSC::UnlinkedCodeBlock::isArrowFunctionContext): Deleted.
2240         (JSC::UnlinkedCodeBlock::isClassContext): Deleted.
2241         (JSC::UnlinkedCodeBlock::hasExpressionInfo): Deleted.
2242         (JSC::UnlinkedCodeBlock::expressionInfo): Deleted.
2243         (JSC::UnlinkedCodeBlock::setThisRegister): Deleted.
2244         (JSC::UnlinkedCodeBlock::setScopeRegister): Deleted.
2245         (JSC::UnlinkedCodeBlock::usesGlobalObject): Deleted.
2246         (JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
2247         (JSC::UnlinkedCodeBlock::globalObjectRegister): Deleted.
2248         (JSC::UnlinkedCodeBlock::setNumParameters): Deleted.
2249         (JSC::UnlinkedCodeBlock::addParameter): Deleted.
2250         (JSC::UnlinkedCodeBlock::numParameters): Deleted.
2251         (JSC::UnlinkedCodeBlock::addRegExp): Deleted.
2252         (JSC::UnlinkedCodeBlock::numberOfRegExps): Deleted.
2253         (JSC::UnlinkedCodeBlock::regexp): Deleted.
2254         (JSC::UnlinkedCodeBlock::numberOfIdentifiers): Deleted.
2255         (JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
2256         (JSC::UnlinkedCodeBlock::identifier): Deleted.
2257         (JSC::UnlinkedCodeBlock::identifiers): Deleted.
2258         (JSC::UnlinkedCodeBlock::addConstant): Deleted.
2259         (JSC::UnlinkedCodeBlock::registerIndexForLinkTimeConstant): Deleted.
2260         (JSC::UnlinkedCodeBlock::constantRegisters): Deleted.
2261         (JSC::UnlinkedCodeBlock::constantRegister): Deleted.
2262         (JSC::UnlinkedCodeBlock::isConstantRegisterIndex): Deleted.
2263         (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): Deleted.
2264         (JSC::UnlinkedCodeBlock::numberOfJumpTargets): Deleted.
2265         (JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
2266         (JSC::UnlinkedCodeBlock::jumpTarget): Deleted.
2267         (JSC::UnlinkedCodeBlock::lastJumpTarget): Deleted.
2268         (JSC::UnlinkedCodeBlock::isBuiltinFunction): Deleted.
2269         (JSC::UnlinkedCodeBlock::constructorKind): Deleted.
2270         (JSC::UnlinkedCodeBlock::superBinding): Deleted.
2271         (JSC::UnlinkedCodeBlock::scriptMode): Deleted.
2272         (JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
2273         (JSC::UnlinkedCodeBlock::numCalleeLocals): Deleted.
2274         (JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables): Deleted.
2275         (JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
2276         (JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
2277         (JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables): Deleted.
2278         (JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
2279         (JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.
2280         (JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
2281         (JSC::UnlinkedCodeBlock::functionDecl): Deleted.
2282         (JSC::UnlinkedCodeBlock::numberOfFunctionDecls): Deleted.
2283         (JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
2284         (JSC::UnlinkedCodeBlock::functionExpr): Deleted.
2285         (JSC::UnlinkedCodeBlock::numberOfFunctionExprs): Deleted.
2286         (JSC::UnlinkedCodeBlock::numberOfExceptionHandlers): Deleted.
2287         (JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
2288         (JSC::UnlinkedCodeBlock::exceptionHandler): Deleted.
2289         (JSC::UnlinkedCodeBlock::addArrayProfile): Deleted.
2290         (JSC::UnlinkedCodeBlock::numberOfArrayProfiles): Deleted.
2291         (JSC::UnlinkedCodeBlock::addArrayAllocationProfile): Deleted.
2292         (JSC::UnlinkedCodeBlock::numberOfArrayAllocationProfiles): Deleted.
2293         (JSC::UnlinkedCodeBlock::addObjectAllocationProfile): Deleted.
2294         (JSC::UnlinkedCodeBlock::numberOfObjectAllocationProfiles): Deleted.
2295         (JSC::UnlinkedCodeBlock::addValueProfile): Deleted.
2296         (JSC::UnlinkedCodeBlock::numberOfValueProfiles): Deleted.
2297         (JSC::UnlinkedCodeBlock::addLLIntCallLinkInfo): Deleted.
2298         (JSC::UnlinkedCodeBlock::numberOfLLintCallLinkInfos): Deleted.
2299         (JSC::UnlinkedCodeBlock::codeType): Deleted.
2300         (JSC::UnlinkedCodeBlock::thisRegister): Deleted.
2301         (JSC::UnlinkedCodeBlock::scopeRegister): Deleted.
2302         (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction): Deleted.
2303         (JSC::UnlinkedCodeBlock::numberOfPropertyAccessInstructions): Deleted.
2304         (JSC::UnlinkedCodeBlock::propertyAccessInstructions): Deleted.
2305         (JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
2306         (JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
2307         (JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
2308         (JSC::UnlinkedCodeBlock::hasRareData): Deleted.
2309         (JSC::UnlinkedCodeBlock::recordParse): Deleted.
2310         (JSC::UnlinkedCodeBlock::sourceURLDirective): Deleted.
2311         (JSC::UnlinkedCodeBlock::sourceMappingURLDirective): Deleted.
2312         (JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.
2313         (JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.
2314         (JSC::UnlinkedCodeBlock::codeFeatures): Deleted.
2315         (JSC::UnlinkedCodeBlock::hasCapturedVariables): Deleted.
2316         (JSC::UnlinkedCodeBlock::firstLine): Deleted.
2317         (JSC::UnlinkedCodeBlock::lineCount): Deleted.
2318         (JSC::UnlinkedCodeBlock::startColumn): Deleted.
2319         (JSC::UnlinkedCodeBlock::endColumn): Deleted.
2320         (JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
2321         (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets): Deleted.
2322         (JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets): Deleted.
2323         (JSC::UnlinkedCodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
2324         (JSC::UnlinkedCodeBlock::didOptimize): Deleted.
2325         (JSC::UnlinkedCodeBlock::setDidOptimize): Deleted.
2326         (JSC::UnlinkedCodeBlock::finishCreation): Deleted.
2327         (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): Deleted.
2328         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): Deleted.
2329         * bytecode/UnlinkedProgramCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp.
2330         (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.
2331         (JSC::UnlinkedCodeBlock::visitChildren): Deleted.
2332         (JSC::UnlinkedCodeBlock::estimatedSize): Deleted.
2333         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset): Deleted.
2334         (JSC::UnlinkedCodeBlock::getLineAndColumn): Deleted.
2335         (JSC::dumpLineColumnEntry): Deleted.
2336         (JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo): Deleted.
2337         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset): Deleted.
2338         (JSC::UnlinkedCodeBlock::addExpressionInfo): Deleted.
2339         (JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset): Deleted.
2340         (JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo): Deleted.
2341         (JSC::UnlinkedModuleProgramCodeBlock::visitChildren): Deleted.
2342         (JSC::UnlinkedCodeBlock::~UnlinkedCodeBlock): Deleted.
2343         (JSC::UnlinkedModuleProgramCodeBlock::destroy): Deleted.
2344         (JSC::UnlinkedEvalCodeBlock::destroy): Deleted.
2345         (JSC::UnlinkedFunctionCodeBlock::destroy): Deleted.
2346         (JSC::UnlinkedFunctionExecutable::destroy): Deleted.
2347         (JSC::UnlinkedCodeBlock::setInstructions): Deleted.
2348         (JSC::UnlinkedCodeBlock::instructions): Deleted.
2349         (JSC::UnlinkedCodeBlock::handlerForBytecodeOffset): Deleted.
2350         (JSC::UnlinkedCodeBlock::handlerForIndex): Deleted.
2351         (JSC::UnlinkedCodeBlock::applyModification): Deleted.
2352         * bytecode/UnlinkedProgramCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h.
2353         (JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
2354         (JSC::UnlinkedSimpleJumpTable::add): Deleted.
2355         (JSC::UnlinkedInstruction::UnlinkedInstruction): Deleted.
2356         (JSC::UnlinkedCodeBlock::isConstructor): Deleted.
2357         (JSC::UnlinkedCodeBlock::isStrictMode): Deleted.
2358         (JSC::UnlinkedCodeBlock::usesEval): Deleted.
2359         (JSC::UnlinkedCodeBlock::parseMode): Deleted.
2360         (JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.
2361         (JSC::UnlinkedCodeBlock::derivedContextType): Deleted.
2362         (JSC::UnlinkedCodeBlock::evalContextType): Deleted.
2363         (JSC::UnlinkedCodeBlock::isArrowFunctionContext): Deleted.
2364         (JSC::UnlinkedCodeBlock::isClassContext): Deleted.
2365         (JSC::UnlinkedCodeBlock::hasExpressionInfo): Deleted.
2366         (JSC::UnlinkedCodeBlock::expressionInfo): Deleted.
2367         (JSC::UnlinkedCodeBlock::setThisRegister): Deleted.
2368         (JSC::UnlinkedCodeBlock::setScopeRegister): Deleted.
2369         (JSC::UnlinkedCodeBlock::usesGlobalObject): Deleted.
2370         (JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
2371         (JSC::UnlinkedCodeBlock::globalObjectRegister): Deleted.
2372         (JSC::UnlinkedCodeBlock::setNumParameters): Deleted.
2373         (JSC::UnlinkedCodeBlock::addParameter): Deleted.
2374         (JSC::UnlinkedCodeBlock::numParameters): Deleted.
2375         (JSC::UnlinkedCodeBlock::addRegExp): Deleted.
2376         (JSC::UnlinkedCodeBlock::numberOfRegExps): Deleted.
2377         (JSC::UnlinkedCodeBlock::regexp): Deleted.
2378         (JSC::UnlinkedCodeBlock::numberOfIdentifiers): Deleted.
2379         (JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
2380         (JSC::UnlinkedCodeBlock::identifier): Deleted.
2381         (JSC::UnlinkedCodeBlock::identifiers): Deleted.
2382         (JSC::UnlinkedCodeBlock::addConstant): Deleted.
2383         (JSC::UnlinkedCodeBlock::registerIndexForLinkTimeConstant): Deleted.
2384         (JSC::UnlinkedCodeBlock::constantRegisters): Deleted.
2385         (JSC::UnlinkedCodeBlock::constantRegister): Deleted.
2386         (JSC::UnlinkedCodeBlock::isConstantRegisterIndex): Deleted.
2387         (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): Deleted.
2388         (JSC::UnlinkedCodeBlock::numberOfJumpTargets): Deleted.
2389         (JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
2390         (JSC::UnlinkedCodeBlock::jumpTarget): Deleted.
2391         (JSC::UnlinkedCodeBlock::lastJumpTarget): Deleted.
2392         (JSC::UnlinkedCodeBlock::isBuiltinFunction): Deleted.
2393         (JSC::UnlinkedCodeBlock::constructorKind): Deleted.
2394         (JSC::UnlinkedCodeBlock::superBinding): Deleted.
2395         (JSC::UnlinkedCodeBlock::scriptMode): Deleted.
2396         (JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
2397         (JSC::UnlinkedCodeBlock::numCalleeLocals): Deleted.
2398         (JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables): Deleted.
2399         (JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
2400         (JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
2401         (JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables): Deleted.
2402         (JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
2403         (JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.
2404         (JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
2405         (JSC::UnlinkedCodeBlock::functionDecl): Deleted.
2406         (JSC::UnlinkedCodeBlock::numberOfFunctionDecls): Deleted.
2407         (JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
2408         (JSC::UnlinkedCodeBlock::functionExpr): Deleted.
2409         (JSC::UnlinkedCodeBlock::numberOfFunctionExprs): Deleted.
2410         (JSC::UnlinkedCodeBlock::numberOfExceptionHandlers): Deleted.
2411         (JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
2412         (JSC::UnlinkedCodeBlock::exceptionHandler): Deleted.
2413         (JSC::UnlinkedCodeBlock::addArrayProfile): Deleted.
2414         (JSC::UnlinkedCodeBlock::numberOfArrayProfiles): Deleted.
2415         (JSC::UnlinkedCodeBlock::addArrayAllocationProfile): Deleted.
2416         (JSC::UnlinkedCodeBlock::numberOfArrayAllocationProfiles): Deleted.
2417         (JSC::UnlinkedCodeBlock::addObjectAllocationProfile): Deleted.
2418         (JSC::UnlinkedCodeBlock::numberOfObjectAllocationProfiles): Deleted.
2419         (JSC::UnlinkedCodeBlock::addValueProfile): Deleted.
2420         (JSC::UnlinkedCodeBlock::numberOfValueProfiles): Deleted.
2421         (JSC::UnlinkedCodeBlock::addLLIntCallLinkInfo): Deleted.
2422         (JSC::UnlinkedCodeBlock::numberOfLLintCallLinkInfos): Deleted.
2423         (JSC::UnlinkedCodeBlock::codeType): Deleted.
2424         (JSC::UnlinkedCodeBlock::thisRegister): Deleted.
2425         (JSC::UnlinkedCodeBlock::scopeRegister): Deleted.
2426         (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction): Deleted.
2427         (JSC::UnlinkedCodeBlock::numberOfPropertyAccessInstructions): Deleted.
2428         (JSC::UnlinkedCodeBlock::propertyAccessInstructions): Deleted.
2429         (JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
2430         (JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
2431         (JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
2432         (JSC::UnlinkedCodeBlock::hasRareData): Deleted.
2433         (JSC::UnlinkedCodeBlock::recordParse): Deleted.
2434         (JSC::UnlinkedCodeBlock::sourceURLDirective): Deleted.
2435         (JSC::UnlinkedCodeBlock::sourceMappingURLDirective): Deleted.
2436         (JSC::UnlinkedCodeBlock::setSourceURLDirective): Deleted.
2437         (JSC::UnlinkedCodeBlock::setSourceMappingURLDirective): Deleted.
2438         (JSC::UnlinkedCodeBlock::codeFeatures): Deleted.
2439         (JSC::UnlinkedCodeBlock::hasCapturedVariables): Deleted.
2440         (JSC::UnlinkedCodeBlock::firstLine): Deleted.
2441         (JSC::UnlinkedCodeBlock::lineCount): Deleted.
2442         (JSC::UnlinkedCodeBlock::startColumn): Deleted.
2443         (JSC::UnlinkedCodeBlock::endColumn): Deleted.
2444         (JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
2445         (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets): Deleted.
2446         (JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets): Deleted.
2447         (JSC::UnlinkedCodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
2448         (JSC::UnlinkedCodeBlock::didOptimize): Deleted.
2449         (JSC::UnlinkedCodeBlock::setDidOptimize): Deleted.
2450         (JSC::UnlinkedCodeBlock::finishCreation): Deleted.
2451         (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): Deleted.
2452         (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): Deleted.
2453         * bytecompiler/BytecodeGenerator.cpp:
2454         * runtime/CodeCache.cpp:
2455         * runtime/EvalExecutable.h:
2456         * runtime/JSModuleRecord.cpp:
2457
2458 2016-11-02  Saam Barati  <sbarati@apple.com>
2459
2460         Allocation elimination of rest parameter doesn't take into account indexed properties on Array.prototype/Object.prototype
2461         https://bugs.webkit.org/show_bug.cgi?id=164301
2462
2463         Reviewed by Geoffrey Garen.
2464
2465         We weren't taking into account indexed properties on the __proto__
2466         of the rest parameter. This made the code for doing out of bound
2467         accesses incorrect since it just assumed it's safe for the result of
2468         an out of bound access to be undefined. This broke the semantics
2469         of JS code when there was an indexed property on the Array.prototype
2470         or Object.prototype.
2471
2472         This patch makes sure we set up the proper watchpoints for making
2473         sure out of bound accesses are safe to return undefined.
2474
2475         * dfg/DFGArgumentsEliminationPhase.cpp:
2476
2477 2016-11-02  Geoffrey Garen  <ggaren@apple.com>
2478
2479         One file per class for CodeBlock.h/.cpp
2480         https://bugs.webkit.org/show_bug.cgi?id=164343
2481
2482         Reviewed by Andreas Kling.
2483
2484         * CMakeLists.txt:
2485         * JavaScriptCore.xcodeproj/project.pbxproj:
2486         * bytecode/CallLinkInfo.cpp:
2487         * bytecode/CodeBlock.cpp:
2488         (JSC::FunctionCodeBlock::destroy): Deleted.
2489         (JSC::WebAssemblyCodeBlock::destroy): Deleted.
2490         (JSC::ProgramCodeBlock::destroy): Deleted.
2491         (JSC::ModuleProgramCodeBlock::destroy): Deleted.
2492         (JSC::EvalCodeBlock::destroy): Deleted.
2493         * bytecode/CodeBlock.h:
2494         (JSC::GlobalCodeBlock::GlobalCodeBlock): Deleted.
2495         (JSC::ProgramCodeBlock::create): Deleted.
2496         (JSC::ProgramCodeBlock::createStructure): Deleted.
2497         (JSC::ProgramCodeBlock::ProgramCodeBlock): Deleted.
2498         (JSC::ModuleProgramCodeBlock::create): Deleted.
2499         (JSC::ModuleProgramCodeBlock::createStructure): Deleted.
2500         (JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock): Deleted.
2501         (JSC::EvalCodeBlock::create): Deleted.
2502         (JSC::EvalCodeBlock::createStructure): Deleted.
2503         (JSC::EvalCodeBlock::variable): Deleted.
2504         (JSC::EvalCodeBlock::numVariables): Deleted.
2505         (JSC::EvalCodeBlock::EvalCodeBlock): Deleted.
2506         (JSC::EvalCodeBlock::unlinkedEvalCodeBlock): Deleted.
2507         (JSC::FunctionCodeBlock::create): Deleted.
2508         (JSC::FunctionCodeBlock::createStructure): Deleted.
2509         (JSC::FunctionCodeBlock::FunctionCodeBlock): Deleted.
2510         (JSC::WebAssemblyCodeBlock::create): Deleted.
2511         (JSC::WebAssemblyCodeBlock::createStructure): Deleted.
2512         (JSC::WebAssemblyCodeBlock::WebAssemblyCodeBlock): Deleted.
2513         (JSC::ScriptExecutable::forEachCodeBlock): Deleted.
2514         * bytecode/EvalCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/CodeBlock.cpp.
2515         (JSC::FunctionCodeBlock::destroy): Deleted.
2516         (JSC::WebAssemblyCodeBlock::destroy): Deleted.
2517         (JSC::ProgramCodeBlock::destroy): Deleted.
2518         (JSC::ModuleProgramCodeBlock::destroy): Deleted.
2519         (JSC::CodeBlock::inferredName): Deleted.
2520         (JSC::CodeBlock::hasHash): Deleted.
2521         (JSC::CodeBlock::isSafeToComputeHash): Deleted.
2522         (JSC::CodeBlock::hash): Deleted.
2523         (JSC::CodeBlock::sourceCodeForTools): Deleted.
2524         (JSC::CodeBlock::sourceCodeOnOneLine): Deleted.
2525         (JSC::CodeBlock::hashAsStringIfPossible): Deleted.
2526         (JSC::CodeBlock::dumpAssumingJITType): Deleted.
2527         (JSC::CodeBlock::dump): Deleted.
2528         (JSC::idName): Deleted.
2529         (JSC::CodeBlock::registerName): Deleted.
2530         (JSC::CodeBlock::constantName): Deleted.
2531         (JSC::regexpToSourceString): Deleted.
2532         (JSC::regexpName): Deleted.
2533         (JSC::debugHookName): Deleted.
2534         (JSC::CodeBlock::printUnaryOp): Deleted.
2535         (JSC::CodeBlock::printBinaryOp): Deleted.
2536         (JSC::CodeBlock::printConditionalJump): Deleted.
2537         (JSC::CodeBlock::printGetByIdOp): Deleted.
2538         (JSC::dumpStructure): Deleted.
2539         (JSC::dumpChain): Deleted.
2540         (JSC::CodeBlock::printGetByIdCacheStatus): Deleted.
2541         (JSC::CodeBlock::printPutByIdCacheStatus): Deleted.
2542         (JSC::CodeBlock::printCallOp): Deleted.
2543         (JSC::CodeBlock::printPutByIdOp): Deleted.
2544         (JSC::CodeBlock::dumpSource): Deleted.
2545         (JSC::CodeBlock::dumpBytecode): Deleted.
2546         (JSC::CodeBlock::dumpExceptionHandlers): Deleted.
2547         (JSC::CodeBlock::beginDumpProfiling): Deleted.
2548         (JSC::CodeBlock::dumpValueProfiling): Deleted.
2549         (JSC::CodeBlock::dumpArrayProfiling): Deleted.
2550         (JSC::CodeBlock::dumpRareCaseProfile): Deleted.
2551         (JSC::CodeBlock::dumpArithProfile): Deleted.
2552         (JSC::CodeBlock::printLocationAndOp): Deleted.
2553         (JSC::CodeBlock::printLocationOpAndRegisterOperand): Deleted.
2554         (JSC::sizeInBytes): Deleted.
2555         (JSC::CodeBlock::CodeBlock): Deleted.
2556         (JSC::CodeBlock::finishCreation): Deleted.
2557         (JSC::CodeBlock::~CodeBlock): Deleted.
2558         (JSC::CodeBlock::setConstantRegisters): Deleted.
2559         (JSC::CodeBlock::setAlternative): Deleted.
2560         (JSC::CodeBlock::setNumParameters): Deleted.
2561         (JSC::EvalCodeCache::visitAggregate): Deleted.
2562         (JSC::CodeBlock::specialOSREntryBlockOrNull): Deleted.
2563         (JSC::CodeBlock::visitWeakly): Deleted.
2564         (JSC::CodeBlock::estimatedSize): Deleted.
2565         (JSC::CodeBlock::visitChildren): Deleted.
2566         (JSC::CodeBlock::shouldVisitStrongly): Deleted.
2567         (JSC::CodeBlock::shouldJettisonDueToWeakReference): Deleted.
2568         (JSC::timeToLive): Deleted.
2569         (JSC::CodeBlock::shouldJettisonDueToOldAge): Deleted.
2570         (JSC::shouldMarkTransition): Deleted.
2571         (JSC::CodeBlock::propagateTransitions): Deleted.
2572         (JSC::CodeBlock::determineLiveness): Deleted.
2573         (JSC::CodeBlock::WeakReferenceHarvester::visitWeakReferences): Deleted.
2574         (JSC::CodeBlock::clearLLIntGetByIdCache): Deleted.
2575         (JSC::CodeBlock::finalizeLLIntInlineCaches): Deleted.
2576         (JSC::CodeBlock::finalizeBaselineJITInlineCaches): Deleted.
2577         (JSC::CodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.
2578         (JSC::CodeBlock::getStubInfoMap): Deleted.
2579         (JSC::CodeBlock::getCallLinkInfoMap): Deleted.
2580         (JSC::CodeBlock::getByValInfoMap): Deleted.
2581         (JSC::CodeBlock::addStubInfo): Deleted.
2582         (JSC::CodeBlock::addJITAddIC): Deleted.
2583         (JSC::CodeBlock::addJITMulIC): Deleted.
2584         (JSC::CodeBlock::addJITSubIC): Deleted.
2585         (JSC::CodeBlock::addJITNegIC): Deleted.
2586         (JSC::CodeBlock::findStubInfo): Deleted.
2587         (JSC::CodeBlock::addByValInfo): Deleted.
2588         (JSC::CodeBlock::addCallLinkInfo): Deleted.
2589         (JSC::CodeBlock::getCallLinkInfoForBytecodeIndex): Deleted.
2590         (JSC::CodeBlock::resetJITData): Deleted.
2591         (JSC::CodeBlock::visitOSRExitTargets): Deleted.
2592         (JSC::CodeBlock::stronglyVisitStrongReferences): Deleted.
2593         (JSC::CodeBlock::stronglyVisitWeakReferences): Deleted.
2594         (JSC::CodeBlock::baselineAlternative): Deleted.
2595         (JSC::CodeBlock::baselineVersion): Deleted.
2596         (JSC::CodeBlock::hasOptimizedReplacement): Deleted.
2597         (JSC::CodeBlock::handlerForBytecodeOffset): Deleted.
2598         (JSC::CodeBlock::handlerForIndex): Deleted.
2599         (JSC::CodeBlock::newExceptionHandlingCallSiteIndex): Deleted.
2600         (JSC::CodeBlock::removeExceptionHandlerForCallSite): Deleted.
2601         (JSC::CodeBlock::lineNumberForBytecodeOffset): Deleted.
2602         (JSC::CodeBlock::columnNumberForBytecodeOffset): Deleted.
2603         (JSC::CodeBlock::expressionRangeForBytecodeOffset): Deleted.
2604         (JSC::CodeBlock::hasOpDebugForLineAndColumn): Deleted.
2605         (JSC::CodeBlock::shrinkToFit): Deleted.
2606         (JSC::CodeBlock::linkIncomingCall): Deleted.
2607         (JSC::CodeBlock::linkIncomingPolymorphicCall): Deleted.
2608         (JSC::CodeBlock::unlinkIncomingCalls): Deleted.
2609         (JSC::CodeBlock::newReplacement): Deleted.
2610         (JSC::CodeBlock::replacement): Deleted.
2611         (JSC::CodeBlock::computeCapabilityLevel): Deleted.
2612         (JSC::CodeBlock::jettison): Deleted.
2613         (JSC::CodeBlock::globalObjectFor): Deleted.
2614         (JSC::RecursionCheckFunctor::RecursionCheckFunctor): Deleted.
2615         (JSC::RecursionCheckFunctor::operator()): Deleted.
2616         (JSC::RecursionCheckFunctor::didRecurse): Deleted.
2617         (JSC::CodeBlock::noticeIncomingCall): Deleted.
2618         (JSC::CodeBlock::reoptimizationRetryCounter): Deleted.
2619         (JSC::CodeBlock::setCalleeSaveRegisters): Deleted.
2620         (JSC::roundCalleeSaveSpaceAsVirtualRegisters): Deleted.
2621         (JSC::CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters): Deleted.
2622         (JSC::CodeBlock::calleeSaveSpaceAsVirtualRegisters): Deleted.
2623         (JSC::CodeBlock::countReoptimization): Deleted.
2624         (JSC::CodeBlock::numberOfDFGCompiles): Deleted.
2625         (JSC::CodeBlock::codeTypeThresholdMultiplier): Deleted.
2626         (JSC::CodeBlock::optimizationThresholdScalingFactor): Deleted.
2627         (JSC::clipThreshold): Deleted.
2628         (JSC::CodeBlock::adjustedCounterValue): Deleted.
2629         (JSC::CodeBlock::checkIfOptimizationThresholdReached): Deleted.
2630         (JSC::CodeBlock::optimizeNextInvocation): Deleted.
2631         (JSC::CodeBlock::dontOptimizeAnytimeSoon): Deleted.
2632         (JSC::CodeBlock::optimizeAfterWarmUp): Deleted.
2633         (JSC::CodeBlock::optimizeAfterLongWarmUp): Deleted.
2634         (JSC::CodeBlock::optimizeSoon): Deleted.
2635         (JSC::CodeBlock::forceOptimizationSlowPathConcurrently): Deleted.
2636         (JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult): Deleted.
2637         (JSC::CodeBlock::adjustedExitCountThreshold): Deleted.
2638         (JSC::CodeBlock::exitCountThresholdForReoptimization): Deleted.
2639         (JSC::CodeBlock::exitCountThresholdForReoptimizationFromLoop): Deleted.
2640         (JSC::CodeBlock::shouldReoptimizeNow): Deleted.
2641         (JSC::CodeBlock::shouldReoptimizeFromLoopNow): Deleted.
2642         (JSC::CodeBlock::getArrayProfile): Deleted.
2643         (JSC::CodeBlock::addArrayProfile): Deleted.
2644         (JSC::CodeBlock::getOrAddArrayProfile): Deleted.
2645         (JSC::CodeBlock::codeOrigins): Deleted.
2646         (JSC::CodeBlock::numberOfDFGIdentifiers): Deleted.
2647         (JSC::CodeBlock::identifier): Deleted.
2648         (JSC::CodeBlock::updateAllPredictionsAndCountLiveness): Deleted.
2649         (JSC::CodeBlock::updateAllValueProfilePredictions): Deleted.
2650         (JSC::CodeBlock::updateAllArrayPredictions): Deleted.
2651         (JSC::CodeBlock::updateAllPredictions): Deleted.
2652         (JSC::CodeBlock::shouldOptimizeNow): Deleted.
2653         (JSC::CodeBlock::tallyFrequentExitSites): Deleted.
2654         (JSC::CodeBlock::dumpValueProfiles): Deleted.
2655         (JSC::CodeBlock::frameRegisterCount): Deleted.
2656         (JSC::CodeBlock::stackPointerOffset): Deleted.
2657         (JSC::CodeBlock::predictedMachineCodeSize): Deleted.
2658         (JSC::CodeBlock::usesOpcode): Deleted.
2659         (JSC::CodeBlock::nameForRegister): Deleted.
2660         (JSC::CodeBlock::valueProfileForBytecodeOffset): Deleted.
2661         (JSC::CodeBlock::validate): Deleted.
2662         (JSC::CodeBlock::beginValidationDidFail): Deleted.
2663         (JSC::CodeBlock::endValidationDidFail): Deleted.
2664         (JSC::CodeBlock::addBreakpoint): Deleted.
2665         (JSC::CodeBlock::setSteppingMode): Deleted.
2666         (JSC::CodeBlock::addRareCaseProfile): Deleted.
2667         (JSC::CodeBlock::rareCaseProfileForBytecodeOffset): Deleted.
2668         (JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset): Deleted.
2669         (JSC::CodeBlock::arithProfileForBytecodeOffset): Deleted.
2670         (JSC::CodeBlock::arithProfileForPC): Deleted.
2671         (JSC::CodeBlock::couldTakeSpecialFastCase): Deleted.
2672         (JSC::CodeBlock::capabilityLevel): Deleted.
2673         (JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler): Deleted.
2674         (JSC::CodeBlock::setPCToCodeOriginMap): Deleted.
2675         (JSC::CodeBlock::findPC): Deleted.
2676         (JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex): Deleted.
2677         (JSC::CodeBlock::thresholdForJIT): Deleted.
2678         (JSC::CodeBlock::jitAfterWarmUp): Deleted.
2679         (JSC::CodeBlock::jitSoon): Deleted.
2680         (JSC::CodeBlock::dumpMathICStats): Deleted.
2681         (JSC::CodeBlock::livenessAnalysisSlow): Deleted.
2682         * bytecode/EvalCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/CodeBlock.h.
2683         (): Deleted.
2684         (JSC::CodeBlock::unlinkedCodeBlock): Deleted.
2685         (JSC::CodeBlock::numParameters): Deleted.
2686         (JSC::CodeBlock::numCalleeLocals): Deleted.
2687         (JSC::CodeBlock::addressOfNumParameters): Deleted.
2688         (JSC::CodeBlock::offsetOfNumParameters): Deleted.
2689         (JSC::CodeBlock::alternative): Deleted.
2690         (JSC::CodeBlock::forEachRelatedCodeBlock): Deleted.
2691         (JSC::CodeBlock::specializationKind): Deleted.
2692         (JSC::CodeBlock::isStrictMode): Deleted.
2693         (JSC::CodeBlock::ecmaMode): Deleted.
2694         (JSC::CodeBlock::isKnownNotImmediate): Deleted.
2695         (JSC::CodeBlock::isTemporaryRegisterIndex): Deleted.
2696         (JSC::CodeBlock::stubInfoBegin): Deleted.
2697         (JSC::CodeBlock::stubInfoEnd): Deleted.
2698         (JSC::CodeBlock::callLinkInfosBegin): Deleted.
2699         (JSC::CodeBlock::callLinkInfosEnd): Deleted.
2700         (JSC::CodeBlock::setJITCodeMap): Deleted.
2701         (JSC::CodeBlock::jitCodeMap): Deleted.
2702         (JSC::CodeBlock::bytecodeOffset): Deleted.
2703         (JSC::CodeBlock::numberOfInstructions): Deleted.
2704         (JSC::CodeBlock::instructions): Deleted.
2705         (JSC::CodeBlock::instructionCount): Deleted.
2706         (JSC::CodeBlock::setJITCode): Deleted.
2707         (JSC::CodeBlock::jitCode): Deleted.
2708         (JSC::CodeBlock::jitCodeOffset): Deleted.
2709         (JSC::CodeBlock::jitType): Deleted.
2710         (JSC::CodeBlock::hasBaselineJITProfiling): Deleted.
2711         (JSC::CodeBlock::capabilityLevelState): Deleted.
2712         (JSC::CodeBlock::ownerExecutable): Deleted.
2713         (JSC::CodeBlock::ownerScriptExecutable): Deleted.
2714         (JSC::CodeBlock::vm): Deleted.
2715         (JSC::CodeBlock::setThisRegister): Deleted.
2716         (JSC::CodeBlock::thisRegister): Deleted.
2717         (JSC::CodeBlock::usesEval): Deleted.
2718         (JSC::CodeBlock::setScopeRegister): Deleted.
2719         (JSC::CodeBlock::scopeRegister): Deleted.
2720         (JSC::CodeBlock::codeType): Deleted.
2721         (JSC::CodeBlock::putByIdContext): Deleted.
2722         (JSC::CodeBlock::source): Deleted.
2723         (JSC::CodeBlock::sourceOffset): Deleted.
2724         (JSC::CodeBlock::firstLineColumnOffset): Deleted.
2725         (JSC::CodeBlock::numberOfJumpTargets): Deleted.
2726         (JSC::CodeBlock::jumpTarget): Deleted.
2727         (JSC::CodeBlock::numberOfArgumentValueProfiles): Deleted.
2728         (JSC::CodeBlock::valueProfileForArgument): Deleted.
2729         (JSC::CodeBlock::numberOfValueProfiles): Deleted.
2730         (JSC::CodeBlock::valueProfile): Deleted.
2731         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset): Deleted.
2732         (JSC::CodeBlock::totalNumberOfValueProfiles): Deleted.
2733         (JSC::CodeBlock::getFromAllValueProfiles): Deleted.
2734         (JSC::CodeBlock::numberOfRareCaseProfiles): Deleted.
2735         (JSC::CodeBlock::likelyToTakeSlowCase): Deleted.
2736         (JSC::CodeBlock::couldTakeSlowCase): Deleted.
2737         (JSC::CodeBlock::numberOfArrayProfiles): Deleted.
2738         (JSC::CodeBlock::arrayProfiles): Deleted.
2739         (JSC::CodeBlock::numberOfExceptionHandlers): Deleted.
2740         (JSC::CodeBlock::exceptionHandler): Deleted.
2741         (JSC::CodeBlock::hasExpressionInfo): Deleted.
2742         (JSC::CodeBlock::hasCodeOrigins): Deleted.
2743         (JSC::CodeBlock::canGetCodeOrigin): Deleted.
2744         (JSC::CodeBlock::codeOrigin): Deleted.
2745         (JSC::CodeBlock::addFrequentExitSite): Deleted.
2746         (JSC::CodeBlock::hasExitSite): Deleted.
2747         (JSC::CodeBlock::exitProfile): Deleted.
2748         (JSC::CodeBlock::lazyOperandValueProfiles): Deleted.
2749         (JSC::CodeBlock::numberOfIdentifiers): Deleted.
2750         (JSC::CodeBlock::identifier): Deleted.
2751         (JSC::CodeBlock::constants): Deleted.
2752         (JSC::CodeBlock::constantsSourceCodeRepresentation): Deleted.
2753         (JSC::CodeBlock::addConstant): Deleted.
2754         (JSC::CodeBlock::addConstantLazily): Deleted.
2755         (JSC::CodeBlock::constantRegister): Deleted.
2756         (JSC::CodeBlock::isConstantRegisterIndex): Deleted.
2757         (JSC::CodeBlock::getConstant): Deleted.
2758         (JSC::CodeBlock::constantSourceCodeRepresentation): Deleted.
2759         (JSC::CodeBlock::functionDecl): Deleted.
2760         (JSC::CodeBlock::numberOfFunctionDecls): Deleted.
2761         (JSC::CodeBlock::functionExpr): Deleted.
2762         (JSC::CodeBlock::regexp): Deleted.
2763         (JSC::CodeBlock::numberOfConstantBuffers): Deleted.
2764         (JSC::CodeBlock::addConstantBuffer): Deleted.
2765         (JSC::CodeBlock::constantBufferAsVector): Deleted.
2766         (JSC::CodeBlock::constantBuffer): Deleted.
2767         (JSC::CodeBlock::heap): Deleted.
2768         (JSC::CodeBlock::globalObject): Deleted.
2769         (JSC::CodeBlock::livenessAnalysis): Deleted.
2770         (JSC::CodeBlock::numberOfSwitchJumpTables): Deleted.
2771         (JSC::CodeBlock::addSwitchJumpTable): Deleted.
2772         (JSC::CodeBlock::switchJumpTable): Deleted.
2773         (JSC::CodeBlock::clearSwitchJumpTables): Deleted.
2774         (JSC::CodeBlock::numberOfStringSwitchJumpTables): Deleted.
2775         (JSC::CodeBlock::addStringSwitchJumpTable): Deleted.
2776         (JSC::CodeBlock::stringSwitchJumpTable): Deleted.
2777         (JSC::CodeBlock::evalCodeCache): Deleted.
2778         (JSC::CodeBlock::checkIfJITThresholdReached): Deleted.
2779         (JSC::CodeBlock::dontJITAnytimeSoon): Deleted.
2780         (JSC::CodeBlock::llintExecuteCounter): Deleted.
2781         (JSC::CodeBlock::llintGetByIdWatchpointMap): Deleted.
2782         (JSC::CodeBlock::numberOfLLIntBaselineCalleeSaveRegisters): Deleted.
2783         (JSC::CodeBlock::addressOfJITExecuteCounter): Deleted.
2784         (JSC::CodeBlock::offsetOfJITExecuteCounter): Deleted.
2785         (JSC::CodeBlock::offsetOfJITExecutionActiveThreshold): Deleted.
2786         (JSC::CodeBlock::offsetOfJITExecutionTotalCount): Deleted.
2787         (JSC::CodeBlock::jitExecuteCounter): Deleted.
2788         (JSC::CodeBlock::optimizationDelayCounter): Deleted.
2789         (JSC::CodeBlock::osrExitCounter): Deleted.
2790         (JSC::CodeBlock::countOSRExit): Deleted.
2791         (JSC::CodeBlock::addressOfOSRExitCounter): Deleted.
2792         (JSC::CodeBlock::offsetOfOSRExitCounter): Deleted.
2793         (JSC::CodeBlock::calleeSaveRegisters): Deleted.
2794         (JSC::CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters): Deleted.
2795         (JSC::CodeBlock::optimizeAfterWarmUp): Deleted.
2796         (JSC::CodeBlock::numberOfDFGCompiles): Deleted.
2797         (JSC::CodeBlock::hasDebuggerRequests): Deleted.
2798         (JSC::CodeBlock::debuggerRequestsAddress): Deleted.
2799         (JSC::CodeBlock::removeBreakpoint): Deleted.
2800         (JSC::CodeBlock::clearDebuggerRequests): Deleted.
2801         (JSC::CodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
2802         (JSC::CodeBlock::clearExceptionHandlers): Deleted.
2803         (JSC::CodeBlock::appendExceptionHandler): Deleted.
2804         (JSC::CodeBlock::tallyFrequentExitSites): Deleted.
2805         (JSC::CodeBlock::replaceConstant): Deleted.
2806         (JSC::CodeBlock::timeSinceCreation): Deleted.
2807         (JSC::CodeBlock::createRareDataIfNecessary): Deleted.
2808         (JSC::GlobalCodeBlock::GlobalCodeBlock): Deleted.
2809         (JSC::ProgramCodeBlock::create): Deleted.
2810         (JSC::ProgramCodeBlock::createStructure): Deleted.
2811         (JSC::ProgramCodeBlock::ProgramCodeBlock): Deleted.
2812         (JSC::ModuleProgramCodeBlock::create): Deleted.
2813         (JSC::ModuleProgramCodeBlock::createStructure): Deleted.
2814         (JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock): Deleted.
2815         (JSC::FunctionCodeBlock::create): Deleted.
2816         (JSC::FunctionCodeBlock::createStructure): Deleted.
2817         (JSC::FunctionCodeBlock::FunctionCodeBlock): Deleted.
2818         (JSC::WebAssemblyCodeBlock::create): Deleted.
2819         (JSC::WebAssemblyCodeBlock::createStructure): Deleted.
2820         (JSC::WebAssemblyCodeBlock::WebAssemblyCodeBlock): Deleted.
2821         (JSC::ExecState::r): Deleted.
2822         (JSC::ExecState::uncheckedR): Deleted.
2823         (JSC::CodeBlock::clearVisitWeaklyHasBeenCalled): Deleted.
2824         (JSC::ScriptExecutable::forEachCodeBlock): Deleted.
2825         (JSC::ScriptExecutable::prepareForExecution): Deleted.
2826         * bytecode/FunctionCodeBlock.cpp: Copied from Source/JavaScriptCore/bytecode/CodeBlock.cpp.
2827         (JSC::WebAssemblyCodeBlock::destroy): Deleted.
2828         (JSC::ProgramCodeBlock::destroy): Deleted.
2829         (JSC::ModuleProgramCodeBlock::destroy): Deleted.
2830         (JSC::EvalCodeBlock::destroy): Deleted.
2831         (JSC::CodeBlock::inferredName): Deleted.
2832         (JSC::CodeBlock::hasHash): Deleted.
2833         (JSC::CodeBlock::isSafeToComputeHash): Deleted.
2834         (JSC::CodeBlock::hash): Deleted.
2835         (JSC::CodeBlock::sourceCodeForTools): Deleted.
2836         (JSC::CodeBlock::sourceCodeOnOneLine): Deleted.
2837         (JSC::CodeBlock::hashAsStringIfPossible): Deleted.
2838         (JSC::CodeBlock::dumpAssumingJITType): Deleted.
2839         (JSC::CodeBlock::dump): Deleted.
2840         (JSC::idName): Deleted.
2841         (JSC::CodeBlock::registerName): Deleted.
2842         (JSC::CodeBlock::constantName): Deleted.
2843         (JSC::regexpToSourceString): Deleted.
2844         (JSC::regexpName): Deleted.
2845         (JSC::debugHookName): Deleted.
2846         (JSC::CodeBlock::printUnaryOp): Deleted.
2847         (JSC::CodeBlock::printBinaryOp): Deleted.
2848         (JSC::CodeBlock::printConditionalJump): Deleted.
2849         (JSC::CodeBlock::printGetByIdOp): Deleted.
2850         (JSC::dumpStructure): Deleted.
2851         (JSC::dumpChain): Deleted.
2852         (JSC::CodeBlock::printGetByIdCacheStatus): Deleted.
2853         (JSC::CodeBlock::printPutByIdCacheStatus): Deleted.
2854         (JSC::CodeBlock::printCallOp): Deleted.
2855         (JSC::CodeBlock::printPutByIdOp): Deleted.
2856         (JSC::CodeBlock::dumpSource): Deleted.
2857         (JSC::CodeBlock::dumpBytecode): Deleted.
2858         (JSC::CodeBlock::dumpExceptionHandlers): Deleted.
2859         (JSC::CodeBlock::beginDumpProfiling): Deleted.
2860         (JSC::CodeBlock::dumpValueProfiling): Deleted.
2861         (JSC::CodeBlock::dumpArrayProfiling): Deleted.
2862         (JSC::CodeBlock::dumpRareCaseProfile): Deleted.
2863         (JSC::CodeBlock::dumpArithProfile): Deleted.
2864         (JSC::CodeBlock::printLocationAndOp): Deleted.
2865         (JSC::CodeBlock::printLocationOpAndRegisterOperand): Deleted.
2866         (JSC::sizeInBytes): Deleted.
2867         (JSC::CodeBlock::CodeBlock): Deleted.
2868         (JSC::CodeBlock::finishCreation): Deleted.
2869         (JSC::CodeBlock::~CodeBlock): Deleted.
2870         (JSC::CodeBlock::setConstantRegisters): Deleted.
2871         (JSC::CodeBlock::setAlternative): Deleted.
2872         (JSC::CodeBlock::setNumParameters): Deleted.
2873         (JSC::EvalCodeCache::visitAggregate): Deleted.
2874         (JSC::CodeBlock::specialOSREntryBlockOrNull): Deleted.
2875         (JSC::CodeBlock::visitWeakly): Deleted.
2876         (JSC::CodeBlock::estimatedSize): Deleted.
2877         (JSC::CodeBlock::visitChildren): Deleted.
2878         (JSC::CodeBlock::shouldVisitStrongly): Deleted.
2879         (JSC::CodeBlock::shouldJettisonDueToWeakReference): Deleted.
2880         (JSC::timeToLive): Deleted.
2881         (JSC::CodeBlock::shouldJettisonDueToOldAge): Deleted.
2882         (JSC::shouldMarkTransition): Deleted.
2883         (JSC::CodeBlock::propagateTransitions): Deleted.
2884         (JSC::CodeBlock::determineLiveness): Deleted.
2885         (JSC::CodeBlock::WeakReferenceHarvester::visitWeakReferences): Deleted.
2886         (JSC::CodeBlock::clearLLIntGetByIdCache): Deleted.
2887         (JSC::CodeBlock::finalizeLLIntInlineCaches): Deleted.
2888         (JSC::CodeBlock::finalizeBaselineJITInlineCaches): Deleted.
2889         (JSC::CodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.
2890         (JSC::CodeBlock::getStubInfoMap): Deleted.
2891         (JSC::CodeBlock::getCallLinkInfoMap): Deleted.
2892         (JSC::CodeBlock::getByValInfoMap): Deleted.
2893         (JSC::CodeBlock::addStubInfo): Deleted.
2894         (JSC::CodeBlock::addJITAddIC): Deleted.
2895         (JSC::CodeBlock::addJITMulIC): Deleted.
2896         (JSC::CodeBlock::addJITSubIC): Deleted.
2897         (JSC::CodeBlock::addJITNegIC): Deleted.
2898         (JSC::CodeBlock::findStubInfo): Deleted.
2899         (JSC::CodeBlock::addByValInfo): Deleted.
2900         (JSC::CodeBlock::addCallLinkInfo): Deleted.
2901         (JSC::CodeBlock::getCallLinkInfoForBytecodeIndex): Deleted.
2902         (JSC::CodeBlock::resetJITData): Deleted.
2903         (JSC::CodeBlock::visitOSRExitTargets): Deleted.
2904         (JSC::CodeBlock::stronglyVisitStrongReferences): Deleted.
2905         (JSC::CodeBlock::stronglyVisitWeakReferences): Deleted.
2906         (JSC::CodeBlock::baselineAlternative): Deleted.
2907         (JSC::CodeBlock::baselineVersion): Deleted.
2908         (JSC::CodeBlock::hasOptimizedReplacement): Deleted.
2909         (JSC::CodeBlock::handlerForBytecodeOffset): Deleted.
2910         (JSC::CodeBlock::handlerForIndex): Deleted.
2911         (JSC::CodeBlock::newExceptionHandlingCallSiteIndex): Deleted.
2912         (JSC::CodeBlock::removeExceptionHandlerForCallSite): Deleted.
2913         (JSC::CodeBlock::lineNumberForBytecodeOffset): Deleted.
2914         (JSC::CodeBlock::columnNumberForBytecodeOffset): Deleted.
2915         (JSC::CodeBlock::expressionRangeForBytecodeOffset): Deleted.
2916         (JSC::CodeBlock::hasOpDebugForLineAndColumn): Deleted.
2917         (JSC::CodeBlock::shrinkToFit): Deleted.
2918         (JSC::CodeBlock::linkIncomingCall): Deleted.
2919         (JSC::CodeBlock::linkIncomingPolymorphicCall): Deleted.
2920         (JSC::CodeBlock::unlinkIncomingCalls): Deleted.
2921         (JSC::CodeBlock::newReplacement): Deleted.
2922         (JSC::CodeBlock::replacement): Deleted.
2923         (JSC::CodeBlock::computeCapabilityLevel): Deleted.
2924         (JSC::CodeBlock::jettison): Deleted.
2925         (JSC::CodeBlock::globalObjectFor): Deleted.
2926         (JSC::RecursionCheckFunctor::RecursionCheckFunctor): Deleted.
2927         (JSC::RecursionCheckFunctor::operator()): Deleted.
2928         (JSC::RecursionCheckFunctor::didRecurse): Deleted.
2929         (JSC::CodeBlock::noticeIncomingCall): Deleted.
2930         (JSC::CodeBlock::reoptimizationRetryCounter): Deleted.
2931         (JSC::CodeBlock::setCalleeSaveRegisters): Deleted.
2932         (JSC::roundCalleeSaveSpaceAsVirtualRegisters): Deleted.
2933         (JSC::CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters): Deleted.
2934         (JSC::CodeBlock::calleeSaveSpaceAsVirtualRegisters): Deleted.
2935         (JSC::CodeBlock::countReoptimization): Deleted.
2936         (JSC::CodeBlock::numberOfDFGCompiles): Deleted.
2937         (JSC::CodeBlock::codeTypeThresholdMultiplier): Deleted.
2938         (JSC::CodeBlock::optimizationThresholdScalingFactor): Deleted.
2939         (JSC::clipThreshold): Deleted.
2940         (JSC::CodeBlock::adjustedCounterValue): Deleted.
2941         (JSC::CodeBlock::checkIfOptimizationThresholdReached): Deleted.
2942         (JSC::CodeBlock::optimizeNextInvocation): Deleted.
2943         (JSC::CodeBlock::dontOptimizeAnytimeSoon): Deleted.
2944         (JSC::CodeBlock::optimizeAfterWarmUp): Deleted.
2945         (JSC::CodeBlock::optimizeAfterLongWarmUp): Deleted.
2946         (JSC::CodeBlock::optimizeSoon): Deleted.
2947         (JSC::CodeBlock::forceOptimizationSlowPathConcurrently): Deleted.
2948         (JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult): Deleted.
2949         (JSC::CodeBlock::adjustedExitCountThreshold): Deleted.
2950         (JSC::CodeBlock::exitCountThresholdForReoptimization): Deleted.
2951         (JSC::CodeBlock::exitCountThresholdForReoptimizationFromLoop): Deleted.
2952         (JSC::CodeBlock::shouldReoptimizeNow): Deleted.
2953         (JSC::CodeBlock::shouldReoptimizeFromLoopNow): Deleted.
2954         (JSC::CodeBlock::getArrayProfile): Deleted.
2955         (JSC::CodeBlock::addArrayProfile): Deleted.
2956         (JSC::CodeBlock::getOrAddArrayProfile): Deleted.
2957         (JSC::CodeBlock::codeOrigins): Deleted.
2958         (JSC::CodeBlock::numberOfDFGIdentifiers): Deleted.
2959         (JSC::CodeBlock::identifier): Deleted.
2960         (JSC::CodeBlock::updateAllPredictionsAndCountLiveness): Deleted.
2961         (JSC::CodeBlock::updateAllValueProfilePredictions): Deleted.
2962         (JSC::CodeBlock::updateAllArrayPredictions): Deleted.
2963         (JSC::CodeBlock::updateAllPredictions): Deleted.
2964         (JSC::CodeBlock::shouldOptimizeNow): Deleted.
2965         (JSC::CodeBlock::tallyFrequentExitSites): Deleted.
2966         (JSC::CodeBlock::dumpValueProfiles): Deleted.
2967         (JSC::CodeBlock::frameRegisterCount): Deleted.
2968         (JSC::CodeBlock::stackPointerOffset): Deleted.
2969         (JSC::CodeBlock::predictedMachineCodeSize): Deleted.
2970         (JSC::CodeBlock::usesOpcode): Deleted.
2971         (JSC::CodeBlock::nameForRegister): Deleted.
2972         (JSC::CodeBlock::valueProfileForBytecodeOffset): Deleted.
2973         (JSC::CodeBlock::validate): Deleted.
2974         (JSC::CodeBlock::beginValidationDidFail): Deleted.
2975         (JSC::CodeBlock::endValidationDidFail): Deleted.
2976         (JSC::CodeBlock::addBreakpoint): Deleted.
2977         (JSC::CodeBlock::setSteppingMode): Deleted.
2978         (JSC::CodeBlock::addRareCaseProfile): Deleted.
2979         (JSC::CodeBlock::rareCaseProfileForBytecodeOffset): Deleted.
2980         (JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset): Deleted.
2981         (JSC::CodeBlock::arithProfileForBytecodeOffset): Deleted.
2982         (JSC::CodeBlock::arithProfileForPC): Deleted.
2983         (JSC::CodeBlock::couldTakeSpecialFastCase): Deleted.
2984         (JSC::CodeBlock::capabilityLevel): Deleted.
2985         (JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler): Deleted.
2986         (JSC::CodeBlock::setPCToCodeOriginMap): Deleted.
2987         (JSC::CodeBlock::findPC): Deleted.
2988         (JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex): Deleted.
2989         (JSC::CodeBlock::thresholdForJIT): Deleted.
2990         (JSC::CodeBlock::jitAfterWarmUp): Deleted.
2991         (JSC::CodeBlock::jitSoon): Deleted.
2992         (JSC::CodeBlock::dumpMathICStats): Deleted.
2993         (JSC::CodeBlock::livenessAnalysisSlow): Deleted.
2994         * bytecode/FunctionCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/CodeBlock.h.
2995         (): Deleted.
2996         (JSC::CodeBlock::unlinkedCodeBlock): Deleted.
2997         (JSC::CodeBlock::numParameters): Deleted.
2998         (JSC::CodeBlock::numCalleeLocals): Deleted.
2999         (JSC::CodeBlock::addressOfNumParameters): Deleted.
3000         (JSC::CodeBlock::offsetOfNumParameters): Deleted.
3001         (JSC::CodeBlock::alternative): Deleted.
3002         (JSC::CodeBlock::forEachRelatedCodeBlock): Deleted.
3003         (JSC::CodeBlock::specializationKind): Deleted.
3004         (JSC::CodeBlock::isStrictMode): Deleted.
3005         (JSC::CodeBlock::ecmaMode): Deleted.
3006         (JSC::CodeBlock::isKnownNotImmediate): Deleted.
3007         (JSC::CodeBlock::isTemporaryRegisterIndex): Deleted.
3008         (JSC::CodeBlock::stubInfoBegin): Deleted.
3009         (JSC::CodeBlock::stubInfoEnd): Deleted.
3010         (JSC::CodeBlock::callLinkInfosBegin): Deleted.
3011         (JSC::CodeBlock::callLinkInfosEnd): Deleted.
3012         (JSC::CodeBlock::setJITCodeMap): Deleted.
3013         (JSC::CodeBlock::jitCodeMap): Deleted.
3014         (JSC::CodeBlock::bytecodeOffset): Deleted.
3015         (JSC::CodeBlock::numberOfInstructions): Deleted.
3016         (JSC::CodeBlock::instructions): Deleted.
3017         (JSC::CodeBlock::instructionCount): Deleted.
3018         (JSC::CodeBlock::setJITCode): Deleted.
3019         (JSC::CodeBlock::jitCode): Deleted.
3020         (JSC::CodeBlock::jitCodeOffset): Deleted.
3021         (JSC::CodeBlock::jitType): Deleted.
3022         (JSC::CodeBlock::hasBaselineJITProfiling): Deleted.
3023         (JSC::CodeBlock::capabilityLevelState): Deleted.
3024         (JSC::CodeBlock::ownerExecutable): Deleted.
3025         (JSC::CodeBlock::ownerScriptExecutable): Deleted.
3026         (JSC::CodeBlock::vm): Deleted.
3027         (JSC::CodeBlock::setThisRegister): Deleted.
3028         (JSC::CodeBlock::thisRegister): Deleted.
3029         (JSC::CodeBlock::usesEval): Deleted.
3030         (JSC::CodeBlock::setScopeRegister): Deleted.
3031         (JSC::CodeBlock::scopeRegister): Deleted.
3032         (JSC::CodeBlock::codeType): Deleted.
3033         (JSC::CodeBlock::putByIdContext): Deleted.
3034         (JSC::CodeBlock::source): Deleted.
3035         (JSC::CodeBlock::sourceOffset): Deleted.
3036         (JSC::CodeBlock::firstLineColumnOffset): Deleted.
3037         (JSC::CodeBlock::numberOfJumpTargets): Deleted.
3038         (JSC::CodeBlock::jumpTarget): Deleted.
3039         (JSC::CodeBlock::numberOfArgumentValueProfiles): Deleted.
3040         (JSC::CodeBlock::valueProfileForArgument): Deleted.
3041         (JSC::CodeBlock::numberOfValueProfiles): Deleted.
3042         (JSC::CodeBlock::valueProfile): Deleted.
3043         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset): Deleted.
3044         (JSC::CodeBlock::totalNumberOfValueProfiles): Deleted.
3045         (JSC::CodeBlock::getFromAllValueProfiles): Deleted.
3046         (JSC::CodeBlock::numberOfRareCaseProfiles): Deleted.
3047         (JSC::CodeBlock::likelyToTakeSlowCase): Deleted.
3048         (JSC::CodeBlock::couldTakeSlowCase): Deleted.
3049         (JSC::CodeBlock::numberOfArrayProfiles): Deleted.
3050         (JSC::CodeBlock::arrayProfiles): Deleted.
3051         (JSC::CodeBlock::numberOfExceptionHandlers): Deleted.
3052         (JSC::CodeBlock::exceptionHandler): Deleted.
3053         (JSC::CodeBlock::hasExpressionInfo): Deleted.
3054         (JSC::CodeBlock::hasCodeOrigins): Deleted.
3055         (JSC::CodeBlock::canGetCodeOrigin): Deleted.
3056         (JSC::CodeBlock::codeOrigin): Deleted.
3057         (JSC::CodeBlock::addFrequentExitSite): Deleted.
3058         (JSC::CodeBlock::hasExitSite): Deleted.
3059         (JSC::CodeBlock::exitProfile): Deleted.
3060         (JSC::CodeBlock::lazyOperandValueProfiles): Deleted.
3061         (JSC::CodeBlock::numberOfIdentifiers): Deleted.
3062         (JSC::CodeBlock::identifier): Deleted.
3063         (JSC::CodeBlock::constants): Deleted.
3064         (JSC::CodeBlock::constantsSourceCodeRepresentation): Deleted.
3065         (JSC::CodeBlock::addConstant): Deleted.
3066         (JSC::CodeBlock::addConstantLazily): Deleted.
3067         (JSC::CodeBlock::constantRegister): Deleted.
3068         (JSC::CodeBlock::isConstantRegisterIndex): Deleted.
3069         (JSC::CodeBlock::getConstant): Deleted.
3070         (JSC::CodeBlock::constantSourceCodeRepresentation): Deleted.
3071         (JSC::CodeBlock::functionDecl): Deleted.
3072         (JSC::CodeBlock::numberOfFunctionDecls): Deleted.
3073         (JSC::CodeBlock::functionExpr): Deleted.
3074         (JSC::CodeBlock::regexp): Deleted.
3075         (JSC::CodeBlock::numberOfConstantBuffers): Deleted.
3076         (JSC::CodeBlock::addConstantBuffer): Deleted.
3077         (JSC::CodeBlock::constantBufferAsVector): Deleted.
3078         (JSC::CodeBlock::constantBuffer): Deleted.
3079         (JSC::CodeBlock::heap): Deleted.
3080         (JSC::CodeBlock::globalObject): Deleted.
3081         (JSC::CodeBlock::livenessAnalysis): Deleted.
3082         (JSC::CodeBlock::numberOfSwitchJumpTables): Deleted.
3083         (JSC::CodeBlock::addSwitchJumpTable): Deleted.
3084         (JSC::CodeBlock::switchJumpTable): Deleted.
3085         (JSC::CodeBlock::clearSwitchJumpTables): Deleted.
3086         (JSC::CodeBlock::numberOfStringSwitchJumpTables): Deleted.
3087         (JSC::CodeBlock::addStringSwitchJumpTable): Deleted.
3088         (JSC::CodeBlock::stringSwitchJumpTable): Deleted.
3089         (JSC::CodeBlock::evalCodeCache): Deleted.
3090         (JSC::CodeBlock::checkIfJITThresholdReached): Deleted.
3091         (JSC::CodeBlock::dontJITAnytimeSoon): Deleted.
3092         (JSC::CodeBlock::llintExecuteCounter): Deleted.
3093         (JSC::CodeBlock::llintGetByIdWatchpointMap): Deleted.
3094         (JSC::CodeBlock::numberOfLLIntBaselineCalleeSaveRegisters): Deleted.
3095         (JSC::CodeBlock::addressOfJITExecuteCounter): Deleted.
3096         (JSC::CodeBlock::offsetOfJITExecuteCounter): Deleted.
3097         (JSC::CodeBlock::offsetOfJITExecutionActiveThreshold): Deleted.
3098         (JSC::CodeBlock::offsetOfJITExecutionTotalCount): Deleted.
3099         (JSC::CodeBlock::jitExecuteCounter): Deleted.
3100         (JSC::CodeBlock::optimizationDelayCounter): Deleted.
3101         (JSC::CodeBlock::osrExitCounter): Deleted.
3102         (JSC::CodeBlock::countOSRExit): Deleted.
3103         (JSC::CodeBlock::addressOfOSRExitCounter): Deleted.
3104         (JSC::CodeBlock::offsetOfOSRExitCounter): Deleted.
3105         (JSC::CodeBlock::calleeSaveRegisters): Deleted.
3106         (JSC::CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters): Deleted.
3107         (JSC::CodeBlock::optimizeAfterWarmUp): Deleted.
3108         (JSC::CodeBlock::numberOfDFGCompiles): Deleted.
3109         (JSC::CodeBlock::hasDebuggerRequests): Deleted.
3110         (JSC::CodeBlock::debuggerRequestsAddress): Deleted.
3111         (JSC::CodeBlock::removeBreakpoint): Deleted.
3112         (JSC::CodeBlock::clearDebuggerRequests): Deleted.
3113         (JSC::CodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.
3114         (JSC::CodeBlock::clearExceptionHandlers): Deleted.
3115         (JSC::CodeBlock::appendExceptionHandler): Deleted.
3116         (JSC::CodeBlock::tallyFrequentExitSites): Deleted.
3117         (JSC::CodeBlock::replaceConstant): Deleted.
3118         (JSC::CodeBlock::timeSinceCreation): Deleted.
3119         (JSC::CodeBlock::createRareDataIfNecessary): Deleted.
3120         (JSC::GlobalCodeBlock::GlobalCodeBlock): Deleted.
3121         (JSC::ProgramCodeBlock::create): Deleted.
3122         (JSC::ProgramCodeBlock::createStructure): Deleted.
3123         (JSC::ProgramCodeBlock::ProgramCodeBlock): Deleted.
3124         (JSC::ModuleProgramCodeBlock::create): Deleted.
3125         (JSC::ModuleProgramCodeBlock::createStructure): Deleted.
3126         (JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock): Deleted.
3127         (JSC::EvalCodeBlock::create): Deleted.
3128         (JSC::EvalCodeBlock::createStructure): Deleted.
3129         (JSC::EvalCodeBlock::variable): Deleted.
3130         (JSC::EvalCodeBlock::numVariables): Deleted.
3131         (JSC::EvalCodeBlock::EvalCodeBlock): Deleted.
3132         (JSC::EvalCodeBlock::unlinkedEvalCodeBlock): Deleted.
3133         (JSC::WebAssemblyCodeBlock::create): Deleted.
3134         (JSC::WebAssemblyCodeBlock::createStructure): Deleted.
3135         (JSC::WebAssemblyCodeBlock::WebAssemblyCodeBlock): Deleted.
3136         (JSC::ExecState::r): Deleted.
3137         (JSC::ExecState::uncheckedR): Deleted.
3138         (JSC::CodeBlock::clearVisitWeaklyHasBeenCalled): Deleted.
3139         (JSC::ScriptExecutable::forEachCodeBlock): Deleted.
3140         (JSC::ScriptExecutable::prepareForExecution): Deleted.
3141         * bytecode/GlobalCodeBlock.h: Copied from Source/JavaScriptCore/bytecode/CodeBlock.h.
3142         (): Deleted.
3143         (JSC::CodeBlock::unlinkedCodeBlock): Deleted.
3144         (JSC::CodeBlock::numParameters): Deleted.
3145         (JSC::CodeBlock::numCalleeLocals): Deleted.
3146         (JSC::CodeBlock::addressOfNumParameters): Deleted.
3147         (JSC::CodeBlock::offsetOfNumParameters): Deleted.
3148         (JSC::CodeBlock::alternative): Deleted.
3149         (JSC::CodeBlock::forEachRelatedCodeBlock): Deleted.
3150         (JSC::CodeBlock::specializationKind): Deleted.
3151         (JSC::CodeBlock::isStrictMode): Deleted.
3152         (JSC::CodeBlock::ecmaMode): Deleted.
3153         (JSC::CodeBlock::isKnownNotImmediate): Deleted.
3154         (JSC::CodeBlock::isTemporaryRegisterIndex): Deleted.
3155         (JSC::CodeBlock::stubInfoBegin): Deleted.
3156         (JSC::CodeBlock::stubInfoEnd): Deleted.
3157         (JSC::CodeBlock::callLinkInfosBegin): Deleted.
3158         (JSC::CodeBlock::callLinkInfosEnd): Deleted.
3159         (JSC::CodeBlock::setJITCodeMap): Deleted.
3160         (JSC::CodeBlock::jitCodeMap): Deleted.
3161         (JSC::CodeBlock::bytecodeOffset): Deleted.
3162         (JSC::CodeBlock::numberOfInstructions): Deleted.
3163         (JSC::CodeBlock::instructions): Deleted.
3164         (JSC::CodeBlock::instructionCount): Deleted.
3165         (JSC::CodeBlock::setJITCode): Deleted.
3166         (JSC::CodeBlock::jitCode): Deleted.
3167         (JSC::CodeBlock::jitCodeOffset): Deleted.
3168         (JSC::CodeBlock::jitType): Deleted.
3169         (JSC::CodeBlock::hasBaselineJITProfiling): Deleted.
3170         (JSC::CodeBlock::capabilityLevelState): Deleted.
3171         (JSC::CodeBlock::ownerExecutable): Deleted.
3172         (JSC::CodeBlock::ownerScriptExecutable): Deleted.
3173         (JSC::CodeBlock::vm): Deleted.
3174         (JSC::CodeBlock::setThisRegister): Deleted.
3175         (JSC::CodeBlock::thisRegister): Deleted.
3176         (JSC::CodeBlock::usesEval): Deleted.
3177         (JSC::CodeBlock::setScopeRegister): Deleted.
3178         (JSC::CodeBlock::scopeRegister): Deleted.
3179         (JSC::CodeBlock::codeType): Deleted.
3180         (JSC::CodeBlock::putByIdContext): Deleted.
3181         (JSC::CodeBlock::source): Deleted.
3182         (JSC::CodeBlock::sourceOffset): Deleted.
3183         (JSC::CodeBlock::firstLineColumnOffset): Deleted.
3184         (JSC::CodeBlock::numberOfJumpTargets): Deleted.
3185         (JSC::CodeBlock::jumpTarget): Deleted.
3186         (JSC::CodeBlock::numberOfArgumentValueProfiles): Deleted.
3187         (JSC::CodeBlock::valueProfileForArgument): Deleted.
3188         (JSC::CodeBlock::numberOfValueProfiles): Deleted.
3189         (JSC::CodeBlock::valueProfile): Deleted.
3190         (JSC::CodeBlock::valueProfilePredictionForBytecodeOffset): Deleted.
3191         (JSC::CodeBlock::totalNumberOfValueProfiles): Deleted.
3192         (JSC::CodeBlock::getFromAllValueProfiles): Deleted.
3193         (JSC::CodeBlock::numberOfRareCaseProfiles): Deleted.
3194         (JSC::CodeBlock::likelyToTakeSlowCase): Deleted.
3195         (JSC::CodeBlock::couldTakeSlowCase): Deleted.
3196         (JSC::CodeBlock::numberOfArrayProfiles): Deleted.
3197         (JSC::CodeBlock::arrayProfiles): Deleted.
3198         (JSC::CodeBlock::numberOfExceptionHandlers): Deleted.
3199         (JSC::CodeBlock::exceptionHandler): Deleted.
3200         (JSC::CodeBlock::hasExpressionInfo): Deleted.
3201         (JSC::CodeBlock::hasCodeOrigins): Deleted.
3202         (JSC::CodeBlock::canGetCodeOrigin): Deleted.
3203         (JSC::CodeBlock::codeOrigin): Deleted.
3204         (JSC::CodeBlock::addFrequentExitSite): Deleted.
3205         (JSC::CodeBlock::hasExitSite): Deleted.
3206         (JSC::CodeBlock::exitProfile): Deleted.
3207         (JSC::CodeBlock::lazyOperandValueProfiles): Deleted.
3208         (JSC::CodeBlock::numberOfIdentifiers): Deleted.
3209         (JSC::CodeBlock::identifier): Deleted.
3210         (JSC::CodeBlock::constants): Deleted.
3211         (JSC::CodeBlock::constantsSourceCodeRepresentation): Deleted.
3212         (JSC::CodeBlock::addConstant): Deleted.
3213         (JSC::CodeBlock::addConstantLazily): Deleted.
3214         (JSC::CodeBlock::constantRegister): Deleted.
3215         (JSC::CodeBlock::isConstantRegisterIndex): Deleted.
3216         (JSC::CodeBlock::getConstant): Deleted.
3217         (JSC::CodeBlock::constantSourceCodeRepresentation): Deleted.
3218         (JSC::CodeBlock::functionDecl): Deleted.
3219         (JSC::CodeBlock::numberOfFunctionDecls): Deleted.
3220         (JSC::CodeBlock::functionExpr): Deleted.
3221         (JSC::CodeBlock::regexp): Deleted.
3222         (JSC::CodeBlock::numberOfConstantBuffers): Deleted.
3223         (JSC::CodeBlock::addConstantBuffer): Deleted.
3224         (JSC::CodeBlock::constantBufferAsVector): Deleted.
3225         (JSC::CodeBlock::constantBuffer): Deleted.
3226         (JSC::CodeBlock::heap): Deleted.
3227         (JSC::CodeBlock::globalObject): Deleted.
3228         (JSC::CodeBlock::livenessAnalysis): Deleted.
3229         (JSC::CodeBlock::numberOfSwitchJumpTables): Deleted.
3230         (JSC::CodeBlock::addSwitchJumpTable): Deleted.
3231         (JSC::CodeBlock::switchJumpTable): Deleted.
3232         (JSC::CodeBlock::clearSwitchJumpTables): Deleted.
3233         (JSC::CodeBlock::numberOfStringSwitchJumpTables): Deleted.
3234         (JSC::CodeBlock::addStringSwitchJumpTable): Deleted.
3235         (JSC::CodeBlock::stringSwitchJumpTable): Deleted.
3236         (JSC::CodeBlock::evalCodeCache): Deleted.
3237         (JSC::CodeBlock::checkIfJITThresholdReached): Deleted.
3238         (JSC::CodeBlock::dontJITAnytimeSoon): Deleted.
3239         (JSC::CodeBlock::llintExecuteCounter): Deleted.
3240         (JSC::CodeBlock::llintGetByIdWatchpointMap): Deleted.
3241         (JSC::CodeBlock::numberOfLLIntBaselineCalleeSaveRegisters): Deleted.
3242         (JSC::CodeBlock::addressOfJITExecuteCounter): Deleted.
3243         (JSC::CodeBlock::offsetOfJITExecuteCounter): Deleted.
3244         (JSC::CodeBlock::offsetOfJITExecutionActiveThreshold): Deleted.
3245         (JSC::CodeBlock::offsetOfJITExecutionTotalCount): Deleted.
3246         (JSC::CodeBlock::jitExecuteCounter): Deleted.
3247         (JSC::CodeBlock::optimizationDelayCounter): Deleted.
3248         (JSC::CodeBlock::osrExitCounter): Deleted.
3249         (JSC::CodeBlock::countOSRExit): Deleted.
3250         (JSC::CodeBlock::addressOfOSRExitCounter): Deleted.
3251         (JSC::CodeBlock::offsetOfOSRExitCounter): Deleted.
3252         (JSC::CodeBlock::calleeSaveRegisters): Deleted.
3253         (JSC::CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters): Deleted.
3254         (JSC::CodeBlock::optimizeAfterWarmUp): Deleted.
3255         (JSC::CodeBlock::numberOfDFGCompiles): Deleted.
3256         (JSC::CodeBlock::hasDebuggerRequests): Deleted.
3257         (JSC::CodeBlock::debuggerRequestsAddress): Deleted.
3258         (JSC::CodeBlock::removeBreakpoint): Deleted.
3259         (JSC::CodeBlock::clearDebuggerRequests): Deleted.
3260         (JSC::CodeBlock::wasCompiledWithDebuggingOpcodes): Deleted.