https://bugs.webkit.org/show_bug.cgi?id=73503
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-11-30  Dmitry Lomov  <dslomov@google.com>
2
3         https://bugs.webkit.org/show_bug.cgi?id=73503
4         [Chromium][V8] Implement ArrayBuffer transfer in chromium.
5         Portions of this patch come from Luke Zarko.
6
7         Reviewed by David Levin.
8
9         * wtf/ArrayBuffer.cpp:
10         (WTF::ArrayBuffer::transfer): Changed prototype from pointers to RefPtr.
11         * wtf/ArrayBuffer.h:
12         (WTF::ArrayBufferContents::transfer): Changed prototype from pointers to RefPtr.
13         (WTF::ArrayBuffer::isNeutered):
14         * wtf/TypedArrayBase.h:
15         (WTF::TypedArrayBase::neuter):
16
17 2011-12-01  Chao-ying Fu  <fu@mips.com>
18
19         MacroAssemblerMIPS does not implement readCallTarget
20         https://bugs.webkit.org/show_bug.cgi?id=73432
21
22         Reviewed by Zoltan Herczeg.
23
24         * assembler/MIPSAssembler.h:
25         (JSC::MIPSAssembler::readCallTarget):
26         * assembler/MacroAssemblerMIPS.h:
27         (JSC::MacroAssemblerMIPS::readCallTarget):
28
29 2011-12-01  Noel Gordon  <noel.gordon@gmail.com>
30
31         [chromium] Remove wtf/qt/ThreadingQt.cpp from the gyp projects
32         https://bugs.webkit.org/show_bug.cgi?id=73527
33
34         Reviewed by Simon Hausmann.
35
36         wtf/qt/ThreadingQt.cpp was removed in r101477
37
38         * JavaScriptCore.gypi: remove wtf/qt/ThreadingQt.cpp
39
40 2011-12-01  Filip Pizlo  <fpizlo@apple.com>
41
42         BitVector isInline check could fail
43         https://bugs.webkit.org/show_bug.cgi?id=70691
44
45         Reviewed by Gavin Barraclough.
46         
47         Switch back to using the high bit as the inline marker, to make
48         all of the bit indexing operations simpler. Computing the size in
49         words and in bytes of a bitvector, using the number of bits as
50         input is error-prone enough; and with the current approach to
51         solving the X86 bug we end up getting it wrong. Making it right
52         seems hard.
53         
54         So instead, to solve the original problem (the high bit may be
55         meaningful on 32-bit systems), the out-of-line storage pointer is
56         right-shifted by 1. Compared to the original BitVector code, this
57         is a much smaller change (just three lines).
58         
59         This solves a bug where the DFG was corrupting its call frame
60         because BitVector lost track of some bits.
61
62         * wtf/BitVector.cpp:
63         (WTF::BitVector::setSlow):
64         (WTF::BitVector::resizeOutOfLine):
65         * wtf/BitVector.h:
66         (WTF::BitVector::quickGet):
67         (WTF::BitVector::quickSet):
68         (WTF::BitVector::quickClear):
69         (WTF::BitVector::makeInlineBits):
70         (WTF::BitVector::isInline):
71         (WTF::BitVector::outOfLineBits):
72
73 2011-11-30  Filip Pizlo  <fpizlo@apple.com>
74
75         DFG should make it easier to notice node boundaries in disassembly
76         https://bugs.webkit.org/show_bug.cgi?id=73509
77
78         Rubber-stamped by Gavin Barraclough
79         
80         If you set XOR_DEBUG_AID to 1 in DFGCommon.h, a pair of xor's will
81         be emitted at node boundaries, where the immediate being xor'd is the
82         node index.
83
84         * dfg/DFGCommon.h:
85         * dfg/DFGSpeculativeJIT.cpp:
86         (JSC::DFG::SpeculativeJIT::compile):
87
88 2011-11-30  Geoffrey Garen  <ggaren@apple.com>
89
90         Removed ArgList iterators.
91
92         Reviewed by Gavin Barraclough.
93         
94         Another step toward reversing the argument order.
95
96         * interpreter/Interpreter.cpp:
97         (JSC::Interpreter::executeCall):
98         (JSC::Interpreter::executeConstruct): Switched from iterator to int.
99
100         * runtime/ArgList.h:
101         (JSC::ArgList::ArgList):
102         (JSC::ArgList::isEmpty): Removed iterators.
103
104         * runtime/JSArray.cpp:
105         (JSC::JSArray::finishCreation): Switched from iterator to int.
106
107 2011-11-30  Yuqiang Xian  <yuqiang.xian@intel.com>
108
109         32 bit DFG should handle logicalNot slow case instead of simply bailing out
110         https://bugs.webkit.org/show_bug.cgi?id=73515
111
112         Reviewed by Filip Pizlo.
113
114         This improves Kraken performance by 14%, mainly due to ~3X improvement
115         on imaging-desaturate.
116
117         * dfg/DFGSpeculativeJIT32_64.cpp:
118         (JSC::DFG::SpeculativeJIT::compileLogicalNot):
119
120 2011-11-30  Max Vujovic  <mvujovic@adobe.com>
121
122         Some date values not handled consistently with IE/Firefox
123         https://bugs.webkit.org/show_bug.cgi?id=14176
124
125         Reviewed by Gavin Barraclough.
126
127         Changed time zone offset parsing behavior to match IE/Firefox/Opera's in
128         implementation dependent cases like "GMT-4".
129
130         * wtf/DateMath.cpp:
131         (WTF::parseDateFromNullTerminatedCharacters):
132
133 2011-11-30  Mark Hahnenberg  <mhahnenberg@apple.com>
134
135         toStringCallback and valueOfCallback do not check the entire prototype chain for convertToType callback
136         https://bugs.webkit.org/show_bug.cgi?id=73368
137
138         Reviewed by Darin Adler.
139
140         We need to search the entire prototype chain for the convertToType callback, rather than just calling whatever
141         happens to be in the first class of the chain, which potentially could be null.
142
143         <rdar://problem/10493218>
144
145         * API/JSCallbackFunction.cpp:
146         (JSC::JSCallbackFunction::toStringCallback):
147         (JSC::JSCallbackFunction::valueOfCallback):
148
149 2011-11-29  Sam Weinig  <sam@webkit.org>
150
151         Add adoptCF and adoptNS convenience functions to RetainPtr.h
152         https://bugs.webkit.org/show_bug.cgi?id=73399
153
154         Reviewed by Anders Carlsson.
155
156         * wtf/RetainPtr.h:
157         (WTF::adoptCF):
158         (WTF::adoptNS):
159         These adoption functions match the pattern we use in other
160         smart pointer classes.
161
162 2011-11-30  Adam Roben  <aroben@apple.com>
163
164         Fix RetainPtr's move assignment operators
165
166         Fixes <http://webkit.org/b/73449> RetainPtr's move assignment operators don't modify the
167         pointer being assigned to
168
169         I didn't write a test for this because we don't have a way of unit testing C++11 code (see
170         <http://webkit.org/b/73448>).
171
172         Reviewed by Anders Carlsson.
173
174         * wtf/RetainPtr.h:
175         (WTF::RetainPtr::operator=): Adopt the passed-in RetainPtr's underlying pointer, not our own
176         pointer.
177
178 2011-11-30  Csaba Osztrogonác  <ossy@webkit.org>
179
180         Unreviewed rolling out incorrect r101481.
181
182         * assembler/MIPSAssembler.h:
183         * assembler/MacroAssemblerMIPS.h:
184
185 2011-11-30  Simon Hausmann  <simon.hausmann@nokia.com>
186
187         Fix compilation with MingW.
188
189         Reviewed by Csaba Osztrogonác.
190
191         * wtf/ThreadingWin.cpp:
192         (WTF::initializeCurrentThreadInternal): MingW doesn't support MSVC exception handling, so for
193         the time being make the thread name setting unimplemented for MingW.
194
195 2011-11-30  Simon Hausmann  <simon.hausmann@nokia.com>
196
197         Unreviewed propective build fix for Qt/Windows part 2 after r101477.
198
199         * wtf/ThreadSpecific.h: Fix the OS(WINDOWS) defines for the friend declaration for ThreadSpecific<T>::Data
200
201 2011-11-30  Simon Hausmann  <simon.hausmann@nokia.com>
202
203         Unreviewed propective build fix for Qt/Windows after r101477.
204
205         * wtf/ThreadSpecific.h: Use OS(WINDOWS) for declaring "destructor", as it's
206         only referenced from within another OS(WINDOWS) section.
207
208 2011-11-30  Csaba Osztrogonác  <ossy@webkit.org>
209
210         Unreviewed speculative buildfix after r101457.
211
212         * assembler/MIPSAssembler.h:
213         (JSC::MIPSAssembler::readCallTarget):
214         * assembler/MacroAssemblerMIPS.h:
215         (JSC::MacroAssemblerMIPS::readCallTarget):
216
217 2011-11-30  Andrew Wason  <rectalogic@rectalogic.com>
218
219         Replace Qt QThread threading back-end with pthread/Win32 threading back-ends
220         https://bugs.webkit.org/show_bug.cgi?id=72155
221
222         Reviewed by Simon Hausmann.
223
224         Use ThreadingPthreads and ThreadingWin instead of ThreadingQt.
225
226         * heap/MachineStackMarker.cpp:
227         * wtf/MainThread.cpp:
228         (WTF::initializeMainThread):
229         * wtf/Platform.h:
230         * wtf/ThreadSpecific.h: Drop QThreadStorage related code.
231         (WTF::::destroy):
232         * wtf/ThreadingPrimitives.h:
233         * wtf/qt/MainThreadQt.cpp: Drop Qt specific isMainThread().
234         (WTF::initializeMainThreadPlatform): Initialize MainThreadInvoker on main thread to avoid infecting secondary thread with QAdoptedThread.
235         (WTF::scheduleDispatchFunctionsOnMainThread):
236         * wtf/qt/ThreadingQt.cpp: Removed.
237         * wtf/wtf.pro:
238
239 2011-11-30  Csaba Osztrogonác  <ossy@webkit.org>
240
241         MacroAssemblerARM does not implement readCallTarget
242         https://bugs.webkit.org/show_bug.cgi?id=73413
243
244         Based on Filip Pizlo's patch.
245
246         Buildfix. Rubber-stamped by Gabor Loki.
247
248         * assembler/ARMAssembler.h:
249         (JSC::ARMAssembler::readCallTarget):
250         * assembler/MacroAssemblerARM.h:
251         (JSC::MacroAssemblerARM::readCallTarget):
252
253 2011-11-29  Filip Pizlo  <fpizlo@apple.com>
254
255         Resetting a put_by_id inline cache should preserve the "isDirect" bit
256         https://bugs.webkit.org/show_bug.cgi?id=73375
257
258         Reviewed by Gavin Barraclough.
259         
260         For the replace case, we can find out if it was direct by looking at the
261         slow call. For the transition case, we explicitly remember if it was
262         direct.
263
264         * bytecode/CodeBlock.cpp:
265         (JSC::printStructureStubInfo):
266         * bytecode/StructureStubInfo.cpp:
267         (JSC::StructureStubInfo::deref):
268         (JSC::StructureStubInfo::visitWeakReferences):
269         * bytecode/StructureStubInfo.h:
270         (JSC::isPutByIdAccess):
271         (JSC::StructureStubInfo::initPutByIdTransition):
272         * dfg/DFGByteCodeParser.cpp:
273         (JSC::DFG::ByteCodeParser::parseBlock):
274         * dfg/DFGRepatch.cpp:
275         (JSC::DFG::tryCachePutByID):
276         * jit/JIT.h:
277         * jit/JITPropertyAccess.cpp:
278         (JSC::JIT::resetPatchPutById):
279         (JSC::JIT::isDirectPutById):
280         * jit/JITPropertyAccess32_64.cpp:
281         (JSC::JIT::resetPatchPutById):
282         * jit/JITStubs.cpp:
283         (JSC::JITThunks::tryCachePutByID):
284
285 2011-11-29  Sam Weinig  <sam@webkit.org>
286
287         Remove RetainPtr::releaseRef
288         https://bugs.webkit.org/show_bug.cgi?id=73396
289
290         Reviewed by Dan Bernstein.
291
292         * wtf/RetainPtr.h:
293         Be gone releaseRef! Long live leakRef!
294
295 2011-11-29  Sam Weinig  <sam@webkit.org>
296
297         Add move semantics to RetainPtr
298         https://bugs.webkit.org/show_bug.cgi?id=73393
299
300         Reviewed by Anders Carlsson.
301
302         * wtf/RetainPtr.h:
303         (WTF::RetainPtr::RetainPtr):
304         Add a move constructor and move enabled assignment operators
305         to RetainPtr if the compiler being used supports rvalue
306         references. If the compiler does not support it, we fallback
307         to the copy semantics we have always had.
308
309 2011-11-29  Yuqiang Xian  <yuqiang.xian@intel.com>
310
311         DFG local CSE may cause incorrect reference counting for a node
312         https://bugs.webkit.org/show_bug.cgi?id=73390
313
314         Reviewed by Filip Pizlo.
315
316         When performing a node substitution, the ref count of the replaced
317         child will be increased, no matter whether the user node is skipped in
318         code generation or not. This will cause the reference count of the
319         replaced child never get the chance to become zero and so the
320         registers occupied by it cannot be reused simply without spilling, if
321         it's used by a "skipped" node.
322         This is a 1% gain on V8 benchmark, tested on IA32 Linux.
323
324         * dfg/DFGPropagator.cpp:
325         (JSC::DFG::Propagator::performSubstitution):
326         (JSC::DFG::Propagator::performNodeCSE):
327
328 2011-11-29  David Levin  <levin@chromium.org>
329
330         Add a way to revert a variable to its previous value after leaving a scope.
331         https://bugs.webkit.org/show_bug.cgi?id=73371
332
333         Reviewed by Adam Barth.
334
335         In case anyone from Chromium sees this, it is nearly identical to AutoReset
336         but if the same name were used, it causes unnecessary ambiguity.
337
338         * JavaScriptCore.xcodeproj/project.pbxproj:
339         * wtf/TemporarilyChange.h: Added.
340         (WTF::TemporarilyChange::TemporarilyChange):
341         (WTF::TemporarilyChange::~TemporarilyChange):
342
343 2011-11-29  Sam Weinig  <sam@webkit.org>
344
345         Add COMPILER_SUPPORTS macro to allow for compiler feature testing
346         https://bugs.webkit.org/show_bug.cgi?id=73386
347
348         Reviewed by Anders Carlsson.
349
350         * wtf/Compiler.h:
351         Add COMPILER_SUPPORTS and #defines for C++11 variadic templates and
352         rvalue references for Clang.
353
354 2011-11-29  Oliver Hunt  <oliver@apple.com>
355
356         Allow WebCore to describe typed arrays to JSC
357         https://bugs.webkit.org/show_bug.cgi?id=73355
358
359         Reviewed by Gavin Barraclough.
360
361         Allow globaldata to track the structure of typed arrays.
362
363         * runtime/JSGlobalData.h:
364         (JSC::TypedArrayDescriptor::TypedArrayDescriptor):
365
366 2011-11-28  Filip Pizlo  <fpizlo@apple.com>
367
368         DFG debugCall() mechanism only works on X86 and X86-64
369         https://bugs.webkit.org/show_bug.cgi?id=73282
370
371         Reviewed by Oliver Hunt.
372
373         * dfg/DFGAssemblyHelpers.h:
374         (JSC::DFG::AssemblyHelpers::debugCall):
375
376 2011-11-28  Filip Pizlo  <fpizlo@apple.com>
377
378         DFG non-X86 ArithDiv does speculation failure after mutating state,
379         without a value recovery
380         https://bugs.webkit.org/show_bug.cgi?id=73286
381
382         Reviewed by Gavin Barraclough.
383
384         * dfg/DFGSpeculativeJIT32_64.cpp:
385         (JSC::DFG::SpeculativeJIT::compile):
386
387 2011-11-28  Filip Pizlo  <fpizlo@apple.com>
388
389         Unreviewed build fixes for ARM.
390
391         * assembler/MacroAssemblerARMv7.h:
392         (JSC::MacroAssemblerARMv7::readCallTarget):
393         * dfg/DFGSpeculativeJIT.h:
394         (JSC::DFG::SpeculativeJIT::setupArgumentsWithExecState):
395
396 2011-11-20  Roland Steiner  <rolandsteiner@chromium.org>
397
398         <style scoped>: add ENABLE(STYLE_SCOPED) flag to WebKit
399         https://bugs.webkit.org/show_bug.cgi?id=72848
400
401         Add ENABLE_STYLE_SCOPED flag.
402
403         Reviewed by Dimitri Glazkov.
404
405         * Configurations/FeatureDefines.xcconfig:
406
407 2011-11-28  Jon Lee  <jonlee@apple.com>
408
409         Create skeleton framework for notifications support in WK2
410         https://bugs.webkit.org/show_bug.cgi?id=73253
411         <rdar://problem/10356943>
412
413         * Configurations/FeatureDefines.xcconfig: Split out ENABLE_NOTIFICATIONS based on platform.
414
415 2011-11-28  Oliver Hunt  <oliver@apple.com>
416
417         Fix windows build.
418
419         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
420
421 2011-11-28  Oliver Hunt  <oliver@apple.com>
422
423         Fix gyp build
424
425         * JavaScriptCore.gypi:
426
427 2011-11-28  Filip Pizlo  <fpizlo@apple.com>
428
429         GetById should not always speculate cell
430         https://bugs.webkit.org/show_bug.cgi?id=73181
431
432         Reviewed by Gavin Barraclough.
433         
434         GetById will now speculate cell if the predictions of the base are cell.
435         Otherwise it will do like the old JIT (and like the old non-speculative
436         DFG JIT): if not cell, go straight to slow-path but otherwise don't OSR
437         out. This is a 1% speed-up on SunSpider.
438
439         * dfg/DFGAbstractState.cpp:
440         (JSC::DFG::AbstractState::execute):
441         * dfg/DFGOperations.cpp:
442         * dfg/DFGOperations.h:
443         * dfg/DFGSpeculativeJIT.h:
444         (JSC::DFG::SpeculativeJIT::setupArgumentsWithExecState):
445         (JSC::DFG::SpeculativeJIT::callOperation):
446         * dfg/DFGSpeculativeJIT32_64.cpp:
447         (JSC::DFG::SpeculativeJIT::cachedGetById):
448         (JSC::DFG::SpeculativeJIT::compile):
449         * dfg/DFGSpeculativeJIT64.cpp:
450         (JSC::DFG::SpeculativeJIT::compile):
451
452 2011-11-28  Oliver Hunt  <oliver@apple.com>
453
454         Move typed array implementations into wtf
455         https://bugs.webkit.org/show_bug.cgi?id=73248
456
457         Reviewed by Sam Weinig.
458
459         Move typed array implementation files from WebCore to wtf.  Inline the
460         .cpp files for each of the array views to cut down on unnecessary exports
461         and function call overhead for trivial operations.
462
463         Added files to all the project files.
464
465         * GNUmakefile.list.am:
466         * JavaScriptCore.exp:
467         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
468         * JavaScriptCore.xcodeproj/project.pbxproj:
469         * wtf/ArrayBuffer.cpp: Renamed from Source/WebCore/html/canvas/Float32Array.cpp.
470         (WTF::ArrayBuffer::transfer):
471         (WTF::ArrayBuffer::addView):
472         (WTF::ArrayBuffer::removeView):
473         * wtf/ArrayBuffer.h: Renamed from Source/WebCore/html/canvas/ArrayBuffer.cpp.
474         (WTF::ArrayBufferContents::ArrayBufferContents):
475         (WTF::ArrayBufferContents::data):
476         (WTF::ArrayBufferContents::sizeInBytes):
477         (WTF::ArrayBufferContents::transfer):
478         (WTF::ArrayBuffer::~ArrayBuffer):
479         (WTF::ArrayBuffer::clampValue):
480         (WTF::ArrayBuffer::create):
481         (WTF::ArrayBuffer::ArrayBuffer):
482         (WTF::ArrayBuffer::data):
483         (WTF::ArrayBuffer::byteLength):
484         (WTF::ArrayBuffer::slice):
485         (WTF::ArrayBuffer::sliceImpl):
486         (WTF::ArrayBuffer::clampIndex):
487         (WTF::ArrayBufferContents::tryAllocate):
488         (WTF::ArrayBufferContents::~ArrayBufferContents):
489         * wtf/ArrayBufferView.cpp: Copied from Source/WebCore/bindings/js/JSArrayBufferCustom.cpp.
490         (WTF::ArrayBufferView::ArrayBufferView):
491         (WTF::ArrayBufferView::~ArrayBufferView):
492         (WTF::ArrayBufferView::neuter):
493         * wtf/ArrayBufferView.h: Renamed from Source/WebCore/html/canvas/ArrayBufferView.h.
494         (WTF::ArrayBufferView::isByteArray):
495         (WTF::ArrayBufferView::isUnsignedByteArray):
496         (WTF::ArrayBufferView::isShortArray):
497         (WTF::ArrayBufferView::isUnsignedShortArray):
498         (WTF::ArrayBufferView::isIntArray):
499         (WTF::ArrayBufferView::isUnsignedIntArray):
500         (WTF::ArrayBufferView::isFloatArray):
501         (WTF::ArrayBufferView::isDoubleArray):
502         (WTF::ArrayBufferView::isDataView):
503         (WTF::ArrayBufferView::buffer):
504         (WTF::ArrayBufferView::baseAddress):
505         (WTF::ArrayBufferView::byteOffset):
506         (WTF::ArrayBufferView::verifySubRange):
507         (WTF::ArrayBufferView::clampOffsetAndNumElements):
508         (WTF::ArrayBufferView::setImpl):
509         (WTF::ArrayBufferView::setRangeImpl):
510         (WTF::ArrayBufferView::zeroRangeImpl):
511         (WTF::ArrayBufferView::calculateOffsetAndLength):
512         * wtf/CMakeLists.txt:
513         * wtf/Float32Array.h: Renamed from Source/WebCore/html/canvas/Float32Array.h.
514         (WTF::Float32Array::set):
515         (WTF::Float32Array::item):
516         (WTF::Float32Array::isFloatArray):
517         (WTF::Float32Array::create):
518         (WTF::Float32Array::Float32Array):
519         (WTF::Float32Array::subarray):
520         * wtf/Float64Array.h: Renamed from Source/WebCore/html/canvas/Float64Array.h.
521         (WTF::Float64Array::set):
522         (WTF::Float64Array::item):
523         (WTF::Float64Array::isDoubleArray):
524         (WTF::Float64Array::create):
525         (WTF::Float64Array::Float64Array):
526         (WTF::Float64Array::subarray):
527         * wtf/Int16Array.h: Renamed from Source/WebCore/html/canvas/Int16Array.cpp.
528         (WTF::Int16Array::set):
529         (WTF::Int16Array::isShortArray):
530         (WTF::Int16Array::create):
531         (WTF::Int16Array::Int16Array):
532         (WTF::Int16Array::subarray):
533         * wtf/Int32Array.h: Renamed from Source/WebCore/html/canvas/Int32Array.cpp.
534         (WTF::Int32Array::set):
535         (WTF::Int32Array::isIntArray):
536         (WTF::Int32Array::create):
537         (WTF::Int32Array::Int32Array):
538         (WTF::Int32Array::subarray):
539         * wtf/Int8Array.h: Renamed from Source/WebCore/html/canvas/Int8Array.cpp.
540         (WTF::Int8Array::set):
541         (WTF::Int8Array::isByteArray):
542         (WTF::Int8Array::create):
543         (WTF::Int8Array::Int8Array):
544         (WTF::Int8Array::subarray):
545         * wtf/IntegralTypedArrayBase.h: Renamed from Source/WebCore/html/canvas/IntegralTypedArrayBase.h.
546         (WTF::IntegralTypedArrayBase::set):
547         (WTF::IntegralTypedArrayBase::item):
548         (WTF::IntegralTypedArrayBase::IntegralTypedArrayBase):
549         * wtf/TypedArrayBase.h: Renamed from Source/WebCore/html/canvas/TypedArrayBase.h.
550         (WTF::TypedArrayBase::data):
551         (WTF::TypedArrayBase::set):
552         (WTF::TypedArrayBase::setRange):
553         (WTF::TypedArrayBase::zeroRange):
554         (WTF::TypedArrayBase::length):
555         (WTF::TypedArrayBase::byteLength):
556         (WTF::TypedArrayBase::TypedArrayBase):
557         (WTF::TypedArrayBase::create):
558         (WTF::TypedArrayBase::subarrayImpl):
559         * wtf/Uint16Array.h: Renamed from Source/WebCore/html/canvas/Uint16Array.cpp.
560         (WTF::Uint16Array::set):
561         (WTF::Uint16Array::isUnsignedShortArray):
562         (WTF::Uint16Array::create):
563         (WTF::Uint16Array::Uint16Array):
564         (WTF::Uint16Array::subarray):
565         * wtf/Uint32Array.h: Renamed from Source/WebCore/html/canvas/Uint32Array.cpp.
566         (WTF::Uint32Array::set):
567         (WTF::Uint32Array::isUnsignedIntArray):
568         (WTF::Uint32Array::create):
569         (WTF::Uint32Array::Uint32Array):
570         (WTF::Uint32Array::subarray):
571         * wtf/Uint8Array.h: Renamed from Source/WebCore/html/canvas/Uint8Array.h.
572         (WTF::Uint8Array::set):
573         (WTF::Uint8Array::isUnsignedByteArray):
574         (WTF::Uint8Array::create):
575         (WTF::Uint8Array::Uint8Array):
576         (WTF::Uint8Array::subarray):
577         * wtf/wtf.pro:
578
579 2011-11-27  Filip Pizlo  <fpizlo@apple.com>
580
581         Don't try to optimize huge code blocks
582         https://bugs.webkit.org/show_bug.cgi?id=73187
583
584         Reviewed by Oliver Hunt.
585         
586         This unifies the heuristics used for deciding if a code block is too big
587         to optimize, and sets this heuristic to 1000, which is intuitively better
588         than numeric_limits<unsigned>::max(). It also results in what looks like
589         a speed-up on both SunSpider and V8 (in Tools/Scripts/bencher).
590
591         * dfg/DFGCapabilities.h:
592         (JSC::DFG::mightCompileEval):
593         (JSC::DFG::mightCompileProgram):
594         (JSC::DFG::mightCompileFunctionForCall):
595         (JSC::DFG::mightCompileFunctionForConstruct):
596         * runtime/Heuristics.cpp:
597         (JSC::Heuristics::initializeHeuristics):
598         * runtime/Heuristics.h:
599
600 2011-11-28  Filip Pizlo  <fpizlo@apple.com>
601
602         Either remove the GetMethod node from the DFG backend, or find a use for it
603         https://bugs.webkit.org/show_bug.cgi?id=73178
604
605         Reviewed by Gavin Barraclough.
606         
607         More testing seemed to imply that the GetMethod code was indeed not profitable
608         in any major test. So, it's probably best to just remove it.
609
610         * bytecode/CodeBlock.cpp:
611         (JSC::MethodCallLinkInfo::reset):
612         * dfg/DFGAbstractState.cpp:
613         (JSC::DFG::AbstractState::execute):
614         * dfg/DFGJITCompiler.cpp:
615         (JSC::DFG::JITCompiler::link):
616         * dfg/DFGJITCompiler.h:
617         * dfg/DFGNode.h:
618         (JSC::DFG::Node::hasIdentifier):
619         (JSC::DFG::Node::hasHeapPrediction):
620         * dfg/DFGOperations.cpp:
621         * dfg/DFGOperations.h:
622         * dfg/DFGPropagator.cpp:
623         (JSC::DFG::Propagator::propagateNodePredictions):
624         * dfg/DFGRepatch.cpp:
625         * dfg/DFGRepatch.h:
626         * dfg/DFGSpeculativeJIT.h:
627         * dfg/DFGSpeculativeJIT32_64.cpp:
628         (JSC::DFG::SpeculativeJIT::cachedGetById):
629         (JSC::DFG::SpeculativeJIT::compile):
630         * dfg/DFGSpeculativeJIT64.cpp:
631         (JSC::DFG::SpeculativeJIT::cachedGetById):
632         (JSC::DFG::SpeculativeJIT::compile):
633
634 2011-11-28  Michael Saboff  <msaboff@apple.com>
635
636         Change set 101187 from bug 73154 removed already lower case optimization
637         https://bugs.webkit.org/show_bug.cgi?id=73174
638
639         Added back the "string is already lower case" optimization.
640
641         Reviewed by Geoffrey Garen.
642
643         * runtime/StringPrototype.cpp:
644         (JSC::stringProtoFuncToLowerCase):
645
646 2011-11-28  Simon Hausmann  <simon.hausmann@nokia.com>
647
648         Unreviewed prospective build fix. Touch the file to trigger correct
649         rebuild on the Qt mips/sh4/sl bot.
650
651         * wtf/unicode/qt4/UnicodeQt4.h:
652
653 2011-11-28  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
654
655         [Qt] Remove cruft from project file
656
657         Reviewed by Simon Hausmann.
658
659         * Target.pri:
660
661 2011-11-28  Simon Hausmann  <simon.hausmann@nokia.com>
662
663         [Qt] WTF should be built as separate static library
664         https://bugs.webkit.org/show_bug.cgi?id=73201
665
666         Reviewed by Tor Arne Vestbø.
667
668         * Target.pri: Don't claim to build WTF, as that would cause
669         the debug-with-shlibs build to not link in wtf.
670         * jsc.pro: Require wtf.
671         * wtf/wtf.pri: Removed.
672         * wtf/wtf.pro: Added. Pro file to build wtf statically.
673
674 2011-11-28  Martin Robinson  <mrobinson@igalia.com>
675
676         [GTK] JavaScriptCore generated sources should build in the DerivedSources directory
677         https://bugs.webkit.org/show_bug.cgi?id=73197
678
679         Reviewed by Philippe Normand.
680
681         Build all JavaScriptCore generated sources in DerivedSources.
682
683         * GNUmakefile.am: Update generation rules.
684         * GNUmakefile.list.am: Update source lists.
685
686 2011-11-27  Filip Pizlo  <fpizlo@apple.com>
687
688         DFG should not emit GetMethod node
689         https://bugs.webkit.org/show_bug.cgi?id=73175
690
691         Reviewed by Gavin Barraclough.
692         
693         Replaces all instances of the GetMethod node with GetById. This appears to
694         be a slight win on V8. This patch leaves GetMethod support in the code-base,
695         making this decision easy to reverse, for now.
696
697         * dfg/DFGByteCodeParser.cpp:
698         (JSC::DFG::ByteCodeParser::parseBlock):
699
700 2011-11-26  Hajime Morrita  <morrita@chromium.org>
701
702         Needs WTF_INLINE and JS_INLINE
703         https://bugs.webkit.org/show_bug.cgi?id=72853
704
705         Reviewed by Kevin Ollivier.
706
707         Added WTF_HIDDEN, WTF_INLINE and JS_INLINE which
708         indirect __attribute__((visibility("hidden"))
709
710         * config.h:
711         * wtf/ExportMacros.h:
712
713 2011-11-25  Michael Saboff  <msaboff@apple.com>
714
715         String.prototype.toLower should be optimized for 8 bit strings
716         https://bugs.webkit.org/show_bug.cgi?id=73154
717
718         Changed stringProtoFuncToLowerCase to use StringImpl::lower() which has
719         been optimized for 8 bit strings.
720
721         This is worth ~7% to sunspider string.tagcloud.
722
723         Reviewed by Filip Pizlo.
724
725         * runtime/StringPrototype.cpp:
726         (JSC::stringProtoFuncToLowerCase):
727
728 2011-11-25  Michael Saboff  <msaboff@apple.com>
729
730         Array.toString always uses StringImpl::characters()
731         https://bugs.webkit.org/show_bug.cgi?id=72969
732
733         If all component strings are 8 bit, create an 8 bit result string for toString().
734
735         This appears to be performance neutral to sunspider and v8.
736
737         Reviewed by Filip Pizlo.
738
739         * runtime/ArrayPrototype.cpp:
740         (JSC::arrayProtoFuncToString):
741
742 2011-11-24  Michael Saboff  <msaboff@apple.com>
743
744         UString methods are not character size aware
745         https://bugs.webkit.org/show_bug.cgi?id=72975
746
747         Changed the UString number constructors to build 8 bit strings.
748         Modified the other methods to check string bitness and process
749         with 8 bits wherre appropriate.
750
751         * runtime/UString.cpp:
752         (JSC::UString::number):
753         (JSC::operator==):
754         (JSC::operator<):
755         (JSC::UString::ascii):
756
757 2011-11-24  Michael Saboff  <msaboff@apple.com>
758
759         JavaScript string to number conversion functions use characters()
760         https://bugs.webkit.org/show_bug.cgi?id=72974
761
762         Change the various JS to number routines to process strings
763         using characters8() or characters16() as appropriate.
764         Implemented using static template methods.
765
766         Reviewed by Filip Pizlo.
767
768         * runtime/JSGlobalObjectFunctions.cpp:
769         (JSC::isInfinity):
770         (JSC::jsHexIntegerLiteral):
771         (JSC::jsStrDecimalLiteral):
772         (JSC::toDouble):
773         (JSC::jsToNumber):
774
775 2011-11-24  Michael Saboff  <msaboff@apple.com>
776
777         Empty JSStrings are created as 16 bit
778         https://bugs.webkit.org/show_bug.cgi?id=72968
779
780         Clear m_is8Bit flag for empty strings.
781
782         Reviewed by Filip Pizlo.
783
784         * runtime/JSString.h:
785         (JSC::RopeBuilder::finishCreation):
786
787 2011-11-24  Michael Saboff  <msaboff@apple.com>
788
789         Tune JSStringBuilder for 8 bit Strings
790         https://bugs.webkit.org/show_bug.cgi?id=72683
791
792         Changed JSStringBuilder to use 8 bit buffers until 16 bit data is added.
793         When 16 bit data is to be added, the 8 bit buffer is converted to 16 bit
794         and building continues with a 16 bit buffer.
795
796         Reviewed by Filip Pizlo.
797
798         * runtime/JSStringBuilder.h:
799         (JSC::JSStringBuilder::JSStringBuilder):
800         (JSC::JSStringBuilder::append):
801         (JSC::JSStringBuilder::upConvert):
802         (JSC::JSStringBuilder::build):
803         * runtime/UString.h:
804         (JSC::UString::adopt):
805         * wtf/text/StringImpl.h:
806         (WTF::StringImpl::adopt):
807
808 2011-11-24  Zeno Albisser  <zeno@webkit.org>
809
810         [Qt]WK2][Mac] Use Mac port's IPC implementation instead of Unix sockets
811         https://bugs.webkit.org/show_bug.cgi?id=72495
812
813         Update defines to not use Unix Domain Sockets for platform Qt on Mac.
814         This enables Qt to reuse existing code for mach ports and Grand
815         Central Dispatch based IPC.
816
817         Reviewed by Simon Hausmann.
818
819         * wtf/Platform.h:
820
821 2011-11-24  Simon Hausmann  <simon.hausmann@nokia.com>
822
823         [Qt] REGRESSION(r101131): WTF::scheduleDispatchFunctionsOnMainThread() doesn't work reliably
824
825         Reviewed by Andreas Kling.
826
827         We must make sure that the MainThreadInvoker object lives in the gui thread. There are a few
828         ways of doing that and this fix seems like the least intrusive one by simply pushing the
829         invoker to the gui thread if it's not there already.
830
831         * wtf/qt/MainThreadQt.cpp:
832         (WTF::scheduleDispatchFunctionsOnMainThread):
833
834 2011-11-24  Patrick Gansterer  <paroga@webkit.org>
835
836         [Qt] Use QEvent for dispatchFunctionsFromMainThread()
837         https://bugs.webkit.org/show_bug.cgi?id=72704
838
839         Reviewed by Simon Hausmann.
840
841         Replace QMetaObject::invokeMethod with QCoreApplication::postEvent.
842         This is the same as what invokeMethod does internally, but reduces
843         the dependency on some internal QThread stuff.
844
845         * wtf/qt/MainThreadQt.cpp:
846         (WTF::MainThreadInvoker::MainThreadInvoker):
847         (WTF::MainThreadInvoker::event):
848         (WTF::scheduleDispatchFunctionsOnMainThread):
849
850 2011-11-23  George Staikos  <staikos@webkit.org>
851
852         Remove BlackBerry OS support from RandomNumberSeed, making QNX=UNIX.
853         https://bugs.webkit.org/show_bug.cgi?id=73028
854
855         Reviewed by Daniel Bates.
856
857         * wtf/RandomNumberSeed.h:
858         (WTF::initializeRandomNumberGenerator):
859
860 2011-11-23  Nikolas Zimmermann  <nzimmermann@rim.com>
861
862         Add flags/precision arguments to String::number(double) to allow fine-grained control over the result string
863         https://bugs.webkit.org/show_bug.cgi?id=72793
864
865         Reviewed by Zoltan Herczeg.
866
867         This new code will be used in follow-up patches to replace the String::format("%.2f") usage in
868         platform/text/TextStream.cpp, and String::format("%.6lg") usage in svg/SVGPathStringBuilder.cpp.
869
870         The String::number(double) currently calls String::format("%.6lg") in trunk. In order to replace
871         this by a variant that properly rounds to six significant figures, JSC code could be refactored.
872         JSCs Number.toPrecision/toFixed uses wtf/dtoa/double-conversion which provides all features we need,
873         except truncating trailing zeros, needed to mimic the "g" format, which is either f or e but with
874         trailing zeros removed, producing shorter results. Changed the default signature to:
875
876         "static String number(double, unsigned = ShouldRoundSignificantFigures | ShouldTruncateTrailingZeros, unsigned precision = 6);".
877
878         In WebCore we can now replace String::format() calls like this:
879         String::format("%.2f", f) -> String::number(f, ShouldRoundDecimalPlaces, 2)
880         String::format("%.6lg", f) -> String::number(f)
881
882         The default parameters for precison & flags exactly match the format of the string produced now, except that the result
883         is rounded according to the rounding mode / formatting mode and precision. This paves the way towards reliable results
884         in the d="" attribute dumps of SVG paths  across platforms. The dtoa rounding code enforces a unique zero, resolving
885         all 0.0 vs. -0.0 issues currently seen on Windows, and some Gtk/Qt bots.
886
887         This patch needs a rebaseline of svg/dom/length-list-parser.html as we don't perfecly mimic the String::format() "lg" mode
888         result for exponentials, we used to return eg. "e-7" and now return "e-07" - the trailing zero truncation hasn't been
889         implemented for exponentials, as this really affects only this test and thus wasn't worth the trouble - in contrary the
890         trailing zero truncation is needed for thousands of other results in "f" notation, and thus needed to match the DRT results.
891
892         Here's a performance comparision using a JSC release build and some arbitary numbers:
893         Converting 123.456 using old approach took 95.527100ms. avg 0.000955ms/call.
894         Converting 123.456 using new approach took 28.126953ms. avg 0.000281ms/call.
895
896         Converting 123 using old approach took 85.411133ms. avg 0.000854ms/call.
897         Converting 123 using new approach took 24.190186ms. avg 0.000242ms/call.
898
899         Converting 0.1 using old approach took 92.622803ms. avg 0.000926ms/call.
900         Converting 0.1 using new approach took 23.317871ms. avg 0.000233ms/call.
901
902         Converting 1/i using old approach took 106.893066ms. avg 0.001069ms/call.
903         Converting 1/i using new approach took 27.164062ms. avg 0.000272ms/call.
904
905         For all numbers I've tested in RoundingSignificantFigures mode and 6 digit precision the speedup was at least 250%.
906
907         * JavaScriptCore.exp: Change String::number(double) signature.
908         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Ditto.
909         * runtime/NumberPrototype.cpp:
910         (JSC::numberProtoFuncToFixed): Refactor this into numberToFixedPrecisionString(), move to wtf/dtoa.cpp.
911         (JSC::numberProtoFuncToPrecision): Ditto, refactor this into numberToFixedWidthString.
912         * wtf/dtoa.cpp: Moved fixedWidth/Precision helpers into dtoa, extend numberToFixedPrecisionString(). Add a mode which allows to truncate trailing zeros/decimal point.
913                         to make it possible to use them to generate strings that match the output from String::format("%6.lg"), while using our dtoas rounding facilities.
914         * wtf/dtoa.h:
915         * wtf/dtoa/utils.h: Expose new helper method, which allows us to truncate the result, before generating the output const char*.
916         (WTF::double_conversion::StringBuilder::SetPosition):
917         * wtf/text/WTFString.cpp:
918         (WTF::String::number): Remove String::format("%6.lg") usage! Switch to rounding to six significant figures, while matching the output of String::format.
919         * wtf/text/WTFString.h:
920
921 2011-11-23  Hajime Morrita  <morrita@chromium.org>
922
923         WTF::String has extra WTF_EXPORT_PRIVATE
924         https://bugs.webkit.org/show_bug.cgi?id=72858
925
926         Reviewed by Kevin Ollivier.
927
928         * wtf/text/WTFString.h:
929         (WTF::String::String):
930
931 2011-11-23  Raphael Kubo da Costa  <kubo@profusion.mobi>
932
933         [CMake] Move the top-level logic to the top-level directory.
934         https://bugs.webkit.org/show_bug.cgi?id=72685
935
936         Reviewed by Brent Fulgham.
937
938         * CMakeLists.txt: Point to the right Source/ directory.
939         * wtf/CMakeLists.txt: Ditto.
940
941 2011-11-22  Yuqiang Xian  <yuqiang.xian@intel.com>
942
943         Strength reduction for Mul and Mod operations for known constants in DFG
944         https://bugs.webkit.org/show_bug.cgi?id=72878
945
946         Reviewed by Filip Pizlo.
947
948         Also the code should be commonly shared by both 32_64 and 64.
949
950         * dfg/DFGNode.h:
951         (JSC::DFG::nodeMayOverflow):
952         * dfg/DFGSpeculativeJIT.cpp:
953         (JSC::DFG::fmodAsDFGOperation):
954         (JSC::DFG::SpeculativeJIT::compileInstanceOf):
955         (JSC::DFG::isPowerOfTwo):
956         (JSC::DFG::logTwo):
957         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
958         (JSC::DFG::SpeculativeJIT::compileArithMul):
959         (JSC::DFG::SpeculativeJIT::compileArithMod):
960         * dfg/DFGSpeculativeJIT.h:
961         * dfg/DFGSpeculativeJIT32_64.cpp:
962         (JSC::DFG::SpeculativeJIT::compile):
963         * dfg/DFGSpeculativeJIT64.cpp:
964         (JSC::DFG::SpeculativeJIT::compile):
965
966 2011-11-22  Daniel Bates  <dbates@rim.com>
967
968         Add WTF infrastructure for the BlackBerry port
969         https://bugs.webkit.org/show_bug.cgi?id=72970
970
971         Reviewed by Antonio Gomes.
972
973         * wtf/Assertions.cpp: Added BlackBerry-specific logging directive.
974         * wtf/MathExtras.h:
975         (abs): Added; stdlib doesn't contain abs() on QNX.
976         * wtf/Platform.h: Define WTF_PLATFORM_BLACKBERRY and enable some platform features.
977         * wtf/RandomNumberSeed.h:
978         (WTF::initializeRandomNumberGenerator): For the BlackBerry port, we initialize
979         the bad pseudo random number generator using time(3) before initializing the
980         Mersenne Twister random number generator.
981         * wtf/ThreadingPthreads.cpp:
982         (WTF::createThreadInternal): Added.
983         * wtf/blackberry: Added.
984         * wtf/blackberry/MainThreadBlackBerry.cpp: Added.
985         (WTF::initializeMainThreadPlatform):
986         (WTF::scheduleDispatchFunctionsOnMainThread):
987         * wtf/text/WTFString.h: Added constructor and conversion operator for
988         BlackBerry WebString string object.
989
990 2011-11-22  Sheriff Bot  <webkit.review.bot@gmail.com>
991
992         Unreviewed, rolling out r100988.
993         http://trac.webkit.org/changeset/100988
994         https://bugs.webkit.org/show_bug.cgi?id=72941
995
996         "Broke pixel tests on Chromium-Linux" (Requested by kbalazs on
997         #webkit).
998
999         * JavaScriptCore.gypi:
1000         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1001         * wtf/ParallelJobs.h:
1002         * wtf/ParallelJobsGeneric.cpp:
1003         * wtf/ParallelJobsGeneric.h:
1004         (WTF::ParallelEnvironment::ParallelEnvironment):
1005         (WTF::ParallelEnvironment::execute):
1006         * wtf/Platform.h:
1007
1008 2011-11-21  Balazs Kelemen  <kbalazs@webkit.org>
1009
1010         Enable ParallelJobs by default
1011         https://bugs.webkit.org/show_bug.cgi?id=70032
1012
1013         Reviewed by Zoltan Herczeg.
1014
1015         According to measurements on Mac and Linux it is a
1016         considerable speedup for SVG on multicore.
1017
1018         Remove the ENABLE(PARALLEL_JOBS) guard.
1019         Fix build on Windows and Chromium.
1020
1021         * JavaScriptCore.gypi:  Add the files to the build. It was
1022         missing for the gyp build system.
1023         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1024         Export symbols.
1025         * wtf/ParallelJobs.h:
1026         * wtf/ParallelJobsGeneric.cpp:
1027         (WTF::ParallelEnvironment::ParallelEnvironment):
1028         (WTF::ParallelEnvironment::execute):
1029         Deinline these to avoid exporting a lot of symbols.
1030         These are non-trivial and called only once on a given object
1031         so it doesn't seems to be worthwile to inline them.
1032         Additionally fix a signed-unsigned comparison in the constructor.
1033         * wtf/ParallelJobsGeneric.h:
1034         * wtf/Platform.h:
1035
1036 2011-11-21  Filip Pizlo  <fpizlo@apple.com>
1037
1038         DFG should have richer debug output for CFA and phi processing
1039         https://bugs.webkit.org/show_bug.cgi?id=72922
1040
1041         Reviewed by Gavin Barraclough.
1042         
1043         In the default verbose mode, we now print information about variable
1044         state at the bottom of basic blocks in addition to the top, and we
1045         also print local variable linking. In the verbose propagation mode,
1046         the state of phi processing is dumped more richly and CFA merging (the
1047         most subtle part of CFA) is traced as well.
1048
1049         * dfg/DFGAbstractState.cpp:
1050         (JSC::DFG::AbstractState::endBasicBlock):
1051         (JSC::DFG::AbstractState::mergeStateAtTail):
1052         * dfg/DFGAbstractValue.h:
1053         (JSC::DFG::StructureAbstractValue::dump):
1054         (JSC::DFG::AbstractValue::dump):
1055         * dfg/DFGByteCodeParser.cpp:
1056         (JSC::DFG::ByteCodeParser::processPhiStack):
1057         (JSC::DFG::ByteCodeParser::parse):
1058         * dfg/DFGCommon.h:
1059         (JSC::DFG::NodeIndexTraits::dump):
1060         * dfg/DFGDriver.cpp:
1061         (JSC::DFG::compile):
1062         * dfg/DFGGraph.cpp:
1063         (JSC::DFG::Graph::dump):
1064         * dfg/DFGNode.h:
1065         (JSC::DFG::Node::dumpChildren):
1066         * dfg/DFGOSRExitCompiler.cpp:
1067         * dfg/DFGOperands.h:
1068         (JSC::DFG::OperandValueTraits::dump):
1069         (JSC::DFG::dumpOperands):
1070
1071 2011-11-21  Filip Pizlo  <fpizlo@apple.com>
1072
1073         Showing the data overlay in OpenStreetMap doesn't work, zooming partially broken
1074         https://bugs.webkit.org/show_bug.cgi?id=71505
1075
1076         Reviewed by Gavin Barraclough.
1077         
1078         It turns out that we were corrupting phi nodes in case of overflow. The bug is
1079         really obvious, but producing a test case that causes the badness is hard. Even
1080         when the phi nodes do get corrupt, there's more that has to happen before it
1081         causes incorrect execution - and I wasn't able to reproduce in any kind of
1082         sensible reduced case.
1083
1084         * dfg/DFGByteCodeParser.cpp:
1085         (JSC::DFG::ByteCodeParser::processPhiStack):
1086
1087 2011-11-21  Simon Hausmann  <simon.hausmann@nokia.com>
1088
1089         [Qt] Speed up debug builds.
1090         https://bugs.webkit.org/show_bug.cgi?id=72882
1091
1092         Reviewed by Tor Arne Vestbø.
1093
1094         * Target.pri: Make BUILDING_JavaScriptCore available earlier, so it can be
1095         used by the build system.
1096
1097 2011-11-21  Sheriff Bot  <webkit.review.bot@gmail.com>
1098
1099         Unreviewed, rolling out r100913.
1100         http://trac.webkit.org/changeset/100913
1101         https://bugs.webkit.org/show_bug.cgi?id=72885
1102
1103         "Break Windows build" (Requested by kbalazs on #webkit).
1104
1105         * JavaScriptCore.gypi:
1106         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1107         * wtf/ParallelJobs.h:
1108         * wtf/ParallelJobsGeneric.cpp:
1109         * wtf/ParallelJobsGeneric.h:
1110         (WTF::ParallelEnvironment::ParallelEnvironment):
1111         (WTF::ParallelEnvironment::execute):
1112         * wtf/Platform.h:
1113
1114 2011-11-21  Balazs Kelemen  <kbalazs@webkit.org>
1115
1116         Enable ParallelJobs by default
1117         https://bugs.webkit.org/show_bug.cgi?id=70032
1118
1119         Reviewed by Zoltan Herczeg.
1120
1121         According to measurements on Mac and Linux it is a
1122         considerable speedup for SVG on multicore.
1123
1124         Remove the ENABLE(PARALLEL_JOBS) guard.
1125         Fix build on Windows and Chromium.
1126
1127         * JavaScriptCore.gypi:  Add the files to the build. It was
1128         missing for the gyp build system.
1129         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1130         Export symbols.
1131         * wtf/ParallelJobs.h:
1132         * wtf/ParallelJobsGeneric.cpp:
1133         (WTF::ParallelEnvironment::ParallelEnvironment):
1134         (WTF::ParallelEnvironment::execute):
1135         Deinline these to avoid exporting a lot of symbols.
1136         These are non-trivial and called only once on a given object
1137         so it doesn't seems to be worthwile to inline them.
1138         Additionally fix a signed-unsigned comparison in the constructor.
1139         * wtf/ParallelJobsGeneric.h:
1140         * wtf/Platform.h:
1141
1142 2011-11-21  Andy Wingo  <wingo@igalia.com>
1143
1144         Add .dir-locals.el file for better Emacs defaults
1145         https://bugs.webkit.org/show_bug.cgi?id=72483
1146
1147         Reviewed by Xan Lopez.
1148
1149         * .dir-locals.el: Set appropriate directory-local variables for Emacs.
1150
1151 2011-11-21  Filip Pizlo  <fpizlo@apple.com>
1152         
1153         Another attempt at a build fix.
1154
1155         * dfg/DFGRepatch.h:
1156         (JSC::DFG::dfgResetGetByID):
1157         (JSC::DFG::dfgResetPutByID):
1158
1159 2011-11-20  Filip Pizlo  <fpizlo@apple.com>
1160
1161         Unreviewed interpreter build fix.
1162
1163         * bytecode/CodeBlock.cpp:
1164         (JSC::CodeBlock::finalizeUnconditionally):
1165         * dfg/DFGRepatch.h:
1166
1167 2011-11-20  Yuqiang Xian  <yuqiang.xian@intel.com>
1168
1169         Improve modulo operation on 32bit platforms
1170         https://bugs.webkit.org/show_bug.cgi?id=72501
1171
1172         Reviewed by Filip Pizlo.
1173
1174         Extend softModulo to support X86 and MIPS in baseline JIT.
1175         Apply the same optimization to 32bit DFG JIT.
1176         1% gain on Kraken, tested on Linux Core i7 Nehalem 32bit.
1177
1178         * dfg/DFGSpeculativeJIT.h:
1179         * dfg/DFGSpeculativeJIT32_64.cpp:
1180         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1181         (JSC::DFG::SpeculativeJIT::compile):
1182         * jit/JITArithmetic32_64.cpp:
1183         (JSC::JIT::emit_op_mod):
1184         (JSC::JIT::emitSlow_op_mod):
1185         * jit/JITOpcodes32_64.cpp:
1186         (JSC::JIT::softModulo):
1187         * wtf/Platform.h:
1188
1189 2011-11-18  Filip Pizlo  <fpizlo@apple.com>
1190
1191         Inline caches that refer to otherwise dead objects should be cleared
1192         https://bugs.webkit.org/show_bug.cgi?id=72311
1193
1194         Reviewed by Geoff Garen.
1195
1196         DFG code blocks now participate in the weak reference harvester fixpoint
1197         so that they only consider themselves to be live if either they are
1198         currently executing, or their owner is live and all of their weak references
1199         are live. If not, the relevant code blocks are jettisoned.
1200
1201         Inline caches in both the old JIT and the DFG are now cleared if any of
1202         their references are not marked at the end of a GC.
1203
1204         This is performance-neutral on SunSpider, V8, and Kraken. With the clear-
1205         all-code-on-GC policy that we currently have, it shows a slight reduction
1206         in memory usage. If we turn that policy off, it's pretty easy to come up
1207         with an example program that will cause ToT to experience linear heap
1208         growth, while with this patch, the heap stays small and remains at a
1209         constant size.
1210
1211         * assembler/ARMv7Assembler.h:
1212         (JSC::ARMv7Assembler::readCallTarget):
1213         * assembler/MacroAssemblerARMv7.h:
1214         (JSC::MacroAssemblerARMv7::readCallTarget):
1215         * assembler/MacroAssemblerX86.h:
1216         (JSC::MacroAssemblerX86::readCallTarget):
1217         * assembler/MacroAssemblerX86_64.h:
1218         (JSC::MacroAssemblerX86_64::readCallTarget):
1219         * bytecode/CodeBlock.cpp:
1220         (JSC::CodeBlock::visitAggregate):
1221         (JSC::CodeBlock::performTracingFixpointIteration):
1222         (JSC::CodeBlock::visitWeakReferences):
1223         (JSC::CodeBlock::finalizeUnconditionally):
1224         (JSC::CodeBlock::stronglyVisitStrongReferences):
1225         (JSC::MethodCallLinkInfo::reset):
1226         (JSC::ProgramCodeBlock::jettison):
1227         (JSC::EvalCodeBlock::jettison):
1228         (JSC::FunctionCodeBlock::jettison):
1229         * bytecode/CodeBlock.h:
1230         (JSC::CodeBlock::reoptimize):
1231         (JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan):
1232         * bytecode/Instruction.h:
1233         (JSC::PolymorphicAccessStructureList::visitWeak):
1234         * bytecode/StructureStubInfo.cpp:
1235         (JSC::StructureStubInfo::visitWeakReferences):
1236         * bytecode/StructureStubInfo.h:
1237         (JSC::isGetByIdAccess):
1238         (JSC::isPutByIdAccess):
1239         (JSC::StructureStubInfo::reset):
1240         * dfg/DFGJITCompiler.cpp:
1241         (JSC::DFG::JITCompiler::link):
1242         * dfg/DFGOperations.cpp:
1243         * dfg/DFGRepatch.cpp:
1244         (JSC::DFG::dfgRepatchByIdSelfAccess):
1245         (JSC::DFG::dfgResetGetByID):
1246         (JSC::DFG::dfgResetPutByID):
1247         * dfg/DFGRepatch.h:
1248         (JSC::DFG::dfgResetGetByID):
1249         (JSC::DFG::dfgResetPutByID):
1250         * jit/JIT.h:
1251         * jit/JITPropertyAccess.cpp:
1252         (JSC::JIT::resetPatchGetById):
1253         (JSC::JIT::resetPatchPutById):
1254         * jit/JITPropertyAccess32_64.cpp:
1255         (JSC::JIT::resetPatchGetById):
1256         (JSC::JIT::resetPatchPutById):
1257         * jit/JITStubs.cpp:
1258         (JSC::DEFINE_STUB_FUNCTION):
1259         * jit/JITWriteBarrier.h:
1260         (JSC::JITWriteBarrierBase::clearToMaxUnsigned):
1261
1262 2011-11-20  Filip Pizlo  <fpizlo@apple.com>
1263
1264         Showing the data overlay in OpenStreetMap doesn't work, zooming partially broken
1265         https://bugs.webkit.org/show_bug.cgi?id=71505
1266
1267         Reviewed by Oliver Hunt.
1268         
1269         The bytecode generator was assuming that call_varargs never reuses the base register
1270         (i.e. the function being called) for the result. This is no longer true.
1271
1272         * bytecompiler/BytecodeGenerator.cpp:
1273         (JSC::BytecodeGenerator::emitCallVarargs):
1274         * bytecompiler/BytecodeGenerator.h:
1275         * bytecompiler/NodesCodegen.cpp:
1276         (JSC::ApplyFunctionCallDotNode::emitBytecode):
1277
1278 2011-11-20  Filip Pizlo  <fpizlo@apple.com>
1279
1280         DFG 32_64 should directly store double virtual registers on SetLocal
1281         https://bugs.webkit.org/show_bug.cgi?id=72845
1282
1283         Reviewed by Oliver Hunt.
1284         
1285         2% win on Kraken.
1286
1287         * dfg/DFGSpeculativeJIT32_64.cpp:
1288         (JSC::DFG::SpeculativeJIT::compile):
1289
1290 2011-11-20  Noel Gordon  <noel.gordon@gmail.com>
1291
1292         [chromium] Remove DFG::JITCodeGenerator from the gyp projects
1293         https://bugs.webkit.org/show_bug.cgi?id=72842
1294
1295         Reviewed by Filip Pizlo.
1296
1297         dfg/DFGJITCodeGenerator.{h,cpp} were removed in r100244
1298
1299         * JavaScriptCore.gypi: remove dfg/DFGJITCodeGenerator.{h,cpp}
1300
1301 2011-11-18  Daniel Bates  <dbates@rim.com>
1302
1303         Add CMake build infrastructure for the BlackBerry port
1304         https://bugs.webkit.org/show_bug.cgi?id=72768
1305
1306         Reviewed by Antonio Gomes.
1307
1308         * PlatformBlackBerry.cmake: Added.
1309         * shell/PlatformBlackBerry.cmake: Added.
1310         * wtf/PlatformBlackBerry.cmake: Added.
1311
1312 2011-11-18  Filip Pizlo  <fpizlo@apple.com>
1313
1314         DFG JIT fails speculation on InstanceOf if the base is not an object
1315         https://bugs.webkit.org/show_bug.cgi?id=72709
1316
1317         Reviewed by Geoff Garen.
1318         
1319         InstanceOf already leverages the fact that we only allow the default
1320         hasInstance implementation. So, if the base is predicted to possibly
1321         be not an object and the CFA has not yet proven otherwise, InstanceOf
1322         will abstain from speculating cell and instead return false if the
1323         base is not a cell.
1324         
1325         This appears to be a 1% speed-up on V8 on the V8 harness. 3-4% or so
1326         speed-up in earley-boyer. Neutral according to bencher on SunSpider,
1327         V8, and Kraken. In 32-bit, it's a 0.5% win on SunSpider and a 1.9%
1328         win on V8 even on my harness, due to a 12.5% win on earley-boyer.
1329         
1330         I also took this opportunity to make the code for InstanceOf common
1331         between the two JITs. This was partially successful, in that the
1332         "common code" has a bunch of #if's, but overall it seems like a code
1333         size reduction.
1334
1335         * dfg/DFGAbstractState.cpp:
1336         (JSC::DFG::AbstractState::execute):
1337         * dfg/DFGSpeculativeJIT.cpp:
1338         (JSC::DFG::SpeculativeJIT::compileInstanceOfForObject):
1339         (JSC::DFG::SpeculativeJIT::compileInstanceOf):
1340         * dfg/DFGSpeculativeJIT.h:
1341         * dfg/DFGSpeculativeJIT32_64.cpp:
1342         (JSC::DFG::SpeculativeJIT::compile):
1343         * dfg/DFGSpeculativeJIT64.cpp:
1344         (JSC::DFG::SpeculativeJIT::compile):
1345
1346 2011-11-18  Mark Hahnenberg  <mhahnenberg@apple.com>
1347
1348         Forgot to completely de-virtualize isDynamicScope
1349         https://bugs.webkit.org/show_bug.cgi?id=72763
1350
1351         Reviewed by Darin Adler.
1352
1353         * runtime/JSActivation.h: Removed virtual keyword.
1354
1355 2011-11-18  Filip Pizlo  <fpizlo@apple.com>
1356
1357         Crash in JSC::DFG::OSRExitCompiler::compileExit(JSC::DFG::OSRExit const&, JSC::DFG::SpeculationRecovery*)
1358         https://bugs.webkit.org/show_bug.cgi?id=72292
1359
1360         Reviewed by Darin Adler.
1361         
1362         Fix this for 32_64.
1363
1364         * dfg/DFGOSRExitCompiler32_64.cpp:
1365         (JSC::DFG::OSRExitCompiler::compileExit):
1366
1367 2011-11-18  Mark Hahnenberg  <mhahnenberg@apple.com>
1368
1369         De-virtualize ExecutableBase::intrinsic
1370         https://bugs.webkit.org/show_bug.cgi?id=72548
1371
1372         Reviewed by Oliver Hunt.
1373
1374         * runtime/Executable.cpp:
1375         (JSC::ExecutableBase::intrinsic): Dynamic cast to NativeExecutable. If successful, call intrinsic, otherwise return default value. 
1376         * runtime/Executable.h:
1377         * runtime/JSCell.h:
1378         (JSC::jsDynamicCast): Add jsDynamicCast that duplicates the functionality of dynamic_cast in C++ but uses ClassInfo
1379         rather than requiring C++ RTTI.
1380
1381 2011-11-18  Patrick Gansterer  <paroga@webkit.org>
1382
1383         [CMake] Remove duplicate dtoa files from CMakeLists.txt
1384         https://bugs.webkit.org/show_bug.cgi?id=72711
1385
1386         Reviewed by Brent Fulgham.
1387
1388         * wtf/CMakeLists.txt:
1389
1390 2011-11-17  Michael Saboff  <msaboff@apple.com>
1391
1392         [Qt] REGRESSION(r100510): Enable 8 Bit Strings in JavaScriptCore
1393         https://bugs.webkit.org/show_bug.cgi?id=72602
1394
1395         Fixed StringImpl::foldCase by adding return in the case we need to handle
1396         folding of 8 bit strings with Latin-1 characters.
1397
1398         Fixed case where StringImpl::replace was using a char temp instead of an
1399         LChar temp.
1400
1401         Because of the second change, I changed other uses of char or
1402         unsigned char to LChar.
1403
1404         Reviewed by Zoltan Herczeg.
1405
1406         * wtf/text/StringImpl.cpp:
1407         (WTF::StringImpl::upper):
1408         (WTF::StringImpl::foldCase):
1409         (WTF::equal):
1410         (WTF::equalIgnoringCase):
1411         (WTF::StringImpl::replace):
1412
1413 2011-11-17  Patrick Gansterer  <paroga@webkit.org>
1414
1415         [CMake] Move FAST_MALLOC specific lines from Platform*.cmake to CMakeLists.txt
1416         https://bugs.webkit.org/show_bug.cgi?id=72644
1417
1418         Reviewed by Brent Fulgham.
1419
1420         All ports need to do the same determination about fast malloc. Move the CMake code from
1421         platform specific files into the generic one, so that additional ports can reuse it.
1422
1423         * wtf/CMakeLists.txt:
1424         * wtf/PlatformEfl.cmake:
1425         * wtf/PlatformWinCE.cmake:
1426
1427 2011-11-17  Mark Hahnenberg  <mhahnenberg@apple.com>
1428
1429         Add finalizer to JSActivation
1430         https://bugs.webkit.org/show_bug.cgi?id=72575
1431
1432         Reviewed by Geoffrey Garen.
1433
1434         * runtime/JSActivation.cpp:
1435         (JSC::JSActivation::finishCreation): Attach finalize function to objects during creation.
1436         (JSC::JSActivation::finalize):
1437         * runtime/JSActivation.h: Replaced virtual destructor with static finalize function.
1438
1439 2011-11-15  Filip Pizlo  <fpizlo@apple.com>
1440
1441         Code block jettisoning should be part of the GC's transitive closure
1442         https://bugs.webkit.org/show_bug.cgi?id=72467
1443
1444         Reviewed by Geoff Garen.
1445         
1446         Replaced JettisonedCodeBlocks with DFGCodeBlocks. The latter knows about all
1447         DFG code blocks (i.e. those that may be jettisoned, and may have inlined weak
1448         references) and helps track what state each of those code blocks is in during
1449         GC. The state consists of two flags; mayBeExecuting, which tells if the code block
1450         is live from call frames; and isJettisoned, which tells if the code block is
1451         not owned by any executable and thus should be deleted as soon as it is not
1452         mayBeExecuting.
1453         
1454         - Not executing, Not jettisoned: The code block may or may not be reachable from
1455           any executables, but it is owned by an executable, and hence should be
1456           kept alive if its executable is live and if all of its weak references are
1457           live. Otherwise it should be deleted during the current GC cycle, and its
1458           outgoing references should not be scanned.
1459           
1460         - Not executing but jettisoned: The code block should be deleted as soon as
1461           possible and none of its outgoing references should be scanned.
1462           
1463         - Executing but not jettisoned: The code block should be kept alive during this
1464           GC cycle, and all of its outgoing references (including the weak ones)
1465           should be scanned and marked strongly. The mayBeExecuting bit will be cleared at
1466           the end of the GC cycle.
1467           
1468         - Executing and jettisoned: The code block should be kept alive during this
1469           GC cycle, and all of its outgoing references (including the weak ones)
1470           should be scanned and marked strongly. However, on the next GC cycle, it
1471           will have its mayBeExecuting bit cleared and hence it will become a candidate
1472           for immediate deletion provided it is not executing again.
1473
1474         This is performance-neutral.
1475
1476         * CMakeLists.txt:
1477         * GNUmakefile.list.am:
1478         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1479         * JavaScriptCore.xcodeproj/project.pbxproj:
1480         * Target.pri:
1481         * bytecode/CodeBlock.cpp:
1482         (JSC::CodeBlock::~CodeBlock):
1483         * bytecode/CodeBlock.h:
1484         (JSC::CodeBlock::setJITCode):
1485         (JSC::CodeBlock::DFGData::DFGData):
1486         (JSC::DFGCodeBlocks::mark):
1487         * heap/ConservativeRoots.cpp:
1488         (JSC::ConservativeRoots::add):
1489         * heap/ConservativeRoots.h:
1490         * heap/DFGCodeBlocks.cpp: Added.
1491         (JSC::DFGCodeBlocks::DFGCodeBlocks):
1492         (JSC::DFGCodeBlocks::~DFGCodeBlocks):
1493         (JSC::DFGCodeBlocks::jettison):
1494         (JSC::DFGCodeBlocks::clearMarks):
1495         (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
1496         (JSC::DFGCodeBlocks::traceMarkedCodeBlocks):
1497         * heap/DFGCodeBlocks.h: Added.
1498         * heap/Heap.cpp:
1499         (JSC::Heap::jettisonDFGCodeBlock):
1500         (JSC::Heap::markRoots):
1501         (JSC::Heap::collect):
1502         * heap/Heap.h:
1503         * heap/JettisonedCodeBlocks.cpp: Removed.
1504         * heap/JettisonedCodeBlocks.h: Removed.
1505         * interpreter/RegisterFile.cpp:
1506         (JSC::RegisterFile::gatherConservativeRoots):
1507         * interpreter/RegisterFile.h:
1508         * runtime/Executable.cpp:
1509         (JSC::jettisonCodeBlock):
1510
1511 2011-11-16  Filip Pizlo  <fpizlo@apple.com>
1512
1513         Unreviewed, build fix for 32-bit.
1514
1515         * dfg/DFGSpeculativeJIT32_64.cpp:
1516         (JSC::DFG::SpeculativeJIT::compile):
1517
1518 2011-11-16  Geoffrey Garen  <ggaren@apple.com>
1519
1520         Some CachedCall cleanup, in preparation for reversing argument order.
1521
1522         Reviewed by Gavin Barraclough.
1523
1524         * bytecode/CodeBlock.cpp:
1525         (JSC::CodeBlock::stronglyVisitWeakReferences): A build fix for the interpreter,
1526         so I can test it.
1527
1528         * interpreter/CachedCall.h:
1529         (JSC::CachedCall::CachedCall): Renamed argCount to argumentCount because
1530         we are not that desperate for character saving.
1531
1532         (JSC::CachedCall::setThis):
1533         (JSC::CachedCall::setArgument): Adopted new 0-based argument indexing for
1534         CallFrameClosure.
1535
1536         * interpreter/CallFrameClosure.h:
1537         (JSC::CallFrameClosure::setThis):
1538         (JSC::CallFrameClosure::setArgument):
1539         (JSC::CallFrameClosure::resetCallFrame): Provide 0-based argument indexing,
1540         with an explicit setter for 'this', since that's how most clients think.
1541
1542         * interpreter/Interpreter.cpp:
1543         (JSC::Interpreter::prepareForRepeatCall):
1544         * interpreter/Interpreter.h: Change argCount to argumentCountIncludingThis,
1545         for clarity.
1546
1547 2011-11-16  Mark Hahnenberg  <mhahnenberg@apple.com>
1548
1549         De-virtualize ScriptExecutable::unlinkCalls
1550         https://bugs.webkit.org/show_bug.cgi?id=72546
1551
1552         Reviewed by Geoffrey Garen.
1553
1554         * runtime/Executable.cpp:
1555         (JSC::FunctionExecutable::~FunctionExecutable): Added an empty explicit virtual destructor to prevent a very odd compilation error
1556         due to the fact that the compiler was trying to generate the implicit inline destructor in every translation unit, some of which 
1557         didn't have complete type information on the things that needed to be destructed in the implicit destructor.
1558         * runtime/Executable.h:
1559         (JSC::EvalExecutable::createStructure): Used new type value from JSType
1560         (JSC::ProgramExecutable::createStructure): Ditto
1561         (JSC::FunctionExecutable::createStructure): Ditto
1562         (JSC::ScriptExecutable::unlinkCalls): Condition upon the type value, cast and call the corresponding unlinkCalls implementation.
1563         * runtime/JSType.h: Added new values for EvalExecutable, ProgramExecutable, and FunctionExecutable.  Remove explicit numbers, since 
1564         that just adds noise to patches and they currently have no significance.
1565
1566 2011-11-16  Filip Pizlo  <fpizlo@apple.com>
1567
1568         JSC::CodeBlock should know which references generated by the DFG are weak
1569         https://bugs.webkit.org/show_bug.cgi?id=72563
1570
1571         Reviewed by Geoff Garen.
1572         
1573         CodeBlock::m_dfgData now tracks weak references and weak reference transitions
1574         (like ephemerons) generated by the DFG. The DFG makes sure to notify the
1575         CodeBlock of all uses of weak references and weak reference transitions.
1576         CodeBlock currently marks them strongly, since the weak marking logic is not
1577         in place, yet.
1578
1579         * bytecode/CodeBlock.cpp:
1580         (JSC::CodeBlock::visitAggregate):
1581         (JSC::CodeBlock::stronglyVisitWeakReferences):
1582         * bytecode/CodeBlock.h:
1583         (JSC::CodeBlock::appendWeakReference):
1584         (JSC::CodeBlock::shrinkWeakReferencesToFit):
1585         (JSC::CodeBlock::appendWeakReferenceTransition):
1586         (JSC::CodeBlock::shrinkWeakReferenceTransitionsToFit):
1587         (JSC::CodeBlock::WeakReferenceTransition::WeakReferenceTransition):
1588         * bytecode/CodeOrigin.h:
1589         (JSC::CodeOrigin::codeOriginOwner):
1590         * dfg/DFGByteCodeParser.cpp:
1591         (JSC::DFG::ByteCodeParser::handleCall):
1592         (JSC::DFG::ByteCodeParser::handleInlining):
1593         (JSC::DFG::ByteCodeParser::parseBlock):
1594         * dfg/DFGJITCompiler.cpp:
1595         (JSC::DFG::JITCompiler::link):
1596         * dfg/DFGJITCompiler.h:
1597         (JSC::DFG::JITCompiler::addWeakReference):
1598         (JSC::DFG::JITCompiler::addWeakReferenceTransition):
1599         (JSC::DFG::JITCompiler::branchWeakPtr):
1600         * dfg/DFGSpeculativeJIT.h:
1601         * dfg/DFGSpeculativeJIT32_64.cpp:
1602         (JSC::DFG::SpeculativeJIT::compile):
1603         * dfg/DFGSpeculativeJIT64.cpp:
1604         (JSC::DFG::SpeculativeJIT::fillJSValue):
1605         (JSC::DFG::SpeculativeJIT::compile):
1606
1607 2011-11-16  Michael Saboff  <msaboff@apple.com>
1608
1609         LayoutTests for Debug Builds Crashes in JavaScriptCore/yarr/YarrInterpreter.cpp(185)
1610         https://bugs.webkit.org/show_bug.cgi?id=72561
1611
1612         Removed #if USE(JSC) and therefore the ASSERT_NOT_REACHED().
1613         Simplified the code in the process.
1614
1615         Reviewed by James Robinson.
1616
1617         * yarr/YarrInterpreter.cpp:
1618         (JSC::Yarr::Interpreter::CharAccess::CharAccess):
1619         (JSC::Yarr::Interpreter::CharAccess::~CharAccess):
1620
1621 2011-11-16  Geoffrey Garen  <ggaren@apple.com>
1622
1623         Interpreter build fixes.
1624
1625         * bytecode/CodeBlock.h:
1626         * interpreter/Interpreter.cpp:
1627         (JSC::Interpreter::privateExecute):
1628
1629 2011-11-16  Patrick Gansterer  <paroga@webkit.org>
1630
1631         Unreviewed. Build fix for !ENABLE(JIT) after r100363.
1632
1633         * bytecode/CodeBlock.h:
1634
1635 2011-11-16  Geoffrey Garen  <ggaren@apple.com>
1636
1637         Rolled back in r100375 and r100385 with 32-bit build fixed.
1638
1639         * dfg/DFGOperations.cpp:
1640         * jit/JITStubs.cpp:
1641         (JSC::DEFINE_STUB_FUNCTION):
1642         * runtime/ArgList.cpp:
1643         (JSC::ArgList::getSlice):
1644         * runtime/ArgList.h:
1645         * runtime/JSArray.cpp:
1646         (JSC::JSArray::finishCreation):
1647         * runtime/JSArray.h:
1648         (JSC::JSArray::create):
1649         * runtime/JSGlobalObject.h:
1650         (JSC::constructArray):
1651
1652 2011-11-16  Filip Pizlo  <fpizlo@apple.com>
1653
1654         DFG global variable CSE mishandles the cross-global-object inlining corner case
1655         https://bugs.webkit.org/show_bug.cgi?id=72542
1656
1657         Reviewed by Geoff Garen.
1658         
1659         Moved code to get the global object for a code origin into CodeBlock, so it is
1660         more broadly accessible. Fixed CSE to compare both the variable number, and the
1661         global object, before deciding to perform elimination.
1662
1663         * bytecode/CodeBlock.h:
1664         (JSC::CodeBlock::globalObjectFor):
1665         * dfg/DFGAssemblyHelpers.h:
1666         (JSC::DFG::AssemblyHelpers::globalObjectFor):
1667         * dfg/DFGPropagator.cpp:
1668         (JSC::DFG::Propagator::globalVarLoadElimination):
1669         (JSC::DFG::Propagator::performNodeCSE):
1670
1671 2011-11-16  Michael Saboff  <msaboff@apple.com>
1672
1673         Enable 8 Bit Strings in JavaScriptCore
1674         https://bugs.webkit.org/show_bug.cgi?id=71337
1675
1676         This patch turns on 8 bit strings in StringImpl and enables
1677         their use in JavaScriptCore. Some of the changes are to
1678         turn on code that had been staged (Lexer.cpp, Identifier.cpp,
1679         SmallStrings.cpp and some of StringImpl.{h,cpp}).
1680         Other changes are minor fixes to make 8 bit strings work
1681         (UString.h, StringImpl::getData16SlowCase()).
1682         Changed StringBuffer to be a templated class based on character
1683         type.  This change rippled into WebCore code as well.
1684
1685         Reviewed by Geoffrey Garen.
1686
1687         * JavaScriptCore.exp:
1688         * parser/Lexer.cpp:
1689         (JSC::::append8): Changed to use 8 bit buffers.
1690         (JSC::::parseIdentifier): Changed to use 8 bit buffers.
1691         (JSC::::parseString): Changed to use 8 bit buffers.
1692         * runtime/Identifier.cpp:
1693         (JSC::IdentifierCStringTranslator::translate): 8 bit version keeps data 8 bit
1694         (JSC::Identifier::toUInt32FromCharacters): Templated helper.
1695         (JSC::Identifier::toUInt32): Added 8 bit optimized path.
1696         * runtime/SmallStrings.cpp:
1697         (JSC::SmallStringsStorage::SmallStringsStorage): Changed to be 8 bit strings
1698         * runtime/UString.h:
1699         (JSC::UString::characters): Now calls StringImpl::characters()
1700         * wtf/Forward.h:
1701         * wtf/text/StringBuffer.h: Made StringBuffer a template base on character type.
1702         (WTF::StringBuffer::StringBuffer):
1703         (WTF::StringBuffer::characters):
1704         (WTF::StringBuffer::release):
1705         * wtf/text/StringImpl.cpp:
1706         (WTF::StringImpl::create):
1707         (WTF::StringImpl::getData16SlowCase): Fixed null terminated case.
1708         (WTF::StringImpl::removeCharacters): Added 8 bit path.
1709         (WTF::StringImpl::simplifyMatchedCharactersToSpace):
1710         (WTF::StringImpl::simplifyWhiteSpace):
1711         (WTF::equal): Removed bug from code copied from null terminated version.
1712         (WTF::StringImpl::adopt): Added 8 bit path.
1713         (WTF::StringImpl::createWithTerminatingNullCharacter): Fixed 8 bi flag propagation.
1714         * wtf/text/StringImpl.h:
1715         (WTF::StringImpl::StringImpl): Added new 8 bit constructor.
1716         (WTF::StringImpl::characters8): Removed ASSERT_NOT_REACHED().
1717         (WTF::getCharacters<LChar>): Added templated accessor for 8 bit strings.
1718         (WTF::getCharacters<UChar>): Added templated accessor for 16 bit strings.
1719         * wtf/text/WTFString.h:
1720         (WTF::String::adopt): Changed to use StringBuffer template.
1721
1722 2011-11-16  Mark Hahnenberg  <mhahnenberg@apple.com>
1723
1724         De-virtualize ExecutableBase::clearCodeVirtual
1725         https://bugs.webkit.org/show_bug.cgi?id=72337
1726
1727         Reviewed by Darin Adler.
1728
1729         Added static finalize functions to the subclasses of ExecutableBase that provide an implementation 
1730         of clearCodeVirtual, changed all of the clearCodeVirtual methods to non-virtual clearCode method,
1731         and had the finalize functions call the corresponding clearCode methods.
1732
1733         * runtime/Executable.cpp:
1734         (JSC::ExecutableBase::clearCode):
1735         (JSC::NativeExecutable::finalize):
1736         (JSC::EvalExecutable::finalize):
1737         (JSC::EvalExecutable::clearCode):
1738         (JSC::ProgramExecutable::finalize):
1739         (JSC::ProgramExecutable::clearCode):
1740         (JSC::FunctionExecutable::discardCode):
1741         (JSC::FunctionExecutable::finalize):
1742         (JSC::FunctionExecutable::clearCode):
1743         * runtime/Executable.h:
1744         (JSC::ExecutableBase::finishCreation):
1745         (JSC::NativeExecutable::create):
1746         (JSC::EvalExecutable::create):
1747         (JSC::ProgramExecutable::create):
1748         (JSC::FunctionExecutable::create):
1749
1750 2011-11-16  Yusuke Suzuki  <utatane.tea@gmail.com>
1751
1752         String new RegExp('\n').toString() returns is invalid RegularExpressionLiteral
1753         https://bugs.webkit.org/show_bug.cgi?id=71572
1754
1755         Reviewed by Gavin Barraclough and Darin Adler.
1756
1757         * runtime/RegExpObject.cpp:
1758         (JSC::regExpObjectSource):
1759
1760 2011-11-16  Darin Adler  <darin@apple.com>
1761
1762         Specialize HashTraits for OwnPtr to use PassOwnPtr and raw pointer
1763         https://bugs.webkit.org/show_bug.cgi?id=72475
1764
1765         Reviewed by Adam Roben.
1766
1767         * wtf/HashTraits.h: Specialize HashTraits for OwnPtr.
1768         Do overloads so we can pass a nullptr and also be sure to get the
1769         raw pointer type from the OwnPtr template so we handle both forms
1770         of OwnPtr: OwnPtr<T> and OwnPtr<T*>.
1771
1772 2011-11-16  Simon Hausmann  <simon.hausmann@nokia.com>
1773
1774         [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
1775
1776         Reviewed by Tor Arne Vestbø.
1777
1778         * Target.pri: Eliminate duplicated symbol stuff that lives now in default_post.prf.
1779
1780 2011-11-16  Simon Hausmann  <simon.hausmann@nokia.com>
1781
1782         Unreviewed, rolling out r100266.
1783         http://trac.webkit.org/changeset/100266
1784
1785         Broke WTR.
1786
1787         * Target.pri:
1788
1789 2011-11-16  Darin Adler  <darin@apple.com>
1790
1791         Add a "pass type" and "peek type" concept to HashTraits
1792         https://bugs.webkit.org/show_bug.cgi?id=72473
1793
1794         Reviewed by Filip Pizlo.
1795
1796         * wtf/HashTraits.h: Added the pass type and peek type.
1797         For OwnPtr, the pass type will be PassOwnPtr and the peek
1798         type will be a raw pointer.
1799
1800 2011-11-16  Darin Adler  <darin@apple.com>
1801
1802         Fix some hash traits that don't derive from the base hash traits
1803         https://bugs.webkit.org/show_bug.cgi?id=72470
1804
1805         Reviewed by Filip Pizlo.
1806
1807         Hash traits structures need to derive from the base hash traits in
1808         HashTraits.h, but some were not. This is needed for compatibility with
1809         some additional traits we will be adding to make OwnPtr work with HashMap.
1810
1811         * runtime/Identifier.h: Make IdentifierMapIndexHashTraits derive from
1812         HashTraits<int>. This enabled removal of all the members except for the
1813         ones that control the empty value, because this is otherwise the same
1814         as the standard int hash.
1815
1816         * runtime/SymbolTable.h: Changed SymbolTableIndexHashTraits to derive
1817         from HashTraits<SymbolTableEntry> and removed redundant members.
1818
1819 2011-11-15  Sheriff Bot  <webkit.review.bot@gmail.com>
1820
1821         Unreviewed, rolling out r100375 and r100385.
1822         http://trac.webkit.org/changeset/100375
1823         http://trac.webkit.org/changeset/100385
1824         https://bugs.webkit.org/show_bug.cgi?id=72465
1825
1826         They broke 32 bit builds on Qt (Requested by ossy on #webkit).
1827
1828         * dfg/DFGOperations.cpp:
1829         * jit/JITStubs.cpp:
1830         (JSC::DEFINE_STUB_FUNCTION):
1831         * runtime/ArgList.cpp:
1832         (JSC::ArgList::getSlice):
1833         * runtime/ArgList.h:
1834         (JSC::ArgList::ArgList):
1835         * runtime/JSArray.cpp:
1836         * runtime/JSArray.h:
1837         * runtime/JSGlobalObject.h:
1838
1839 2011-11-15  George Staikos  <staikos@webkit.org>
1840
1841         Remove the guard page from the addressable stack region on QNX.
1842         https://bugs.webkit.org/show_bug.cgi?id=72455
1843
1844         Reviewed by Daniel Bates.
1845
1846         * wtf/StackBounds.cpp:
1847         (WTF::StackBounds::initialize):
1848
1849 2011-11-15  Michael Saboff  <msaboff@apple.com>
1850
1851         Towards 8 bit Strings - Update utf8() and ascii() methods for 8 bit strings
1852         https://bugs.webkit.org/show_bug.cgi?id=72323
1853
1854         Added 8 bit optimized paths for String and UString ascii() and utf8() methods.
1855
1856         Added String::characters8(), characters16() and is8Bit() helper methods.
1857
1858         Added an new Unicode::convertLatin1ToUTF8() method that works on
1859         LChar (8 bit) strings that is a stripped down version of convertUTF16ToUTF8().
1860
1861         Reviewed by Geoff Garen.
1862
1863         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1864         * runtime/UString.cpp:
1865         (JSC::UString::utf8):
1866         * wtf/text/WTFString.cpp:
1867         (WTF::String::ascii):
1868         (WTF::String::utf8):
1869         * wtf/text/WTFString.h:
1870         (WTF::String::characters8):
1871         (WTF::String::characters16):
1872         (WTF::String::is8Bit):
1873         (WTF::LChar):
1874         (WTF::UChar):
1875         * wtf/unicode/UTF8.cpp:
1876         (WTF::Unicode::convertLatin1ToUTF8):
1877         * wtf/unicode/UTF8.h:
1878         * wtf/unicode/Unicode.h:
1879
1880 2011-11-15  Darin Adler  <darin@apple.com>
1881
1882         REGRESSION (r98887): ParserArena and Keywords leaking
1883         https://bugs.webkit.org/show_bug.cgi?id=72428
1884
1885         Reviewed by Sam Weinig.
1886
1887         * parser/Lexer.h: Made Keywords destructor public since OwnPtr and PassOwnPtr
1888         need to be able to destroy it.
1889
1890         * parser/Parser.cpp:
1891         (JSC::Parser::Parser): Use get now that parserArena is an OwnPtr.
1892
1893         * runtime/JSGlobalData.cpp:
1894         (JSC::JSGlobalData::JSGlobalData): Use adoptPtr to initialize OwnPtr members.
1895
1896         * runtime/JSGlobalData.h: Make parserArena and keywords be OwnPtr.
1897
1898 2011-11-15  Geoffrey Garen  <ggaren@apple.com>
1899
1900         Removed another use of ArgList that baked in the assumption that arguments
1901         are forward in the regiter file.
1902
1903         Reviewed by Sam Weinig.
1904
1905         * dfg/DFGOperations.cpp:
1906         * jit/JITStubs.cpp:
1907         (JSC::DEFINE_STUB_FUNCTION): Use our new array creation API, instead of
1908         working through ArgList.
1909
1910         * runtime/ArgList.h: Removed!
1911
1912 2011-11-15  Geoffrey Garen  <ggaren@apple.com>
1913
1914         Removed a use of ArgList that baked in the assumption that arguments
1915         are forward in the regiter file.
1916
1917         Reviewed by Sam Weinig.
1918
1919         * dfg/DFGOperations.cpp:
1920         * jit/JITStubs.cpp:
1921         (JSC::DEFINE_STUB_FUNCTION): Use new API.
1922
1923         * runtime/ArgList.cpp:
1924         (JSC::ArgList::getSlice): No need to provide an arbitrary constructor --
1925         getSlice can do the right thing by using its rights to private data.
1926
1927         * runtime/ArgList.h: Removed constructor that took a forward-contiguous
1928         set of arguments.
1929
1930         * runtime/JSArray.cpp:
1931         (JSC::JSArray::finishCreation):
1932         * runtime/JSArray.h:
1933         (JSC::JSArray::create):
1934         * runtime/JSGlobalObject.h:
1935         (JSC::constructArray): Added explicit support for creating an array from
1936         a pre-allocated set of values, so we could stop relying on the ArgList
1937         API we want to remove.
1938
1939 2011-11-15  Filip Pizlo  <fpizlo@apple.com>
1940
1941         Crash in JSC::DFG::OSRExitCompiler::compileExit(JSC::DFG::OSRExit const&, JSC::DFG::SpeculationRecovery*)
1942         https://bugs.webkit.org/show_bug.cgi?id=72292
1943
1944         Reviewed by Geoff Garen.
1945         
1946         We need to be careful about how we look for the baseline CodeBlock if we're lazy-compiling
1947         an OSR exit after our CodeBlock has been jettisoned. In short, use CodeBlock::baselineVersion()
1948         instead of CodeBlock::alternative().
1949         
1950         No performance effect.
1951         
1952         No tests because all of our heuristics work very hard to make sure that this never happens in
1953         the first place. OSR exits are rare by design, and jettisoning of CodeBlocks (i.e. recompilation)
1954         is even rarer. Furthermore, OSR exits after a CodeBlock has been jettisoned is rarer still
1955         because the whole point of jettisoning is to bring the probability of future OSR exits to as
1956         close to zero as possible. But even that isn't enough to trigger this bug; it requires the OSR
1957         exit after a jettison to be the first of its kind; our whole design tries to ensure that
1958         CodeBlocks tend to OSR exit at a handful (i.e. 1 in most cases) of points, and since jettisoning
1959         is triggered by OSR, in most sane cases the OSR exits after jettison will not require lazy OSR
1960         compilation. So this is a truly evil case, and any test for it would be quite fragile.
1961
1962         * bytecode/CodeBlock.h:
1963         (JSC::CodeBlock::specializationKind):
1964         (JSC::CodeBlock::largeFailCountThreshold):
1965         (JSC::CodeBlock::largeFailCountThresholdForLoop):
1966         * dfg/DFGAssemblyHelpers.h:
1967         (JSC::DFG::AssemblyHelpers::AssemblyHelpers):
1968         (JSC::DFG::AssemblyHelpers::baselineCodeBlockFor):
1969         (JSC::DFG::AssemblyHelpers::baselineCodeBlock):
1970         * dfg/DFGDriver.cpp:
1971         (JSC::DFG::compile):
1972         * dfg/DFGOSRExitCompiler.cpp:
1973         * dfg/DFGOSRExitCompiler64.cpp:
1974         (JSC::DFG::OSRExitCompiler::compileExit):
1975
1976 2011-11-15  Geoffrey Garen  <ggaren@apple.com>
1977
1978         Use MarkedArgumentBuffer to avoid making assumptions about argument order
1979         https://bugs.webkit.org/show_bug.cgi?id=72418
1980
1981         Reviewed by Sam Weinig.
1982         
1983         A step toward reversing the argument order.
1984
1985         * runtime/JSONObject.cpp:
1986         (JSC::Stringifier::toJSON):
1987         (JSC::Stringifier::appendStringifiedValue):
1988         (JSC::Walker::callReviver): Don't assume that ArgList wants to point
1989         at arguments in forward order. Instead, use MarkedArgumentBuffer, which
1990         will make the decision for us.
1991
1992 2011-11-15  Filip Pizlo  <fpizlo@apple.com>
1993
1994         DFG should distinguish between constants in the constant pool and weak
1995         constants added as artifacts of code generation
1996         https://bugs.webkit.org/show_bug.cgi?id=72367
1997
1998         Reviewed by Geoff Garen.
1999         
2000         Added the notion of a WeakJSConstant, which is like a JSConstant except that
2001         it can only refer to JSCell*. Currently all WeakJSConstants are also backed
2002         by constants in the constant pool, since weak references originated from
2003         machine code are not yet properly handled.
2004         
2005         Replaced CheckMethod, and MethodCheckData, with a combination of WeakJSConstant
2006         and CheckStructure. This results in improved CSE, leading to a 1% win on V8.
2007
2008         * dfg/DFGAbstractState.cpp:
2009         (JSC::DFG::AbstractState::execute):
2010         * dfg/DFGByteCodeParser.cpp:
2011         (JSC::DFG::ByteCodeParser::cellConstant):
2012         (JSC::DFG::ByteCodeParser::prepareToParseBlock):
2013         (JSC::DFG::ByteCodeParser::parseBlock):
2014         * dfg/DFGGraph.cpp:
2015         (JSC::DFG::Graph::dump):
2016         * dfg/DFGGraph.h:
2017         (JSC::DFG::Graph::getJSConstantPrediction):
2018         (JSC::DFG::Graph::valueOfJSConstant):
2019         (JSC::DFG::Graph::valueOfInt32Constant):
2020         (JSC::DFG::Graph::valueOfNumberConstant):
2021         (JSC::DFG::Graph::valueOfBooleanConstant):
2022         * dfg/DFGNode.h:
2023         (JSC::DFG::Node::isWeakConstant):
2024         (JSC::DFG::Node::hasConstant):
2025         (JSC::DFG::Node::weakConstant):
2026         (JSC::DFG::Node::valueOfJSConstant):
2027         (JSC::DFG::Node::isInt32Constant):
2028         (JSC::DFG::Node::isDoubleConstant):
2029         (JSC::DFG::Node::isNumberConstant):
2030         (JSC::DFG::Node::isBooleanConstant):
2031         (JSC::DFG::Node::hasIdentifier):
2032         * dfg/DFGPropagator.cpp:
2033         (JSC::DFG::Propagator::propagateNodePredictions):
2034         (JSC::DFG::Propagator::performNodeCSE):
2035         * dfg/DFGSpeculativeJIT32_64.cpp:
2036         (JSC::DFG::SpeculativeJIT::compile):
2037         * dfg/DFGSpeculativeJIT64.cpp:
2038         (JSC::DFG::SpeculativeJIT::compile):
2039
2040 2011-11-15  Michael Saboff  <msaboff@apple.com>
2041
2042         Towards 8 bit Strings - Initial JS String Tuning
2043         https://bugs.webkit.org/show_bug.cgi?id=72326
2044
2045         Added 8 bit optimized paths for the methods below.
2046
2047         Reviewed by Geoffrey Garen.
2048
2049         * runtime/JSString.h:
2050         (JSC::jsSubstring8):
2051         * runtime/StringPrototype.cpp:
2052         (JSC::jsSpliceSubstrings):
2053         (JSC::jsSpliceSubstringsWithSeparators):
2054         (JSC::stringProtoFuncReplace):
2055         (JSC::stringProtoFuncCharCodeAt):
2056
2057 2011-11-15  Gavin Barraclough  <barraclough@apple.com>
2058
2059         Result of Error.prototype.toString not ES5 conformant
2060         https://bugs.webkit.org/show_bug.cgi?id=70889
2061
2062         Reviewed by Oliver Hunt.
2063
2064         * runtime/ErrorPrototype.cpp:
2065         (JSC::errorProtoFuncToString):
2066
2067 2011-11-15  Simon Hausmann  <simon.hausmann@nokia.com>
2068
2069         [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
2070
2071         Reviewed by Tor Arne Vestbø.
2072
2073         * Target.pri: Eliminate duplicated symbol stuff that lives now in default_post.prf.
2074
2075 2011-11-15  Yuqiang Xian  <yuqiang.xian@intel.com>
2076
2077         Remove DFGJITCompilerInlineMethods
2078         https://bugs.webkit.org/show_bug.cgi?id=72366
2079
2080         Reviewed by Filip Pizlo.
2081
2082         Those methods are actually seldom used. Modify the few such places and
2083         remove DFGJITCompilerInlineMethods stuffs totally.
2084
2085         * GNUmakefile.list.am:
2086         * JavaScriptCore.xcodeproj/project.pbxproj:
2087         * dfg/DFGJITCompiler.h:
2088         (JSC::DFG::JITCompiler::addressOfDoubleConstant):
2089         * dfg/DFGJITCompilerInlineMethods.h: Removed.
2090         * dfg/DFGSpeculativeJIT.cpp:
2091         * dfg/DFGSpeculativeJIT.h:
2092         (JSC::DFG::SpeculativeJIT::silentFillFPR):
2093         * dfg/DFGSpeculativeJIT32_64.cpp:
2094         (JSC::DFG::SpeculativeJIT::fillJSValue):
2095         (JSC::DFG::SpeculativeJIT::cachedGetMethod):
2096
2097 2011-11-14  Filip Pizlo  <fpizlo@apple.com>
2098
2099         DFG::SpeculativeJIT and DFG::JITCodeGenerator should be combined
2100         https://bugs.webkit.org/show_bug.cgi?id=72348
2101
2102         Reviewed by Gavin Barraclough.
2103         
2104         Moved all of JITCodeGenerator into SpeculativeJIT.
2105
2106         * CMakeLists.txt:
2107         * GNUmakefile.list.am:
2108         * JavaScriptCore.xcodeproj/project.pbxproj:
2109         * Target.pri:
2110         * dfg/DFGJITCodeGenerator.cpp: Removed.
2111         * dfg/DFGJITCodeGenerator.h: Removed.
2112         * dfg/DFGJITCodeGenerator32_64.cpp: Removed.
2113         * dfg/DFGJITCodeGenerator64.cpp: Removed.
2114         * dfg/DFGJITCompiler.cpp:
2115         * dfg/DFGRepatch.cpp:
2116         (JSC::DFG::generateProtoChainAccessStub):
2117         (JSC::DFG::tryCacheGetByID):
2118         (JSC::DFG::tryCachePutByID):
2119         * dfg/DFGSpeculativeJIT.cpp:
2120         (JSC::DFG::SpeculativeJIT::clearGenerationInfo):
2121         (JSC::DFG::SpeculativeJIT::fillStorage):
2122         (JSC::DFG::SpeculativeJIT::useChildren):
2123         (JSC::DFG::SpeculativeJIT::isStrictInt32):
2124         (JSC::DFG::SpeculativeJIT::isKnownInteger):
2125         (JSC::DFG::SpeculativeJIT::isKnownNumeric):
2126         (JSC::DFG::SpeculativeJIT::isKnownCell):
2127         (JSC::DFG::SpeculativeJIT::isKnownNotCell):
2128         (JSC::DFG::SpeculativeJIT::isKnownNotInteger):
2129         (JSC::DFG::SpeculativeJIT::isKnownNotNumber):
2130         (JSC::DFG::SpeculativeJIT::isKnownBoolean):
2131         (JSC::DFG::SpeculativeJIT::writeBarrier):
2132         (JSC::DFG::SpeculativeJIT::markCellCard):
2133         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompare):
2134         (JSC::DFG::SpeculativeJIT::nonSpeculativeStrictEq):
2135         (JSC::DFG::dataFormatString):
2136         (JSC::DFG::SpeculativeJIT::dump):
2137         (JSC::DFG::SpeculativeJIT::checkConsistency):
2138         (JSC::DFG::GPRTemporary::GPRTemporary):
2139         (JSC::DFG::GPRTemporary::adopt):
2140         (JSC::DFG::FPRTemporary::FPRTemporary):
2141         * dfg/DFGSpeculativeJIT.h:
2142         (JSC::DFG::SpeculativeJIT::at):
2143         (JSC::DFG::SpeculativeJIT::lock):
2144         (JSC::DFG::SpeculativeJIT::unlock):
2145         (JSC::DFG::SpeculativeJIT::canReuse):
2146         (JSC::DFG::SpeculativeJIT::reuse):
2147         (JSC::DFG::SpeculativeJIT::allocate):
2148         (JSC::DFG::SpeculativeJIT::tryAllocate):
2149         (JSC::DFG::SpeculativeJIT::fprAllocate):
2150         (JSC::DFG::SpeculativeJIT::isFilled):
2151         (JSC::DFG::SpeculativeJIT::isFilledDouble):
2152         (JSC::DFG::SpeculativeJIT::use):
2153         (JSC::DFG::SpeculativeJIT::selectScratchGPR):
2154         (JSC::DFG::SpeculativeJIT::silentSpillGPR):
2155         (JSC::DFG::SpeculativeJIT::silentSpillFPR):
2156         (JSC::DFG::SpeculativeJIT::silentFillGPR):
2157         (JSC::DFG::SpeculativeJIT::silentFillFPR):
2158         (JSC::DFG::SpeculativeJIT::silentSpillAllRegisters):
2159         (JSC::DFG::SpeculativeJIT::silentFillAllRegisters):
2160         (JSC::DFG::SpeculativeJIT::boxDouble):
2161         (JSC::DFG::SpeculativeJIT::unboxDouble):
2162         (JSC::DFG::SpeculativeJIT::spill):
2163         (JSC::DFG::SpeculativeJIT::isConstant):
2164         (JSC::DFG::SpeculativeJIT::isJSConstant):
2165         (JSC::DFG::SpeculativeJIT::isInt32Constant):
2166         (JSC::DFG::SpeculativeJIT::isDoubleConstant):
2167         (JSC::DFG::SpeculativeJIT::isNumberConstant):
2168         (JSC::DFG::SpeculativeJIT::isBooleanConstant):
2169         (JSC::DFG::SpeculativeJIT::isFunctionConstant):
2170         (JSC::DFG::SpeculativeJIT::valueOfInt32Constant):
2171         (JSC::DFG::SpeculativeJIT::valueOfNumberConstant):
2172         (JSC::DFG::SpeculativeJIT::addressOfDoubleConstant):
2173         (JSC::DFG::SpeculativeJIT::valueOfJSConstant):
2174         (JSC::DFG::SpeculativeJIT::valueOfBooleanConstant):
2175         (JSC::DFG::SpeculativeJIT::valueOfFunctionConstant):
2176         (JSC::DFG::SpeculativeJIT::isNullConstant):
2177         (JSC::DFG::SpeculativeJIT::identifier):
2178         (JSC::DFG::SpeculativeJIT::flushRegisters):
2179         (JSC::DFG::SpeculativeJIT::isFlushed):
2180         (JSC::DFG::SpeculativeJIT::valueOfJSConstantAsImmPtr):
2181         (JSC::DFG::SpeculativeJIT::bitOp):
2182         (JSC::DFG::SpeculativeJIT::shiftOp):
2183         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
2184         (JSC::DFG::SpeculativeJIT::addressOfCallData):
2185         (JSC::DFG::SpeculativeJIT::tagOfCallData):
2186         (JSC::DFG::SpeculativeJIT::payloadOfCallData):
2187         (JSC::DFG::SpeculativeJIT::integerResult):
2188         (JSC::DFG::SpeculativeJIT::noResult):
2189         (JSC::DFG::SpeculativeJIT::cellResult):
2190         (JSC::DFG::SpeculativeJIT::booleanResult):
2191         (JSC::DFG::SpeculativeJIT::jsValueResult):
2192         (JSC::DFG::SpeculativeJIT::storageResult):
2193         (JSC::DFG::SpeculativeJIT::doubleResult):
2194         (JSC::DFG::SpeculativeJIT::initConstantInfo):
2195         (JSC::DFG::SpeculativeJIT::resetCallArguments):
2196         (JSC::DFG::SpeculativeJIT::addCallArgument):
2197         (JSC::DFG::SpeculativeJIT::setupArguments):
2198         (JSC::DFG::SpeculativeJIT::setupArgumentsExecState):
2199         (JSC::DFG::SpeculativeJIT::setupArgumentsWithExecState):
2200         (JSC::DFG::SpeculativeJIT::setupTwoStubArgs):
2201         (JSC::DFG::SpeculativeJIT::setupStubArguments):
2202         (JSC::DFG::SpeculativeJIT::callOperation):
2203         (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheck):
2204         (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheckSetResult):
2205         (JSC::DFG::SpeculativeJIT::setupResults):
2206         (JSC::DFG::SpeculativeJIT::appendCallSetResult):
2207         (JSC::DFG::SpeculativeJIT::addBranch):
2208         (JSC::DFG::SpeculativeJIT::linkBranches):
2209         (JSC::DFG::SpeculativeJIT::block):
2210         (JSC::DFG::SpeculativeJIT::checkConsistency):
2211         (JSC::DFG::SpeculativeJIT::BranchRecord::BranchRecord):
2212         (JSC::DFG::IntegerOperand::IntegerOperand):
2213         (JSC::DFG::IntegerOperand::~IntegerOperand):
2214         (JSC::DFG::IntegerOperand::index):
2215         (JSC::DFG::IntegerOperand::format):
2216         (JSC::DFG::IntegerOperand::gpr):
2217         (JSC::DFG::IntegerOperand::use):
2218         (JSC::DFG::DoubleOperand::DoubleOperand):
2219         (JSC::DFG::DoubleOperand::~DoubleOperand):
2220         (JSC::DFG::DoubleOperand::index):
2221         (JSC::DFG::DoubleOperand::fpr):
2222         (JSC::DFG::DoubleOperand::use):
2223         (JSC::DFG::JSValueOperand::JSValueOperand):
2224         (JSC::DFG::JSValueOperand::~JSValueOperand):
2225         (JSC::DFG::JSValueOperand::index):
2226         (JSC::DFG::JSValueOperand::gpr):
2227         (JSC::DFG::JSValueOperand::jsValueRegs):
2228         (JSC::DFG::JSValueOperand::isDouble):
2229         (JSC::DFG::JSValueOperand::fill):
2230         (JSC::DFG::JSValueOperand::tagGPR):
2231         (JSC::DFG::JSValueOperand::payloadGPR):
2232         (JSC::DFG::JSValueOperand::fpr):
2233         (JSC::DFG::JSValueOperand::use):
2234         (JSC::DFG::StorageOperand::StorageOperand):
2235         (JSC::DFG::StorageOperand::~StorageOperand):
2236         (JSC::DFG::StorageOperand::index):
2237         (JSC::DFG::StorageOperand::gpr):
2238         (JSC::DFG::StorageOperand::use):
2239         (JSC::DFG::GPRTemporary::~GPRTemporary):
2240         (JSC::DFG::GPRTemporary::gpr):
2241         (JSC::DFG::FPRTemporary::~FPRTemporary):
2242         (JSC::DFG::FPRTemporary::fpr):
2243         (JSC::DFG::FPRTemporary::FPRTemporary):
2244         (JSC::DFG::GPRResult::GPRResult):
2245         (JSC::DFG::GPRResult2::GPRResult2):
2246         (JSC::DFG::FPRResult::FPRResult):
2247         (JSC::DFG::FPRResult::lockedResult):
2248         (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
2249         * dfg/DFGSpeculativeJIT32_64.cpp:
2250         (JSC::DFG::SpeculativeJIT::fillInteger):
2251         (JSC::DFG::SpeculativeJIT::fillDouble):
2252         (JSC::DFG::SpeculativeJIT::fillJSValue):
2253         (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToNumber):
2254         (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToInt32):
2255         (JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber):
2256         (JSC::DFG::SpeculativeJIT::nonSpeculativeKnownConstantArithOp):
2257         (JSC::DFG::SpeculativeJIT::nonSpeculativeBasicArithOp):
2258         (JSC::DFG::SpeculativeJIT::cachedGetById):
2259         (JSC::DFG::SpeculativeJIT::cachedPutById):
2260         (JSC::DFG::SpeculativeJIT::cachedGetMethod):
2261         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2262         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2263         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2264         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
2265         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
2266         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
2267         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
2268         (JSC::DFG::SpeculativeJIT::emitCall):
2269         * dfg/DFGSpeculativeJIT64.cpp:
2270         (JSC::DFG::SpeculativeJIT::fillInteger):
2271         (JSC::DFG::SpeculativeJIT::fillDouble):
2272         (JSC::DFG::SpeculativeJIT::fillJSValue):
2273         (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToNumber):
2274         (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToInt32):
2275         (JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber):
2276         (JSC::DFG::SpeculativeJIT::nonSpeculativeKnownConstantArithOp):
2277         (JSC::DFG::SpeculativeJIT::nonSpeculativeBasicArithOp):
2278         (JSC::DFG::SpeculativeJIT::cachedGetById):
2279         (JSC::DFG::SpeculativeJIT::cachedPutById):
2280         (JSC::DFG::SpeculativeJIT::cachedGetMethod):
2281         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2282         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2283         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2284         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
2285         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
2286         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
2287         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
2288         (JSC::DFG::SpeculativeJIT::emitCall):
2289         * runtime/JSFunction.h:
2290
2291 2011-11-14  Filip Pizlo  <fpizlo@apple.com>
2292
2293         Weak reference harvesters should run to fixpoint
2294         https://bugs.webkit.org/show_bug.cgi?id=72346
2295
2296         Reviewed by Oliver Hunt.
2297
2298         * heap/Heap.cpp:
2299         (JSC::Heap::markRoots):
2300         * heap/ListableHandler.h:
2301         (JSC::ListableHandler::next):
2302         (JSC::ListableHandler::List::head):
2303         (JSC::ListableHandler::List::removeNext):
2304         (JSC::ListableHandler::List::removeAll):
2305         * heap/MarkStack.cpp:
2306         (JSC::MarkStackThreadSharedData::reset):
2307         (JSC::SlotVisitor::harvestWeakReferences):
2308         * heap/MarkStack.h:
2309         (JSC::MarkStack::isEmpty):
2310
2311 2011-11-14  Oliver Hunt  <oliver@apple.com>
2312
2313         Start migrating typed array impl types to WTF
2314         https://bugs.webkit.org/show_bug.cgi?id=72336
2315
2316         Reviewed by Geoffrey Garen.
2317
2318         Add typed array impls to WTF forwarding header.
2319
2320         * wtf/Forward.h:
2321
2322 2011-11-14  Julien Chaffraix  <jchaffraix@webkit.org>
2323
2324         Add --css-grid-layout to build-webkit and the build systems
2325         https://bugs.webkit.org/show_bug.cgi?id=72320
2326
2327         Reviewed by Ojan Vafai.
2328
2329         * Configurations/FeatureDefines.xcconfig:
2330
2331 2011-11-14  Geoffrey Garen  <ggaren@apple.com>
2332
2333         A little bit of arguments / activation cleanup
2334         https://bugs.webkit.org/show_bug.cgi?id=72339
2335
2336         Reviewed by Gavin Barraclough.
2337         
2338         Renamed copyRegisters => tearOff to match bytecode and other terminology.
2339         
2340         Renamed setActivation => didTearOffActivation to indicate that this is a
2341         notification the object may choose to ignore. Moved "Should I ignore?"
2342         code into the arguments object to avoid duplication elsewhere.
2343
2344         * interpreter/Interpreter.cpp:
2345         (JSC::Interpreter::unwindCallFrame):
2346         (JSC::Interpreter::privateExecute):
2347         (JSC::Interpreter::retrieveArguments):
2348         * jit/JITStubs.cpp:
2349         (JSC::DEFINE_STUB_FUNCTION):
2350         * runtime/Arguments.h:
2351         (JSC::Arguments::createAndTearOff):
2352         (JSC::Arguments::didTearOffActivation):
2353         (JSC::Arguments::finishCreationButDontTearOff):
2354         (JSC::Arguments::finishCreation):
2355         (JSC::Arguments::finishCreationAndTearOff):
2356         (JSC::Arguments::tearOff):
2357
2358         * runtime/JSActivation.h:
2359         (JSC::JSActivation::tearOff): Moved Activation's code into its own header
2360         because that's where it belongs.
2361
2362 2011-11-14  Gavin Barraclough  <barraclough@apple.com>
2363
2364         Should sign the jsc binary
2365         https://bugs.webkit.org/show_bug.cgi?id=72332
2366
2367         Reviewed by David Kilzer.
2368
2369         * Configurations/JSC.xcconfig:
2370         * entitlements.plist: Added.
2371
2372 2011-11-14  Filip Pizlo  <fpizlo@apple.com>
2373
2374         DFG's inline references to objects should be tracked
2375         https://bugs.webkit.org/show_bug.cgi?id=72313
2376
2377         Reviewed by Gavin Barraclough.
2378         
2379         Added a pinCell() method in the parser that currently creates a
2380         dummy constant in CodeBlock. Added calls to pinCell() wherever the
2381         DFG would inline a constant reference that the original code would
2382         not have referred to.
2383         
2384         * dfg/DFGByteCodeParser.cpp:
2385         (JSC::DFG::ByteCodeParser::getCellConstantIndex):
2386         (JSC::DFG::ByteCodeParser::pinCell):
2387         (JSC::DFG::ByteCodeParser::cellConstant):
2388         (JSC::DFG::ByteCodeParser::handleCall):
2389         (JSC::DFG::ByteCodeParser::handleInlining):
2390         (JSC::DFG::ByteCodeParser::parseBlock):
2391
2392 2011-11-14  Filip Pizlo  <fpizlo@apple.com>
2393
2394         DFG put_by_id transition optimizations test the wrong structures
2395         https://bugs.webkit.org/show_bug.cgi?id=72324
2396
2397         Reviewed by Gavin Barraclough.
2398
2399         * dfg/DFGByteCodeParser.cpp:
2400         (JSC::DFG::ByteCodeParser::structureChainIsStillValid):
2401         (JSC::DFG::ByteCodeParser::parseBlock):
2402         * jit/JITPropertyAccess.cpp:
2403         (JSC::JIT::privateCompilePutByIdTransition):
2404
2405 2011-11-14  Michael Saboff  <msaboff@apple.com>
2406
2407         Further changes and cleanup to JSString.h and cpp.
2408
2409         Reviewed by Darin Adler.
2410
2411         * runtime/JSString.cpp:
2412         (JSC::JSString::resolveRope): Change PassRefPtr to RefPtr.  Eliminated exec in slow case calls.
2413         (JSC::JSString::resolveRopeSlowCase8): Darin and I agreed that this should have 8 in name.
2414         (JSC::JSString::resolveRopeSlowCase): Removed exec parameter.
2415         * runtime/JSString.h:
2416
2417 2011-11-14  Adam Barth  <abarth@webkit.org>
2418
2419         DateMath.cpp should not depend on JavaScriptCore
2420         https://bugs.webkit.org/show_bug.cgi?id=71747
2421
2422         Reviewed by Darin Adler.
2423
2424         This patch moves the JSC-specific parts of DateMath into JSDateMath in
2425         JavaScriptCore.  There shouldn't be any behavior change.
2426
2427         * CMakeLists.txt:
2428         * GNUmakefile.list.am:
2429         * JavaScriptCore.gypi:
2430         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2431         * JavaScriptCore.xcodeproj/project.pbxproj:
2432         * Target.pri:
2433         * runtime/DateConstructor.cpp:
2434         * runtime/DateConversion.cpp:
2435         * runtime/DateInstance.cpp:
2436         * runtime/DateInstanceCache.h:
2437         * runtime/DatePrototype.cpp:
2438         * runtime/InitializeThreading.cpp:
2439         * runtime/JSDateMath.cpp: Copied from Source/JavaScriptCore/wtf/DateMath.cpp.
2440         (JSC::timeToMS):
2441         (JSC::msToSeconds):
2442         * runtime/JSDateMath.h: Copied from Source/JavaScriptCore/wtf/DateMath.h.
2443         * wtf/DateMath.cpp:
2444         (WTF::isLeapYear):
2445         (WTF::msToDays):
2446         (WTF::msToMinutes):
2447         (WTF::msToHours):
2448         (WTF::parseDateFromNullTerminatedCharacters):
2449         (WTF::makeRFC2822DateString):
2450         * wtf/DateMath.h:
2451
2452 2011-11-14  Michael Saboff  <msaboff@apple.com>
2453
2454         Towards 8 bit strings - Add 8 bit handling to JSString Ropes
2455         https://bugs.webkit.org/show_bug.cgi?id=72317
2456
2457         Added bit to track that a rope is made up of all 8 bit fibers.
2458         Created an 8 bit path (fast and slow cases) to handle 8 bit 
2459         only ropes.
2460
2461         Reviewed by Oliver Hunt.
2462
2463         * runtime/JSString.cpp:
2464         (JSC::JSString::resolveRope):
2465         (JSC::JSString::resolveRopeSlowCase8):
2466         (JSC::JSString::resolveRopeSlowCase16):
2467         * runtime/JSString.h:
2468         (JSC::RopeBuilder::finishCreation):
2469         (JSC::RopeBuilder::is8Bit):
2470         (JSC::jsSubstring8):
2471
2472 2011-11-14  Geoffrey Garen  <ggaren@apple.com>
2473
2474         A little bit of function call cleanup
2475         https://bugs.webkit.org/show_bug.cgi?id=72314
2476
2477         Reviewed by Oliver Hunt.
2478
2479         * bytecompiler/BytecodeGenerator.cpp:
2480         (JSC::BytecodeGenerator::emitCall): Renamed callFrame to registerOffset
2481         because this value doesn't give you the offset of the callee's call frame.
2482
2483         (JSC::BytecodeGenerator::emitReturn): Tightened to use equality instead
2484         of greater-than. Removed comment since its reasoning was wrong.
2485         
2486         (JSC::BytecodeGenerator::emitConstruct): Updated for rename mentioned above.
2487
2488         (JSC::BytecodeGenerator::isArgumentNumber): Provided a more precise way
2489         to ask this question, giving the bytecode generator more freedom to change
2490         internal implementation details.
2491         
2492         * bytecompiler/BytecodeGenerator.h: Reduced default vector capacity because
2493         16 was overkill.
2494         (JSC::CallArguments::registerOffset): Updated for rename mentioned above.
2495
2496         * bytecompiler/NodesCodegen.cpp:
2497         (JSC::CallArguments::CallArguments):
2498         (JSC::CallArguments::newArgument): Factored out argument allocation into
2499         a helper function, so I can change it later.
2500
2501         (JSC::CallFunctionCallDotNode::emitBytecode):
2502         (JSC::FunctionBodyNode::emitBytecode): Use helper function mentioned above.
2503
2504 2011-11-14  Tony Chang  <tony@chromium.org>
2505
2506         Remove the CSS3_FLEXBOX compile time flag and enable on all ports
2507         https://bugs.webkit.org/show_bug.cgi?id=72196
2508
2509         Reviewed by Ojan Vafai.
2510
2511         * Configurations/FeatureDefines.xcconfig:
2512
2513 2011-11-14  Mark Rowe  <mrowe@apple.com>
2514
2515         <rdar://problem/10424154> testRegExp should not be installed as part of JavaScriptCore
2516
2517         testRegExp and testapi.js were being installed in the JavaScriptCore framework.
2518         As test-only tools they shouldn't be installed there by default, only when
2519         FORCE_TOOL_INSTALL is set to YES.
2520
2521         This patch incorprorates a few related changes:
2522         1) Make the jsc and testRegExp targets be configured via .xcconfig files.
2523         2) Sets up testRegExp so that SKIP_INSTALL is YES by default, and only NO when
2524            FORCE_TOOL_INSTALL is YES.
2525         3) Switches the testapi target to using a script build phase to install testapi.js
2526            so that the installation will be skipped when SKIP_INSTALL is YES. I'm not sure
2527            why this isn't the built-in behavior when a Copy Files build phase has "Copy only
2528            when installing" checked, but it doesn't seem to be.
2529         4) Other random cleanup such as removing a bogus group that refers to files that do
2530            not exist, moving testRegExp.cpp in to the tests group, etc.
2531
2532         Reviewed by Geoff Garen.
2533
2534         * Configurations/JSC.xcconfig: Added.
2535         * Configurations/TestRegExp.xcconfig: Added.
2536         * JavaScriptCore.xcodeproj/project.pbxproj:
2537
2538 2011-11-14  Michael Saboff  <msaboff@apple.com>
2539
2540         Towards 8 bit strings - Add 8 bit paths to StringImpl methods
2541         https://bugs.webkit.org/show_bug.cgi?id=72290
2542
2543         Added 8 bit patchs to StringImpl to number and find methods.
2544
2545         Reviewed by Oliver Hunt.
2546
2547         * wtf/text/StringImpl.cpp:
2548         (WTF::StringImpl::toIntStrict):
2549         (WTF::StringImpl::toUIntStrict):
2550         (WTF::StringImpl::toInt64Strict):
2551         (WTF::StringImpl::toUInt64Strict):
2552         (WTF::StringImpl::toIntPtrStrict):
2553         (WTF::StringImpl::toInt):
2554         (WTF::StringImpl::toUInt):
2555         (WTF::StringImpl::toInt64):
2556         (WTF::StringImpl::toUInt64):
2557         (WTF::StringImpl::toIntPtr):
2558         (WTF::StringImpl::toDouble):
2559         (WTF::StringImpl::toFloat):
2560         (WTF::StringImpl::find):
2561         (WTF::StringImpl::reverseFind):
2562         * wtf/text/WTFString.cpp:
2563         (WTF::toIntegralType):
2564         (WTF::lengthOfCharactersAsInteger):
2565         (WTF::charactersToIntStrict):
2566         (WTF::charactersToUIntStrict):
2567         (WTF::charactersToInt64Strict):
2568         (WTF::charactersToUInt64Strict):
2569         (WTF::charactersToIntPtrStrict):
2570         (WTF::charactersToInt):
2571         (WTF::charactersToUInt):
2572         (WTF::charactersToInt64):
2573         (WTF::charactersToUInt64):
2574         (WTF::charactersToIntPtr):
2575         (WTF::toDoubleType):
2576         (WTF::charactersToDouble):
2577         (WTF::charactersToFloat):
2578         * wtf/text/WTFString.h:
2579         (WTF::find):
2580         (WTF::reverseFind):
2581
2582 2011-11-14  Vincent Scheib  <scheib@chromium.org>
2583
2584         Mouse Lock: Renaming to 'Pointer Lock': ENABLE Flags
2585         https://bugs.webkit.org/show_bug.cgi?id=72286
2586
2587         Reviewed by Adam Barth.
2588
2589         * wtf/Platform.h:
2590
2591 2011-11-14  Gavin Barraclough  <barraclough@apple.com>
2592
2593         https://bugs.webkit.org/show_bug.cgi?id=72280
2594
2595         Rubber stamped by Geoff Garen.
2596
2597         Fix 32-bit Lion.
2598
2599         * JavaScriptCore.xcodeproj/project.pbxproj:
2600         * wtf/OSAllocatorPosix.cpp:
2601         (WTF::OSAllocator::reserveAndCommit):
2602
2603 2011-11-14  Geoffrey Garen  <ggaren@apple.com>
2604
2605         32-bit Build fix: declare virtual register indices to be int rather than
2606         unsigned, since they can be positive or negative.
2607         
2608         For better clarity, explicitly use ReturnPC instead of -1 as the "invalid"
2609         state, since we'll never load and operate on the ReturnPC as a JS value.
2610
2611         * jit/JIT.cpp:
2612         (JSC::JIT::JIT):
2613         * jit/JIT.h:
2614         * jit/JITInlineMethods.h:
2615         (JSC::JIT::emitLoadTag):
2616         (JSC::JIT::emitLoadPayload):
2617         (JSC::JIT::emitLoad):
2618         (JSC::JIT::emitLoad2):
2619         (JSC::JIT::emitLoadDouble):
2620         (JSC::JIT::emitLoadInt32ToDouble):
2621         (JSC::JIT::emitStore):
2622         (JSC::JIT::emitStoreInt32):
2623         (JSC::JIT::emitStoreAndMapInt32):
2624         (JSC::JIT::emitStoreCell):
2625         (JSC::JIT::emitStoreBool):
2626         (JSC::JIT::emitStoreDouble):
2627         (JSC::JIT::map):
2628         (JSC::JIT::unmap):
2629         (JSC::JIT::isMapped):
2630         (JSC::JIT::getMappedPayload):
2631         (JSC::JIT::getMappedTag):
2632         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
2633
2634 2011-11-14  Michael Saboff  <msaboff@apple.com>
2635
2636         Remove unused m_data member from UStringSourceProvider
2637         https://bugs.webkit.org/show_bug.cgi?id=72289
2638
2639         Removed unused m_data member from UStringSourceProvider.
2640
2641         Reviewed by Oliver Hunt.
2642
2643         * parser/SourceProvider.h:
2644         (JSC::UStringSourceProvider::UStringSourceProvider):
2645
2646 2011-11-14  Michael Saboff  <msaboff@apple.com>
2647
2648         Towards 8 Bit Strings: Templatize YARR Parser
2649         https://bugs.webkit.org/show_bug.cgi?id=72288
2650
2651         Changed Yarr::Parser to be a template based on character type.
2652
2653         Reviewed by Oliver Hunt.
2654
2655         * yarr/YarrParser.h:
2656         (JSC::Yarr::Parser::Parser):
2657         (JSC::Yarr::parse):
2658
2659 2011-11-14  Geoffrey Garen  <ggaren@apple.com>
2660
2661         32-bit build fix: Removed unused declaration.
2662
2663         * dfg/DFGJITCodeGenerator32_64.cpp:
2664         (JSC::DFG::JITCodeGenerator::emitCall):
2665
2666 2011-11-12  Geoffrey Garen  <ggaren@apple.com>
2667
2668         Standardized the JS calling convention
2669         https://bugs.webkit.org/show_bug.cgi?id=72221
2670         
2671         Reviewed by Oliver Hunt.
2672
2673         This patch standardizes the calling convention so that the caller always
2674         sets up the callee's CallFrame. Adjustments for call type, callee type,
2675         argument count, etc. now always take place after that initial setup.
2676         
2677         This is a step toward reversing the argument order, but also has these
2678         immediate benefits (measured on x64):
2679         
2680         (1) 1% benchmark speedup across the board.
2681         
2682         (2) 50% code size reduction in baseline JIT function calls.
2683         
2684         (3) 1.5x speedup for single-dispatch .apply forwarding.
2685         
2686         (4) 1.1x speedup for multi-dispatch .apply forwarding.
2687
2688         This change affected the baseline JIT most, since the baseline JIT had
2689         lots of ad hoc calling conventions for different caller / callee types.
2690
2691         * assembler/MacroAssemblerX86_64.h:
2692         (JSC::MacroAssemblerX86_64::branchPtr):
2693         (JSC::MacroAssemblerX86_64::branchAddPtr): Optimize compare to 0 into
2694         a test, like other assemblers do. (I added some compares to 0, and didn't
2695         want them to be slow.)
2696
2697         * bytecode/CodeBlock.cpp:
2698         (JSC::CodeBlock::dump): Merged op_load_varargs into op_call_varargs so
2699         op_call_varargs could share code generation with other forms of op_call.
2700         This is also a small optimization, since op_*varargs no longer have to
2701         pass arguments to each other through the register file.
2702
2703         (JSC::CallLinkInfo::unlink):
2704         * bytecode/CodeBlock.h: Added a new call type: CallVarargs. This allows
2705         us to link functions called through .apply syntax. We need to distinguish
2706         CallVarargs from Call because CallVarargs changes its argument count
2707         on each inovcation, so we must always link to the argument count checking
2708         version of the callee.
2709
2710         * bytecode/Opcode.h:
2711         * bytecompiler/BytecodeGenerator.cpp:
2712         (JSC::BytecodeGenerator::emitCallVarargs):
2713         * bytecompiler/BytecodeGenerator.h: Merged op_load_varargs into op_call_varargs.
2714
2715         * bytecompiler/NodesCodegen.cpp:
2716         (JSC::ApplyFunctionCallDotNode::emitBytecode): Ditto. Also, simplified
2717         some of this bytecode generation to remove redundant copies.
2718
2719         * dfg/DFGJITCodeGenerator32_64.cpp:
2720         (JSC::DFG::JITCodeGenerator::emitCall):
2721         * dfg/DFGJITCodeGenerator64.cpp:
2722         (JSC::DFG::JITCodeGenerator::emitCall): Added a new call type: CallVarargs.
2723         DFG doesn't support this type, but its code needs to change slightly
2724         to accomodate a 3-state variable.
2725
2726         Stopped passing the argument count in regT1 because this is non-standard.
2727         (The argument count goes in the CallFrame. This trades speed on the slow
2728         path for speed and code size on the fast path, and simplicity on all paths.
2729         A good trade, in my opinion.)
2730
2731         * dfg/DFGJITCompiler.cpp:
2732         (JSC::DFG::JITCompiler::compileEntry):
2733         (JSC::DFG::JITCompiler::link):
2734         (JSC::DFG::JITCompiler::compile):
2735         (JSC::DFG::JITCompiler::compileFunction): Tweaked code to make CallFrame
2736         setup more obvious when single-stepping. Also, updated for argument count
2737         not being in regT1.
2738
2739         * dfg/DFGJITCompiler.h:
2740         (JSC::DFG::JITCompiler::addJSCall):
2741         (JSC::DFG::JITCompiler::JSCallRecord::JSCallRecord): Added a new call
2742         type: CallVarargs.
2743
2744         * dfg/DFGOperations.cpp: Do finish CallFrame setup in one place before
2745         doing anything else. Don't check for stack overflow because we have no callee
2746         registers, and our caller has already checked for its own registers.
2747
2748         * dfg/DFGRepatch.cpp:
2749         (JSC::DFG::dfgLinkFor): We can link to our callee even if our argument
2750         count doesn't match -- we just need to link to the argument count checking
2751         version.
2752
2753         * interpreter/CallFrameClosure.h:
2754         (JSC::CallFrameClosure::setArgument): BUG FIX: When supplying too many
2755         arguments from C++, we need to supply a full copy of the arguments prior
2756         to the subset copy that matches our callee's argument count. (That is what
2757         the standard calling convention would have produced in JS.) I would have
2758         split this into its own patch, but I couldn't find a way to get the JIT
2759         to fail a regression test in this area without my patch applied.
2760
2761         * interpreter/Interpreter.cpp: Let the true code bomb begin!
2762
2763         (JSC::eval): Fixed up this helper function to operate on eval()'s CallFrame,
2764         and not eval()'s caller frame. We no longer leave the CallFrame pointing
2765         to eval()'s caller during a call to eval(), since that is not standard.
2766
2767         (JSC::loadVarargs): Factored out a shared helper function for use by JIT
2768         and interpreter because half the code means one quarter the bugs -- in my
2769         programming, at least.
2770
2771         (JSC::Interpreter::execute): Removed a now-unused way to invoke eval.
2772         
2773         (JSC::Interpreter::privateExecute): Removed an invalid ASSERT following
2774         putDirect, because it got in the way of my testing. (When putting a
2775         function, the cached base of a PutPropertySlot can be 0 to signify "do
2776         not optimize".)
2777         
2778         op_call_eval: Updated for new, standard eval calling convention.
2779         
2780         op_load_varargs: Merged op_load_varargs into op_call_varargs.
2781
2782         op_call_varags: Updated for new, standard eval calling convention. Don't
2783         check for stack overflow because the loadVarargs helper function already
2784         checked.
2785
2786         * interpreter/Interpreter.h:
2787         (JSC::Interpreter::execute): Headers are fun and educational!
2788
2789         * interpreter/RegisterFile.cpp:
2790         (JSC::RegisterFile::growSlowCase):
2791         * interpreter/RegisterFile.h:
2792         (JSC::RegisterFile::grow): Factored out the slow case into a slow
2793         case because it was cramping the style of my fast case.
2794
2795         * jit/JIT.cpp:
2796         (JSC::JIT::privateCompile): Moved initialization of
2797         RegisterFile::CodeBlock to make it more obvious when debugging. Removed
2798         assumption that argument count is in regT1, as above. Removed call to
2799         restoreArgumentReference() because the JITStubCall abstraction does this for us.
2800
2801         (JSC::JIT::linkFor): Link even if we miss on argument count, as above.
2802
2803         * jit/JIT.h:
2804         * jit/JITCall32_64.cpp:
2805         (JSC::JIT::emitSlow_op_call):
2806         (JSC::JIT::emitSlow_op_call_eval):
2807         (JSC::JIT::emitSlow_op_call_varargs):
2808         (JSC::JIT::emitSlow_op_construct):
2809         (JSC::JIT::emit_op_call_eval):
2810         (JSC::JIT::emit_op_call_varargs): Share all function call code generation.
2811         Don't count call_eval when accounting for linkable function calls because
2812         eval doesn't link. (Its fast path is to perform the eval.)
2813
2814         (JSC::JIT::compileLoadVarargs): Ported this inline copying optimization
2815         to our new calling convention. The key to this optimization is the
2816         observation that, in a function that declares no arguments, if any
2817         arguments are passed, they all end up right behind 'this'.
2818
2819         (JSC::JIT::compileCallEval):
2820         (JSC::JIT::compileCallEvalSlowCase): Factored out eval for a little clarity.
2821
2822         (JSC::JIT::compileOpCall):
2823         (JSC::JIT::compileOpCallSlowCase): If you are still with me, dear reader,
2824         this is the whole point of my patch. The caller now unconditionally moves
2825         the CallFrame forward and fills in the data it knows before taking any
2826         branches to deal with weird caller/callee pairs.
2827         
2828         This also means that there is almost no slow path for calls -- it all
2829         gets folded into the shared virtual call stub. The only things remaining
2830         in the slow path are the rare case counter and a call to the stub.
2831
2832         * jit/JITOpcodes32_64.cpp:
2833         (JSC::JIT::privateCompileCTIMachineTrampolines):
2834         (JSC::JIT::privateCompileCTINativeCall): Updated for values being in
2835         different registers or in memory, based on our new standard calling
2836         convention.
2837         
2838         Added a shared path for calling out to CTI helper functions for non-JS
2839         calls.
2840
2841         * jit/JITPropertyAccess32_64.cpp:
2842         (JSC::JIT::emit_op_method_check): method_check emits its own code and
2843         the following get_by_id's code, so it needs to add both when informing
2844         result chaining of its result. This is important because the standard
2845         calling convention can now take advantage of this chaining.
2846
2847         * jit/JITCall.cpp:
2848         (JSC::JIT::compileLoadVarargs):
2849         (JSC::JIT::compileCallEval):
2850         (JSC::JIT::compileCallEvalSlowCase):
2851         (JSC::JIT::compileOpCall):
2852         (JSC::JIT::compileOpCallSlowCase):
2853         * jit/JITOpcodes.cpp:
2854         (JSC::JIT::privateCompileCTIMachineTrampolines):
2855         (JSC::JIT::emit_op_call_eval):
2856         (JSC::JIT::emit_op_call_varargs):
2857         (JSC::JIT::emitSlow_op_call):
2858         (JSC::JIT::emitSlow_op_call_eval):
2859         (JSC::JIT::emitSlow_op_call_varargs):
2860         (JSC::JIT::emitSlow_op_construct): Observe, as I write all of my code a
2861         second time, now with 64 bits.
2862
2863         * jit/JITStubs.cpp:
2864         (JSC::throwExceptionFromOpCall):
2865         (JSC::jitCompileFor):
2866         (JSC::arityCheckFor):
2867         (JSC::lazyLinkFor): A lot of mechanical changes here for one purpose:
2868         Exceptions thrown in the middle of a function call now use a shared helper
2869         function (throwExceptionFromOpCall). This function understands that the
2870         CallFrame currently points to the callEE, and the exception must be
2871         thrown by the callER. (The old calling convention would often still have
2872         the CallFrame pointing at the callER at the point of an exception. That
2873         is not the way of our new, standard calling convention.)
2874
2875         (JSC::op_call_eval): Finish standard CallFrame setup before calling 
2876         our eval helper function, which now depends on that setup.
2877
2878         * runtime/Arguments.h:
2879         (JSC::Arguments::length): Renamed numProvidedArguments() to length()
2880         because that's what other objects call it, and the difference made our
2881         new loadVarargs helper function hard to read.
2882
2883         * runtime/Executable.cpp:
2884         (JSC::FunctionExecutable::compileForCallInternal):
2885         (JSC::FunctionExecutable::compileForConstructInternal): Interpreter build
2886         fixes.
2887
2888         * runtime/FunctionPrototype.cpp:
2889         (JSC::functionProtoFuncApply): Honor Arguments::MaxArguments even when
2890         the .apply call_varargs optimization fails. (This bug appears on layout
2891         tests when you disable the optimization.)
2892
2893 2011-11-11  Jer Noble  <jer.noble@apple.com>
2894
2895         Implement MediaController.
2896         https://bugs.webkit.org/show_bug.cgi?id=71408
2897
2898         Reviewed by Eric Carlson.
2899
2900         Change the definition of WTF_USE_COREAUDIO to exclude Windows completely, as 
2901         CoreAudioClock.h is not available there.
2902
2903         * wtf/Platform.h:
2904
2905 2011-11-14  Patrick Gansterer  <paroga@webkit.org>
2906
2907         [WIN] Remove dependency on pthread from FastMalloc
2908         https://bugs.webkit.org/show_bug.cgi?id=72098
2909
2910         Reviewed by Adam Roben.
2911
2912         All pthread calls are already ported to native Windows calls.
2913         Use the native version for all OS(WINDOWS) to remove the
2914         runtime dependency on the pthread dll.
2915
2916         * wtf/FastMalloc.cpp:
2917
2918 2011-11-14  Simon Hausmann  <simon.hausmann@nokia.com>
2919
2920         [Qt] Replace use of QApplication with QGuiApplication.
2921
2922         Reviewed by Tor Arne Vestbø.
2923
2924         * wtf/qt/compat/qguiapplication.h:
2925         (QGuiApplication::styleHints): Introduce styleHints wrapper hack.
2926
2927 2011-11-14  Carlos Garcia Campos  <cgarcia@igalia.com>
2928
2929         Unreviewed. Fix make distcheck build.
2930
2931         * GNUmakefile.list.am: Add missing files.
2932
2933 2011-11-11  Yury Semikhatsky  <yurys@chromium.org>
2934
2935         Web Inspector: function remote objetct should provide access to function position in the script
2936         https://bugs.webkit.org/show_bug.cgi?id=71808
2937
2938         Exposed accessor for function source code.
2939
2940         Reviewed by Pavel Feldman.
2941
2942         * JavaScriptCore.exp:
2943         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2944         * runtime/JSFunction.cpp:
2945         (JSC::JSFunction::sourceCode):
2946         * runtime/JSFunction.h:
2947
2948 2011-11-13  Yuqiang Xian  <yuqiang.xian@intel.com>
2949
2950         Fix silent spilling/filling GPRs in DFG 32_64
2951         https://bugs.webkit.org/show_bug.cgi?id=72201
2952
2953         Reviewed by Gavin Barraclough.
2954
2955         Current silentSpillGPR/silentFillGPR may not work as expected for some
2956         cases in 32_64. If there's a JSValue which was retained by two GPRs,
2957         we may end up failing to spill/fill some GPRs or redundantly
2958         spilling/filling some GPRs. For example, if we tend to exclude "eax"
2959         from spilling while a JSValue is retained by both "eax" and "edx",
2960         then "edx" won't be spilled as well (wrong). And if another JSValue is
2961         retained by "ecx" and "ebx", both "ecx" and "ebx" will be spilled
2962         twice. The similar problem applies to silentFillGPR.
2963         The fix is to make silentSpillGPR/silentFillGPR more straightforward,
2964         i.e., spilling/filling based on the GPR instead of the virtual
2965         register. FPR spilling/filling is also modified accordingly to make it
2966         consistent with GPR spilling/filling.
2967
2968         * dfg/DFGJITCodeGenerator.h:
2969         (JSC::DFG::JITCodeGenerator::silentSpillGPR):
2970         (JSC::DFG::JITCodeGenerator::silentSpillFPR):
2971         (JSC::DFG::JITCodeGenerator::silentFillGPR):
2972         (JSC::DFG::JITCodeGenerator::silentFillFPR):
2973         (JSC::DFG::JITCodeGenerator::silentSpillAllRegisters):
2974         (JSC::DFG::JITCodeGenerator::silentFillAllRegisters):
2975
2976 2011-11-12  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2977
2978         [Qt][Symbian] Remove support for WINSCW compiler
2979         https://bugs.webkit.org/show_bug.cgi?id=70178
2980
2981         Reviewed by Chang Shu.
2982
2983         * API/JSStringRef.h:
2984         * create_hash_table: Revert r45553.
2985         * runtime/JSGlobalData.cpp: Revert r45553.
2986         * runtime/LiteralParser.cpp: Remove WINSCW comment.
2987         (JSC::LiteralParser::Lexer::lexString):
2988         * runtime/Lookup.h: Revert r45553.
2989         * runtime/Structure.h: Revert r48461.
2990         * wtf/Alignment.h:
2991         * wtf/Assertions.h: Revert r52337.
2992         * wtf/Compiler.h:
2993         * wtf/ListRefPtr.h: Revert r48988.
2994         (WTF::ListRefPtr::~ListRefPtr):
2995         * wtf/OwnArrayPtr.h: Revert r45911.
2996         (WTF::OwnArrayPtr::operator UnspecifiedBoolType):
2997         * wtf/PassOwnArrayPtr.h:
2998         (WTF::PassOwnArrayPtr::operator UnspecifiedBoolType):
2999         * wtf/PassRefPtr.h:
3000         * wtf/StaticConstructors.h:
3001         * wtf/unicode/qt4/UnicodeQt4.h:
3002
3003 2011-11-12  Patrick Gansterer  <paroga@webkit.org>
3004
3005         Unreviewed. Add ENABLE(DFG_JIT) around DFGCorrectableJumpPoint code.
3006
3007         * dfg/DFGCorrectableJumpPoint.cpp:
3008         * dfg/DFGCorrectableJumpPoint.h:
3009
3010 2011-11-12  Patrick Gansterer  <paroga@webkit.org>
3011
3012         [CMake] Move list of DFG source files into correct file
3013         https://bugs.webkit.org/show_bug.cgi?id=72212
3014
3015         Reviewed by Daniel Bates.
3016
3017         The DFG files are platform independent. So move them from
3018         the EFL specific file into the general CMakeLists.txt.
3019
3020         * CMakeLists.txt:
3021         * PlatformEfl.cmake:
3022
3023 2011-11-12  Patrick Gansterer  <paroga@webkit.org>
3024
3025         Fix "unused variable" warning in JSLock
3026         https://bugs.webkit.org/show_bug.cgi?id=72213
3027
3028         Reviewed by Anders Carlsson.
3029
3030         Use ASSERT_UNUSED() instead of ASSERT() to make sure
3031         that the variable is also used in the release build.
3032
3033         * runtime/JSLock.cpp:
3034         (JSC::JSLock::lock):
3035         (JSC::JSLock::unlock):
3036
3037 2011-11-11  Gavin Barraclough  <barraclough@apple.com>
3038
3039         Update iOS compiler version.
3040
3041         Reviewed by David Kilzer.
3042
3043         * Configurations/CompilerVersion.xcconfig:
3044             - Update compiler version.
3045
3046 2011-11-11  Gavin Barraclough  <barraclough@apple.com>
3047
3048         Update iOS port's configuration setting, particularly in Platform.h
3049         https://bugs.webkit.org/show_bug.cgi?id=72187
3050         
3051         Reviewed by David Kilzer.
3052
3053         * interpreter/Interpreter.h:
3054             - Lower the reentry depth.
3055         * runtime/DatePrototype.cpp:
3056             - iOS also uses CF.
3057         * wtf/FastMalloc.cpp:
3058         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
3059             - Update fastmalloc configuration for iOS.
3060         * wtf/OSAllocatorPosix.cpp:
3061         (WTF::OSAllocator::reserveAndCommit):
3062             - Added flag.
3063         * wtf/Platform.h:
3064             - Update platform configuration for iOS.
3065
3066 2011-11-11  David Kilzer  <ddkilzer@apple.com>
3067
3068         Only define BUILDING_ON_* and TARGETING_* macros when building for Mac OS X
3069         <http://webkit.org/b/72175>
3070
3071         Reviewed by Joseph Pecoraro.
3072
3073         * wtf/Platform.h: Move the definition of the BUILDING_ON_* and
3074         TARGETING_* macros to where the WTF_OS_MAC_OS_X macro is defined
3075         so that they're only defined on Mac OS X builds.  Also include
3076         Availability.h, which is needed on iOS builds.
3077
3078 2011-11-11  Darin Adler  <darin@apple.com>
3079
3080         Remove all releaseRef implementations except for RetainPtr
3081         https://bugs.webkit.org/show_bug.cgi?id=71423
3082
3083         Reviewed by Julien Chaffraix.
3084
3085         * API/JSRetainPtr.h: Removed releaseRef.
3086         * wtf/PassRefPtr.h: Removed releaseRef.
3087
3088 2011-11-11  Darin Adler  <darin@apple.com>
3089
3090         * JavaScriptCore.xcodeproj/project.pbxproj: Let a newer Xcode update this file.
3091         If an older Xcode downgrades this file and we have a risk of some kind of
3092         oscillating commit situation, please contact me so I know not to do this again.
3093
3094 2011-11-11  Mark Hahnenberg  <mhahnenberg@apple.com>
3095
3096         Add jsCast to replace static_cast
3097         https://bugs.webkit.org/show_bug.cgi?id=72071
3098
3099         Reviewed by Geoffrey Garen.
3100
3101         Added new jsCast and changed all of the static_cast sites in functions that 
3102         are in the MethodTable to use jsCast instead.
3103
3104         * API/JSCallbackFunction.cpp:
3105         (JSC::JSCallbackFunction::toStringCallback):
3106         (JSC::JSCallbackFunction::valueOfCallback):
3107         * API/JSCallbackObject.h:
3108         (JSC::JSCallbackObject::visitChildren):
3109         * API/JSCallbackObjectFunctions.h:
3110         (JSC::::className):
3111         (JSC::::getOwnPropertySlot):
3112         (JSC::::getOwnPropertyDescriptor):
3113         (JSC::::put):
3114         (JSC::::deleteProperty):
3115         (JSC::::deletePropertyByIndex):
3116         (JSC::::getConstructData):
3117         (JSC::::hasInstance):
3118         (JSC::::getCallData):
3119         (JSC::::getOwnPropertyNames):
3120         * debugger/DebuggerActivation.cpp:
3121         (JSC::DebuggerActivation::visitChildren):
3122         (JSC::DebuggerActivation::className):
3123         (JSC::DebuggerActivation::getOwnPropertySlot):
3124         (JSC::DebuggerActivation::put):
3125         (JSC::DebuggerActivation::putWithAttributes):
3126         (JSC::DebuggerActivation::deleteProperty):
3127         (JSC::DebuggerActivation::getOwnPropertyNames):
3128         (JSC::DebuggerActivation::getOwnPropertyDescriptor):
3129         (JSC::DebuggerActivation::defineGetter):
3130         (JSC::DebuggerActivation::defineSetter):
3131         * runtime/Arguments.cpp:
3132         (JSC::Arguments::visitChildren):
3133         (JSC::Arguments::getOwnPropertySlotByIndex):
3134         (JSC::Arguments::getOwnPropertySlot):
3135         (JSC::Arguments::getOwnPropertyDescriptor):
3136         (JSC::Arguments::getOwnPropertyNames):
3137         (JSC::Arguments::putByIndex):
3138         (JSC::Arguments::put):
3139         (JSC::Arguments::deletePropertyByIndex):
3140         (JSC::Arguments::deleteProperty):
3141         * runtime/ArrayConstructor.cpp:
3142         (JSC::ArrayConstructor::getOwnPropertySlot):
3143         (JSC::ArrayConstructor::getOwnPropertyDescriptor):
3144         * runtime/ArrayPrototype.cpp:
3145         (JSC::ArrayPrototype::getOwnPropertySlot):
3146         (JSC::ArrayPrototype::getOwnPropertyDescriptor):
3147         * runtime/BooleanPrototype.cpp:
3148         (JSC::BooleanPrototype::getOwnPropertySlot):
3149         (JSC::BooleanPrototype::getOwnPropertyDescriptor):
3150         * runtime/DateConstructor.cpp:
3151         (JSC::DateConstructor::getOwnPropertySlot):
3152         (JSC::DateConstructor::getOwnPropertyDescriptor):
3153         * runtime/DatePrototype.cpp:
3154         (JSC::DatePrototype::getOwnPropertySlot):
3155         (JSC::DatePrototype::getOwnPropertyDescriptor):
3156         * runtime/ErrorPrototype.cpp:
3157         (JSC::ErrorPrototype::getOwnPropertySlot):
3158         (JSC::ErrorPrototype::getOwnPropertyDescriptor):
3159         * runtime/Executable.cpp:
3160         (JSC::ExecutableBase::clearCode):
3161         (JSC::EvalExecutable::visitChildren):
3162         (JSC::ProgramExecutable::visitChildren):
3163         (JSC::FunctionExecutable::visitChildren):
3164         * runtime/GetterSetter.cpp:
3165         (JSC::GetterSetter::visitChildren):
3166         * runtime/JSActivation.cpp:
3167         (JSC::JSActivation::visitChildren):
3168         (JSC::JSActivation::getOwnPropertyNames):
3169         (JSC::JSActivation::getOwnPropertySlot):
3170         (JSC::JSActivation::put):
3171         (JSC::JSActivation::putWithAttributes):
3172         * runtime/JSArray.cpp:
3173         (JSC::JSArray::getOwnPropertySlotByIndex):
3174         (JSC::JSArray::getOwnPropertySlot):
3175         (JSC::JSArray::getOwnPropertyDescriptor):
3176         (JSC::JSArray::put):
3177         (JSC::JSArray::putByIndex):
3178         (JSC::JSArray::deleteProperty):
3179         (JSC::JSArray::deletePropertyByIndex):
3180         (JSC::JSArray::getOwnPropertyNames):
3181         (JSC::JSArray::visitChildren):
3182         * runtime/JSBoundFunction.cpp:
3183         (JSC::JSBoundFunction::hasInstance):
3184         (JSC::JSBoundFunction::visitChildren):
3185         * runtime/JSByteArray.cpp:
3186         (JSC::JSByteArray::getOwnPropertySlot):
3187         (JSC::JSByteArray::getOwnPropertyDescriptor):
3188         (JSC::JSByteArray::getOwnPropertySlotByIndex):
3189         (JSC::JSByteArray::put):
3190         (JSC::JSByteArray::putByIndex):
3191         (JSC::JSByteArray::getOwnPropertyNames):
3192         * runtime/JSCell.h:
3193         (JSC::JSCell::visitChildren):
3194         (JSC::jsCast):
3195         * runtime/JSFunction.cpp:
3196         (JSC::JSFunction::visitChildren):
3197         (JSC::JSFunction::getCallData):
3198         (JSC::JSFunction::getOwnPropertySlot):
3199         (JSC::JSFunction::getOwnPropertyDescriptor):
3200         (JSC::JSFunction::getOwnPropertyNames):
3201         (JSC::JSFunction::put):
3202         (JSC::JSFunction::deleteProperty):
3203         (JSC::JSFunction::getConstructData):
3204         * runtime/JSGlobalData.cpp:
3205         (JSC::StackPreservingRecompiler::operator()):
3206         * runtime/JSGlobalObject.cpp:
3207         (JSC::JSGlobalObject::put):
3208         (JSC::JSGlobalObject::putWithAttributes):
3209         (JSC::JSGlobalObject::defineGetter):
3210         (JSC::JSGlobalObject::defineSetter):
3211         (JSC::JSGlobalObject::visitChildren):
3212         (JSC::JSGlobalObject::getOwnPropertySlot):
3213         (JSC::JSGlobalObject::getOwnPropertyDescriptor):
3214         (JSC::JSGlobalObject::clearRareData):
3215         * runtime/JSGlobalThis.cpp:
3216         (JSC::JSGlobalThis::visitChildren):
3217         * runtime/JSONObject.cpp:
3218         (JSC::JSONObject::getOwnPropertySlot):
3219         (JSC::JSONObject::getOwnPropertyDescriptor):
3220         * runtime/JSObject.cpp:
3221         (JSC::JSObject::finalize):
3222         (JSC::JSObject::visitChildren):
3223         (JSC::JSObject::getOwnPropertySlotByIndex):
3224         (JSC::JSObject::put):
3225         (JSC::JSObject::putByIndex):
3226         (JSC::JSObject::deleteProperty):
3227         (JSC::JSObject::deletePropertyByIndex):
3228         * runtime/JSObject.h:
3229         (JSC::JSObject::getOwnPropertySlot):
3230         * runtime/JSPropertyNameIterator.cpp:
3231         (JSC::JSPropertyNameIterator::visitChildren):
3232         * runtime/JSStaticScopeObject.cpp:
3233         (JSC::JSStaticScopeObject::visitChildren):
3234         (JSC::JSStaticScopeObject::put):
3235         (JSC::JSStaticScopeObject::putWithAttributes):
3236         (JSC::JSStaticScopeObject::getOwnPropertySlot):
3237         * runtime/JSString.cpp:
3238         (JSC::JSString::visitChildren):
3239         (JSC::JSString::toThisObject):
3240         (JSC::JSString::getOwnPropertySlot):
3241         (JSC::JSString::getOwnPropertySlotByIndex):
3242         * runtime/JSVariableObject.cpp:
3243         (JSC::JSVariableObject::deleteProperty):
3244         (JSC::JSVariableObject::getOwnPropertyNames):
3245         * runtime/JSWrapperObject.cpp:
3246         (JSC::JSWrapperObject::visitChildren):
3247         * runtime/MathObject.cpp:
3248         (JSC::MathObject::getOwnPropertySlot):
3249         (JSC::MathObject::getOwnPropertyDescriptor):
3250         * runtime/NativeErrorConstructor.cpp:
3251         (JSC::NativeErrorConstructor::visitChildren):
3252         * runtime/NumberConstructor.cpp:
3253         (JSC::NumberConstructor::getOwnPropertySlot):
3254         (JSC::NumberConstructor::getOwnPropertyDescriptor):
3255         * runtime/NumberPrototype.cpp:
3256         (JSC::NumberPrototype::getOwnPropertySlot):
3257         (JSC::NumberPrototype::getOwnPropertyDescriptor):
3258         * runtime/ObjectConstructor.cpp:
3259         (JSC::ObjectConstructor::getOwnPropertySlot):
3260         (JSC::ObjectConstructor::getOwnPropertyDescriptor):
3261         * runtime/ObjectPrototype.cpp:
3262         (JSC::ObjectPrototype::put):
3263         (JSC::ObjectPrototype::getOwnPropertySlotByIndex):
3264         (JSC::ObjectPrototype::getOwnPropertySlot):
3265         (JSC::ObjectPrototype::getOwnPropertyDescriptor):
3266         * runtime/RegExpConstructor.cpp:
3267         (JSC::RegExpConstructor::getOwnPropertySlot):
3268         (JSC::RegExpConstructor::getOwnPropertyDescriptor):
3269         (JSC::RegExpConstructor::put):
3270         * runtime/RegExpMatchesArray.h:
3271         (JSC::RegExpMatchesArray::getOwnPropertySlot):
3272         (JSC::RegExpMatchesArray::getOwnPropertySlotByIndex):
3273         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
3274         (JSC::RegExpMatchesArray::put):
3275         (JSC::RegExpMatchesArray::putByIndex):
3276         (JSC::RegExpMatchesArray::deleteProperty):
3277         (JSC::RegExpMatchesArray::deletePropertyByIndex):
3278         (JSC::RegExpMatchesArray::getOwnPropertyNames):
3279         * runtime/RegExpObject.cpp:
3280         (JSC::RegExpObject::visitChildren):
3281         (JSC::RegExpObject::getOwnPropertySlot):
3282         (JSC::RegExpObject::getOwnPropertyDescriptor):
3283         (JSC::RegExpObject::put):
3284         * runtime/RegExpPrototype.cpp:
3285         (JSC::RegExpPrototype::getOwnPropertySlot):
3286         (JSC::RegExpPrototype::getOwnPropertyDescriptor):
3287         * runtime/ScopeChain.cpp:
3288         (JSC::ScopeChainNode::visitChildren):
3289         * runtime/StringConstructor.cpp:
3290         (JSC::StringConstructor::getOwnPropertySlot):
3291         (JSC::StringConstructor::getOwnPropertyDescriptor):
3292         * runtime/StringObject.cpp:
3293         (JSC::StringObject::getOwnPropertySlot):
3294         (JSC::StringObject::getOwnPropertySlotByIndex):
3295         (JSC::StringObject::getOwnPropertyDescriptor):
3296         (JSC::StringObject::deleteProperty):
3297         (JSC::StringObject::getOwnPropertyNames):
3298         * runtime/StringPrototype.cpp:
3299         (JSC::StringPrototype::getOwnPropertySlot):
3300         (JSC::StringPrototype::getOwnPropertyDescriptor):
3301         * runtime/Structure.cpp:
3302         (JSC::Structure::visitChildren):
3303         * runtime/StructureChain.cpp:
3304         (JSC::StructureChain::visitChildren):
3305
3306 2011-11-11  Gavin Barraclough  <barraclough@apple.com>
3307
3308         Enable DFG JIT for ARMv7/iOS.
3309
3310         Rubber stamped by Oliver Hunt.
3311
3312         * wtf/Platform.h:
3313             - enable DFG JIT for ARMv7/iOS.
3314
3315 2011-11-11  Mark Hahnenberg  <mhahnenberg@apple.com>
3316
3317         De-virtualize supportsProfiling, supportsRichSourceInfo, shouldInterruptScript in JSGlobalObject
3318         https://bugs.webkit.org/show_bug.cgi?id=72035
3319
3320         Reviewed by Geoffrey Garen.
3321
3322         De-virtualized the methods through the use of a new method table just for JSGlobalObject and subclasses.
3323
3324         * JavaScriptCore.exp:
3325         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3326         * bytecompiler/BytecodeGenerator.cpp: Changed call sites to use the new GlobalObjectMethodTable.
3327         (JSC::BytecodeGenerator::BytecodeGenerator):
3328         * interpreter/Interpreter.cpp: Ditto.
3329         (JSC::Interpreter::execute):
3330         * runtime/JSGlobalObject.cpp: Added a static const GlobalObjectMethodTable with the correct function pointers.
3331         * runtime/JSGlobalObject.h: Added a field in JSGlobalObject to keep track of the current method table.
3332         (JSC::JSGlobalObject::JSGlobalObject):
3333         (JSC::JSGlobalObject::globalObjectMethodTable): The new struct to contain the function pointers.
3334         (JSC::JSGlobalObject::supportsProfiling): Made static to put in the method table.
3335         (JSC::JSGlobalObject::supportsRichSourceInfo): Ditto.
3336         (JSC::JSGlobalObject::shouldInterruptScript): Ditto.
3337         * runtime/TimeoutChecker.cpp: Changed call sites to use the new GlobalObjectMethodTable for lookup.
3338         (JSC::TimeoutChecker::didTimeOut):
3339
3340 2011-11-11  Mark Hahnenberg  <mhahnenberg@apple.com>
3341
3342         De-virtualize JSGlobalObject::allowsAccessFrom
3343         https://bugs.webkit.org/show_bug.cgi?id=71969
3344
3345         Reviewed by Darin Adler.
3346
3347         * runtime/JSGlobalObject.h: Removed allowsAccessFrom from JSGlobalObject since it is exclusive to 
3348         JSDOMWindowBase and WebScriptObject.
3349
3350 2011-11-11  Sheriff Bot  <webkit.review.bot@gmail.com>
3351
3352         Unreviewed, rolling out r99950.
3353         http://trac.webkit.org/changeset/99950
3354         https://bugs.webkit.org/show_bug.cgi?id=72117
3355
3356         "Landed wrong patch by mistake" (Requested by yurys on
3357         #webkit).
3358
3359         * JavaScriptCore.exp:
3360         * runtime/JSFunction.cpp:
3361         * runtime/JSFunction.h:
3362
3363 2011-11-11  Patrick Gansterer  <paroga@webkit.org>
3364
3365         Unreviewed. Build fix for !ENABLE(JIT) after r99898.
3366
3367         * bytecode/CodeBlock.cpp:
3368         (JSC::CodeBlock::CodeBlock):
3369
3370 2011-11-10  Dan Bernstein  <mitz@apple.com>
3371
3372         Disabling assertions breaks the debug build
3373         https://bugs.webkit.org/show_bug.cgi?id=72091
3374
3375         Reviewed by Geoff Garen.
3376
3377         * dfg/DFGNode.h: Made hasIdentifier() available when assertions are
3378         disabled. It is used in Graph::dump().
3379         * runtime/JSObject.cpp:
3380         (JSC::JSObject::visitChildren): Update m_isCheckingForDefaultMarkViolation
3381         only if assertions are enabled.
3382         * wtf/Deque.h:
3383         (WTF::::checkIndexValidity): Changed ASSERT to ASSERT_UNUSED.
3384         * wtf/ThreadRestrictionVerifier.h:
3385         (WTF::ThreadRestrictionVerifier::setShared): Guarded the definition of
3386         a local variable that is only used in an assertion.
3387
3388 2011-11-10  Filip Pizlo  <fpizlo@apple.com>
3389
3390         JSString forgets to clear m_fibers when resolving ropes
3391         https://bugs.webkit.org/show_bug.cgi?id=72089
3392
3393         Reviewed by Geoff Garen.
3394
3395         * runtime/JSString.cpp:
3396         (JSC::JSString::resolveRopeSlowCase):
3397
3398 2011-11-09  Filip Pizlo  <fpizlo@apple.com>
3399
3400         DFG byte array support sometimes clamps values incorrectly
3401         https://bugs.webkit.org/show_bug.cgi?id=71975
3402
3403         Reviewed by Oliver Hunt.
3404
3405         * dfg/DFGSpeculativeJIT.cpp:
3406         (JSC::DFG::SpeculativeJIT::compilePutByValForByteArray):
3407
3408 2011-11-10  Filip Pizlo  <fpizlo@apple.com>
3409
3410         ValueProfile/PredictedType contains dead code, and doesn't recognize functions
3411         https://bugs.webkit.org/show_bug.cgi?id=72065
3412
3413         Reviewed by Gavin Barraclough and Geoff Garen.
3414         
3415         Added PredictFunction support, and did some cleaning up along the way.
3416         ValueProfile no longer has statistics machinery, because we never used
3417         it. Rearranged some bits in PredictedType to more easily make room for
3418         one more object type. Changed some debug code to use more consistent
3419         conventions (ByteArray becomes Bytearray so that if we ever have a
3420         "Byte" prediction we don't get confused between a prediction that is
3421         the union of Byte and Array and a prediction that indicates precisely
3422         a ByteArray).
3423
3424         * bytecode/PredictedType.cpp:
3425         (JSC::predictionToString):
3426         (JSC::predictionFromClassInfo):
3427         * bytecode/PredictedType.h:
3428         (JSC::isFunctionPrediction):
3429         * bytecode/ValueProfile.cpp:
3430         * bytecode/ValueProfile.h:
3431 &nbs