implement op_get_rest_length so that we can allocate the rest array with the right...
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2015-11-30  Saam barati  <sbarati@apple.com>
2
3         implement op_get_rest_length so that we can allocate the rest array with the right size from the start
4         https://bugs.webkit.org/show_bug.cgi?id=151467
5
6         Reviewed by Geoffrey Garen and Mark Lam.
7
8         This patch implements op_get_rest_length which returns the length
9         that the rest parameter array will be. We're implementing this because
10         it might be a constant value in the presence of inlining in the DFG.
11         We will take advantage of this optimization opportunity in a future patch:
12         https://bugs.webkit.org/show_bug.cgi?id=151454
13         to emit better code for op_copy_rest.
14
15         op_get_rest_length has two operands: 
16         1) a destination
17         2) A constant indicating the number of parameters to skip when copying the rest array.
18
19         op_get_rest_length lowers to a JSConstant node when we're inlined
20         and not a varargs call (in this case, we statically know the arguments
21         length). When that condition isn't met, we lower op_get_rest_length to 
22         GetRestArray. GetRestArray produces its result as an int32.
23
24         * bytecode/BytecodeList.json:
25         * bytecode/BytecodeUseDef.h:
26         (JSC::computeUsesForBytecodeOffset):
27         (JSC::computeDefsForBytecodeOffset):
28         * bytecode/CodeBlock.cpp:
29         (JSC::CodeBlock::dumpBytecode):
30         * bytecompiler/BytecodeGenerator.cpp:
31         (JSC::BytecodeGenerator::emitNewArray):
32         (JSC::BytecodeGenerator::emitNewArrayWithSize):
33         (JSC::BytecodeGenerator::emitNewFunction):
34         (JSC::BytecodeGenerator::emitExpectedFunctionSnippet):
35         (JSC::BytecodeGenerator::emitRestParameter):
36         * bytecompiler/BytecodeGenerator.h:
37         * bytecompiler/NodesCodegen.cpp:
38         (JSC::RestParameterNode::emit):
39         * dfg/DFGAbstractInterpreterInlines.h:
40         (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
41         * dfg/DFGByteCodeParser.cpp:
42         (JSC::DFG::ByteCodeParser::parseBlock):
43         * dfg/DFGCapabilities.cpp:
44         (JSC::DFG::capabilityLevel):
45         * dfg/DFGClobberize.h:
46         (JSC::DFG::clobberize):
47         * dfg/DFGDoesGC.cpp:
48         (JSC::DFG::doesGC):
49         * dfg/DFGFixupPhase.cpp:
50         (JSC::DFG::FixupPhase::fixupNode):
51         * dfg/DFGMayExit.cpp:
52         (JSC::DFG::mayExit):
53         * dfg/DFGNode.h:
54         (JSC::DFG::Node::numberOfArgumentsToSkip):
55         * dfg/DFGNodeType.h:
56         * dfg/DFGOperations.cpp:
57         * dfg/DFGOperations.h:
58         * dfg/DFGPredictionPropagationPhase.cpp:
59         (JSC::DFG::PredictionPropagationPhase::propagate):
60         * dfg/DFGSafeToExecute.h:
61         (JSC::DFG::safeToExecute):
62         * dfg/DFGSpeculativeJIT.cpp:
63         (JSC::DFG::SpeculativeJIT::compileCopyRest):
64         (JSC::DFG::SpeculativeJIT::compileGetRestLength):
65         (JSC::DFG::SpeculativeJIT::compileNotifyWrite):
66         * dfg/DFGSpeculativeJIT.h:
67         (JSC::DFG::SpeculativeJIT::callOperation):
68         * dfg/DFGSpeculativeJIT32_64.cpp:
69         (JSC::DFG::SpeculativeJIT::compile):
70         * dfg/DFGSpeculativeJIT64.cpp:
71         (JSC::DFG::SpeculativeJIT::compile):
72         * ftl/FTLCapabilities.cpp:
73         (JSC::FTL::canCompile):
74         * ftl/FTLLowerDFGToLLVM.cpp:
75         (JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
76         (JSC::FTL::DFG::LowerDFGToLLVM::compileCopyRest):
77         (JSC::FTL::DFG::LowerDFGToLLVM::compileGetRestLength):
78         (JSC::FTL::DFG::LowerDFGToLLVM::compileNewObject):
79         * jit/JIT.cpp:
80         (JSC::JIT::privateCompileMainPass):
81         * jit/JIT.h:
82         * jit/JITOpcodes.cpp:
83         (JSC::JIT::emit_op_copy_rest):
84         (JSC::JIT::emit_op_get_rest_length):
85         * llint/LowLevelInterpreter.asm:
86         * llint/LowLevelInterpreter32_64.asm:
87         * llint/LowLevelInterpreter64.asm:
88         * runtime/CommonSlowPaths.cpp:
89         (JSC::SLOW_PATH_DECL):
90
91 2015-11-30  Filip Pizlo  <fpizlo@apple.com>
92
93         MacroAssembler needs an API for disabling scratch registers
94         https://bugs.webkit.org/show_bug.cgi?id=151010
95
96         Reviewed by Saam Barati and Michael Saboff.
97
98         This adds two scope classes, DisallowMacroScratchRegisterUsage and
99         AllowMacroScratchRegisterUsage. The default is that the scratch registers are enabled. Air
100         disables them before generation.
101
102         Henceforth the pattern inside B3 stackmap generator callbacks will be that you can only use
103         AllowMacroScratchRegisterUsage if you've either supplied the scratch register as a clobbered
104         register and arranged for all of the stackmap values to be late uses, or you're writing a test
105         and you're OK with it being fragile with respect to scratch registers. The latter holds in most
106         of testb3.
107
108         * JavaScriptCore.xcodeproj/project.pbxproj:
109         * assembler/AbstractMacroAssembler.h:
110         (JSC::optimizeForX86):
111         (JSC::AbstractMacroAssembler::setTempRegisterValid):
112         * assembler/AllowMacroScratchRegisterUsage.h: Added.
113         (JSC::AllowMacroScratchRegisterUsage::AllowMacroScratchRegisterUsage):
114         (JSC::AllowMacroScratchRegisterUsage::~AllowMacroScratchRegisterUsage):
115         * assembler/DisallowMacroScratchRegisterUsage.h: Added.
116         (JSC::DisallowMacroScratchRegisterUsage::DisallowMacroScratchRegisterUsage):
117         (JSC::DisallowMacroScratchRegisterUsage::~DisallowMacroScratchRegisterUsage):
118         * assembler/MacroAssemblerX86Common.h:
119         (JSC::MacroAssemblerX86Common::scratchRegister):
120         (JSC::MacroAssemblerX86Common::loadDouble):
121         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
122         * assembler/MacroAssemblerX86_64.h:
123         (JSC::MacroAssemblerX86_64::add32):
124         (JSC::MacroAssemblerX86_64::and32):
125         (JSC::MacroAssemblerX86_64::or32):
126         (JSC::MacroAssemblerX86_64::sub32):
127         (JSC::MacroAssemblerX86_64::load8):
128         (JSC::MacroAssemblerX86_64::addDouble):
129         (JSC::MacroAssemblerX86_64::convertInt32ToDouble):
130         (JSC::MacroAssemblerX86_64::store32):
131         (JSC::MacroAssemblerX86_64::store8):
132         (JSC::MacroAssemblerX86_64::callWithSlowPathReturnType):
133         (JSC::MacroAssemblerX86_64::call):
134         (JSC::MacroAssemblerX86_64::jump):
135         (JSC::MacroAssemblerX86_64::tailRecursiveCall):
136         (JSC::MacroAssemblerX86_64::makeTailRecursiveCall):
137         (JSC::MacroAssemblerX86_64::branchAdd32):
138         (JSC::MacroAssemblerX86_64::add64):
139         (JSC::MacroAssemblerX86_64::addPtrNoFlags):
140         (JSC::MacroAssemblerX86_64::and64):
141         (JSC::MacroAssemblerX86_64::lshift64):
142         (JSC::MacroAssemblerX86_64::or64):
143         (JSC::MacroAssemblerX86_64::sub64):
144         (JSC::MacroAssemblerX86_64::store64):
145         (JSC::MacroAssemblerX86_64::store64WithAddressOffsetPatch):
146         (JSC::MacroAssemblerX86_64::branch64):
147         (JSC::MacroAssemblerX86_64::branchPtr):
148         (JSC::MacroAssemblerX86_64::branchTest64):
149         (JSC::MacroAssemblerX86_64::test64):
150         (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
151         (JSC::MacroAssemblerX86_64::branch32WithPatch):
152         (JSC::MacroAssemblerX86_64::storePtrWithPatch):
153         (JSC::MacroAssemblerX86_64::branch8):
154         (JSC::MacroAssemblerX86_64::branchTest8):
155         (JSC::MacroAssemblerX86_64::convertInt64ToDouble):
156         (JSC::MacroAssemblerX86_64::readCallTarget):
157         (JSC::MacroAssemblerX86_64::haveScratchRegisterForBlinding):
158         (JSC::MacroAssemblerX86_64::scratchRegisterForBlinding):
159         (JSC::MacroAssemblerX86_64::canJumpReplacePatchableBranchPtrWithPatch):
160         (JSC::MacroAssemblerX86_64::canJumpReplacePatchableBranch32WithPatch):
161         (JSC::MacroAssemblerX86_64::revertJumpReplacementToPatchableBranchPtrWithPatch):
162         (JSC::MacroAssemblerX86_64::revertJumpReplacementToPatchableBranch32WithPatch):
163         (JSC::MacroAssemblerX86_64::revertJumpReplacementToBranchPtrWithPatch):
164         (JSC::MacroAssemblerX86_64::repatchCall):
165         (JSC::MacroAssemblerX86_64::add64AndSetFlags):
166         * b3/air/AirGenerate.cpp:
167         (JSC::B3::Air::generate):
168         * b3/testb3.cpp:
169         (JSC::B3::testSimplePatchpoint):
170         (JSC::B3::testSimplePatchpointWithoutOuputClobbersGPArgs):
171         (JSC::B3::testSimplePatchpointWithOuputClobbersGPArgs):
172         (JSC::B3::testSimplePatchpointWithoutOuputClobbersFPArgs):
173         (JSC::B3::testSimplePatchpointWithOuputClobbersFPArgs):
174         (JSC::B3::testPatchpointCallArg):
175         (JSC::B3::testPatchpointFixedRegister):
176         (JSC::B3::testPatchpointAny):
177         (JSC::B3::testPatchpointAnyImm):
178         (JSC::B3::testSimpleCheck):
179         (JSC::B3::testCheckLessThan):
180         (JSC::B3::testCheckMegaCombo):
181         (JSC::B3::testCheckAddImm):
182         (JSC::B3::testCheckAddImmCommute):
183         (JSC::B3::testCheckAddImmSomeRegister):
184         (JSC::B3::testCheckAdd):
185         (JSC::B3::testCheckAdd64):
186         (JSC::B3::testCheckAddFoldFail):
187         (JSC::B3::testCheckSubImm):
188         (JSC::B3::testCheckSubBadImm):
189         (JSC::B3::testCheckSub):
190         (JSC::B3::testCheckSub64):
191         (JSC::B3::testCheckSubFoldFail):
192         (JSC::B3::testCheckNeg):
193         (JSC::B3::testCheckNeg64):
194         (JSC::B3::testCheckMul):
195         (JSC::B3::testCheckMulMemory):
196         (JSC::B3::testCheckMul2):
197         (JSC::B3::testCheckMul64):
198         (JSC::B3::testCheckMulFoldFail):
199         (JSC::B3::genericTestCompare):
200         * dfg/DFGCommon.h:
201         * jit/GPRInfo.h:
202         (JSC::GPRInfo::toRegister):
203         (JSC::GPRInfo::reservedRegisters):
204
205 2015-11-26  Mark Lam  <mark.lam@apple.com>
206
207         [ARM64] stress/op_div.js is failing on some divide by 0 cases.
208         https://bugs.webkit.org/show_bug.cgi?id=151515
209
210         Reviewed by Saam Barati.
211
212         * dfg/DFGSpeculativeJIT.cpp:
213         (JSC::DFG::SpeculativeJIT::compileArithDiv):
214         - Added a check for the divide by zero case.
215         * tests/stress/op_div.js:
216         - Un-skipped the test.
217
218 2015-11-27  Csaba Osztrogonác  <ossy@webkit.org>
219
220         [cmake] Add testb3 to the build system
221         https://bugs.webkit.org/show_bug.cgi?id=151619
222
223         Reviewed by Gyuyoung Kim.
224
225         * shell/CMakeLists.txt:
226
227 2015-11-27  Csaba Osztrogonác  <ossy@webkit.org>
228
229         Use mark pragmas only if it is supported
230         https://bugs.webkit.org/show_bug.cgi?id=151621
231
232         Reviewed by Mark Lam.
233
234         * b3/air/AirIteratedRegisterCoalescing.cpp:
235
236 2015-11-27  Csaba Osztrogonác  <ossy@webkit.org>
237
238         Fix the ENABLE(B3_JIT) build with GCC in B3Procedure.h
239         https://bugs.webkit.org/show_bug.cgi?id=151620
240
241         Reviewed by Mark Lam.
242
243         * b3/B3Procedure.h:
244
245 2015-11-27  Csaba Osztrogonác  <ossy@webkit.org>
246
247         [cmake] Add new B3 source files to the build system
248         https://bugs.webkit.org/show_bug.cgi?id=151618
249
250         Reviewed by Gyuyoung Kim.
251
252         * CMakeLists.txt:
253
254 2015-11-26  Carlos Garcia Campos  <cgarcia@igalia.com>
255
256         [GLIB] Implement garbage collector timers
257         https://bugs.webkit.org/show_bug.cgi?id=151391
258
259         Reviewed by Žan Doberšek.
260
261         Add GLib implementation using GSource.
262
263         * heap/EdenGCActivityCallback.cpp:
264         * heap/FullGCActivityCallback.cpp:
265         * heap/GCActivityCallback.cpp:
266         (JSC::GCActivityCallback::GCActivityCallback):
267         (JSC::GCActivityCallback::scheduleTimer):
268         (JSC::GCActivityCallback::cancelTimer):
269         * heap/GCActivityCallback.h:
270         * heap/Heap.cpp:
271         (JSC::Heap::Heap):
272         * heap/HeapTimer.cpp:
273         (JSC::HeapTimer::HeapTimer):
274         (JSC::HeapTimer::~HeapTimer):
275         (JSC::HeapTimer::timerDidFire):
276         * heap/HeapTimer.h:
277         * heap/IncrementalSweeper.cpp:
278         (JSC::IncrementalSweeper::IncrementalSweeper):
279         (JSC::IncrementalSweeper::scheduleTimer):
280         (JSC::IncrementalSweeper::cancelTimer):
281         * heap/IncrementalSweeper.h:
282
283 2015-11-24  Caitlin Potter  <caitp@igalia.com>
284
285         [JSC] support Computed Property Names in destructuring Patterns
286         https://bugs.webkit.org/show_bug.cgi?id=151494
287
288         Reviewed by Saam Barati.
289
290         Add support for computed property names in destructuring BindingPatterns
291         and AssignmentPatterns.
292
293         Productions BindingProperty(1) and AssignmentProperty(2) allow for any valid
294         PropertName(3), including ComputedPropertyName(4)
295
296         1: http://tc39.github.io/ecma262/#prod-BindingProperty
297         2: http://tc39.github.io/ecma262/#prod-AssignmentProperty
298         3: http://tc39.github.io/ecma262/#prod-PropertyName
299         4: http://tc39.github.io/ecma262/#prod-ComputedPropertyName
300
301         * bytecompiler/NodesCodegen.cpp:
302         (JSC::ObjectPatternNode::bindValue):
303         * parser/ASTBuilder.h:
304         (JSC::ASTBuilder::appendObjectPatternEntry):
305         * parser/Nodes.h:
306         (JSC::ObjectPatternNode::appendEntry):
307         * parser/Parser.cpp:
308         (JSC::Parser<LexerType>::parseDestructuringPattern):
309         * parser/SyntaxChecker.h:
310         (JSC::SyntaxChecker::operatorStackPop):
311         * tests/es6.yaml:
312         * tests/es6/destructuring_assignment_computed_properties.js: Added.
313         (test):
314         (test.computeName):
315         (test.loadValue):
316         (test.out.get a):
317         (test.out.set a):
318         (test.out.get b):
319         (test.out.set b):
320         (test.out.get c):
321         (test.out.set c):
322         (test.get var):
323
324 2015-11-24  Commit Queue  <commit-queue@webkit.org>
325
326         Unreviewed, rolling out r192536, r192722, and r192743.
327         https://bugs.webkit.org/show_bug.cgi?id=151593
328
329         Still causing trouble. (Requested by kling on #webkit).
330
331         Reverted changesets:
332
333         "[JSC] JSPropertyNameEnumerator could be destructorless."
334         https://bugs.webkit.org/show_bug.cgi?id=151242
335         http://trac.webkit.org/changeset/192536
336
337         "REGRESSION(r192536): Null pointer dereference in
338         JSPropertyNameEnumerator::visitChildren()."
339         https://bugs.webkit.org/show_bug.cgi?id=151495
340         http://trac.webkit.org/changeset/192722
341
342         "REGRESSION(r192536): Null pointer dereference in
343         JSPropertyNameEnumerator::visitChildren()."
344         https://bugs.webkit.org/show_bug.cgi?id=151495
345         http://trac.webkit.org/changeset/192743
346
347 2015-11-23  Brian Burg  <bburg@apple.com>
348
349         Unreviewed, fix the Mac CMake build after r192793.
350
351         * PlatformMac.cmake:
352
353 2015-11-20  Brian Burg  <bburg@apple.com>
354
355         Web Inspector: RemoteInspector should track targets and connections for remote automation
356         https://bugs.webkit.org/show_bug.cgi?id=151042
357
358         Reviewed by Joseph Pecoraro.
359
360         Refactor RemoteInspector so it can be used to send listings of different target types.
361         First, rename Debuggable to RemoteInspectionTarget, and pull things not specific to
362         remote inspection into the base class RemoteControllableTarget and its Connection class.
363
364         Add a new RemoteControllableTarget called RemoteAutomationTarget, used by UIProcess
365         to support remote UI automation via webinspectord. On the protocol side, this target
366         uses a new WIRTypeKey called WIRTypeAutomation to distiguish the listing from
367         Web and JavaScript listings and avoid inventing a new listing mechanism.
368
369         * API/JSContextRef.cpp:
370         (JSGlobalContextGetDebuggerRunLoop):
371         (JSGlobalContextSetDebuggerRunLoop):
372         * JavaScriptCore.xcodeproj/project.pbxproj:
373         * inspector/InspectorFrontendChannel.h:
374         * inspector/remote/RemoteAutomationTarget.cpp: Added.
375         (Inspector::RemoteAutomationTarget::setAutomationAllowed): Added.
376         * inspector/remote/RemoteAutomationTarget.h: Added.
377         * inspector/remote/RemoteConnectionToTarget.h: Renamed from Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h.
378         (Inspector::RemoteTargetBlock::RemoteTargetBlock):
379         (Inspector::RemoteTargetBlock::~RemoteTargetBlock):
380         (Inspector::RemoteTargetBlock::operator=):
381         (Inspector::RemoteTargetBlock::operator()):
382         * inspector/remote/RemoteConnectionToTarget.mm: Renamed from Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm.
383         (Inspector::RemoteTargetHandleRunSourceGlobal):
384         (Inspector::RemoteTargetQueueTaskOnGlobalQueue):
385         (Inspector::RemoteTargetInitializeGlobalQueue):
386         (Inspector::RemoteTargetHandleRunSourceWithInfo):
387         (Inspector::RemoteConnectionToTarget::RemoteConnectionToTarget):
388         (Inspector::RemoteConnectionToTarget::~RemoteConnectionToTarget):
389         (Inspector::RemoteConnectionToTarget::destination):
390         (Inspector::RemoteConnectionToTarget::connectionIdentifier):
391         (Inspector::RemoteConnectionToTarget::dispatchAsyncOnTarget):
392         (Inspector::RemoteConnectionToTarget::setup):
393         (Inspector::RemoteConnectionToTarget::targetClosed):
394         (Inspector::RemoteConnectionToTarget::close):
395         (Inspector::RemoteConnectionToTarget::sendMessageToTarget):
396         (Inspector::RemoteConnectionToTarget::sendMessageToFrontend):
397         (Inspector::RemoteConnectionToTarget::setupRunLoop):
398         (Inspector::RemoteConnectionToTarget::teardownRunLoop):
399         (Inspector::RemoteConnectionToTarget::queueTaskOnPrivateRunLoop):
400         * inspector/remote/RemoteControllableTarget.cpp: Added.
401         (Inspector::RemoteControllableTarget::~RemoteControllableTarget):
402         (Inspector::RemoteControllableTarget::init):
403         (Inspector::RemoteControllableTarget::update):
404         * inspector/remote/RemoteControllableTarget.h: Added.
405         * inspector/remote/RemoteInspectionTarget.cpp: Renamed from Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp.
406         (Inspector::RemoteInspectionTarget::remoteControlAllowed):
407         (Inspector::RemoteInspectionTarget::setRemoteDebuggingAllowed):
408         (Inspector::RemoteInspectionTarget::pauseWaitingForAutomaticInspection):
409         (Inspector::RemoteInspectionTarget::unpauseForInitializedInspector):
410         * inspector/remote/RemoteInspectionTarget.h: Renamed from Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h.
411         (isType):
412         * inspector/remote/RemoteInspector.h:
413
414             Code to manage Debuggables now works with RemoteControllableTargets and doesn't
415             care whether the target is for Inspection or Automation. Listing data with target-
416             and type-specific information are captured when clients call into RemoteInspector
417             since that's the easiest time to gather this information on the right thread.
418             Use the is<> / downcast<> machinery when we need a concrete Target type.
419
420         * inspector/remote/RemoteInspector.mm:
421         (Inspector::RemoteInspector::nextAvailableIdentifier):
422         (Inspector::RemoteInspector::registerTarget): renamed from registerDebuggable.
423         (Inspector::RemoteInspector::unregisterTarget): renamed from unregisterDebuggable.
424         (Inspector::RemoteInspector::updateTarget): renamed from updateDebuggable.
425         (Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
426         (Inspector::RemoteInspector::sendMessageToRemote):
427         (Inspector::RemoteInspector::setupFailed):
428         (Inspector::RemoteInspector::stopInternal):
429         (Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
430         (Inspector::RemoteInspector::xpcConnectionFailed):
431         (Inspector::RemoteInspector::listingForTarget):
432         (Inspector::RemoteInspector::listingForInspectionTarget):
433         (Inspector::RemoteInspector::listingForAutomationTarget):
434         (Inspector::RemoteInspector::pushListingsNow):
435         (Inspector::RemoteInspector::pushListingsSoon):
436         (Inspector::RemoteInspector::receivedSetupMessage):
437         (Inspector::RemoteInspector::receivedDataMessage):
438         (Inspector::RemoteInspector::receivedDidCloseMessage):
439         (Inspector::RemoteInspector::receivedGetListingMessage):
440         (Inspector::RemoteInspector::receivedIndicateMessage):
441         (Inspector::RemoteInspector::receivedConnectionDiedMessage):
442         (Inspector::RemoteInspector::RemoteInspector): Deleted.
443         (Inspector::RemoteInspector::registerDebuggable): Deleted.
444         (Inspector::RemoteInspector::unregisterDebuggable): Deleted.
445         (Inspector::RemoteInspector::updateDebuggable): Deleted.
446         (Inspector::RemoteInspector::updateDebuggableAutomaticInspectCandidate): Deleted.
447         (Inspector::RemoteInspector::sendMessageToRemoteFrontend): Deleted.
448         (Inspector::RemoteInspector::listingForDebuggable): Deleted.
449         (Inspector::RemoteInspector::pushListingNow): Deleted.
450         (Inspector::RemoteInspector::pushListingSoon): Deleted.
451         * inspector/remote/RemoteInspectorConstants.h:
452         * runtime/JSGlobalObjectDebuggable.cpp:
453         (JSC::JSGlobalObjectDebuggable::dispatchMessageFromRemote):
454         (JSC::JSGlobalObjectDebuggable::pauseWaitingForAutomaticInspection):
455         (JSC::JSGlobalObjectDebuggable::dispatchMessageFromRemoteFrontend): Deleted.
456         * runtime/JSGlobalObjectDebuggable.h:
457
458 2015-11-23  Brian Burg  <bburg@apple.com>
459
460         Rename JavaScriptCore builtins files to match exposed object names
461         https://bugs.webkit.org/show_bug.cgi?id=151549
462
463         Reviewed by Youenn Fablet.
464
465         As a subtask of unifying code generation for WebCore and JSC builtins, we need to get rid of
466         differences between builtins filenames (e.g., Promise.prototype.js) and the name of the
467         generated Builtin object (PromisePrototype).
468
469         If we don't do this, then both build systems need special hacks to normalize the object name
470         from the file name. It's easier to just normalize the filename.
471
472         * CMakeLists.txt:
473         * DerivedSources.make:
474         * JavaScriptCore.xcodeproj/project.pbxproj:
475         * builtins/ArrayIteratorPrototype.js: Renamed from Source/JavaScriptCore/builtins/ArrayIterator.prototype.js.
476         * builtins/ArrayPrototype.js: Renamed from Source/JavaScriptCore/builtins/Array.prototype.js.
477         * builtins/FunctionPrototype.js: Renamed from Source/JavaScriptCore/builtins/Function.prototype.js.
478         * builtins/IteratorPrototype.js: Renamed from Source/JavaScriptCore/builtins/Iterator.prototype.js.
479         * builtins/PromiseOperations.js: Renamed from Source/JavaScriptCore/builtins/Operations.Promise.js.
480         * builtins/PromisePrototype.js: Renamed from Source/JavaScriptCore/builtins/Promise.prototype.js.
481         * builtins/StringIteratorPrototype.js: Renamed from Source/JavaScriptCore/builtins/StringIterator.prototype.js.
482         * builtins/TypedArrayPrototype.js: Renamed from Source/JavaScriptCore/builtins/TypedArray.prototype.js.
483
484 2015-11-23  Andreas Kling  <akling@apple.com>
485
486         REGRESSION(r192536): Null pointer dereference in JSPropertyNameEnumerator::visitChildren().
487         <https://webkit.org/b/151495>
488
489         Reviewed by Mark Lam
490
491         The test I added when fixing this bug the first time caught another bug when
492         run on 32-bit: jsString() can also cause GC, so we have to make sure that
493         JSPropertyNameEnumerator::m_propertyNames is null until after the array it
494         points to has been populated.
495
496         Test: property-name-enumerator-gc-151495.js
497
498         * runtime/JSPropertyNameEnumerator.cpp:
499         (JSC::JSPropertyNameEnumerator::finishCreation):
500
501 == Rolled over to ChangeLog-2015-11-21 ==