12012-08-08  Patrick Gansterer  <paroga@webkit.org>
2
3        [WIN] Use GetTimeZoneInformation() for getting the timezone name
4        https://bugs.webkit.org/show_bug.cgi?id=91936
5
6        Reviewed by Ryosuke Niwa.
7
8        The MS CRT implementation of strftime calls the same functions in the background.
9        Using them directly avoids the overhead of parsing the format string and removes
10        the dependency on strftime() for WinCE where this function does not exist.
11
12        * runtime/DateConversion.cpp:
13        (JSC::formatTime):
14
152010-07-08  Gavin Barraclough  <barraclough@apple.com>
16
17        Reviewed by Sam Weinig.
18
19        https://bugs.webkit.org/show_bug.cgi?id=41641
20
21        Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
22        other than x86-64 (this may be useful on 32-bit platforms, too).
23
24        Simplify ifdefs by dividing into thwo broad allocation strategies
25        (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
26
27        Rename constant used in the code to have names descriptive of their purpose,
28        rather than their specific value on a given platform.
29
30        * jit/ExecutableAllocator.cpp:
31        (JSC::ExecutableAllocator::reprotectRegion):
32        (JSC::ExecutableAllocator::cacheFlush):
33        * jit/ExecutableAllocatorFixedVMPool.cpp:
34        (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
35        (JSC::FixedVMPoolAllocator::free):
36        (JSC::ExecutablePool::systemAlloc):
37        * jit/ExecutableAllocatorPosix.cpp:
38        * jit/ExecutableAllocatorSymbian.cpp:
39        * jit/ExecutableAllocatorWin.cpp:
40        * wtf/Platform.h:
41
422010-08-24  Oliver Hunt  <oliver@apple.com>
43
44        Reviewed by Geoff Garen.
45
46        Don't seed the JS random number generator from time()
47        https://bugs.webkit.org/show_bug.cgi?id=41868
48        <rdar://problem/8171025>
49
50        Switch to using the secure random number generator to
51        seed the fast random generator, and make the generator
52        be per global object.
53
54        * runtime/JSGlobalData.cpp:
55        (JSC::JSGlobalData::JSGlobalData):
56        * runtime/JSGlobalData.h:
57        * runtime/JSGlobalObject.h:
58        (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
59        (JSC::JSGlobalObject::weakRandomNumber):
60        * runtime/MathObject.cpp:
61        (JSC::mathProtoFuncRandom):
62
632010-06-18  Tucker Jay  <jay.tucker@nokia.com>
64
65        Reviewed by NOBODY (OOPS!).
66
67        [Symbian] Lazy commit of memory required in JSC register file
68        https://bugs.webkit.org/show_bug.cgi?id=34349
69
70        * JavaScriptCore.pro: Added 1 new Symbian source file
71        * interpreter/RegisterFile.cpp:
72        (JSC::RegisterFile::~RegisterFile):
73        * interpreter/RegisterFile.h:
74        (JSC::RegisterFile::):
75        (JSC::RegisterFile::start):
76        (JSC::RegisterFile::end):
77        (JSC::RegisterFile::size):
78        (JSC::RegisterFile::setNumGlobals):
79        (JSC::RegisterFile::numGlobals):
80        (JSC::RegisterFile::maxGlobals):
81        (JSC::RegisterFile::lastGlobal):
82        (JSC::RegisterFile::markGlobals):
83        (JSC::RegisterFile::markCallFrames):
84        (JSC::isPageAligned):
85        (JSC::RegisterFile::RegisterFile):
86        (JSC::RegisterFile::shrink):
87        (JSC::RegisterFile::grow):
88        * wtf/symbian/RegisterFileAllocatorSymbian.cpp: Added.
89        (WTF::RegisterFileAllocator::RegisterFileAllocator):
90        Helper class to allocate memory required by RegisterFile
91        more efficiently.
92        (WTF::RegisterFileAllocator::~RegisterFileAllocator):
93        (WTF::RegisterFileAllocator::buffer):
94        (WTF::RegisterFileAllocator::grow):
95        (WTF::RegisterFileAllocator::shrink):
96        * wtf/symbian/RegisterFileAllocatorSymbian.h: Added.
97        * wtf/symbian/SymbianDefines.h: Added.
98
992010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
100
101        Reviewed by Kenneth Rohde Christiansen.
102
103        Don't use __attribute__((may_alias)) with the Intel compiler,
104        as it doesn't understand it.
105
106        * wtf/Vector.h:
107
1082010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
109
110        Reviewed by Kenneth Rohde Christiansen.
111
112        Fix compilation with the Intel C++ compiler (11.1.072).
113
114        Like RVCT, label pointers must be void*, not const void*.
115
116        * bytecode/Opcode.h:
117
1182010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
119
120        Reviewed by Kenneth Rohde Christiansen.
121
122        Add the WTF_COMPILER_INTEL for when the Intel compiler is used
123        for building. Usually, the Intel compiler masquerades as
124        another compiler in the system and gets away with it, but some
125        times specific fixes are required (such as when using language
126        extensions).
127
128        * wtf/Platform.h:
129
1302010-06-07  Benjamin Poulain  <benjamin.poulain@nokia.com>
131
132        Reviewed by Simon Hausmann.
133
134        [Qt] Crash when compiling on Snow Leopard and running on Leopard
135        https://bugs.webkit.org/show_bug.cgi?id=31403
136
137        Disable the use of pthread_setname_np and other symbols
138        when targetting Leopard.
139
140        Use the defines TARGETING_XX instead of BUILDING_ON_XX
141        for features that cannot be used before Snow Leopard.
142
143        * wtf/Platform.h:
144
1452010-05-10  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
146
147        Reviewed by Darin Adler.
148
149        [Qt] Disable JIT support for mingw-w64
150        https://bugs.webkit.org/show_bug.cgi?id=38747
151
152        Disale JIT for mingw-w64 as it is reportedly
153        unstable.
154
155        Thanks for Vanboxem Rruben for the investigation.
156
157        * wtf/Platform.h:
158
1592010-05-06  Fumitoshi Ukai  <ukai@chromium.org>
160
161        Reviewed by Alexey Proskuryakov.
162
163        JavaScriptCore/wtf/RandomNumber.h should provide using WTF::*
164        https://bugs.webkit.org/show_bug.cgi?id=38719
165
166        * wtf/RandomNumber.h:
167          Add using directives.
168
1692010-04-28  Simon Hausmann  <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com>
170
171        Reviewed by Darin Adler.
172
173        JSC's currentThreadStackBase is not reentrant on some platforms
174        https://bugs.webkit.org/show_bug.cgi?id=37195
175
176        This function needs to be reentrant to avoid memory corruption on platforms where
177        the implementation uses global variables.
178
179        This patch adds a mutex lock where necessary and makes the Symbian implementation
180        reentrant.
181
182        * runtime/Collector.cpp:
183        (JSC::currentThreadStackBaseMutex):
184        (JSC::currentThreadStackBase):
185
1862010-04-14  Kent Hansen  <kent.hansen@nokia.com>
187
188        Reviewed by Maciej Stachowiak.
189
190        Mac OS X: Use deployment target to determine whether memory tagging should be enabled
191        https://bugs.webkit.org/show_bug.cgi?id=34888
192
193        When building on (Snow) Leopard but targeting Tiger
194        (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
195        WebKit would crash on Tiger because the tags passed to mmap
196        caused those function calls to fail.
197
198        Conversely, when building on Tiger but targeting Leopard
199        (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
200        would crash on Leopard because the tags passed to vm_map and
201        vm_allocate caused those function calls to fail.
202
203        Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
204        govern the tag definitions. Use the same tags for vm_map and
205        vm_allocate regardless of target, since they work on
206        both. Fall back to the mmap tags that work on Tiger (that is,
207        "no tags") if targeting Tiger, since those tags also work on
208        Leopard.
209
210        * wtf/VMTags.h:
211
2122010-04-02  Ruben Van Boxem  <vanboxem.ruben@gmail.com>
213
214        Reviewed by Eric Seidel.
215
216        Mingw-w64 fixes for JavaScriptCore
217        https://bugs.webkit.org/show_bug.cgi?id=35607
218
219        * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32)
220        (JSC::Heap::allocateBlock):
221        (JSC::Heap::freeBlockPtr):
222        (JSC::currentThreadStackBase):
223        (JSC::currentThreadStackBase):
224        * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions
225
2262010-03-29  Patrick Gansterer  <paroga@paroga.com>
227
228        Reviewed by Darin Adler.
229
230        Corrected name of (u)int64_t compile time assert.
231        https://bugs.webkit.org/show_bug.cgi?id=36739
232
233        int64_t_is_four_bytes -> int64_t_is_eight_bytes
234
235        * os-win32/stdint.h:
236
2372010-03-29  Thomas Zander  <t.zander@nokia.com>
238
239        Reviewed by Simon Hausmann.
240
241        https://bugs.webkit.org/show_bug.cgi?id=36742
242
243        gcc for Symbian doesn't support gcc extensions like atomicity.h - disable
244
245        * wtf/Threading.h: also detect os symbian
246
2472010-03-23  Mark Rowe  <mrowe@apple.com>
248
249        Build fix.
250
251        * runtime/ArrayPrototype.cpp:
252        (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation
253        that takes place here. An explicit cast is sufficient to silence it.
254
2552010-03-23  Alexey Proskuryakov  <ap@apple.com>
256
257        Build fix.
258
259        * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't
260        need to be converted with toInteger().
261
2622010-03-23  Alexey Proskuryakov  <ap@apple.com>
263
264        Reviewed by Geoff Garen.
265
266        https://bugs.webkit.org/show_bug.cgi?id=36511
267        <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check
268
269        Test: fast/js/sputnik-S15.4.4.12_A3_T3.html
270
271        * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing
272        the start offset, and iterated over (almost) all integers. Note that this can be fixed
273        without using doubles, but the code would be much more complicated, and there is no important
274        reason to stick to integers here.
275
2762010-03-22  Siddharth Mathur  <siddharth.mathur@nokia.com>
277
278        Reviewed by Laszlo Gombos.
279
280        [Symbian] More efficient aligned memory allocation for JSC Collector
281        https://bugs.webkit.org/show_bug.cgi?id=34350
282
283        * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
284
285        * runtime/Collector.cpp: Reduced port-specific code and added private data member
286        (JSC::Heap::Heap):
287        (JSC::Heap::~Heap):
288        (JSC::Heap::destroy):
289        (JSC::Heap::allocateBlock):
290        (JSC::Heap::freeBlockPtr):
291
292        * runtime/Collector.h: Added private data member
293
294        * wtf/symbian: Added.
295        * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
296        (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate
297        aligned blocks more efficiently as required by Collector
298        (WTF::AlignedBlockAllocator::alloc):
299        (WTF::AlignedBlockAllocator::free):
300        (WTF::AlignedBlockAllocator::destroy):
301        (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
302        * wtf/symbian/BlockAllocatorSymbian.h: Added.
303
3042010-03-22  Geoffrey Garen  <ggaren@apple.com>
305
306        Reviewed by Sam Weinig.
307
308        Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
309        evaluates to -2147483648 on 32 bit (35842)
310
311        Two ways to fix the same bug:
312
313        1. Check for overflow when negating, since negating the largest negative
314        int causes overflow.
315
316        2. Constant-fold even when negating a negative, since, like they say in
317        high school, "math works."
318
319        * assembler/MacroAssemblerARM.h:
320        (JSC::MacroAssemblerARM::branchNeg32):
321        * assembler/MacroAssemblerX86Common.h:
322        (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version
323        of the negate operator.
324
325        * jit/JITArithmetic.cpp:
326        (JSC::JIT::emit_op_negate): Use the branching version of the negate
327        operator to check for overflow.
328
329        (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case.
330        (We could emit inline code for this, since we know what the result would
331        be, but that's probably just a waste of generated code.)
332
333        * parser/Grammar.y: Constant fold even when negating a negative.
334
3352010-03-17  Mike Homey  <glandium@debian.org>
336
337        Reviewed by Gustavo Noronha.
338
339        Build fix for SPARC. Fix missing macro value.
340
341        * wtf/Platform.h:
342
3432010-03-03  Mark Rowe  <mrowe@apple.com>
344
345        Reviewed by Geoff Garen.
346
347        Add virtual memory tags for TCMalloc and WebCore's purgeable buffers.
348
349        * wtf/TCSystemAlloc.cpp:
350        (TryMmap): Use the VM tag.
351        * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS.
352
3532010-03-01  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
354
355        Reviewed by Simon Hausmann.
356
357        Fix the Qt build on Mac OS X/Cocoa 64-bit
358
359        * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols
360
3612010-02-26  Janne Koskinen  <janne.p.koskinen@digia.com>
362
363        Reviewed by Simon Hausmann.
364
365        [Qt] Symbian specific getCPUTime implemetation
366        https://bugs.webkit.org/show_bug.cgi?id=34742
367
368        Default implementation doesn't work on Symbian devices.
369        This change adds a proper implementation by
370        asking thread execution time from the current thread.
371
372        * runtime/TimeoutChecker.cpp:
373        (JSC::getCPUTime):
374
3752010-02-15  Gabor Loki  <loki@webkit.org>
376
377        Reviewed by Gavin Barraclough.
378
379        Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32)
380        https://bugs.webkit.org/show_bug.cgi?id=34939
381
382        * jit/JITStubs.cpp:
383
3842010-02-15  Gavin Barraclough  <barraclough@apple.com>
385
386        Reviewed by NOBODY (Build fix).
387
388        Add missing cast for !YARR (PPC) builds.
389
390        * runtime/RegExp.cpp:
391        (JSC::RegExp::match):
392
3932010-02-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
394
395        Reviewed by Adam Barth.
396
397        Implement NEVER_INLINE and NO_RETURN for RVCT
398        https://bugs.webkit.org/show_bug.cgi?id=34740
399
400        * wtf/AlwaysInline.h:
401
4022010-02-12  Gavin Barraclough  <barraclough@apple.com>
403
404        Reviewed by Darin Adler.
405
406        https://bugs.webkit.org/show_bug.cgi?id=33731
407        Many false leaks in release builds due to PtrAndFlags
408
409        Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl,
410        and steal bits from the refCount instead.
411
412        * runtime/UStringImpl.cpp:
413        (JSC::UStringImpl::baseSharedBuffer):
414        (JSC::UStringImpl::~UStringImpl):
415        * runtime/UStringImpl.h:
416        (JSC::UStringImpl::cost):
417        (JSC::UStringImpl::isIdentifier):
418        (JSC::UStringImpl::setIsIdentifier):
419        (JSC::UStringImpl::ref):
420        (JSC::UStringImpl::deref):
421        (JSC::UStringImpl::UStringImpl):
422        (JSC::UStringImpl::bufferOwnerString):
423        (JSC::UStringImpl::bufferOwnership):
424        (JSC::UStringImpl::isStatic):
425        (JSC::UStringImpl::):
426
4272010-02-12  Kwang Yul Seo  <skyul@company100.net>
428
429        Reviewed by Adam Barth.
430
431        Typedef both JSChar and UChar to wchar_t in RVCT.
432        https://bugs.webkit.org/show_bug.cgi?id=34560
433
434        Define both JSChar and UChar to wchar_t as the size
435        of wchar_t is 2 bytes in RVCT.
436
437        * API/JSStringRef.h:
438        * wtf/unicode/qt4/UnicodeQt4.h:
439
4402009-10-06  Yongjun Zhang  <yongjun.zhang@nokia.com>
441
442        Reviewed by Simon Hausmann.
443
444        Get rid of WINSCW hack for UnSpecifiedBoolType
445
446        Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW
447        compiler work with the default UnSpecifiedBoolType() operator.
448
449        https://bugs.webkit.org/show_bug.cgi?id=28054
450
451        * wtf/RefPtr.h:
452
4532010-02-09  Janne Koskinen  <janne.p.koskinen@digia.com>
454
455        Reviewed by Laszlo Gombos.
456
457        [Qt] use nanval() for Symbian as nonInlineNaN
458        https://bugs.webkit.org/show_bug.cgi?id=34170
459
460        numeric_limits<double>::quiet_NaN is broken in Symbian
461        causing NaN to be evaluated as a number.
462
463        * runtime/JSValue.cpp:
464        (JSC::nonInlineNaN):
465
4662010-02-01  Kent Tamura  <tkent@chromium.org>
467
468        Reviewed by Darin Adler.
469
470        Date.UTC() should apply TimeClip operation.
471        https://bugs.webkit.org/show_bug.cgi?id=34461
472
473        ECMAScript 5 15.9.4.3:
474        > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).
475
476        * runtime/DateConstructor.cpp:
477        (JSC::dateUTC): Calls WTF::timeClip().
478
4792010-02-01  Kent Tamura  <tkent@chromium.org>
480
481        Reviewed by Darin Adler.
482
483        Fix a bug that Math.round() retunrs incorrect results for huge integers
484        https://bugs.webkit.org/show_bug.cgi?id=34462
485
486        * runtime/MathObject.cpp:
487        (JSC::mathProtoFuncRound): Avoid "arg + 0.5".
488
4892010-02-01  Patrick Gansterer  <paroga@paroga.com>
490
491        Reviewed by Darin Adler.
492
493        [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo.
494        https://bugs.webkit.org/show_bug.cgi?id=34378
495
496        * wtf/Platform.h:
497
4982010-01-31  Patrick Gansterer  <paroga@paroga.com>
499
500        Reviewed by Darin Adler.
501
502        Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined).
503        https://bugs.webkit.org/show_bug.cgi?id=34380
504
505        * wtf/ThreadSpecific.h:
506
5072010-01-31  Kent Tamura  <tkent@chromium.org>
508
509        Reviewed by Darin Adler.
510
511        [Windows] Fix a bug of round() with huge integral numbers
512        https://bugs.webkit.org/show_bug.cgi?id=34297
513
514        Fix a bug that round() for huge integral numbers returns incorrect
515        results. For example, round(8639999913600001) returns
516        8639999913600002 without this change though the double type can
517        represent 8639999913600001 precisely.
518
519        Math.round() of JavaScript has a similar problem. But this change
520        doesn't fix it because Math.round() doesn't use round() of
521        MathExtra.h.
522
523        * wtf/MathExtras.h:
524        (round): Avoid to do "num + 0.5" or "num - 0.5".
525        (roundf): Fixed similarly.
526        (llround): Calls round().
527        (llroundf): Calls roundf().
528        (lround): Calls round().
529        (lroundf): Calls roundf().
530
5312010-01-27  Anton Muhin  <antonm@chromium.org>
532
533        Reviewed by Darin Adler.
534
535        Remove trailing \ from inline function code
536        https://bugs.webkit.org/show_bug.cgi?id=34223
537
538        * assembler/ARMv7Assembler.h:
539        (JSC::ARMThumbImmediate::countLeadingZerosPartial):
540
5412010-01-27  Kwang Yul Seo  <skyul@company100.net>
542
543        Reviewed by Oliver Hunt.
544
545        [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap.
546        https://bugs.webkit.org/show_bug.cgi?id=33582
547
548        Use fastMalloc and fastFree to implement MarkStack::allocateStack and
549        MarkStack::releaseStack for platforms without page level allocation.
550
551        * runtime/MarkStack.h:
552        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
553        * runtime/MarkStackNone.cpp: Added.
554        (JSC::MarkStack::initializePagesize):
555        (JSC::MarkStack::allocateStack):
556        (JSC::MarkStack::releaseStack):
557
5582010-01-27  Kwang Yul Seo  <skyul@company100.net>
559
560        Reviewed by Eric Seidel.
561
562        [BREWMP] Don't use time function
563        https://bugs.webkit.org/show_bug.cgi?id=33577
564
565        Calling time(0) in BREW devices causes a crash because time
566        is not properly ported in most devices. Cast currentTime() to
567        time_t to get the same result as time(0).
568
569        * wtf/DateMath.cpp:
570        (WTF::calculateUTCOffset):
571
5722010-01-27  Alexey Proskuryakov  <ap@apple.com>
573
574        Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes,
575        because they make SVG tests crash in release builds.
576
577        * wtf/HashMap.h:
578        (WTF::::remove):
579        * wtf/HashSet.h:
580        (WTF::::remove):
581        * wtf/HashTable.h:
582        (WTF::::add):
583        (WTF::::addPassingHashCode):
584        (WTF::::removeAndInvalidate):
585        (WTF::::remove):
586        (WTF::::rehash):
587        (WTF::::checkTableConsistency):
588        (WTF::::checkTableConsistencyExceptSize):
589        * wtf/HashTraits.h:
590        (WTF::GenericHashTraits::emptyValue):
591        (WTF::):
592        * wtf/RefPtrHashMap.h:
593        (WTF::::remove):
594
5952010-01-26  Alexey Proskuryakov  <ap@apple.com>
596
597        More Windows build fixing.
598
599        * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type.
600
6012010-01-26  Alexey Proskuryakov  <ap@apple.com>
602
603        Windows build fix.
604
605        * wtf/HashTraits.h: Include malloc.h for _msize().
606
6072010-01-26  Alexey Proskuryakov  <ap@apple.com>
608
609        Build fix.
610
611        * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a
612        static (empty) version of this function.
613
6142010-01-26  Alexey Proskuryakov  <ap@apple.com>
615
616        Reviewed by Darin Adler.
617
618        https://bugs.webkit.org/show_bug.cgi?id=34150
619        WebKit needs a mechanism to catch stale HashMap entries
620
621        It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
622        is just its value, it is very unlikely that any observable problem is reproducible.
623
624        This extends hash table consistency checks to check that pointers are referencing allocated
625        memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
626        to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
627
628        * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
629        add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
630        with those yet.
631
632        * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
633        CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
634
635        * wtf/HashTable.h:
636        (WTF::HashTable::internalCheckTableConsistency):
637        (WTF::HashTable::internalCheckTableConsistencyExceptSize):
638        (WTF::HashTable::checkTableConsistencyExceptSize):
639        Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
640        (WTF::::add): Updated for checkTableConsistency renaming.
641        (WTF::::addPassingHashCode): Ditto.
642        (WTF::::removeAndInvalidate): Ditto.
643        (WTF::::remove): Ditto.
644        (WTF::::rehash): Ditto.
645        (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
646        function returns true for tables with m_table == 0.
647        (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
648        we could do the same for values.
649
650        * wtf/HashTraits.h:
651        (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
652        to add checks. Currently, the only override is for pointer hashes.
653
654        * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
655
6562010-01-26  Lyon Chen  <liachen@rim.com>
657
658        Reviewed by Maciej Stachowiak.
659
660        Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler
661        https://bugs.webkit.org/show_bug.cgi?id=33902
662
663        * bytecode/Opcode.h:
664
6652010-01-26  Steve Falkenburg  <sfalken@apple.com>
666
667        Reviewed by Oliver Hunt.
668
669        Windows build references non-existent include paths
670        https://bugs.webkit.org/show_bug.cgi?id=34175
671
672        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
673        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
674        * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
675        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
676        * JavaScriptCore.vcproj/testapi/testapi.vcproj:
677        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
678
6792010-01-26  Oliver Hunt  <oliver@apple.com>
680
681        Reviewed by Geoffrey Garen.
682
683        Using JavaScriptCore API with a webkit vended context can result in slow script dialog
684        https://bugs.webkit.org/show_bug.cgi?id=34172
685
686        Make the APIShim correctly increment and decrement the timeout
687        entry counter.
688
689        * API/APIShims.h:
690        (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
691        (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
692        (JSC::APICallbackShim::APICallbackShim):
693        (JSC::APICallbackShim::~APICallbackShim):
694
6952010-01-26  Simon Hausmann  <simon.hausmann@nokia.com>
696
697        [Qt] Fix compilation of QtScript with non-gcc compilers
698
699        Variable length stack arrays are a gcc extension. Use QVarLengthArray
700        as a more portable solution that still tries to allocate on the stack
701        first.
702
703        * qt/api/qscriptvalue_p.h:
704        (QScriptValuePrivate::call):
705
7062010-01-26  Simon Hausmann  <simon.hausmann@nokia.com>
707
708        Reviewed by Tor Arne Vestbø.
709
710        [Qt] Fix the build on platforms without JIT support.
711
712        The JIT support should be determined at compile-time via wtf/Platform.h
713
714        * qt/api/QtScript.pro:
715
7162010-01-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
717
718        Reviewed by Simon Hausmann.
719
720        First steps of the QtScript API.
721
722        Two new classes were created; QScriptEngine and QScriptValue.
723        The first should encapsulate a javascript context and the second a script
724        value.
725
726        This API is still in development, so it isn't compiled by default.
727        To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to
728        build-webkit.
729
730        https://bugs.webkit.org/show_bug.cgi?id=32565
731
732        * qt/api/QtScript.pro: Added.
733        * qt/api/qscriptconverter_p.h: Added.
734        (QScriptConverter::toString):
735        * qt/api/qscriptengine.cpp: Added.
736        (QScriptEngine::QScriptEngine):
737        (QScriptEngine::~QScriptEngine):
738        (QScriptEngine::evaluate):
739        (QScriptEngine::collectGarbage):
740        * qt/api/qscriptengine.h: Added.
741        * qt/api/qscriptengine_p.cpp: Added.
742        (QScriptEnginePrivate::QScriptEnginePrivate):
743        (QScriptEnginePrivate::~QScriptEnginePrivate):
744        (QScriptEnginePrivate::evaluate):
745        * qt/api/qscriptengine_p.h: Added.
746        (QScriptEnginePrivate::get):
747        (QScriptEnginePrivate::collectGarbage):
748        (QScriptEnginePrivate::makeJSValue):
749        (QScriptEnginePrivate::context):
750        * qt/api/qscriptvalue.cpp: Added.
751        (QScriptValue::QScriptValue):
752        (QScriptValue::~QScriptValue):
753        (QScriptValue::isValid):
754        (QScriptValue::isBool):
755        (QScriptValue::isBoolean):
756        (QScriptValue::isNumber):
757        (QScriptValue::isNull):
758        (QScriptValue::isString):
759        (QScriptValue::isUndefined):
760        (QScriptValue::isError):
761        (QScriptValue::isObject):
762        (QScriptValue::isFunction):
763        (QScriptValue::toString):
764        (QScriptValue::toNumber):
765        (QScriptValue::toBool):
766        (QScriptValue::toBoolean):
767        (QScriptValue::toInteger):
768        (QScriptValue::toInt32):
769        (QScriptValue::toUInt32):
770        (QScriptValue::toUInt16):
771        (QScriptValue::call):
772        (QScriptValue::engine):
773        (QScriptValue::operator=):
774        (QScriptValue::equals):
775        (QScriptValue::strictlyEquals):
776        * qt/api/qscriptvalue.h: Added.
777        (QScriptValue::):
778        * qt/api/qscriptvalue_p.h: Added.
779        (QScriptValuePrivate::):
780        (QScriptValuePrivate::get):
781        (QScriptValuePrivate::QScriptValuePrivate):
782        (QScriptValuePrivate::isValid):
783        (QScriptValuePrivate::isBool):
784        (QScriptValuePrivate::isNumber):
785        (QScriptValuePrivate::isNull):
786        (QScriptValuePrivate::isString):
787        (QScriptValuePrivate::isUndefined):
788        (QScriptValuePrivate::isError):
789        (QScriptValuePrivate::isObject):
790        (QScriptValuePrivate::isFunction):
791        (QScriptValuePrivate::toString):
792        (QScriptValuePrivate::toNumber):
793        (QScriptValuePrivate::toBool):
794        (QScriptValuePrivate::toInteger):
795        (QScriptValuePrivate::toInt32):
796        (QScriptValuePrivate::toUInt32):
797        (QScriptValuePrivate::toUInt16):
798        (QScriptValuePrivate::equals):
799        (QScriptValuePrivate::strictlyEquals):
800        (QScriptValuePrivate::assignEngine):
801        (QScriptValuePrivate::call):
802        (QScriptValuePrivate::engine):
803        (QScriptValuePrivate::context):
804        (QScriptValuePrivate::value):
805        (QScriptValuePrivate::object):
806        (QScriptValuePrivate::inherits):
807        (QScriptValuePrivate::isJSBased):
808        (QScriptValuePrivate::isNumberBased):
809        (QScriptValuePrivate::isStringBased):
810        * qt/api/qtscriptglobal.h: Added.
811        * qt/tests/qscriptengine/qscriptengine.pro: Added.
812        * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added.
813        (tst_QScriptEngine::tst_QScriptEngine):
814        (tst_QScriptEngine::~tst_QScriptEngine):
815        (tst_QScriptEngine::init):
816        (tst_QScriptEngine::cleanup):
817        (tst_QScriptEngine::collectGarbage):
818        (tst_QScriptEngine::evaluate):
819        * qt/tests/qscriptvalue/qscriptvalue.pro: Added.
820        * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added.
821        (tst_QScriptValue::tst_QScriptValue):
822        (tst_QScriptValue::~tst_QScriptValue):
823        (tst_QScriptValue::init):
824        (tst_QScriptValue::cleanup):
825        (tst_QScriptValue::ctor):
826        (tst_QScriptValue::toString_data):
827        (tst_QScriptValue::toString):
828        (tst_QScriptValue::copyConstructor_data):
829        (tst_QScriptValue::copyConstructor):
830        (tst_QScriptValue::assignOperator_data):
831        (tst_QScriptValue::assignOperator):
832        (tst_QScriptValue::dataSharing):
833        (tst_QScriptValue::constructors_data):
834        (tst_QScriptValue::constructors):
835        (tst_QScriptValue::call):
836        * qt/tests/tests.pri: Added.
837        * qt/tests/tests.pro: Added.
838
8392010-01-25  Dmitry Titov  <dimich@chromium.org>
840
841        Reviewed by David Levin.
842
843        Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle.
844        After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads
845        were already terminated and their threadMap entries cleared.
846        Add a 0 check.
847
848        * wtf/ThreadingPthreads.cpp:
849        (WTF::waitForThreadCompletion):
850        (WTF::detachThread):
851
8522010-01-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
853
854        Reviewed by Maciej Stachowiak.
855
856        Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function
857        https://bugs.webkit.org/show_bug.cgi?id=33866
858
859        Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION
860        macro for those functions that are always present.
861
862        * jit/JITStubs.cpp:
863        (JSC::DEFINE_STUB_FUNCTION):
864
8652010-01-22  Kevin Watters  <kevinwatters@gmail.com>
866
867        Reviewed by Kevin Ollivier.
868
869        [wx] Remove the Bakefile build system, which is no longer being used.
870
871        https://bugs.webkit.org/show_bug.cgi?id=34022
872
873        * JavaScriptCoreSources.bkl: Removed.
874        * jscore.bkl: Removed.
875
8762010-01-22  Steve Falkenburg  <sfalken@apple.com>
877
878        Reviewed by Darin Adler.
879
880        https://bugs.webkit.org/show_bug.cgi?id=34025
881        Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.
882
883        * Configurations/FeatureDefines.xcconfig:
884
8852010-01-22  Dmitry Titov  <dimich@chromium.org>
886
887        Not reviewed, attempted Snow Leopard build fix.
888
889        * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'.
890
8912009-01-22  Dmitry Titov  <dimich@chromium.org>
892
893        Reviewed by Maciej Stachowiak.
894
895        Fix the leak of ThreadIdentifiers in threadMap across threads.
896        https://bugs.webkit.org/show_bug.cgi?id=32689
897
898        Test is added to DumpRenderTree.mm.
899
900        * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build.
901        * Android.v8.wtf.mk: Ditto.
902        * GNUmakefile.am: Ditto.
903        * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto.
904        * JavaScriptCore.gypi: Ditto.
905        * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
906
907        * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor.
908        (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap.
909        (WTF::ThreadIdentifierData::identifier):
910        (WTF::ThreadIdentifierData::initialize):
911        (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke.
912        (WTF::ThreadIdentifierData::initializeKeyOnceHelper):
913        (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s).
914        * wtf/ThreadIdentifierDataPthreads.h: Added.
915        (WTF::ThreadIdentifierData::ThreadIdentifierData):
916
917        * wtf/Threading.cpp:
918        (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make
919                                 sure it is invoked when ThreadIdentifier is already established.
920
921        * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now.
922        * wtf/ThreadingNone.cpp:
923        (WTF::initializeCurrentThreadInternal): Ditto.
924        * wtf/ThreadingWin.cpp:
925        (WTF::initializeCurrentThreadInternal): Ditto.
926        (WTF::initializeThreading): Ditto.
927        * wtf/gtk/ThreadingGtk.cpp:
928        (WTF::initializeCurrentThreadInternal): Ditto.
929        * wtf/qt/ThreadingQt.cpp:
930        (WTF::initializeCurrentThreadInternal): Ditto.
931
932        * wtf/ThreadingPthreads.cpp:
933        (WTF::establishIdentifierForPthreadHandle):
934        (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it.
935        (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread.
936        (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData().
937        (WTF::detachThread): Ditto.
938        (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map.
939                              Also, set the thread-specific data if called first time on the thread.
940
9412010-01-21  Kwang Yul Seo  <skyul@company100.net>
942
943        Reviewed by Alexey Proskuryakov.
944
945        Add ThreadSpecific for ENABLE(SINGLE_THREADED)
946        https://bugs.webkit.org/show_bug.cgi?id=33878
947
948        Implement ThreadSpecific with a simple getter/setter
949        when ENABLE(SINGLE_THREADED) is true.
950
951        Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236,
952        an implementation of ThreadSpecific must be available to build WebKit.
953        This causes a build failure for platforms without a proper
954        ThreadSpecific implementation.
955
956        * wtf/ThreadSpecific.h:
957        (WTF::::ThreadSpecific):
958        (WTF::::~ThreadSpecific):
959        (WTF::::get):
960        (WTF::::set):
961        (WTF::::destroy):
962
9632010-01-21  Kwang Yul Seo  <skyul@company100.net>
964
965        Reviewed by Maciej Stachowiak.
966
967        Add fastStrDup to FastMalloc
968        https://bugs.webkit.org/show_bug.cgi?id=33937
969
970        The new string returned by fastStrDup is obtained with fastMalloc,
971        and can be freed with fastFree. This makes the memory management
972        more consistent because we don't need to keep strdup allocated pointers
973        and free them with free(). Instead we can use fastFree everywhere.
974
975        * wtf/FastMalloc.cpp:
976        (WTF::fastStrDup):
977        * wtf/FastMalloc.h:
978
9792010-01-21  Brady Eidson  <beidson@apple.com>
980
981        Reviewed by Maciej Stachowiak.
982
983        history.back() for same-document history traversals isn't synchronous as the specification states.
984        <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538
985
986        * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium.
987
9882010-01-21  Geoffrey Garen  <ggaren@apple.com>
989
990        Reviewed by Oliver Hunt.
991
992        Always create a prototype for automatically managed classes.
993
994        This fixes some errors where prototype chains were not correctly hooked
995        up, and also ensures that API classes work correctly with features like
996        instanceof.
997
998        * API/JSClassRef.cpp:
999        (OpaqueJSClass::create): Cleaned up some of this code. Also changed it
1000        to always create a prototype class.
1001
1002        * API/tests/testapi.c:
1003        (Derived2_class):
1004        (main): Fixed a null value crash in the exception checking code.
1005        * API/tests/testapi.js: Added some tests for the case where a prototype
1006        chain would not be hooked up correctly.
1007
10082010-01-21  Oliver Hunt  <oliver@apple.com>
1009
1010        Reviewed by Geoff Garen.
1011
1012        Force JSC to create a prototype chain for API classes with a
1013        parent class but no static functions.
1014
1015        * API/JSClassRef.cpp:
1016        (OpaqueJSClass::create):
1017
10182010-01-21  Kent Hansen  <kent.hansen@nokia.com>
1019
1020        Reviewed by Geoffrey Garen.
1021
1022        Object.getOwnPropertyDescriptor always returns undefined for JS API objects
1023        https://bugs.webkit.org/show_bug.cgi?id=33946
1024
1025        Ideally the getOwnPropertyDescriptor() reimplementation should return an
1026        access descriptor that wraps the property getter and setter callbacks, but
1027        that approach is much more involved than returning a value descriptor.
1028        Keep it simple for now.
1029
1030        * API/JSCallbackObject.h:
1031        * API/JSCallbackObjectFunctions.h:
1032        (JSC::::getOwnPropertyDescriptor):
1033        * API/tests/testapi.js:
1034
10352010-01-20  Mark Rowe  <mrowe@apple.com>
1036
1037        Build fix.
1038
1039        * wtf/FastMalloc.cpp:
1040        (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call.
1041
10422010-01-20  Mark Rowe  <mrowe@apple.com>
1043
1044        Reviewed by Oliver Hunt.
1045
1046        Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes.
1047
1048        * wtf/TCSpinLock.h:
1049        (TCMalloc_SpinLock::Lock):
1050        (TCMalloc_SpinLock::Unlock):
1051        (TCMalloc_SlowLock):
1052
10532010-01-20  Mark Rowe  <mrowe@apple.com>
1054
1055        Reviewed by Oliver Hunt.
1056
1057        <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported
1058
1059        Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms
1060        where it is supported.
1061
1062        * wtf/FastMalloc.cpp:
1063        (WTF::TCMalloc_PageHeap::init):
1064        (WTF::TCMalloc_PageHeap::initializeScavenger):
1065        (WTF::TCMalloc_PageHeap::signalScavenger):
1066        (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
1067        (WTF::TCMalloc_PageHeap::Delete):
1068        (WTF::TCMalloc_PageHeap::periodicScavenge):
1069        * wtf/Platform.h:
1070
10712010-01-20  Geoffrey Garen  <ggaren@apple.com>
1072
1073        Reviewed by Oliver Hunt.
1074
1075        <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run
1076        all destructors
1077
1078        * runtime/Collector.cpp:
1079        (JSC::Heap::freeBlocks): Instead of fully marking protected objects,
1080        just set their mark bits. This prevents protected objects from keeping
1081        unprotected objects alive. Destructor order is not guaranteed, so it's
1082        OK to destroy objects pointed to by protected objects before destroying
1083        protected objects.
1084
10852010-01-19  David Levin  <levin@chromium.org>
1086
1087        Reviewed by Oliver Hunt.
1088
1089        CrossThreadCopier needs to support ThreadSafeShared better.
1090        https://bugs.webkit.org/show_bug.cgi?id=33698
1091
1092        * wtf/TypeTraits.cpp: Added tests for the new type traits.
1093        * wtf/TypeTraits.h:
1094        (WTF::IsSubclass): Determines if a class is a derived from another class.
1095        (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a
1096        template class (with one parameter that is unknown).
1097        (WTF::RemoveTemplate): Reveals the type for a template parameter.
1098
10992010-01-20  Steve Falkenburg  <sfalken@apple.com>
1100
1101        Reviewed by Darin Adler and Adam Roben.
1102
1103        Feature defines are difficult to maintain on Windows builds
1104        https://bugs.webkit.org/show_bug.cgi?id=33883
1105
1106        FeatureDefines.vsprops are now maintained in a way similar to
1107        Configurations/FeatureDefines.xcconfig, with the added advantage
1108        of having a single FeatureDefines file across all projects.
1109
1110        * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync.
1111        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet.
1112        * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet.
1113
11142010-01-20  Csaba Osztrogonác  <ossy@webkit.org>
1115
1116        [Qt] Unreviewed buildfix for r53547.
1117
1118        * DerivedSources.pro:
1119
11202010-01-20  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
1121
1122        Reviewed by Simon Hausmann.
1123
1124        [Qt] Make extraCompilers for generated sources depend on their scripts
1125
1126        * DerivedSources.pro:
1127
11282010-01-19  Brian Weinstein  <bweinstein@apple.com>
1129
1130        Reviewed by Tim Hatcher.
1131
1132        When JavaScriptCore calls Debugger::Exception, have it pass a
1133        hasHandler variable that represents if exception is being handled
1134        in the same function (not in a parent on the call stack).
1135
1136        This just adds a new parameter, no behavior is changed.
1137
1138        * debugger/Debugger.h:
1139        * interpreter/Interpreter.cpp:
1140        (JSC::Interpreter::throwException):
1141
11422010-01-18  Maciej Stachowiak  <mjs@apple.com>
1143
1144        Reviewed by Adam Barth.
1145
1146        Inline functions that are hot in DOM manipulation
1147        https://bugs.webkit.org/show_bug.cgi?id=33820
1148
1149        (3% speedup on Dromaeo DOM Core tests)
1150
1151        * runtime/WeakGCMap.h:
1152        (JSC::::get): inline
1153
11542010-01-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1155
1156        Unreviewed build fix for JIT with RVCT.
1157
1158        Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h.
1159        Remove extra ')'.
1160
1161        * jit/JITStubs.cpp:
1162        (JSC::ctiVMThrowTrampoline):
1163
11642010-01-19  Geoffrey Garen  <ggaren@apple.com>
1165
1166        Reviewed by Oliver Hunt.
1167
1168        REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
1169        https://bugs.webkit.org/show_bug.cgi?id=33826
1170
1171        This bug was caused by a GC-protected object being destroyed early by
1172        Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
1173        to GC-protected memory to be valid.
1174
1175        The solution is to do two passes of tear-down in Heap::destroy. The first
1176        pass tears down all unprotected objects. The second pass ASSERTs that all
1177        previously protected objects are now unprotected, and then tears down
1178        all perviously protected objects. These two passes simulate the two passes
1179        that would have been required to free a protected object during normal GC.
1180
1181        * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
1182
1183        * runtime/Collector.cpp:
1184        (JSC::Heap::destroy): Moved ASSERTs to here.
1185        (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
1186        setter to the function that does the shrinking.
1187        (JSC::Heap::freeBlocks): Implemented above algorithm.
1188        (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
1189
11902010-01-19  Gavin Barraclough  <barraclough@apple.com>
1191
1192        Reviewed by NOBODY (build fix).
1193
1194        Reverting r53455, breaks 2 javascriptcore tests.
1195
1196        * API/JSContextRef.cpp:
1197        * runtime/Collector.cpp:
1198        (JSC::Heap::destroy):
1199        (JSC::Heap::freeBlock):
1200        (JSC::Heap::freeBlocks):
1201        (JSC::Heap::shrinkBlocks):
1202
12032010-01-18  Gavin Barraclough  <barraclough@apple.com>
1204
1205        Reviewed by NOBODY (build fix).
1206
1207        Revert r53454, since it causes much sadness in this world.
1208
1209        * runtime/UString.cpp:
1210        (JSC::UString::spliceSubstringsWithSeparators):
1211        (JSC::UString::replaceRange):
1212        * runtime/UStringImpl.cpp:
1213        (JSC::UStringImpl::baseSharedBuffer):
1214        (JSC::UStringImpl::sharedBuffer):
1215        (JSC::UStringImpl::~UStringImpl):
1216        * runtime/UStringImpl.h:
1217        (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
1218        (JSC::UntypedPtrAndBitfield::asPtr):
1219        (JSC::UntypedPtrAndBitfield::operator&=):
1220        (JSC::UntypedPtrAndBitfield::operator|=):
1221        (JSC::UntypedPtrAndBitfield::operator&):
1222        (JSC::UStringImpl::create):
1223        (JSC::UStringImpl::cost):
1224        (JSC::UStringImpl::isIdentifier):
1225        (JSC::UStringImpl::setIsIdentifier):
1226        (JSC::UStringImpl::ref):
1227        (JSC::UStringImpl::deref):
1228        (JSC::UStringImpl::checkConsistency):
1229        (JSC::UStringImpl::UStringImpl):
1230        (JSC::UStringImpl::bufferOwnerString):
1231        (JSC::UStringImpl::bufferOwnership):
1232        (JSC::UStringImpl::isStatic):
1233        * wtf/StringHashFunctions.h:
1234        (WTF::stringHash):
1235
12362010-01-18  Geoffrey Garen  <ggaren@apple.com>
1237
1238        Reviewed by Oliver Hunt.
1239
1240        REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
1241        https://bugs.webkit.org/show_bug.cgi?id=33826
1242
1243        This bug was caused by a GC-protected object being destroyed early by
1244        Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
1245        to GC-protected memory to be valid.
1246
1247        The solution is to do two passes of tear-down in Heap::destroy. The first
1248        pass tears down all unprotected objects. The second pass ASSERTs that all
1249        previously protected objects are now unprotected, and then tears down
1250        all perviously protected objects. These two passes simulate the two passes
1251        that would have been required to free a protected object during normal GC.
1252
1253        * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
1254
1255        * runtime/Collector.cpp:
1256        (JSC::Heap::destroy): Moved ASSERTs to here.
1257        (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
1258        setter to the function that does the shrinking.
1259        (JSC::Heap::freeBlocks): Implemented above algorithm.
1260        (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
1261
12622010-01-18  Gavin Barraclough  <barraclough@apple.com>
1263
1264        Reviewed by Oliver Hunt.
1265
1266        https://bugs.webkit.org/show_bug.cgi?id=33731
1267        Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
1268
1269        This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
1270
1271        * runtime/UStringImpl.cpp:
1272        (JSC::UStringImpl::sharedBuffer):
1273        (JSC::UStringImpl::~UStringImpl):
1274        * runtime/UStringImpl.h:
1275        (JSC::UStringImpl::cost):
1276        (JSC::UStringImpl::checkConsistency):
1277        (JSC::UStringImpl::UStringImpl):
1278        (JSC::UStringImpl::bufferOwnerString):
1279        (JSC::UStringImpl::):
1280        * wtf/StringHashFunctions.h:
1281        (WTF::stringHash):
1282
12832010-01-18  Kent Tamura  <tkent@chromium.org>
1284
1285        Reviewed by Darin Adler.
1286
1287        HTMLInputElement::valueAsDate setter support for type=month.
1288        https://bugs.webkit.org/show_bug.cgi?id=33021
1289
1290        Expose the following functions to be used by WebCore:
1291         - WTF::msToyear()
1292         - WTF::dayInYear()
1293         - WTF::monthFromDayInYear()
1294         - WTF::dayInMonthFromDayInYear()
1295
1296        * JavaScriptCore.exp:
1297        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1298        * wtf/DateMath.cpp:
1299        (WTF::msToYear): Remove "static inline".
1300        (WTF::dayInYear): Remove "static inline".
1301        (WTF::monthFromDayInYear): Remove "static inline".
1302        (WTF::dayInMonthFromDayInYear): Remove "static inline".
1303        * wtf/DateMath.h: Declare the above functions.
1304
13052010-01-18  Darin Adler  <darin@apple.com>
1306
1307        Fix build by reverting the previous change.
1308
1309        * runtime/UString.h: Rolled out the FastAllocBase base class.
1310        It was making UString larger, and therefore JSString larger,
1311        and too big for a garbage collection cell.
1312
1313        This raises the unpleasant possibility that many classes became
1314        larger because we added the FastAllocBase base class. I am
1315        worried about this, and it needs to be investigated.
1316
13172010-01-18  Zoltan Horvath  <zoltan@webkit.org>
1318
1319        Reviewed by Darin Adler.
1320
1321        Allow custom memory allocation control for UString class
1322        https://bugs.webkit.org/show_bug.cgi?id=27831
1323
1324        Inherits the following class from FastAllocBase because it is
1325        instantiated by 'new' and no need to be copyable:
1326
1327        class name     - instantiated at:
1328        classs UString - JavaScriptCore/runtime/UString.cpp:160
1329
1330        * runtime/UString.h:
1331
13322010-01-18  Evan Cheng  <evan.cheng@apple.com>
1333
1334        Reviewed by Darin Adler.
1335
1336        Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
1337        rdar://problem/7553780
1338
1339        * runtime/JSObject.h:
1340        (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
1341        * runtime/JSString.h:
1342        (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
1343        * runtime/UString.h:
1344        (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.
1345
13462010-01-18  Csaba Osztrogonác  <ossy@webkit.org>
1347
1348        Reviewed by Darin Adler.
1349
1350        Delete dftables-xxxxxxxx.in files automatically.
1351        https://bugs.webkit.org/show_bug.cgi?id=33796
1352
1353        * pcre/dftables: unlink unnecessary temporary file.
1354
13552010-01-18  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
1356
1357        Reviewed by Simon Hausmann.
1358
1359        [Qt] Force qmake to generate a single makefile for DerivedSources.pro
1360
1361        * DerivedSources.pro:
1362
13632010-01-18  Csaba Osztrogonác  <ossy@webkit.org>
1364
1365        Rubber-stamped by Gustavo Noronha Silva.
1366
1367        Rolling out r53391 and r53392 because of random crashes on buildbots.
1368        https://bugs.webkit.org/show_bug.cgi?id=33731
1369
1370        * bytecode/CodeBlock.h:
1371        (JSC::CallLinkInfo::seenOnce):
1372        (JSC::CallLinkInfo::setSeen):
1373        (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
1374        (JSC::MethodCallLinkInfo::seenOnce):
1375        (JSC::MethodCallLinkInfo::setSeen):
1376        * jit/JIT.cpp:
1377        (JSC::JIT::unlinkCall):
1378        * jit/JITPropertyAccess.cpp:
1379        (JSC::JIT::patchMethodCallProto):
1380        * runtime/UString.cpp:
1381        (JSC::UString::spliceSubstringsWithSeparators):
1382        (JSC::UString::replaceRange):
1383        * runtime/UString.h:
1384        * runtime/UStringImpl.cpp:
1385        (JSC::UStringImpl::baseSharedBuffer):
1386        (JSC::UStringImpl::sharedBuffer):
1387        (JSC::UStringImpl::~UStringImpl):
1388        * runtime/UStringImpl.h:
1389        (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
1390        (JSC::UntypedPtrAndBitfield::asPtr):
1391        (JSC::UntypedPtrAndBitfield::operator&=):
1392        (JSC::UntypedPtrAndBitfield::operator|=):
1393        (JSC::UntypedPtrAndBitfield::operator&):
1394        (JSC::UStringImpl::create):
1395        (JSC::UStringImpl::cost):
1396        (JSC::UStringImpl::isIdentifier):
1397        (JSC::UStringImpl::setIsIdentifier):
1398        (JSC::UStringImpl::ref):
1399        (JSC::UStringImpl::deref):
1400        (JSC::UStringImpl::checkConsistency):
1401        (JSC::UStringImpl::UStringImpl):
1402        (JSC::UStringImpl::bufferOwnerString):
1403        (JSC::UStringImpl::bufferOwnership):
1404        (JSC::UStringImpl::isStatic):
1405        * wtf/StringHashFunctions.h:
1406        (WTF::stringHash):
1407
14082010-01-18  Simon Hausmann  <simon.hausmann@nokia.com>
1409
1410        Reviewed by Kenneth Rohde Christiansen.
1411
1412        Fix the build with strict gcc and RVCT versions: It's not legal to cast a
1413        pointer to a function to a void* without an intermediate cast to a non-pointer
1414        type. A cast to a ptrdiff_t inbetween fixes it.
1415
1416        * runtime/JSString.h:
1417        (JSC::Fiber::JSString):
1418
14192010-01-15  Gavin Barraclough  <barraclough@apple.com>
1420
1421        Reviewed by Oliver Hunt.
1422
1423        https://bugs.webkit.org/show_bug.cgi?id=33731
1424        Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
1425
1426        This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
1427
1428        * runtime/UStringImpl.cpp:
1429        (JSC::UStringImpl::sharedBuffer):
1430        (JSC::UStringImpl::~UStringImpl):
1431        * runtime/UStringImpl.h:
1432        (JSC::UStringImpl::cost):
1433        (JSC::UStringImpl::checkConsistency):
1434        (JSC::UStringImpl::UStringImpl):
1435        (JSC::UStringImpl::bufferOwnerString):
1436        (JSC::UStringImpl::):
1437        * wtf/StringHashFunctions.h:
1438        (WTF::stringHash):
1439
14402010-01-15  Gavin Barraclough  <barraclough@apple.com>
1441
1442        Reviewed by Oliver Hunt.
1443
1444        https://bugs.webkit.org/show_bug.cgi?id=33731
1445        Remove uses of PtrAndFlags from JIT data stuctures.
1446
1447        These break the OS X Leaks tool.  Free up a bit in CallLinkInfo, and invalid
1448        permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
1449
1450        * bytecode/CodeBlock.h:
1451        (JSC::CallLinkInfo::seenOnce):
1452        (JSC::CallLinkInfo::setSeen):
1453        (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
1454        (JSC::MethodCallLinkInfo::seenOnce):
1455        (JSC::MethodCallLinkInfo::setSeen):
1456        * jit/JIT.cpp:
1457        (JSC::JIT::unlinkCall):
1458        * jit/JITPropertyAccess.cpp:
1459        (JSC::JIT::patchMethodCallProto):
1460        * runtime/UString.h:
1461
14622010-01-16  Maciej Stachowiak  <mjs@apple.com>
1463
1464        Reviewed by Oliver Hunt.
1465
1466        Cache JS string values made from DOM strings (Dromaeo speedup)
1467        https://bugs.webkit.org/show_bug.cgi?id=33768
1468        <rdar://problem/7353576>
1469
1470        * runtime/JSString.h:
1471        (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional
1472        finalizer callback, for the benefit of weak-referencing caches.
1473        (JSC::):
1474        (JSC::Fiber::JSString):
1475        (JSC::Fiber::~JSString):
1476        * runtime/JSString.cpp:
1477        (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer.
1478        * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself.
1479
14802010-01-15  Sam Weinig  <sam@webkit.org>
1481
1482        Reviewed by Maciej Stachowiak.
1483
1484        Fix for <rdar://problem/7548432>
1485        Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc.
1486
1487        * runtime/Operations.h:
1488        (JSC::jsLess):
1489
14902010-01-14  Geoffrey Garen  <ggaren@apple.com>
1491
1492        Reviewed by Oliver Hunt.
1493
1494        REGRESISON: Google maps buttons not working properly
1495        https://bugs.webkit.org/show_bug.cgi?id=31871
1496
1497        REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
1498        getting directions for a second time
1499        https://bugs.webkit.org/show_bug.cgi?id=33446
1500
1501        SunSpider and v8 report no change.
1502
1503        * interpreter/Interpreter.cpp:
1504        (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case
1505        flattening the dictionary changed any of its offsets.
1506
1507        * jit/JITStubs.cpp:
1508        (JSC::JITThunks::tryCacheGetByID):
1509        (JSC::DEFINE_STUB_FUNCTION):
1510        * runtime/Operations.h:
1511        (JSC::normalizePrototypeChain): ditto
1512
15132010-01-14  Gavin Barraclough  <barraclough@apple.com>
1514
1515        Reviewed by Oliver Hunt.
1516
1517        https://bugs.webkit.org/show_bug.cgi?id=33705
1518        UStringImpl::create() should use internal storage
1519
1520        When creating a UStringImpl copying of a UChar*, we can use an internal buffer,
1521        by calling UStringImpl::tryCreateUninitialized().
1522
1523        Also, remove duplicate of copyChars from JSString, call UStringImpl's version.
1524
1525        Small (max 0.5%) progression on Sunspidey.
1526
1527        * runtime/JSString.cpp:
1528        (JSC::JSString::resolveRope):
1529        * runtime/UStringImpl.h:
1530        (JSC::UStringImpl::create):
1531
15322010-01-14  Gavin Barraclough  <barraclough@apple.com>
1533
1534        Reviewed by Sam Weinig.
1535
1536        Make naming & behaviour of UString[Impl] methods more consistent.
1537        https://bugs.webkit.org/show_bug.cgi?id=33702
1538
1539        UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes
1540        that it should assume ownership of the provided buffer (with UString::createNonCopying()
1541        and UStringImpl::createCopying() providing the alternate behaviours).  Unify on create()
1542        taking a copy of the provided buffer.  For non-copying cases, use the name 'adopt', and
1543        make this method take a Vector<UChar>&.  For cases where non-copying construction was being
1544        used, other than from a Vector<UChar>, change the code to allocate the storage along with
1545        the UStringImpl using UStringImpl::createUninitialized().  (The adopt() method also more
1546        closely matches that of WebCore::StringImpl).
1547
1548        Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible
1549        behaviours, in that the UString form sets the provided UChar* to a null or non-null value to
1550        indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to
1551        indicate when allocation has failed (potentially leaving the output Char* uninitialized).
1552        This is also incompatible with WebCore::StringImpl's behaviour, in that
1553        StringImpl::createUninitialized() will CRASH() if unable to allocate.  Some uses of
1554        createUninitialized() in JSC are unsafe, since they do not test the result for null.
1555        UStringImpl's indication is preferable, since we may want a successful call to set the result
1556        buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized()
1557        returns the empty string, which seems reasonable to catch bugs early).  UString's method
1558        cannot support UStringImpl's behaviour directly, since it returns an object rather than a
1559        pointer.
1560            - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized()
1561            - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(),
1562              with current behaviour, make createUninitialized() crash on failure to allocate.
1563            - make cases in JSC that do not check the result call createUninitialized(), and cases that do
1564              check call tryCreateUninitialized().
1565
1566        Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl.
1567
1568        * API/JSClassRef.cpp:
1569        (OpaqueJSClassContextData::OpaqueJSClassContextData):
1570        * JavaScriptCore.exp:
1571        * runtime/ArrayPrototype.cpp:
1572        (JSC::arrayProtoFuncToString):
1573        * runtime/Identifier.cpp:
1574        (JSC::CStringTranslator::translate):
1575        (JSC::UCharBufferTranslator::translate):
1576        * runtime/JSString.cpp:
1577        (JSC::JSString::resolveRope):
1578        * runtime/Lookup.cpp:
1579        (JSC::HashTable::createTable):
1580        * runtime/Lookup.h:
1581        (JSC::HashTable::entry):
1582        * runtime/StringBuilder.h:
1583        (JSC::StringBuilder::release):
1584        * runtime/StringConstructor.cpp:
1585        (JSC::stringFromCharCodeSlowCase):
1586        * runtime/StringPrototype.cpp:
1587        (JSC::substituteBackreferencesSlow):
1588        (JSC::stringProtoFuncToLowerCase):
1589        (JSC::stringProtoFuncToUpperCase):
1590        (JSC::stringProtoFuncFontsize):
1591        (JSC::stringProtoFuncLink):
1592        * runtime/Structure.cpp:
1593        (JSC::Structure::despecifyDictionaryFunction):
1594        (JSC::Structure::get):
1595        (JSC::Structure::despecifyFunction):
1596        (JSC::Structure::put):
1597        (JSC::Structure::remove):
1598        (JSC::Structure::insertIntoPropertyMapHashTable):
1599        (JSC::Structure::checkConsistency):
1600        * runtime/Structure.h:
1601        (JSC::Structure::get):
1602        * runtime/StructureTransitionTable.h:
1603        (JSC::StructureTransitionTableHash::hash):
1604        * runtime/UString.cpp:
1605        (JSC::createRep):
1606        (JSC::UString::UString):
1607        (JSC::UString::spliceSubstringsWithSeparators):
1608        (JSC::UString::replaceRange):
1609        (JSC::UString::operator=):
1610        * runtime/UString.h:
1611        (JSC::UString::adopt):
1612        (JSC::IdentifierRepHash::hash):
1613        (JSC::makeString):
1614        * runtime/UStringImpl.h:
1615        (JSC::UStringImpl::adopt):
1616        (JSC::UStringImpl::create):
1617        (JSC::UStringImpl::createUninitialized):
1618        (JSC::UStringImpl::tryCreateUninitialized):
1619        (JSC::UStringImpl::existingHash):
1620
16212010-01-13  Kent Hansen  <kent.hansen@nokia.com>
1622
1623        Reviewed by Oliver Hunt.
1624
1625        JSON.stringify and JSON.parse needlessly process properties in the prototype chain
1626        https://bugs.webkit.org/show_bug.cgi?id=33053
1627
1628        * runtime/JSONObject.cpp:
1629        (JSC::Stringifier::Holder::appendNextProperty):
1630        (JSC::Walker::walk):
1631
16322010-01-13  Gavin Barraclough  <barraclough@apple.com>
1633
1634        Reviewed by NOBODY (buildfix).
1635
1636        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1637
16382010-01-13  Alexey Proskuryakov  <ap@apple.com>
1639
1640        Reviewed by Darin Adler.
1641
1642        https://bugs.webkit.org/show_bug.cgi?id=33641
1643        Assertion failure in Lexer.cpp if input stream ends while in string escape
1644
1645        Test: fast/js/end-in-string-escape.html
1646
1647        * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the
1648        assertion a chance to fire.
1649
16502010-01-13  Gavin Barraclough  <barraclough@apple.com>
1651
1652        Reviewed by NOBODY (buildfix).
1653
1654        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1655
16562010-01-13  Gavin Barraclough  <barraclough@apple.com>
1657
1658        Rubber stamped by Sam Weinig & Darin Adler.
1659
1660        Three quick fixes to UStringImpl.
1661            - The destroy() method can be switched back to a normal destructor; since we've switched
1662              the way we protect static strings to be using an odd ref-count the destroy() won't abort.
1663            - The cost() calculation logic was wrong.  If you have multiple JSStrings wrapping substrings
1664              of a base string, they would each report the full cost of the base string to the heap.
1665              Instead we should only be reporting once for the base string.
1666            - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick
1667              up the implementation from the parent class.
1668
1669        * JavaScriptCore.exp:
1670        * runtime/UStringImpl.cpp:
1671        (JSC::UStringImpl::~UStringImpl):
1672        * runtime/UStringImpl.h:
1673        (JSC::UStringImpl::cost):
1674        (JSC::UStringImpl::deref):
1675
16762010-01-13  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
1677
1678        Reviewed by Simon Hausmann.
1679
1680        [Qt] Split the build process in two different .pro files.
1681        This allows qmake to be run once all source files are available.
1682
1683        * DerivedSources.pro: Added.
1684        * JavaScriptCore.pri: Moved source generation to DerivedSources.pro
1685        * pcre/pcre.pri: Moved source generation to DerivedSources.pro
1686
16872010-01-12  Kent Hansen  <kent.hansen@nokia.com>
1688
1689        Reviewed by Geoffrey Garen.
1690
1691        [ES5] Implement Object.getOwnPropertyNames
1692        https://bugs.webkit.org/show_bug.cgi?id=32242
1693
1694        Add an extra argument to getPropertyNames() and getOwnPropertyNames()
1695        (and all reimplementations thereof) that indicates whether non-enumerable
1696        properties should be added.
1697
1698        * API/JSCallbackObject.h:
1699        * API/JSCallbackObjectFunctions.h:
1700        (JSC::::getOwnPropertyNames):
1701        * JavaScriptCore.exp:
1702        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1703        * debugger/DebuggerActivation.cpp:
1704        (JSC::DebuggerActivation::getOwnPropertyNames):
1705        * debugger/DebuggerActivation.h:
1706        * runtime/Arguments.cpp:
1707        (JSC::Arguments::getOwnPropertyNames):
1708        * runtime/Arguments.h:
1709        * runtime/CommonIdentifiers.h:
1710        * runtime/JSArray.cpp:
1711        (JSC::JSArray::getOwnPropertyNames):
1712        * runtime/JSArray.h:
1713        * runtime/JSByteArray.cpp:
1714        (JSC::JSByteArray::getOwnPropertyNames):
1715        * runtime/JSByteArray.h:
1716        * runtime/JSFunction.cpp:
1717        (JSC::JSFunction::getOwnPropertyNames):
1718        * runtime/JSFunction.h:
1719        * runtime/JSNotAnObject.cpp:
1720        (JSC::JSNotAnObject::getOwnPropertyNames):
1721        * runtime/JSNotAnObject.h:
1722        * runtime/JSObject.cpp:
1723        (JSC::getClassPropertyNames):
1724        (JSC::JSObject::getPropertyNames):
1725        (JSC::JSObject::getOwnPropertyNames):
1726        * runtime/JSObject.h:
1727        * runtime/JSVariableObject.cpp:
1728        (JSC::JSVariableObject::getOwnPropertyNames):
1729        * runtime/JSVariableObject.h:
1730        * runtime/ObjectConstructor.cpp:
1731        (JSC::ObjectConstructor::ObjectConstructor):
1732        (JSC::objectConstructorGetOwnPropertyNames):
1733        * runtime/RegExpMatchesArray.h:
1734        (JSC::RegExpMatchesArray::getOwnPropertyNames):
1735        * runtime/StringObject.cpp:
1736        (JSC::StringObject::getOwnPropertyNames):
1737        * runtime/StringObject.h:
1738        * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument.
1739        (JSC::Structure::getPropertyNames):
1740        * runtime/Structure.h:
1741        (JSC::):
1742
17432010-01-12  Alexey Proskuryakov  <ap@apple.com>
1744
1745        Reviewed by Darin Adler.
1746
1747        https://bugs.webkit.org/show_bug.cgi?id=33540
1748        Make it possible to build in debug mode with assertions disabled
1749
1750        * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
1751        * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable):
1752        * wtf/FastMalloc.cpp:
1753        * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity):
1754        * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex):
1755
17562009-11-23  Yong Li  <yoli@rim.com>
1757
1758        Reviewed by Adam Treat.
1759
1760        Make GIF decoder support down-sampling
1761        https://bugs.webkit.org/show_bug.cgi?id=31806
1762
1763        * platform/image-decoders/ImageDecoder.cpp:
1764        (WebCore::ImageDecoder::upperBoundScaledY):
1765        (WebCore::ImageDecoder::lowerBoundScaledY):
1766        * platform/image-decoders/ImageDecoder.h:
1767        (WebCore::RGBA32Buffer::scaledRect):
1768        (WebCore::RGBA32Buffer::setScaledRect):
1769        (WebCore::ImageDecoder::scaledSize):
1770        * platform/image-decoders/gif/GIFImageDecoder.cpp:
1771        (WebCore::GIFImageDecoder::sizeNowAvailable):
1772        (WebCore::GIFImageDecoder::initFrameBuffer):
1773        (WebCore::copyOnePixel):
1774        (WebCore::GIFImageDecoder::haveDecodedRow):
1775        (WebCore::GIFImageDecoder::frameComplete):
1776
17772010-01-12  Adam Barth  <abarth@webkit.org>
1778
1779        Reviewed by Eric Seidel.
1780
1781        ecma/Date/15.9.5.12-1.js fails every night at midnight
1782        https://bugs.webkit.org/show_bug.cgi?id=28041
1783
1784        Change the test to use a concrete time instead of "now".
1785
1786        * tests/mozilla/ecma/Date/15.9.5.10-1.js:
1787        * tests/mozilla/ecma/Date/15.9.5.12-1.js:
1788
17892010-01-11  Csaba Osztrogonác  <ossy@webkit.org>
1790
1791        Reviewed by Ariya Hidayat.
1792
1793        [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100)
1794
1795        * wtf/Platform.h:
1796
17972010-01-11  Geoffrey Garen  <ggaren@apple.com>
1798
1799        Reviewed by Alexey Proskuryakov.
1800
1801        https://bugs.webkit.org/show_bug.cgi?id=33481
1802        Uninitialized data members in ArrayStorage
1803
1804        SunSpider reports no change.
1805
1806        * runtime/JSArray.cpp:
1807        (JSC::JSArray::JSArray): Initialize missing data members in the two cases
1808        where we don't use fastZeroedMalloc, so it doesn't happen automatically.
1809
18102010-01-11  Steve Falkenburg  <sfalken@apple.com>
1811
1812        Reviewed by Sam Weinig.
1813
1814        https://bugs.webkit.org/show_bug.cgi?id=33480
1815
1816        Improve debugging reliability for WTF on Windows.
1817        Store WTF static library's PDB file into a better location.
1818
1819        * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1820
18212010-01-11  Steve Falkenburg  <sfalken@apple.com>
1822
1823        Windows build fix.
1824        Remove extraneous entries from def file causing build warning.
1825
1826        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1827
18282010-01-10  Kent Hansen  <kent.hansen@nokia.com>
1829
1830        Reviewed by Darin Adler.
1831
1832        RegExp.prototype.toString returns "//" for empty regular expressions
1833        https://bugs.webkit.org/show_bug.cgi?id=33319
1834
1835        "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
1836
1837        * runtime/RegExpPrototype.cpp:
1838        (JSC::regExpProtoFuncToString):
1839
1840        * tests/mozilla/ecma_2/RegExp/properties-001.js:
1841        (AddRegExpCases):
1842        * tests/mozilla/js1_2/regexp/toString.js:
1843        Update relevant Mozilla tests (Mozilla has had this behavior since November 2003).
1844
18452010-01-10  Darin Adler  <darin@apple.com>
1846
1847        * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs.
1848        * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs.
1849        * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs.
1850        * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs.
1851        * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs.
1852        * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs.
1853        * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs.
1854        * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs.
1855        * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs.
1856        * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs.
1857        * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs.
1858        * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs.
1859        * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs.
1860        * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs.
1861        * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs.
1862        * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs.
1863        * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs.
1864        * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs.
1865        * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs.
1866        * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs.
1867        * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs.
1868        * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs.
1869        * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs.
1870        * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs.
1871        * tests/mozilla/ecma/jsref.js: Modified property allow-tabs.
1872        * tests/mozilla/ecma/shell.js: Modified property allow-tabs.
1873        * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs.
1874        * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs.
1875        * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs.
1876        * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs.
1877        * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs.
1878        * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs.
1879        * tests/mozilla/ecma_2/shell.js: Added property allow-tabs.
1880        * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs.
1881        * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs.
1882        * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs.
1883        * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs.
1884        * tests/mozilla/importList.html: Added property allow-tabs.
1885        * tests/mozilla/js1_1/shell.js: Added property allow-tabs.
1886        * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs.
1887        * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs.
1888        * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs.
1889        * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs.
1890        * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs.
1891        * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs.
1892        * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs.
1893        * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs.
1894        * tests/mozilla/js1_2/String/match.js: Added property allow-tabs.
1895        * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs.
1896        * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs.
1897        * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs.
1898        * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs.
1899        * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs.
1900        * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs.
1901        * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs.
1902        * tests/mozilla/js1_2/jsref.js: Added property allow-tabs.
1903        * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs.
1904        * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs.
1905        * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs.
1906        * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs.
1907        * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs.
1908        * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs.
1909        * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs.
1910        * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs.
1911        * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs.
1912        * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs.
1913        * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs.
1914        * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs.
1915        * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs.
1916        * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs.
1917        * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs.
1918        * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs.
1919        * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs.
1920        * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs.
1921        * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs.
1922        * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs.
1923        * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs.
1924        * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs.
1925        * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs.
1926        * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs.
1927        * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs.
1928        * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs.
1929        * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs.
1930        * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs.
1931        * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs.
1932        * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs.
1933        * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs.
1934        * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs.
1935        * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs.
1936        * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs.
1937        * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs.
1938        * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs.
1939        * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs.
1940        * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs.
1941        * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs.
1942        * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs.
1943        * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs.
1944        * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs.
1945        * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs.
1946        * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs.
1947        * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs.
1948        * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs.
1949        * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs.
1950        * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs.
1951        * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs.
1952        * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs.
1953        * tests/mozilla/js1_2/shell.js: Added property allow-tabs.
1954        * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs.
1955        * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs.
1956        * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs.
1957        * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs.
1958        * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs.
1959        * tests/mozilla/js1_3/shell.js: Added property allow-tabs.
1960        * tests/mozilla/js1_4/shell.js: Added property allow-tabs.
1961        * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs.
1962        * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs.
1963        * tests/mozilla/menuhead.html: Added property allow-tabs.
1964        * tests/mozilla/mklistpage.pl: Added property allow-tabs.
1965        * tests/mozilla/runtests.pl: Added property allow-tabs.
1966
19672010-01-08  Daniel Bates  <dbates@webkit.org>
1968
1969        Reviewed by Adam Barth.
1970
1971        https://bugs.webkit.org/show_bug.cgi?id=33417
1972
1973        Cleans up style errors exposed by the patch for bug #33198.
1974        Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?"
1975        errors reported by check-webkit-style.
1976
1977        No functionality was changed. So, no new tests.
1978
1979        * wtf/Platform.h:
1980
19812010-01-08  Kent Hansen  <kent.hansen@nokia.com>
1982
1983        Reviewed by Eric Seidel.
1984
1985        Don't store RegExp flags string representation
1986        https://bugs.webkit.org/show_bug.cgi?id=33321
1987
1988        It's unused; the string representation is reconstructed from flags.
1989
1990        * runtime/RegExp.cpp:
1991        (JSC::RegExp::RegExp):
1992        * runtime/RegExp.h:
1993
19942010-01-08  Geoffrey Garen  <ggaren@apple.com>
1995
1996        Reviewed by Oliver Hunt.
1997
1998        Memory use grows grows possibly unbounded in this JavaScript Array test case
1999        https://bugs.webkit.org/show_bug.cgi?id=31675
2000
2001        This fixes one observed bug in this test case, which is that
2002        arrays don't report extra cost for the sparse value maps.
2003
2004        SunSpider reports a small speedup.
2005
2006        * runtime/JSArray.cpp:
2007        (JSC::JSArray::putSlowCase): Report extra memory cost for
2008        the sparse value map.
2009        * runtime/JSArray.h:
2010
20112010-01-08  Yong Li  <yoli@rim.com>
2012
2013        Reviewed by Darin Adler.
2014
2015        Remove unnecessary #include from FastMalloc.cpp
2016        https://bugs.webkit.org/show_bug.cgi?id=33393
2017
2018        * wtf/FastMalloc.cpp:
2019
20202010-01-08  Eric Seidel  <eric@webkit.org>
2021
2022        No review, rolling out r52983.
2023        http://trac.webkit.org/changeset/52983
2024        https://bugs.webkit.org/show_bug.cgi?id=33321
2025
2026        Broke 59 JavaScriptCore tests.  I don't think Kent knew about
2027        run-javascriptcore-tests.  Sadly neither does the commit-bot,
2028        yet.
2029
2030        * runtime/RegExp.cpp:
2031        (JSC::RegExp::RegExp):
2032        * runtime/RegExp.h:
2033        (JSC::RegExp::flags):
2034
20352010-01-08  Eric Seidel  <eric@webkit.org>
2036
2037        No review, rolling out r52981.
2038        http://trac.webkit.org/changeset/52981
2039        https://bugs.webkit.org/show_bug.cgi?id=33319
2040
2041        Caused two JS tests to start failing:
2042        ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js
2043
2044        * runtime/RegExpPrototype.cpp:
2045        (JSC::regExpProtoFuncToString):
2046
20472010-01-08  Kent Hansen  <kent.hansen@nokia.com>
2048
2049        Reviewed by Darin Adler.
2050
2051        Don't store RegExp flags string representation
2052        https://bugs.webkit.org/show_bug.cgi?id=33321
2053
2054        It's unused; the string representation is reconstructed from flags.
2055
2056        * runtime/RegExp.cpp:
2057        (JSC::RegExp::RegExp):
2058        * runtime/RegExp.h:
2059
20602010-01-08  Kent Hansen  <kent.hansen@nokia.com>
2061
2062        Reviewed by Darin Adler.
2063
2064        RegExp.prototype.toString returns "//" for empty regular expressions
2065        https://bugs.webkit.org/show_bug.cgi?id=33319
2066
2067        "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
2068
2069        * runtime/RegExpPrototype.cpp:
2070        (JSC::regExpProtoFuncToString):
2071
20722010-01-08  Norbert Leser  <norbert.leser@nokia.com>
2073
2074        Reviewed by Darin Adler.
2075
2076        RVCT compiler with "-Otime -O3" optimization tries to optimize out
2077        inline new'ed pointers that are passed as arguments.
2078        Proposed patch assigns new'ed pointer explicitly outside function call.
2079
2080        https://bugs.webkit.org/show_bug.cgi?id=33084
2081
2082        * API/JSClassRef.cpp:
2083        (OpaqueJSClass::OpaqueJSClass):
2084        (OpaqueJSClassContextData::OpaqueJSClassContextData):
2085
20862010-01-08  Gabor Loki  <loki@webkit.org>
2087
2088        Reviewed by Gavin Barraclough.
2089
2090        Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT
2091        https://bugs.webkit.org/show_bug.cgi?id=33203
2092
2093        * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function.
2094        (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code.
2095        * assembler/ARMAssembler.h:
2096        (JSC::ARMAssembler::getLdrImmAddress): Use inline function.
2097        (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto.
2098        (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush.
2099        (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch.
2100        (JSC::ARMAssembler::linkCall): Ditto.
2101        (JSC::ARMAssembler::relinkCall): Ditto.
2102
21032010-01-07  Gabor Loki  <loki@webkit.org>
2104
2105        Reviewed by Gavin Barraclough.
2106
2107        Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled
2108        https://bugs.webkit.org/show_bug.cgi?id=33311
2109
2110        Move compileGetDirectOffset function to common part of JSVALUE32
2111
2112        * jit/JITPropertyAccess.cpp:
2113        (JSC::JIT::compileGetDirectOffset):
2114
21152010-01-07  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2116
2117        Reviewed by Maciej Stachowiak.
2118
2119        Allow call sites to determine if ASSERT_* and LOG_* macros are operational
2120        https://bugs.webkit.org/show_bug.cgi?id=33020
2121
2122        * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED,
2123        ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support
2124        variadic macros. Refactor for better readibility.
2125
21262010-01-07  Daniel Bates  <dbates@rim.com>
2127
2128        Reviewed by Eric Seidel.
2129
2130        https://bugs.webkit.org/show_bug.cgi?id=32987
2131
2132        Added ENABLE_XHTMLMP flag. Disabled by default.
2133
2134        * Configurations/FeatureDefines.xcconfig:
2135
21362010-01-07  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2137
2138        Reviewed by Gavin Barraclough.
2139
2140        [Symbian] Port ARM traditional JIT Trampolines to RVCT
2141        https://bugs.webkit.org/show_bug.cgi?id=30552
2142
2143        Take the GCC implementation and mechanically convert
2144        it to RVCT syntax.
2145
2146        Use 'bx rX' instead of 'mov pc, rX' when it is available.
2147
2148        Developed in cooperation with Iain Campbell and Gabor Loki.
2149
2150        * JavaScriptCore.pri: Extra step to generate RVCT stubs. The
2151        script generation intentionally executed all the time not just
2152        for RVCT targets.
2153
2154        * create_rvct_stubs: Added. Perl script to expand precompiler macros
2155        for RVCT assembler - the template is defined in JITStubs.cpp.
2156
2157        * jit/JITStubs.cpp:
2158        (JSC::ctiTrampoline):
2159        (JSC::ctiVMThrowTrampoline):
2160        (JSC::ctiOpThrowNotCaught):
2161
21622010-01-07  Geoffrey Garen  <ggaren@apple.com>
2163
2164        Reviewed by Sam Weinig.
2165
2166        Fix a crash seen on the buildbots.
2167
2168        * runtime/JSGlobalObject.cpp:
2169        (JSC::JSGlobalObject::init): Disable specific function tracking here,
2170        instead of in WebCore, to ensure that the disabling happens before a
2171        specific function can be registered.
2172
21732010-01-07  Alexey Proskuryakov  <ap@apple.com>
2174
2175        Mac build fix.
2176
2177        * JavaScriptCore.exp: Export new JSGlobalData static data members.
2178
21792010-01-07  Alexey Proskuryakov  <ap@apple.com>
2180
2181        Reviewed by Geoffrey Garen.
2182
2183        https://bugs.webkit.org/show_bug.cgi?id=33057
2184        REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows
2185
2186        <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark
2187
2188        Test: fast/js/webcore-string-comparison.html
2189
2190        In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore
2191        got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was
2192        not exported, objects created from WebCore got a different vptr, and JavaScriptCore
2193        optimizations that relied on vptr of all JSString objects being equal failed.
2194
2195        * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as
2196        JS_EXPORTDATA, but it clearly needed a new name.
2197
2198        * runtime/InitializeThreading.cpp:
2199        (JSC::initializeThreadingOnce):
2200        * runtime/JSGlobalData.cpp:
2201        (JSC::JSGlobalData::storeVPtrs):
2202        (JSC::JSGlobalData::JSGlobalData):
2203        (JSC::JSGlobalData::createNonDefault):
2204        (JSC::JSGlobalData::create):
2205        (JSC::JSGlobalData::sharedInstance):
2206        * runtime/JSGlobalData.h:
2207        Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to
2208        assert vptr correctness in object destructors (which don't have access to JSGlobalData,
2209        and even Heap::heap(this) will fail for fake objects created from storeVPtrs()).
2210
2211        * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be.
2212        It's important to assert in destructor, because MSVC changes the vptr after constructor
2213        is invoked.
2214        * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto.
2215        * runtime/JSByteArray.h: Ditto.
2216        * runtime/JSFunction.h: Ditto.
2217        * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto.
2218
2219        * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another
2220        one.
2221
2222        * runtime/JSString.h: Export JSString class together with its vftable, and tell other
2223        libraries tp import it. This is needed on platforms that have a separate JavaScriptCore
2224        dynamic library - and on Mac, we already did the export via JavaScriptCore.exp.
2225        (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be.
2226        (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building
2227        JavaScriptCore itself).
2228        (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary.
2229        (JSC::jsSingleCharacterSubstring): Ditto.
2230        (JSC::jsNontrivialString): Ditto.
2231        (JSC::jsString): Ditto.
2232        (JSC::jsSubstring): Ditto.
2233        (JSC::jsOwnedString): Ditto.
2234
2235        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static
2236        JSGlobalData members that are used in WebCore via inline functions.
2237
22382010-01-07  Geoffrey Garen  <ggaren@apple.com>
2239
2240        Reviewed by Sam Weinig.
2241
2242        Safari memory usage skyrockets using new Google AdWords interface
2243        https://bugs.webkit.org/show_bug.cgi?id=33343
2244
2245        The memory use was caused by the global object creating too many structures
2246        as it thrashed between different specific functions.
2247
2248        * runtime/Structure.cpp:
2249        (JSC::Structure::Structure):
2250        (JSC::Structure::addPropertyTransition):
2251        (JSC::Structure::changePrototypeTransition):
2252        (JSC::Structure::despecifyFunctionTransition):
2253        (JSC::Structure::addAnonymousSlotsTransition):
2254        (JSC::Structure::getterSetterTransition):
2255        (JSC::Structure::toDictionaryTransition):
2256        (JSC::Structure::addPropertyWithoutTransition):
2257        (JSC::Structure::despecifyAllFunctions):
2258        * runtime/Structure.h:
2259        (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count
2260        for specific functions. Disable specific function tracking once the
2261        thrash count has been hit.
2262
22632010-01-07  Csaba Osztrogonác  <ossy@webkit.org>
2264
2265        Reviewed by Simon Hausmann.
2266
2267        [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes.
2268
2269        * JavaScriptCore.pri:
2270
22712010-01-07  Zoltan Horvath  <zoltan@webkit.org>
2272
2273        Reviewed by Holger Freyther.
2274
2275        [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
2276        https://bugs.webkit.org/show_bug.cgi?id=33312
2277
2278        Using of operator += cause compile error on Mac, so it is changed to
2279        "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1".
2280
2281        * wtf/FastMalloc.cpp:
2282        (WTF::TCMallocStats::realloc):
2283
22842010-01-07  Zoltan Horvath  <zoltan@webkit.org>
2285
2286        Reviewed by Holger Freyther.
2287
2288        [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
2289        https://bugs.webkit.org/show_bug.cgi?id=33312
2290
2291        Remove pByte (committed in r42344 from #20422), because pByte doesn't
2292        exist and it is unnecessary.
2293
2294        * wtf/FastMalloc.cpp:
2295        (WTF::TCMallocStats::realloc):
2296
22972010-01-06  Gavin Barraclough  <barraclough@apple.com>
2298
2299        QT build fix.
2300
2301        * runtime/Identifier.cpp:
2302        (JSC::createIdentifierTableSpecific):
2303
23042010-01-06  Gavin Barraclough  <barraclough@apple.com>
2305
2306        Windows build fix part I.
2307
2308        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2309
23102010-01-06  Dan Bernstein  <mitz@apple.com>
2311
2312        Build fix
2313
2314        * runtime/Identifier.cpp:
2315        (JSC::createIdentifierTableSpecificCallback):
2316
23172010-01-05  Gavin Barraclough  <barraclough@apple.com>
2318
2319        Reviewed by Sam Weinig.
2320
2321        https://bugs.webkit.org/show_bug.cgi?id=33236
2322        Remove m_identifierTable pointer from UString
2323
2324        Currently every string holds a pointer so that during destruction,
2325        if a string has been used as an identifier, it can remove itself
2326        from the table.  By instead accessing the identifierTable via a
2327        thread specific tracking the table associated with the current
2328        globaldata, we can save the memory cost of this pointer.
2329
2330        * API/APIShims.h:
2331        (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
2332        (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
2333        (JSC::APICallbackShim::APICallbackShim):
2334        (JSC::APICallbackShim::~APICallbackShim):
2335
2336            - change the API shims to track the identifierTable of the current JSGlobalData.
2337
2338        * API/JSContextRef.cpp:
2339        (JSContextGroupCreate):
2340
2341            - update creation of JSGlobalData for API usage to use new create method.
2342            - fix shim instanciation bug in JSGlobalContextCreateInGroup.
2343
2344        * JavaScriptCore.exp:
2345        * runtime/Completion.cpp:
2346        (JSC::checkSyntax):
2347        (JSC::evaluate):
2348
2349            - add asserts to check the identifierTable is being tracked correctly.
2350
2351        * runtime/Identifier.cpp:
2352        (JSC::IdentifierTable::~IdentifierTable):
2353        (JSC::IdentifierTable::add):
2354        (JSC::Identifier::remove):
2355        (JSC::Identifier::checkSameIdentifierTable):
2356        (JSC::createIdentifierTableSpecificCallback):
2357        (JSC::createIdentifierTableSpecific):
2358        (JSC::createDefaultDataSpecific):
2359
2360            - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable.
2361            - Define methods to access the thread specific identifier tables.
2362
2363        * runtime/Identifier.h:
2364        (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
2365        (JSC::defaultIdentifierTable):
2366        (JSC::setDefaultIdentifierTable):
2367        (JSC::currentIdentifierTable):
2368        (JSC::setCurrentIdentifierTable):
2369        (JSC::resetCurrentIdentifierTable):
2370
2371            - Declare methods to access the thread specific identifier tables.
2372
2373        * runtime/JSGlobalData.cpp:
2374        (JSC::JSGlobalData::createNonDefault):
2375        (JSC::JSGlobalData::create):
2376        (JSC::JSGlobalData::sharedInstance):
2377
2378            - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread.
2379
2380        * runtime/JSGlobalData.h:
2381        * runtime/UStringImpl.cpp:
2382        (JSC::UStringImpl::destroy):
2383
2384            - destroy() method should be using isIdentifier().
2385
2386        * runtime/UStringImpl.h:
2387        (JSC::UStringImpl::isIdentifier):
2388        (JSC::UStringImpl::setIsIdentifier):
2389        (JSC::UStringImpl::checkConsistency):
2390        (JSC::UStringImpl::UStringImpl):
2391
2392            - replace m_identifierTable with a single m_isIdentifier bit.
2393
2394        * wtf/StringHashFunctions.h:
2395        (WTF::stringHash):
2396
2397            - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier.
2398
23992009-12-25 Patrick Gansterer <paroga@paroga.com>
2400
2401        Reviewed by Eric Seidel.
2402
2403        Buildfix for WinCE + style fixes.
2404        https://bugs.webkit.org/show_bug.cgi?id=32939
2405
2406        * jsc.cpp:
2407        (functionPrint):
2408        (functionQuit):
2409        (parseArguments):
2410        (fillBufferWithContentsOfFile):
2411
24122010-01-05  Patrick Gansterer  <paroga@paroga.com>
2413
2414        Reviewed by Eric Seidel.
2415
2416        WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)).
2417        https://bugs.webkit.org/show_bug.cgi?id=33205
2418
2419        * jit/ExecutableAllocator.h:
2420
24212010-01-05  Patrick Gansterer  <paroga@paroga.com>
2422
2423        Reviewed by Darin Adler.
2424
2425        Added compiler error for unsupported platforms.
2426        https://bugs.webkit.org/show_bug.cgi?id=33112
2427
2428        * jit/JITStubs.cpp:
2429
24302010-01-05  Gabor Loki  <loki@webkit.org>
2431
2432        Reviewed by Maciej Stachowiak.
2433
2434        Follow r52729 in ARMAssembler.
2435        https://bugs.webkit.org/show_bug.cgi?id=33208
2436
2437        Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION
2438
2439        * assembler/ARMAssembler.cpp:
2440        (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7
2441        * assembler/ARMAssembler.h:
2442        (JSC::ARMAssembler::):
2443        (JSC::ARMAssembler::bkpt):
2444
24452010-01-05  Maciej Stachowiak  <mjs@apple.com>
2446
2447        Unreviewed build fix for Gtk+
2448
2449        Don't use // comments in Platform.h, at least some of them seem to make the version of GCC
2450        used on the Gtk buildbot unhappy.
2451
2452        * wtf/Platform.h:
2453
24542010-01-04  Maciej Stachowiak  <mjs@apple.com>
2455
2456        Reviewed by Darin Fisher.
2457
2458        Reorganize, document and rename OS() platform macros.
2459        https://bugs.webkit.org/show_bug.cgi?id=33198
2460
2461        * wtf/Platform.h: Rename, reorganize and document OS() macros.
2462
2463        Adapt to name changes. Also fixed a few incorrect OS checks.
2464
2465        * API/JSContextRef.cpp:
2466        * assembler/MacroAssemblerARM.cpp:
2467        (JSC::isVFPPresent):
2468        * assembler/MacroAssemblerX86Common.h:
2469        * bytecode/SamplingTool.cpp:
2470        * config.h:
2471        * interpreter/RegisterFile.cpp:
2472        (JSC::RegisterFile::~RegisterFile):
2473        * interpreter/RegisterFile.h:
2474        (JSC::RegisterFile::RegisterFile):
2475        (JSC::RegisterFile::grow):
2476        * jit/ExecutableAllocator.h:
2477        * jit/ExecutableAllocatorFixedVMPool.cpp:
2478        * jit/ExecutableAllocatorPosix.cpp:
2479        * jit/ExecutableAllocatorSymbian.cpp:
2480        * jit/ExecutableAllocatorWin.cpp:
2481        * jit/JITOpcodes.cpp:
2482        (JSC::JIT::privateCompileCTIMachineTrampolines):
2483        * jit/JITStubs.cpp:
2484        * jsc.cpp:
2485        (main):
2486        * parser/Grammar.y:
2487        * profiler/ProfileNode.cpp:
2488        (JSC::getCount):
2489        * runtime/Collector.cpp:
2490        (JSC::Heap::Heap):
2491        (JSC::Heap::allocateBlock):
2492        (JSC::Heap::freeBlockPtr):
2493        (JSC::currentThreadStackBase):
2494        (JSC::getCurrentPlatformThread):
2495        (JSC::suspendThread):
2496        (JSC::resumeThread):
2497        (JSC::getPlatformThreadRegisters):
2498        (JSC::otherThreadStackPointer):
2499        * runtime/Collector.h:
2500        * runtime/DateConstructor.cpp:
2501        * runtime/DatePrototype.cpp:
2502        (JSC::formatLocaleDate):
2503        * runtime/InitializeThreading.cpp:
2504        (JSC::initializeThreading):
2505        * runtime/MarkStack.h:
2506        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
2507        * runtime/MarkStackPosix.cpp:
2508        * runtime/MarkStackSymbian.cpp:
2509        * runtime/MarkStackWin.cpp:
2510        * runtime/StringPrototype.cpp:
2511        (JSC::stringProtoFuncLastIndexOf):
2512        * runtime/TimeoutChecker.cpp:
2513        (JSC::getCPUTime):
2514        * runtime/UString.cpp:
2515        (JSC::UString::from):
2516        * wtf/Assertions.cpp:
2517        * wtf/Assertions.h:
2518        * wtf/CurrentTime.cpp:
2519        (WTF::lowResUTCTime):
2520        * wtf/CurrentTime.h:
2521        (WTF::getLocalTime):
2522        * wtf/DateMath.cpp:
2523        * wtf/FastMalloc.cpp:
2524        (WTF::TCMalloc_ThreadCache::InitModule):
2525        (WTF::TCMallocStats::):
2526        * wtf/FastMalloc.h:
2527        * wtf/MathExtras.h:
2528        * wtf/RandomNumber.cpp:
2529        (WTF::randomNumber):
2530        * wtf/RandomNumberSeed.h:
2531        (WTF::initializeRandomNumberGenerator):
2532        * wtf/StringExtras.h:
2533        * wtf/TCSpinLock.h:
2534        (TCMalloc_SpinLock::Unlock):
2535        (TCMalloc_SlowLock):
2536        * wtf/TCSystemAlloc.cpp:
2537        * wtf/ThreadSpecific.h:
2538        (WTF::::destroy):
2539        * wtf/Threading.h:
2540        * wtf/ThreadingPthreads.cpp:
2541        (WTF::initializeThreading):
2542        (WTF::isMainThread):
2543        * wtf/ThreadingWin.cpp:
2544        (WTF::wtfThreadEntryPoint):
2545        (WTF::createThreadInternal):
2546        * wtf/VMTags.h:
2547        * wtf/unicode/icu/CollatorICU.cpp:
2548        (WTF::Collator::userDefault):
2549        * wtf/win/MainThreadWin.cpp:
2550        (WTF::initializeMainThreadPlatform):
2551
25522010-01-04  Gustavo Noronha Silva  <gns@gnome.org>
2553
2554        Add missing files to the build system - make distcheck build fix.
2555
2556        * GNUmakefile.am:
2557
25582010-01-04  Gavin Barraclough <barraclough@apple.com>
2559
2560        Reviewed by Sam Weinig, additional coding by Mark Rowe.
2561
2562        https://bugs.webkit.org/show_bug.cgi?id=33163
2563        Add string hashing functions to WTF.
2564        Use WTF's string hashing functions from UStringImpl.
2565
2566        * GNUmakefile.am:
2567        * JavaScriptCore.exp:
2568        * JavaScriptCore.gypi:
2569        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2570        * JavaScriptCore.xcodeproj/project.pbxproj:
2571        * runtime/UStringImpl.cpp:
2572        * runtime/UStringImpl.h:
2573        (JSC::UStringImpl::computeHash):
2574        * wtf/HashFunctions.h:
2575        * wtf/StringHashFunctions.h: Added.
2576        (WTF::stringHash):
2577
25782010-01-04  Dmitry Titov  <dimich@chromium.org>
2579
2580        Not reviewed, attempt to fix ARM bulid.
2581
2582        * wtf/Platform.h:
2583
25842010-01-04  Gavin Barraclough  <barraclough@apple.com>
2585
2586        Rubber stamped by Geoff Garen.
2587
2588        Add an 'isIdentifier' to UStringImpl, use this where appropriate
2589        (where previously 'identifierTable' was being tested).
2590
2591        * API/JSClassRef.cpp:
2592        (OpaqueJSClass::~OpaqueJSClass):
2593        (OpaqueJSClassContextData::OpaqueJSClassContextData):
2594        * runtime/Identifier.cpp:
2595        (JSC::Identifier::addSlowCase):
2596        * runtime/Identifier.h:
2597        (JSC::Identifier::add):
2598        * runtime/PropertyNameArray.cpp:
2599        (JSC::PropertyNameArray::add):
2600        * runtime/UStringImpl.h:
2601        (JSC::UStringImpl::isIdentifier):
2602
26032010-01-04  Gavin Barraclough  <barraclough@apple.com>
2604
2605        Reviewed by Sam "Shimmey Shimmey" Weinig.
2606
2607        https://bugs.webkit.org/show_bug.cgi?id=33158
2608        Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
2609        Make it easier to change set of actions taken when passing across the API boundary.
2610
2611        * API/APIShims.h: Added.
2612        (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
2613        (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
2614        (JSC::APIEntryShim::APIEntryShim):
2615        (JSC::APICallbackShim::APICallbackShim):
2616        (JSC::APICallbackShim::~APICallbackShim):
2617        * API/JSBase.cpp:
2618        (JSEvaluateScript):
2619        (JSCheckScriptSyntax):
2620        (JSGarbageCollect):
2621        (JSReportExtraMemoryCost):
2622        * API/JSCallbackConstructor.cpp:
2623        (JSC::constructJSCallback):
2624        * API/JSCallbackFunction.cpp:
2625        (JSC::JSCallbackFunction::call):
2626        * API/JSCallbackObjectFunctions.h:
2627        (JSC::::init):
2628        (JSC::::getOwnPropertySlot):
2629        (JSC::::put):
2630        (JSC::::deleteProperty):
2631        (JSC::::construct):
2632        (JSC::::hasInstance):
2633        (JSC::::call):
2634        (JSC::::getOwnPropertyNames):
2635        (JSC::::toNumber):
2636        (JSC::::toString):
2637        (JSC::::staticValueGetter):
2638        (JSC::::callbackGetter):
2639        * API/JSContextRef.cpp:
2640        * API/JSObjectRef.cpp:
2641        (JSObjectMake):
2642        (JSObjectMakeFunctionWithCallback):
2643        (JSObjectMakeConstructor):
2644        (JSObjectMakeFunction):
2645        (JSObjectMakeArray):
2646        (JSObjectMakeDate):
2647        (JSObjectMakeError):
2648        (JSObjectMakeRegExp):
2649        (JSObjectGetPrototype):
2650        (JSObjectSetPrototype):
2651        (JSObjectHasProperty):
2652        (JSObjectGetProperty):
2653        (JSObjectSetProperty):
2654        (JSObjectGetPropertyAtIndex):
2655        (JSObjectSetPropertyAtIndex):
2656        (JSObjectDeleteProperty):
2657        (JSObjectCallAsFunction):
2658        (JSObjectCallAsConstructor):
2659        (JSObjectCopyPropertyNames):
2660        (JSPropertyNameArrayRelease):
2661        (JSPropertyNameAccumulatorAddName):
2662        * API/JSValueRef.cpp:
2663        (JSValueGetType):
2664        (JSValueIsUndefined):
2665        (JSValueIsNull):
2666        (JSValueIsBoolean):
2667        (JSValueIsNumber):
2668        (JSValueIsString):
2669        (JSValueIsObject):
2670        (JSValueIsObjectOfClass):
2671        (JSValueIsEqual):
2672        (JSValueIsStrictEqual):
2673        (JSValueIsInstanceOfConstructor):
2674        (JSValueMakeUndefined):
2675        (JSValueMakeNull):
2676        (JSValueMakeBoolean):
2677        (JSValueMakeNumber):
2678        (JSValueMakeString):
2679        (JSValueToBoolean):
2680        (JSValueToNumber):
2681        (JSValueToStringCopy):
2682        (JSValueToObject):
2683        (JSValueProtect):
2684        (JSValueUnprotect):
2685        * JavaScriptCore.xcodeproj/project.pbxproj:
2686
26872010-01-04  Dan Bernstein  <mitz@apple.com>
2688
2689        Reviewed by Ada Chan and Mark Rowe.
2690
2691        Updated copyright string
2692
2693        * Info.plist:
2694        * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist:
2695        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
2696
26972010-01-04  Adam Roben  <aroben@apple.com>
2698
2699        No review, rolling out r52741.
2700        http://trac.webkit.org/changeset/52741
2701        https://bugs.webkit.org/show_bug.cgi?id=33056
2702
2703        * wtf/AlwaysInline.h:
2704
27052010-01-04  Patrick Gansterer  <paroga@paroga.com>
2706
2707        Reviewed by Darin Adler.
2708
2709        Add cacheFlush support for WinCE
2710        https://bugs.webkit.org/show_bug.cgi?id=33110
2711
2712        * jit/ExecutableAllocator.h:
2713        (JSC::ExecutableAllocator::cacheFlush):
2714
27152010-01-04  Patrick Gansterer  <paroga@paroga.com>
2716
2717        Reviewed by Adam Roben.
2718
2719        Implement NO_RETURN for COMPILER(MSVC).
2720        https://bugs.webkit.org/show_bug.cgi?id=33056
2721
2722        * wtf/AlwaysInline.h:
2723
27242010-01-04  Maciej Stachowiak  <mjs@apple.com>
2725
2726        Reviewed by Simon Hausmann.
2727
2728        Fix some PLATFORM(*_ENDIAN) uses to CPU()
2729        https://bugs.webkit.org/show_bug.cgi?id=33148
2730
2731        * runtime/JSCell.cpp:
2732        (JSC::):
2733        * runtime/JSValue.h:
2734        (JSC::JSValue::):
2735
27362010-01-04  Maciej Stachowiak  <mjs@apple.com>
2737
2738        Reviewed by Adam Barth.
2739
2740        Document CPU() macros in comments.
2741        https://bugs.webkit.org/show_bug.cgi?id=33147
2742
2743        * wtf/Platform.h:
2744
27452010-01-04  Maciej Stachowiak  <mjs@apple.com>
2746
2747        Reviewed by Adam Barth.
2748
2749        Reorganize, document and rename CPU() platform macros.
2750        https://bugs.webkit.org/show_bug.cgi?id=33145
2751        ExecutableAllocatorSymbian appears to have buggy ARM version check
2752        https://bugs.webkit.org/show_bug.cgi?id=33138
2753
2754        * wtf/Platform.h:
2755        Rename all macros related to detection of particular CPUs or
2756        classes of CPUs to CPU(), reorganize and document them.
2757
2758        All remaining changes are adapting to the renames, plus fixing the
2759        second bug cited above.
2760
2761        * assembler/ARMAssembler.cpp:
2762        * assembler/ARMAssembler.h:
2763        * assembler/ARMv7Assembler.h:
2764        * assembler/AbstractMacroAssembler.h:
2765        (JSC::AbstractMacroAssembler::Imm32::Imm32):
2766        * assembler/MacroAssembler.h:
2767        * assembler/MacroAssemblerARM.cpp:
2768        * assembler/MacroAssemblerARM.h:
2769        * assembler/MacroAssemblerCodeRef.h:
2770        (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
2771        * assembler/MacroAssemblerX86.h:
2772        * assembler/MacroAssemblerX86Common.h:
2773        * assembler/MacroAssemblerX86_64.h:
2774        * assembler/X86Assembler.h:
2775        (JSC::X86Registers::):
2776        (JSC::X86Assembler::):
2777        (JSC::X86Assembler::movl_mEAX):
2778        (JSC::X86Assembler::movl_EAXm):
2779        (JSC::X86Assembler::repatchLoadPtrToLEA):
2780        (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
2781        * jit/ExecutableAllocator.h:
2782        * jit/ExecutableAllocatorFixedVMPool.cpp:
2783        * jit/ExecutableAllocatorPosix.cpp:
2784        * jit/ExecutableAllocatorSymbian.cpp:
2785        (JSC::ExecutableAllocator::intializePageSize):
2786        * jit/JIT.cpp:
2787        * jit/JIT.h:
2788        * jit/JITArithmetic.cpp:
2789        * jit/JITInlineMethods.h:
2790        (JSC::JIT::beginUninterruptedSequence):
2791        (JSC::JIT::restoreArgumentReferenceForTrampoline):
2792        (JSC::JIT::emitCount):
2793        * jit/JITOpcodes.cpp:
2794        (JSC::JIT::privateCompileCTIMachineTrampolines):
2795        * jit/JITPropertyAccess.cpp:
2796        (JSC::JIT::privateCompileGetByIdProto):
2797        (JSC::JIT::privateCompileGetByIdProtoList):
2798        (JSC::JIT::privateCompileGetByIdChainList):
2799        (JSC::JIT::privateCompileGetByIdChain):
2800        * jit/JITStubs.cpp:
2801        (JSC::JITThunks::JITThunks):
2802        * jit/JITStubs.h:
2803        * runtime/Collector.cpp:
2804        (JSC::currentThreadStackBase):
2805        (JSC::getPlatformThreadRegisters):
2806        (JSC::otherThreadStackPointer):
2807        * wrec/WREC.h:
2808        * wrec/WRECGenerator.cpp:
2809        (JSC::WREC::Generator::generateEnter):
2810        (JSC::WREC::Generator::generateReturnSuccess):
2811        (JSC::WREC::Generator::generateReturnFailure):
2812        * wrec/WRECGenerator.h:
2813        * wtf/FastMalloc.cpp:
2814        * wtf/TCSpinLock.h:
2815        (TCMalloc_SpinLock::Lock):
2816        (TCMalloc_SpinLock::Unlock):
2817        (TCMalloc_SlowLock):
2818        * wtf/Threading.h:
2819        * wtf/dtoa.cpp:
2820        * yarr/RegexJIT.cpp:
2821        (JSC::Yarr::RegexGenerator::generateEnter):
2822        (JSC::Yarr::RegexGenerator::generateReturn):
2823        * yarr/RegexJIT.h:
2824
28252010-01-04  Maciej Stachowiak  <mjs@apple.com>
2826
2827        Reviewed by Adam Barth.
2828
2829        Clean up COMPILER macros and remove unused ones.
2830        https://bugs.webkit.org/show_bug.cgi?id=33132
2831
2832        Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were
2833        not used anywhere.
2834
2835        * wtf/Platform.h:
2836
28372010-01-03  Maciej Stachowiak  <mjs@apple.com>
2838
2839        Reviewed by Eric Seidel.
2840
2841        Update wtf/Platform.h to document the new system for porting macros.
2842        https://bugs.webkit.org/show_bug.cgi?id=33130
2843
2844        * wtf/Platform.h:
2845
28462009-12-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2847
2848        Reviewed by Maciej Stachowiak.
2849
2850        PLATFORM(CAIRO) should be defined by WIN_CAIRO define
2851        https://bugs.webkit.org/show_bug.cgi?id=22250
2852
2853        * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only
2854        For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h
2855
28562009-12-28  Shu Chang  <Chang.Shu@nokia.com>
2857
2858        Reviewed by Laszlo Gombos.
2859
2860        [Qt] Delete ThreadPrivate instance after it is finished.
2861        https://bugs.webkit.org/show_bug.cgi?id=32614
2862
2863        * wtf/qt/ThreadingQt.cpp:
2864        (WTF::ThreadMonitor::instance):
2865        (WTF::ThreadMonitor::threadFinished):
2866        (WTF::createThreadInternal):
2867        (WTF::detachThread):
2868
28692009-12-28  Patrick Gansterer  <paroga@paroga.com>
2870
2871        Reviewed by Maciej Stachowiak.
2872
2873        Cleanup of #define JS_EXPORT.
2874
2875        * API/JSBase.h:
2876
28772009-12-27  Patrick Gansterer  <paroga@paroga.com>
2878
2879        Reviewed by Adam Barth.
2880
2881        WinCE buildfix (HWND_MESSAGE isn't supported there)
2882
2883        * wtf/win/MainThreadWin.cpp:
2884        (WTF::initializeMainThreadPlatform):
2885
28862009-12-27  Patrick Gansterer  <paroga@paroga.com>
2887
2888        Reviewed by Adam Barth.
2889
2890        Added a file with WinMain function to link agains in WinCE.
2891
2892        * os-win32/WinMain.cpp: Added.
2893        (convertToUtf8):
2894        (WinMain):
2895
28962009-12-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2897
2898        Unreviewed; revert of r52550.
2899
2900        The change regressed the following LayoutTests for QtWebKit.
2901
2902        fast/workers/worker-call.html -> crashed
2903        fast/workers/worker-close.html -> crashed
2904
2905        * wtf/qt/ThreadingQt.cpp:
2906        (WTF::waitForThreadCompletion):
2907        (WTF::detachThread):
2908
29092009-12-24  Shu Chang  <Chang.Shu@nokia.com>
2910
2911        Reviewed by Laszlo Gombos.
2912
2913        [Qt] Fix memory leak by deleting instance of ThreadPrivate
2914        in function waitForThreadCompletion(), synchronously, or in
2915        detachThread(), asynchronously.
2916        https://bugs.webkit.org/show_bug.cgi?id=32614
2917
2918        * wtf/qt/ThreadingQt.cpp:
2919        (WTF::waitForThreadCompletion):
2920        (WTF::detachThread):
2921
29222009-12-23  Kwang Yul Seo  <skyul@company100.net>
2923
2924        Reviewed by Laszlo Gombos.
2925
2926        Include stddef.h for ptrdiff_t
2927        https://bugs.webkit.org/show_bug.cgi?id=32891
2928
2929        ptrdiff_t is typedef-ed in stddef.h.
2930        Include stddef.h in jit/ExecutableAllocator.h.
2931
2932        * jit/ExecutableAllocator.h:
2933
29342009-12-23  Patrick Gansterer  <paroga@paroga.com>
2935
2936        Reviewed by Eric Seidel.
2937
2938        Buildfix after r47092.
2939
2940        * wtf/wince/MemoryManager.cpp:
2941        (WTF::tryFastMalloc):
2942        (WTF::tryFastZeroedMalloc):
2943        (WTF::tryFastCalloc):
2944        (WTF::tryFastRealloc):
2945
29462009-12-23  Kent Tamura  <tkent@chromium.org>
2947
2948        Reviewed by Darin Adler.
2949
2950        HTMLInputElement::valueAsDate getter support.
2951        https://bugs.webkit.org/show_bug.cgi?id=32876
2952
2953        Expose dateToDaysFrom1970().
2954
2955        * JavaScriptCore.exp:
2956        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2957        * wtf/DateMath.cpp:
2958        (WTF::dateToDaysFrom1970):
2959        * wtf/DateMath.h:
2960
29612009-12-22  Darin Adler  <darin@apple.com>
2962
2963        Reviewed by Mark Rowe.
2964
2965        Turn off datagrid by default, at least for all platforms Apple ships.
2966        The datagrid implementation isn't ready for general web use yet.
2967
2968        * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default.
2969
29702009-12-22  Steve Block  <steveblock@google.com>
2971
2972        Reviewed by David Levin.
2973
2974        Updates Android's scheduleDispatchFunctionsOnMainThread() to use new
2975        AndroidThreading class, rather than using JavaSharedClient directly.
2976        This fixes the current layering violation.
2977        https://bugs.webkit.org/show_bug.cgi?id=32651
2978
2979        The pattern is copied from Chromium, which uses the ChromiumThreading
2980        class. This patch also fixes the style in ChromiumThreading.h.
2981
2982        * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading.
2983        * wtf/android/MainThreadAndroid.cpp: Modified
2984        (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading.
2985        * wtf/chromium/ChromiumThreading.h: Modified. Fixes style.
2986
29872009-12-22  Gavin Barraclough  <barraclough@apple.com>
2988
2989        Reviewed by Sam Weinig.
2990
2991        Fix a couple of problems with UntypedPtrAndBitfield.
2992
2993        Add a m_leaksPtr to reduce false positives from leaks in debug builds
2994        (this isn't perfect because we'd like a solution for release builds,
2995        but this is now at least as good as a PtrAndFlags would be).
2996
2997        Switch SmallStringsto use a regular string for the base, rather than
2998        a static one.  UntypedPtrAndBitfield assumes all strings are at least
2999        8 byte aligned; this migt not be true of static strings.  Shared buffers
3000        are heap allocated, as are all UStringImpls other than static strings.
3001        Static strings cannot end up being the owner string of substrings,
3002        since the only static strings are length 0.
3003
3004        * runtime/SmallStrings.cpp:
3005        (JSC::SmallStringsStorage::SmallStringsStorage):
3006        * runtime/UStringImpl.h:
3007        (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
3008        (JSC::UStringImpl::UStringImpl):
3009
30102009-12-22  Kwang Yul Seo  <skyul@company100.net>
3011
3012        Reviewed by Darin Adler.
3013
3014        RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp
3015        https://bugs.webkit.org/show_bug.cgi?id=32857
3016
3017        Add implementation of strcasecmp and strncasecmp for RVCT < 4.0
3018        because earlier versions of RVCT 4.0 does not provide these functions.
3019
3020        * wtf/StringExtras.cpp: Added.
3021        (strcasecmp):
3022        (strncasecmp):
3023        * wtf/StringExtras.h:
3024
30252009-12-22  Kwang Yul Seo  <skyul@company100.net>
3026
3027        Reviewed by Darin Adler.
3028
3029        Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT
3030        https://bugs.webkit.org/show_bug.cgi?id=32853
3031
3032        Use __forceinline forces RVCT to compile a C or C++ function
3033        inline. The compiler attempts to inline the function, regardless of
3034        the characteristics of the function.
3035
3036        * wtf/AlwaysInline.h:
3037        * wtf/FastMalloc.h:
3038
30392009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
3040
3041        Prospective GTK build fix: Add UStringImpl.cpp/h to the build.
3042
3043        * GNUmakefile.am:
3044
30452009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
3046
3047        Fix the Qt build, add UStringImpl.cpp to the build.
3048
3049        * JavaScriptCore.pri:
3050
30512009-12-21  Gavin Barraclough  <barraclough@apple.com>
3052
3053        Windows Build fix part 5.
3054        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3055
30562009-12-21  Gavin Barraclough  <barraclough@apple.com>
3057
3058        Reviewed by NOBODY (build fix).
3059        Fix breakage of world introduced in build fix to r52463.
3060
3061        * runtime/UStringImpl.h:
3062
30632009-12-21  Gavin Barraclough  <barraclough@apple.com>
3064
3065        Reviewed by Darin Adler.
3066
3067        https://bugs.webkit.org/show_bug.cgi?id=32831
3068        Replace UString::Rep implementation, following introduction of ropes to JSC.
3069
3070            * Remove redundant overcapacity mechanisms.
3071            * Reduce memory cost of Rep's.
3072            * Add an inline storage mechanism akin to that in WebCore's StringImpl.
3073
3074        ~1% Sunspider progression.
3075
3076        * JavaScriptCore.exp:
3077        * JavaScriptCore.xcodeproj/project.pbxproj:
3078        * runtime/JSString.cpp:
3079        (JSC::JSString::resolveRope):
3080        * runtime/SmallStrings.cpp:
3081        (JSC::SmallStringsStorage::SmallStringsStorage):
3082        * runtime/UString.cpp:
3083        (JSC::initializeUString):
3084        (JSC::createRep):
3085        (JSC::UString::createFromUTF8):
3086        (JSC::UString::createUninitialized):
3087        (JSC::UString::spliceSubstringsWithSeparators):
3088        (JSC::UString::replaceRange):
3089        (JSC::UString::ascii):
3090        (JSC::UString::operator=):
3091        (JSC::UString::toStrictUInt32):
3092        (JSC::equal):
3093        * runtime/UString.h:
3094        (JSC::UString::isEmpty):
3095        (JSC::UString::cost):
3096        (JSC::makeString):
3097        * runtime/UStringImpl.cpp: Added.
3098        (JSC::UStringImpl::baseSharedBuffer):
3099        (JSC::UStringImpl::sharedBuffer):
3100        (JSC::UStringImpl::destroy):
3101        (JSC::UStringImpl::computeHash):
3102        * runtime/UStringImpl.h: Added.
3103        (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
3104        (JSC::UntypedPtrAndBitfield::asPtr):
3105        (JSC::UntypedPtrAndBitfield::operator&=):
3106        (JSC::UntypedPtrAndBitfield::operator|=):
3107        (JSC::UntypedPtrAndBitfield::operator&):
3108        (JSC::UStringImpl::create):
3109        (JSC::UStringImpl::createCopying):
3110        (JSC::UStringImpl::createUninitialized):
3111        (JSC::UStringImpl::data):
3112        (JSC::UStringImpl::size):
3113        (JSC::UStringImpl::cost):
3114        (JSC::UStringImpl::hash):
3115        (JSC::UStringImpl::computedHash):
3116        (JSC::UStringImpl::setHash):
3117        (JSC::UStringImpl::identifierTable):
3118        (JSC::UStringImpl::setIdentifierTable):
3119        (JSC::UStringImpl::ref):
3120        (JSC::UStringImpl::deref):
3121        (JSC::UStringImpl::allocChars):
3122        (JSC::UStringImpl::copyChars):
3123        (JSC::UStringImpl::computeHash):
3124        (JSC::UStringImpl::null):
3125        (JSC::UStringImpl::empty):
3126        (JSC::UStringImpl::checkConsistency):
3127        (JSC::UStringImpl::):
3128        (JSC::UStringImpl::UStringImpl):
3129        (JSC::UStringImpl::operator new):
3130        (JSC::UStringImpl::bufferOwnerString):
3131        (JSC::UStringImpl::bufferOwnership):
3132        (JSC::UStringImpl::isStatic):
3133
31342009-12-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3135
3136        Reviewed by Kenneth Rohde Christiansen.
3137
3138        Move some build decisions from Qt build system into source files
3139        https://bugs.webkit.org/show_bug.cgi?id=31956
3140
3141        * JavaScriptCore.pri: Compile files unconditionally
3142        * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
3143        * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS)
3144        * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
3145        * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN)
3146        * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS)
3147        * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port
3148        * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED)
3149        * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED)
3150
31512009-12-18  Gavin Barraclough  <barraclough@apple.com>
3152
3153        Reviewed by Sam Weinig.
3154
3155        Add createNonCopying method to UString to make replace constructor passed bool,
3156        to make behaviour more explicit.  Add createFromUTF8 to UString (wrapping method
3157        on UString::Rep), since other cases of transliteration (e.g.  from ascii) are
3158        performed in UString constructors.  Add/use setHash & size() accessors on Rep,
3159        rather than accessing _hash/len directly.
3160
3161        * API/JSClassRef.cpp:
3162        (OpaqueJSClass::OpaqueJSClass):
3163        * API/OpaqueJSString.cpp:
3164        (OpaqueJSString::ustring):
3165        * JavaScriptCore.exp:
3166        * runtime/ArrayPrototype.cpp:
3167        (JSC::arrayProtoFuncToString):
3168        * runtime/Identifier.cpp:
3169        (JSC::Identifier::equal):
3170        (JSC::CStringTranslator::translate):
3171        (JSC::UCharBufferTranslator::translate):
3172        (JSC::Identifier::addSlowCase):
3173        * runtime/JSString.cpp:
3174        (JSC::JSString::resolveRope):
3175        * runtime/JSString.h:
3176        (JSC::JSString::Rope::Fiber::refAndGetLength):
3177        (JSC::JSString::Rope::append):
3178        * runtime/StringBuilder.h:
3179        (JSC::StringBuilder::release):
3180        * runtime/StringConstructor.cpp:
3181        (JSC::stringFromCharCodeSlowCase):
3182        * runtime/StringPrototype.cpp:
3183        (JSC::substituteBackreferencesSlow):
3184        (JSC::stringProtoFuncToLowerCase):
3185        (JSC::stringProtoFuncToUpperCase):
3186        (JSC::stringProtoFuncFontsize):
3187        (JSC::stringProtoFuncLink):
3188        * runtime/UString.cpp:
3189        (JSC::UString::UString):
3190        (JSC::UString::createNonCopying):
3191        (JSC::UString::createFromUTF8):
3192        * runtime/UString.h:
3193        (JSC::UString::Rep::setHash):
3194        (JSC::UString::~UString):
3195        (JSC::makeString):
3196
31972009-12-18  Geoffrey Garen  <ggaren@apple.com>
3198
3199        Reviewed by Cameron Zwarich and Gavin Barraclough.
3200
3201        Changed Register constructors to assignment operators, to streamline
3202        moving values into registers. (In theory, there's no difference between
3203        the two, since the constructor should just inline away, but there seems
3204        to be a big difference in the addled mind of the GCC optimizer.)
3205
3206        In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K
3207        reduction in stack usage per privateExecute stack frame.
3208
3209        * interpreter/CallFrame.h:
3210        (JSC::ExecState::setCalleeArguments):
3211        (JSC::ExecState::setCallerFrame):
3212        (JSC::ExecState::setScopeChain):
3213        (JSC::ExecState::init):
3214        (JSC::ExecState::setArgumentCount):
3215        (JSC::ExecState::setCallee):
3216        (JSC::ExecState::setCodeBlock): Added a little bit of casting so these
3217        functions could use the new Register assignment operators.
3218
3219        * interpreter/Register.h:
3220        (JSC::Register::withInt):
3221        (JSC::Register::Register):
3222        (JSC::Register::operator=): Swapped in assignment operators for constructors.
3223
32242009-12-18  Yongjun Zhang  <yongjun.zhang@nokia.com>
3225
3226        Reviewed by Simon Hausmann.
3227
3228        https://bugs.webkit.org/show_bug.cgi?id=32713
3229        [Qt] make wtf/Assertions.h compile in winscw compiler.
3230
3231        Add string arg before ellipsis to help winscw compiler resolve variadic
3232        macro definitions in wtf/Assertions.h.
3233
3234        * wtf/Assertions.h:
3235
32362009-12-18  Geoffrey Garen  <ggaren@apple.com>
3237
3238        Reviewed by Adam Roben.
3239
3240        Fixed intermittent failure seen on Windows buildbot, and in other JSC
3241        API clients.
3242
3243        Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
3244        use it, to avoid vending a stale object as a prototype.
3245
3246        * API/JSClassRef.cpp:
3247        (OpaqueJSClassContextData::OpaqueJSClassContextData):
3248        (OpaqueJSClass::prototype):
3249        * API/JSClassRef.h: Use WeakGCPtr.
3250
3251        * JavaScriptCore.xcodeproj/project.pbxproj:
3252        * runtime/WeakGCPtr.h: Added.
3253        (JSC::WeakGCPtr::WeakGCPtr):
3254        (JSC::WeakGCPtr::get):
3255        (JSC::WeakGCPtr::clear):
3256        (JSC::WeakGCPtr::operator*):
3257        (JSC::WeakGCPtr::operator->):
3258        (JSC::WeakGCPtr::operator!):
3259        (JSC::WeakGCPtr::operator bool):
3260        (JSC::WeakGCPtr::operator UnspecifiedBoolType):
3261        (JSC::WeakGCPtr::assign):
3262        (JSC::::operator):
3263        (JSC::operator==):
3264        (JSC::operator!=):
3265        (JSC::static_pointer_cast):
3266        (JSC::const_pointer_cast):
3267        (JSC::getPtr): Added WeakGCPtr to the project.
3268
32692009-12-18  Gavin Barraclough  <barraclough@apple.com>
3270
3271        Reviewed by Sam Weinig.
3272
3273        https://bugs.webkit.org/show_bug.cgi?id=32720
3274
3275        * JavaScriptCore.exp:
3276            - Remove exports for UString::append
3277        * JavaScriptCore.xcodeproj/project.pbxproj:
3278            - Make StringBuilder a private header (was project).
3279
32802009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
3281
3282        Reviewed by Gustavo Noronha Silva.
3283
3284        [GTK] GRefPtr does not take a reference when assigned a raw pointer
3285        https://bugs.webkit.org/show_bug.cgi?id=32709
3286
3287        Ensure that when assigning a raw pointer to a GRefPtr, the reference
3288        count is incremented. Also remove the GRefPtr conversion overload as
3289        GRefPtr types have necessarily incompatible reference counting.
3290
3291        * wtf/gtk/GRefPtr.h:
3292        (WTF::GRefPtr::operator=):
3293
32942009-12-18  Simon Hausmann  <simon.hausmann@nokia.com>
3295
3296        Reviewed by Tor Arne Vestbø.
3297
3298        [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds
3299
3300        https://bugs.webkit.org/show_bug.cgi?id=32716
3301
3302        * pcre/pcre.pri: Use standalone_package instead of QTDIR_build
3303
33042009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
3305
3306        Reviewed by Gustavo Noronha Silva.
3307
3308        [GTK] Compile warning from line 29 of GRefPtr.cpp
3309        https://bugs.webkit.org/show_bug.cgi?id=32703
3310
3311        Fix memory leak and compiler warning in GRefPtr GHashTable template
3312        specialization.
3313
3314        * wtf/gtk/GRefPtr.cpp:
3315        (WTF::refGPtr):
3316
33172009-12-17  Sam Weinig  <sam@webkit.org>
3318
3319        Reviewed by Mark Rowe.
3320
3321        Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines.
3322
3323        * wtf/Platform.h:
3324
33252009-12-17  Adam Roben  <aroben@apple.com>
3326
3327        Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the
3328        source tree
3329
3330        Fixes <http://webkit.org/b/32665>.
3331
3332        Reviewed by Ada Chan.
3333
3334        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved
3335        around files and filters so that the structure matches
3336        JavaScriptCore.xcodeproj and the source tree. A few headers that were
3337        previously omitted have been added, as well as JSZombie.{cpp,h}.
3338
33392009-12-17  Adam Roben  <aroben@apple.com>
3340
3341        Remove HeavyProfile and TreeProfile completely
3342
3343        These were mostly removed in r42808, but the empty files were left in
3344        place.
3345
3346        Fixes <http://webkit.org/b/32664>.
3347
3348        Reviewed by John Sullivan.
3349
3350        * Android.mk:
3351        * GNUmakefile.am:
3352        * JavaScriptCore.gypi:
3353        * JavaScriptCore.pri:
3354        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3355        * JavaScriptCoreSources.bkl:
3356        Removed HeavyProfile/TreeProfile source files.
3357
3358        * profiler/HeavyProfile.cpp: Removed.
3359        * profiler/HeavyProfile.h: Removed.
3360        * profiler/TreeProfile.cpp: Removed.
3361        * profiler/TreeProfile.h: Removed.
3362
33632009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
3364
3365        Reviewed by Gustavo Noronha Silva.
3366
3367        [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
3368        https://bugs.webkit.org/show_bug.cgi?id=21599
3369
3370        Implement GRefPtr, a smart pointer for reference counted GObject types.
3371
3372        * GNUmakefile.am:
3373        * wtf/gtk/GOwnPtr.cpp:
3374        (WTF::GDir):
3375        * wtf/gtk/GRefPtr.h: Added.
3376        (WTF::):
3377        (WTF::GRefPtr::GRefPtr):
3378        (WTF::GRefPtr::~GRefPtr):
3379        (WTF::GRefPtr::clear):
3380        (WTF::GRefPtr::get):
3381        (WTF::GRefPtr::operator*):
3382        (WTF::GRefPtr::operator->):
3383        (WTF::GRefPtr::operator!):
3384        (WTF::GRefPtr::operator UnspecifiedBoolType):
3385        (WTF::GRefPtr::hashTableDeletedValue):
3386        (WTF::::operator):
3387        (WTF::::swap):
3388        (WTF::swap):
3389        (WTF::operator==):
3390        (WTF::operator!=):
3391        (WTF::static_pointer_cast):
3392        (WTF::const_pointer_cast):
3393        (WTF::getPtr):
3394        (WTF::adoptGRef):
3395        (WTF::refGPtr):
3396        (WTF::derefGPtr):
3397
33982009-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3399
3400        Unreviewed. Build fixes for make distcheck.
3401
3402        * GNUmakefile.am:
3403
34042009-12-16  Geoffrey Garen  <ggaren@apple.com>
3405
3406        Reviewed by Oliver Hunt.
3407
3408        Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates
3409        bloated code
3410
3411        This patch cuts Interpreter stack use by about a third.
3412
3413        * bytecode/Opcode.h: Changed Opcode to const void* to work with the
3414        const static initiliazation we want to do in Interpreter::privateExecute.
3415
3416        * interpreter/Interpreter.cpp:
3417        (JSC::Interpreter::Interpreter): Moved hashtable initialization here to
3418        avoid polluting Interpreter::privateExecute's stack, and changed it from a
3419        series of add() calls to one add() call in a loop, to cut down on code size.
3420
3421        (JSC::Interpreter::privateExecute): Changed a series of label computations
3422        to a copy of a compile-time constant array to cut down on code size.
3423
34242009-12-16  Mark Rowe  <mrowe@apple.com>
3425
3426        Build fix.  Disable debug variants of WebKit frameworks.
3427
3428        * JavaScriptCore.xcodeproj/project.pbxproj:
3429
34302009-12-15  Geoffrey Garen  <ggaren@apple.com>
3431
3432        Reviewed by Sam "r=me" Weinig.
3433
3434        https://bugs.webkit.org/show_bug.cgi?id=32498
3435        <rdar://problem/7471495>
3436        REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer
3437        works
3438
3439        Fixed a tyop.
3440
3441        * runtime/Operations.h:
3442        (JSC::jsAdd): Use the '&&' operator, not the ',' operator.
3443
34442009-12-15  Geoffrey Garen  <ggaren@apple.com>
3445
3446        Try to fix the windows build: don't export this inlined function.
3447
3448        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3449
34502009-12-15  Geoffrey Garen  <ggaren@apple.com>
3451
3452        Reviewed by Beth Dakin.
3453
3454        Inlined JSCell's operator new.
3455
3456        3.7% speedup on bench-allocate-nonretained.js.
3457
3458        * JavaScriptCore.exp:
3459        * runtime/JSCell.cpp:
3460        * runtime/JSCell.h:
3461        (JSC::JSCell::operator new):
3462
34632009-12-15  Geoffrey Garen  <ggaren@apple.com>
3464
3465        Reviewed by Oliver Hunt.
3466
3467        Removed the number heap, replacing it with a one-item free list for
3468        numbers, taking advantage of the fact that two number cells fit inside
3469        the space for one regular cell, and number cells don't require destruction.
3470
3471        SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
3472        heap-allocates numbers).
3473
3474        SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
3475        in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
3476        speedup on bench-alloc-retained.js.
3477
3478        There's a lot of formulaic change in this patch, but not much substance.
3479
3480        * JavaScriptCore.exp:
3481        * debugger/Debugger.cpp:
3482        (JSC::Debugger::recompileAllJSFunctions):
3483        * runtime/Collector.cpp:
3484        (JSC::Heap::Heap):
3485        (JSC::Heap::destroy):
3486        (JSC::Heap::allocateBlock):
3487        (JSC::Heap::freeBlock):
3488        (JSC::Heap::freeBlockPtr):
3489        (JSC::Heap::freeBlocks):
3490        (JSC::Heap::recordExtraCost):
3491        (JSC::Heap::allocate):
3492        (JSC::Heap::resizeBlocks):
3493        (JSC::Heap::growBlocks):
3494        (JSC::Heap::shrinkBlocks):
3495        (JSC::Heap::markConservatively):
3496        (JSC::Heap::clearMarkBits):
3497        (JSC::Heap::markedCells):
3498        (JSC::Heap::sweep):
3499        (JSC::Heap::markRoots):
3500        (JSC::Heap::objectCount):
3501        (JSC::Heap::addToStatistics):
3502        (JSC::Heap::statistics):
3503        (JSC::Heap::isBusy):
3504        (JSC::Heap::reset):
3505        (JSC::Heap::collectAllGarbage):
3506        (JSC::Heap::primaryHeapBegin):
3507        (JSC::Heap::primaryHeapEnd):
3508        * runtime/Collector.h:
3509        (JSC::): Removed all code pertaining to the number heap, and changed all
3510        heap template functions and classes to non-template functions and classes.
3511
3512        (JSC::Heap::allocateNumber): A new optimization to replace the number
3513        heap: allocate half-sized number cells in pairs, returning the first
3514        cell and caching the second cell for the next allocation.
3515
3516        * runtime/CollectorHeapIterator.h:
3517        (JSC::LiveObjectIterator::LiveObjectIterator):
3518        (JSC::LiveObjectIterator::operator++):
3519        (JSC::DeadObjectIterator::DeadObjectIterator):
3520        (JSC::DeadObjectIterator::operator++):
3521        (JSC::ObjectIterator::ObjectIterator):
3522        (JSC::ObjectIterator::operator++):
3523        * runtime/JSCell.h:
3524        (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
3525        and changed all heap template functions and classes to non-template functions
3526        and classes.
3527
35282009-12-15  Zoltan Horvath  <zoltan@webkit.org>
3529
3530        Reviewed by Darin Adler.
3531
3532        Allow custom memory allocation control for WeakGCMap class
3533        https://bugs.webkit.org/show_bug.cgi?id=32547
3534
3535        Inherits WeakGCMap from FastAllocBase because it is instantiated by
3536        'new' at: WebCore/dom/Document.cpp:512.
3537
3538        * runtime/WeakGCMap.h:
3539
35402009-12-15  Zoltan Horvath  <zoltan@webkit.org>
3541
3542        Reviewed by Darin Adler.
3543
3544        Allow custom memory allocation control for dtoa's P5Node struct
3545        https://bugs.webkit.org/show_bug.cgi?id=32544
3546
3547        Inherits P5Node struct from Noncopyable because it is instantiated by
3548        'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
3549
3550        * wtf/dtoa.cpp:
3551
35522009-12-14  Geoffrey Garen  <ggaren@apple.com>
3553
3554        Reviewed by Simon Fraser.
3555
3556        https://bugs.webkit.org/show_bug.cgi?id=32524
3557        REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
3558
3559        * wtf/StdLibExtras.h:
3560        (WTF::bitCount): The original patch put the parentheses in the wrong
3561        place, completely changing the calculation and making it almost always
3562        wrong. Moved the parentheses around the '+' operation, like the original
3563        compiler warning suggested.
3564
35652009-12-14  Gabor Loki  <loki@inf.u-szeged.hu>
3566
3567        Unreviewed trivial buildfix.
3568
3569        Fix crosses initialization of usedPrimaryBlocks for JSValue32
3570
3571        * runtime/Collector.cpp:
3572        (JSC::Heap::markConservatively):
3573
35742009-12-14  Csaba Osztrogonác  <ossy@webkit.org>
3575
3576        Reviewed by Simon Hausmann.
3577
3578        GCC 4.3.x warning fixed. Suggested parantheses added.
3579        warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
3580
3581        * wtf/StdLibExtras.h:
3582        (WTF::bitCount):
3583
35842009-12-13  Geoffrey Garen  <ggaren@apple.com>
3585
3586        Reviewed by Sam Weinig.
3587
3588        Changed GC from mark-sweep to mark-allocate.
3589
3590        Added WeakGCMap to keep WebCore blissfully ignorant about objects that
3591        have become garbage but haven't run their destructors yet.
3592
3593        1% SunSpider speedup.
3594        7.6% v8 speedup (37% splay speedup).
3595        17% speedup on bench-alloc-nonretained.js.
3596        18% speedup on bench-alloc-retained.js.
3597
3598        * API/JSBase.cpp:
3599        (JSGarbageCollect):
3600        * API/JSContextRef.cpp:
3601        * JavaScriptCore.exp:
3602        * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
3603        files.
3604
3605        * debugger/Debugger.cpp:
3606        (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
3607        iterator abstraction.
3608
3609        * jsc.cpp:
3610        (functionGC): Updated for rename.
3611
3612        * runtime/Collector.cpp: Slightly reduced the number of allocations per
3613        collection, so that small workloads only allocate on collector block,
3614        rather than two.
3615
3616        (JSC::Heap::Heap): Updated to use the new allocateBlock function.
3617
3618        (JSC::Heap::destroy): Updated to use the new freeBlocks function.
3619
3620        (JSC::Heap::allocateBlock): New function to initialize a block when
3621        allocating it.
3622
3623        (JSC::Heap::freeBlock): Consolidated the responsibility for running
3624        destructors into this function.
3625
3626        (JSC::Heap::freeBlocks): Updated to use freeBlock.
3627
3628        (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
3629        so that allocation, which is more common, doesn't have to check extraCost.
3630
3631        (JSC::Heap::heapAllocate): Run destructors right before recycling a
3632        garbage cell. This has better cache utilization than a separate sweep phase.
3633
3634        (JSC::Heap::resizeBlocks):
3635        (JSC::Heap::growBlocks):
3636        (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
3637        the heap, now that the heap doesn't maintain any information about its
3638        size.
3639
3640        (JSC::isPointerAligned):
3641        (JSC::isHalfCellAligned):
3642        (JSC::isPossibleCell):
3643        (JSC::isCellAligned):
3644        (JSC::Heap::markConservatively): Cleaned up this code a bit.
3645
3646        (JSC::Heap::clearMarkBits):
3647        (JSC::Heap::markedCells): Some helper functions for examining the the mark
3648        bitmap.
3649
3650        (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
3651
3652        (JSC::Heap::markRoots): Reordered some operations for clarity.
3653
3654        (JSC::Heap::objectCount):
3655        (JSC::Heap::addToStatistics):
3656        (JSC::Heap::statistics): Rewrote these functions to calculate an object
3657        count on demand, since the heap doesn't maintain this information by
3658        itself.
3659
3660        (JSC::Heap::reset): New function for resetting the heap once we've
3661        exhausted heap space.
3662
3663        (JSC::Heap::collectAllGarbage): This function matches the old collect()
3664        behavior, but it's now an uncommon function used only by API.
3665
3666        * runtime/Collector.h:
3667        (JSC::CollectorBitmap::count):
3668        (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
3669        the collector mark bitmap.
3670
3671        (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
3672        to bytes, so it's easier to understand.
3673
3674        * runtime/CollectorHeapIterator.h:
3675        (JSC::CollectorHeapIterator::CollectorHeapIterator):
3676        (JSC::CollectorHeapIterator::operator!=):
3677        (JSC::CollectorHeapIterator::operator*):
3678        (JSC::CollectorHeapIterator::advance):
3679        (JSC::::LiveObjectIterator):
3680        (JSC::::operator):
3681        (JSC::::DeadObjectIterator):
3682        (JSC::::ObjectIterator): New iterators for encapsulating details about
3683        heap layout, and what's live and dead on the heap.
3684
3685        * runtime/JSArray.cpp:
3686        (JSC::JSArray::putSlowCase):
3687        (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
3688        we're fully constructed, so the heap mark phase won't visit us in an
3689        invalid state.
3690
3691        * runtime/JSCell.h:
3692        (JSC::JSCell::):
3693        (JSC::JSCell::createDummyStructure):
3694        (JSC::JSCell::JSCell):
3695        * runtime/JSGlobalData.cpp:
3696        (JSC::JSGlobalData::JSGlobalData):
3697        * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
3698
3699        * runtime/JSString.h:
3700        (JSC::jsSubstring): Don't report extra cost for substrings, since they
3701        share a buffer that's already reported extra cost.
3702
3703        * runtime/Tracing.d:
3704        * runtime/Tracing.h: Changed these dtrace hooks not to report object
3705        counts, since they're no longer cheap to compute.
3706
3707        * runtime/UString.h: Updated for renames.
3708
3709        * runtime/WeakGCMap.h: Added.
3710        (JSC::WeakGCMap::isEmpty):
3711        (JSC::WeakGCMap::uncheckedGet):
3712        (JSC::WeakGCMap::uncheckedBegin):
3713        (JSC::WeakGCMap::uncheckedEnd):
3714        (JSC::::get):
3715        (JSC::::take):
3716        (JSC::::set):
3717        (JSC::::uncheckedRemove): Mentioned above.
3718
3719        * wtf/StdLibExtras.h:
3720        (WTF::bitCount): Added a bit population count function, so the heap can
3721        count live objects to fulfill statistics questions.
3722
3723The very last cell in the block is not allocated -- should not be marked.
3724
37252009-12-13  Geoffrey Garen  <ggaren@apple.com>
3726
3727        Windows build fix: Export some new symbols.
3728
3729        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3730
37312009-12-13  Geoffrey Garen  <ggaren@apple.com>
3732
3733        Windows build fix: Removed some old exports.
3734
3735        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3736
37372009-12-13  Geoffrey Garen  <ggaren@apple.com>
3738
3739        Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
3740
3741        * wtf/StdLibExtras.h:
3742        (WTF::bitCount):
3743
37442009-12-13  Gavin Barraclough  <barraclough@apple.com>
3745
3746        Reviewed by NOBODY (speculative Windows build fix).
3747
3748        * runtime/JSGlobalObjectFunctions.cpp:
3749
37502009-12-13  Gavin Barraclough  <barraclough@apple.com>
3751
3752        Reviewed by Sam Weinig.
3753
3754        https://bugs.webkit.org/show_bug.cgi?id=32496
3755        Switch remaining cases of string construction to use StringBuilder.
3756        Builds strings using a vector rather than using string append / addition.
3757
3758        * JavaScriptCore.exp:
3759        * JavaScriptCore.xcodeproj/project.pbxproj:
3760        * runtime/Executable.cpp:
3761        (JSC::FunctionExecutable::paramString):
3762        * runtime/FunctionConstructor.cpp:
3763        (JSC::constructFunction):
3764        * runtime/JSGlobalObjectFunctions.cpp:
3765        (JSC::encode):
3766        (JSC::decode):
3767        (JSC::globalFuncEscape):
3768        (JSC::globalFuncUnescape):
3769        * runtime/JSONObject.cpp:
3770        (JSC::Stringifier::stringify):
3771        (JSC::Stringifier::indent):
3772        * runtime/JSString.h:
3773        * runtime/LiteralParser.cpp:
3774        (JSC::LiteralParser::Lexer::lexString):
3775        * runtime/NumberPrototype.cpp:
3776        (JSC::integerPartNoExp):
3777        (JSC::numberProtoFuncToFixed):
3778        (JSC::numberProtoFuncToPrecision):
3779        * runtime/Operations.h:
3780        (JSC::jsString):
3781        * runtime/StringPrototype.cpp:
3782        (JSC::substituteBackreferencesSlow):
3783        (JSC::substituteBackreferences):
3784        (JSC::stringProtoFuncConcat):
3785
37862009-12-08  Jeremy Moskovich  <jeremy@chromium.org>
3787
3788        Reviewed by Eric Seidel.
3789
3790        Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
3791        https://bugs.webkit.org/show_bug.cgi?id=31802
3792
3793        The goal here is to allow for a zero runtime hit for ports that decide to select
3794        the API at compile time.
3795        When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
3796        at runtime.  Core Text is used for OS Versions >= 10.6.
3797
3798        * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
3799
38002009-12-11  Maciej Stachowiak  <mjs@apple.com>
3801
3802        Reviewed by Oliver Hunt.
3803
3804        Unify codegen for forward and backward variants of branches
3805        https://bugs.webkit.org/show_bug.cgi?id=32463
3806
3807        * jit/JIT.h:
3808        (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
3809        (JSC::JIT::emit_op_loop_if_true): ditto
3810        (JSC::JIT::emitSlow_op_loop_if_true): ditto
3811        (JSC::JIT::emit_op_loop_if_false): ditto
3812        (JSC::JIT::emitSlow_op_loop_if_false): ditto
3813        (JSC::JIT::emit_op_loop_if_less): ditto
3814        (JSC::JIT::emitSlow_op_loop_if_less): ditto
3815        * jit/JITOpcodes.cpp:
3816
38172009-12-11  Sam Weinig  <sam@webkit.org>
3818
3819        Reviewed by Anders Carlsson.
3820
3821        Allow WTFs concept of the main thread to differ from pthreads when necessary.
3822
3823        * wtf/ThreadingPthreads.cpp:
3824        (WTF::initializeThreading):
3825        (WTF::isMainThread):
3826        * wtf/mac/MainThreadMac.mm:
3827        (WTF::initializeMainThreadPlatform):
3828        (WTF::scheduleDispatchFunctionsOnMainThread):
3829
38302009-12-11  Gavin Barraclough  <barraclough@apple.com>
3831
3832        Reviewed by Oliver Hunt.
3833
3834        https://bugs.webkit.org/show_bug.cgi?id=32454
3835        Refactor construction of simple strings to avoid string concatenation.
3836
3837        Building strings through concatenation has a memory and performance cost -
3838        a memory cost since we must over-allocate the buffer to leave space to append
3839        into, and performance in that the string may still require reallocation (and
3840        thus copying during construction).  Instead move the full construction to
3841        within a single function call (makeString), so that the arguments' lengths
3842        can be calculated and an appropriate sized buffer allocated before copying
3843        any characters.
3844
3845        ~No performance change (~2% progression on date tests).
3846
3847        * bytecode/CodeBlock.cpp:
3848        (JSC::escapeQuotes):
3849        (JSC::valueToSourceString):
3850        (JSC::constantName):
3851        (JSC::idName):
3852        (JSC::CodeBlock::registerName):
3853        (JSC::regexpToSourceString):
3854        (JSC::regexpName):
3855        * bytecompiler/NodesCodegen.cpp:
3856        (JSC::substitute):
3857        * profiler/Profiler.cpp:
3858        (JSC::Profiler::createCallIdentifier):
3859        * runtime/DateConstructor.cpp:
3860        (JSC::callDate):
3861        * runtime/DateConversion.cpp:
3862        (JSC::formatDate):
3863        (JSC::formatDateUTCVariant):
3864        (JSC::formatTime):
3865        (JSC::formatTimeUTC):
3866        * runtime/DateConversion.h:
3867        (JSC::):
3868        * runtime/DatePrototype.cpp:
3869        (JSC::dateProtoFuncToString):
3870        (JSC::dateProtoFuncToUTCString):
3871        (JSC::dateProtoFuncToDateString):
3872        (JSC::dateProtoFuncToTimeString):
3873        (JSC::dateProtoFuncToGMTString):
3874        * runtime/ErrorPrototype.cpp:
3875        (JSC::errorProtoFuncToString):
3876        * runtime/ExceptionHelpers.cpp:
3877        (JSC::createUndefinedVariableError):
3878        (JSC::createErrorMessage):
3879        (JSC::createInvalidParamError):
3880        * runtime/FunctionPrototype.cpp:
3881        (JSC::insertSemicolonIfNeeded):
3882        (JSC::functionProtoFuncToString):
3883        * runtime/ObjectPrototype.cpp:
3884        (JSC::objectProtoFuncToString):
3885        * runtime/RegExpConstructor.cpp:
3886        (JSC::constructRegExp):
3887        * runtime/RegExpObject.cpp:
3888        (JSC::RegExpObject::match):
3889        * runtime/RegExpPrototype.cpp:
3890        (JSC::regExpProtoFuncCompile):
3891        (JSC::regExpProtoFuncToString):
3892        * runtime/StringPrototype.cpp:
3893        (JSC::stringProtoFuncBig):
3894        (JSC::stringProtoFuncSmall):
3895        (JSC::stringProtoFuncBlink):
3896        (JSC::stringProtoFuncBold):
3897        (JSC::stringProtoFuncFixed):
3898        (JSC::stringProtoFuncItalics):
3899        (JSC::stringProtoFuncStrike):
3900        (JSC::stringProtoFuncSub):
3901        (JSC::stringProtoFuncSup):
3902        (JSC::stringProtoFuncFontcolor):
3903        (JSC::stringProtoFuncFontsize):
3904        (JSC::stringProtoFuncAnchor):
3905        * runtime/UString.h:
3906        (JSC::):
3907        (JSC::makeString):
3908
39092009-12-10  Gavin Barraclough  <barraclough@apple.com>
3910
3911        Reviewed by Oliver Hunt.
3912
3913        https://bugs.webkit.org/show_bug.cgi?id=32400
3914        Switch remaining cases of string addition to use ropes.
3915
3916        Re-landing r51975 - added toPrimitiveString method,
3917        performs toPrimitive then subsequent toString operations.
3918
3919        ~1% progression on Sunspidey.
3920
3921        * jit/JITStubs.cpp:
3922        (JSC::DEFINE_STUB_FUNCTION):
3923        * runtime/JSString.h:
3924        (JSC::JSString::JSString):
3925        (JSC::JSString::appendStringInConstruct):
3926        * runtime/Operations.cpp:
3927        (JSC::jsAddSlowCase):
3928        * runtime/Operations.h:
3929        (JSC::jsString):
3930        (JSC::jsAdd):
3931
39322009-12-11  Adam Roben  <aroben@apple.com>
3933
3934        Windows build fix
3935
3936        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
3937        $(WebKitOutputDir)/include/private to the include path.
3938
39392009-12-11  Adam Roben  <aroben@apple.com>
3940
3941        Move QuartzCorePresent.h to include/private
3942
3943        This fixes other projects that use wtf/Platform.h
3944
3945        Rubber-stamped by Steve Falkenburg.
3946
3947        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
3948        * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
3949        QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
3950
3951        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3952        * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
3953        Added $(WebKitOutputDir)/include/private to the include path.
3954
39552009-12-11  Adam Roben  <aroben@apple.com>
3956
3957        Fix clean builds and everything rebuilding on every build
3958
3959        Reviewed by Sam Weinig.
3960
3961        * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
3962        write out QuartzCorePresent.h if it exists but is older than
3963        QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
3964        into first.
3965
39662009-12-11  Adam Roben  <aroben@apple.com>
3967
3968        Windows build fix for systems with spaces in their paths
3969
3970        * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
3971
39722009-12-11  Chris Marrin  <cmarrin@apple.com>
3973
3974        Reviewed by Adam Roben.
3975
3976        Add check for presence of QuartzCore headers
3977        https://bugs.webkit.org/show_bug.cgi?id=31856
3978
3979        The script now checks for the presence of QuartzCore.h. If present
3980        it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
3981        HW compositing on Windows. The script writes QuartzCorePresent.h to
3982        the build directory which has a define telling whether QuartzCore is
3983        present.
3984
3985        * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
3986        * wtf/Platform.h:
3987
39882009-12-11  Kent Tamura  <tkent@chromium.org>
3989
3990        Reviewed by Darin Adler.
3991
3992        Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
3993        value for a huge year value.
3994        https://bugs.webkit.org/show_bug.cgi?id=32304
3995
3996        * wtf/DateMath.cpp:
3997        (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
3998        (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
3999        (WTF::timeClip): Use maxECMAScriptTime.
4000        (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
4001
40022009-12-10  Adam Barth  <abarth@webkit.org>
4003
4004        No review, rolling out r51975.
4005        http://trac.webkit.org/changeset/51975
4006
4007        * jit/JITStubs.cpp:
4008        (JSC::DEFINE_STUB_FUNCTION):
4009        * runtime/JSString.h:
4010        (JSC::JSString::JSString):
4011        (JSC::JSString::appendStringInConstruct):
4012        * runtime/Operations.cpp:
4013        (JSC::jsAddSlowCase):
4014        * runtime/Operations.h:
4015        (JSC::jsString):
4016        (JSC::jsAdd):
4017
40182009-12-10  Oliver Hunt  <oliver@apple.com>
4019
4020        Reviewed by Gavin Barraclough.
4021
4022        Incorrect caching of prototype lookup with dictionary base
4023        https://bugs.webkit.org/show_bug.cgi?id=32402
4024
4025        Make sure we don't add cached prototype lookup to the proto_list
4026        lookup chain if the top level object is a dictionary.
4027
4028        * jit/JITStubs.cpp:
4029        (JSC::JITThunks::tryCacheGetByID):
4030
40312009-12-10  Gavin Barraclough  <barraclough@apple.com>
4032
4033        Reviewed by Oliver Hunt.
4034
4035        https://bugs.webkit.org/show_bug.cgi?id=32400
4036        Switch remaining cases of string addition to use ropes.
4037
4038        ~1% progression on Sunspidey.
4039
4040        * jit/JITStubs.cpp:
4041        (JSC::DEFINE_STUB_FUNCTION):
4042        * runtime/JSString.h:
4043        (JSC::JSString::JSString):
4044        (JSC::JSString::appendStringInConstruct):
4045        * runtime/Operations.cpp:
4046        (JSC::jsAddSlowCase):
4047        * runtime/Operations.h:
4048        (JSC::jsString):
4049        (JSC::jsAdd):
4050
40512009-12-10  Kent Hansen  <kent.hansen@nokia.com>
4052
4053        Reviewed by Geoffrey Garen.
4054
4055        Remove JSObject::getPropertyAttributes() and all usage of it.
4056        https://bugs.webkit.org/show_bug.cgi?id=31933
4057
4058        getOwnPropertyDescriptor() should be used instead.
4059
4060        * JavaScriptCore.exp:
4061        * JavaScriptCore.order:
4062        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4063        * debugger/DebuggerActivation.cpp:
4064        (JSC::DebuggerActivation::getOwnPropertyDescriptor):
4065        * debugger/DebuggerActivation.h:
4066        * runtime/JSObject.cpp:
4067        (JSC::JSObject::propertyIsEnumerable):
4068        * runtime/JSObject.h:
4069        * runtime/JSVariableObject.cpp:
4070        * runtime/JSVariableObject.h:
4071
40722009-12-10  Gavin Barraclough  <barraclough@apple.com>
4073
4074        Reviewed by Oliver Hunt & Mark Rowe.
4075
4076        https://bugs.webkit.org/show_bug.cgi?id=32367
4077        Add support for short Ropes (up to 3 entries) inline within JSString.
4078        (rather than externally allocating an object to hold the rope).
4079        Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
4080
4081        ~1% progression on Sunspidey.
4082
4083        * interpreter/Interpreter.cpp:
4084        (JSC::Interpreter::privateExecute):
4085        * jit/JITOpcodes.cpp:
4086        (JSC::JIT::privateCompileCTIMachineTrampolines):
4087        * jit/JITStubs.cpp:
4088        (JSC::DEFINE_STUB_FUNCTION):
4089        * runtime/JSString.cpp:
4090        (JSC::JSString::resolveRope):
4091        (JSC::JSString::toBoolean):
4092        (JSC::JSString::getStringPropertyDescriptor):
4093        * runtime/JSString.h:
4094        (JSC::JSString::Rope::Fiber::deref):
4095        (JSC::JSString::Rope::Fiber::ref):
4096        (JSC::JSString::Rope::Fiber::refAndGetLength):
4097        (JSC::JSString::Rope::append):
4098        (JSC::JSString::JSString):
4099        (JSC::JSString::~JSString):
4100        (JSC::JSString::value):
4101        (JSC::JSString::tryGetValue):
4102        (JSC::JSString::length):
4103        (JSC::JSString::canGetIndex):
4104        (JSC::JSString::appendStringInConstruct):
4105        (JSC::JSString::appendValueInConstructAndIncrementLength):
4106        (JSC::JSString::isRope):
4107        (JSC::JSString::string):
4108        (JSC::JSString::ropeLength):
4109        (JSC::JSString::getStringPropertySlot):
4110        * runtime/Operations.h:
4111        (JSC::jsString):
4112        (JSC::jsAdd):
4113        (JSC::resolveBase):
4114
41152009-12-09  Anders Carlsson  <andersca@apple.com>
4116
4117        Reviewed by Geoffrey Garen.
4118
4119        Fix three more things found by compiling with clang++.
4120
4121        * runtime/Structure.h:
4122        (JSC::StructureTransitionTable::reifySingleTransition):
4123        Add the 'std' qualifier to the call to make_pair.
4124
4125        * wtf/DateMath.cpp:
4126        (WTF::initializeDates):
4127        Incrementing a bool is deprecated according to the C++ specification.
4128
4129        * wtf/PtrAndFlags.h:
4130        (WTF::PtrAndFlags::PtrAndFlags):
4131        Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
4132
41332009-12-09  Maciej Stachowiak  <mjs@apple.com>
4134
4135        Reviewed by Oliver Hunt.
4136
4137        Google reader gets stuck in the "Loading..." state and does not complete
4138        https://bugs.webkit.org/show_bug.cgi?id=32256
4139        <rdar://problem/7456388>
4140
4141        * jit/JITArithmetic.cpp:
4142        (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
4143
41442009-12-09  Gavin Barraclough  <barraclough@apple.com>
4145
4146        Reviewed by Oliver Hunt.
4147
4148        https://bugs.webkit.org/show_bug.cgi?id=32228
4149        Make destruction of ropes non-recursive to prevent stack exhaustion.
4150        Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
4151        since the Rep is not being ref counted this could result in usage of a
4152        Rep with refcount zero (where the Rep comes from a temporary UString
4153        returned from a function).
4154
4155        * runtime/JSString.cpp:
4156        (JSC::JSString::Rope::destructNonRecursive):
4157        (JSC::JSString::Rope::~Rope):
4158        * runtime/JSString.h:
4159        (JSC::JSString::Rope::initializeFiber):
4160        * runtime/Operations.h:
4161        (JSC::concatenateStrings):
4162
41632009-12-09  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
4164
4165        Reviewed by Eric Seidel.
4166
4167        https://bugs.webkit.org/show_bug.cgi?id=31930
4168
4169        Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
4170        The speedup is 25%.
4171
4172        * runtime/JSGlobalData.cpp:
4173        (JSC::VPtrSet::VPtrSet):
4174
41752009-12-09  Steve Block  <steveblock@google.com>
4176
4177        Reviewed by Adam Barth.
4178
4179        Updates Android Makefiles with latest additions.
4180        https://bugs.webkit.org/show_bug.cgi?id=32278
4181
4182        * Android.mk: Modified.
4183        * Android.v8.wtf.mk: Modified.
4184
41852009-12-09  Sam Weinig  <sam@webkit.org>
4186
4187        Reviewed by Gavin Barraclough.
4188
4189        Fix a bug found while trying to compile JavaScriptCore with clang++.
4190
4191        * yarr/RegexPattern.h:
4192        (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here.  Use false instead.
4193
41942009-12-09  Anders Carlsson  <andersca@apple.com>
4195
4196        Reviewed by Sam Weinig.
4197
4198        Attempt to fix the Windows build.
4199
4200        * wtf/FastMalloc.h:
4201
42022009-12-09  Anders Carlsson  <andersca@apple.com>
4203
4204        Reviewed by Sam Weinig.
4205
4206        Fix some things found while trying to compile JavaScriptCore with clang++.
4207
4208        * wtf/FastMalloc.h:
4209        Add correct exception specifications for the allocation/deallocation operators.
4210
4211        * wtf/Vector.h:
4212        * wtf/VectorTraits.h:
4213        Fix a bunch of struct/class mismatches.
4214
42152009-12-08  Maciej Stachowiak  <mjs@apple.com>
4216
4217        Reviewed by Darin Adler.
4218
4219        move code generation portions of Nodes.cpp to bytecompiler directory
4220        https://bugs.webkit.org/show_bug.cgi?id=32284
4221
4222        * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
4223        are not about codegen.
4224        * parser/Nodes.cpp: Removed everything that is about codegen.
4225
4226        Update build systems:
4227
4228        * Android.mk:
4229        * GNUmakefile.am:
4230        * JavaScriptCore.gypi:
4231        * JavaScriptCore.pri:
4232        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4233        * JavaScriptCore.xcodeproj/project.pbxproj:
4234        * JavaScriptCoreSources.bkl:
4235
42362009-12-08  Kevin Watters  <kevinwatters@gmail.com>
4237
4238        Reviewed by Kevin Ollivier.
4239
4240        [wx] Mac plugins support.
4241
4242        https://bugs.webkit.org/show_bug.cgi?id=32236
4243
4244        * wtf/Platform.h:
4245
42462009-12-08  Dmitry Titov  <dimich@chromium.org>
4247
4248        Rubber-stamped by David Levin.
4249
4250        Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
4251        It may have caused massive increase of reported leaks on the bots.
4252        https://bugs.webkit.org/show_bug.cgi?id=31639
4253
4254        * GNUmakefile.am:
4255        * JavaScriptCore.gypi:
4256        * JavaScriptCore.vcproj/WTF/WTF.vcproj:
4257        * JavaScriptCore.xcodeproj/project.pbxproj:
4258        * runtime/Structure.cpp:
4259        (JSC::Structure::Structure):
4260        * wtf/RefCounted.h:
4261        (WTF::RefCountedBase::ref):
4262        (WTF::RefCountedBase::hasOneRef):
4263        (WTF::RefCountedBase::refCount):
4264        (WTF::RefCountedBase::derefBase):
4265        * wtf/ThreadVerifier.h: Removed.
4266
42672009-12-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
4268
4269        Reviewed by Darin Adler.
4270
4271        Make WebKit build correctly on FreeBSD, IA64, and Alpha.
4272        Based on work by Petr Salinger <Petr.Salinger@seznam.cz>,
4273        and Colin Watson <cjwatson@ubuntu.com>.
4274
4275        * wtf/Platform.h:
4276
42772009-12-08  Dmitry Titov  <dimich@chromium.org>
4278
4279        Reviewed by Darin Adler.
4280
4281        Add asserts to RefCounted to make sure ref/deref happens on the right thread.
4282        https://bugs.webkit.org/show_bug.cgi?id=31639
4283
4284        * runtime/Structure.cpp:
4285        (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
4286        * wtf/RefCounted.h:
4287        (WTF::RefCountedBase::ref): Add ASSERT.
4288        (WTF::RefCountedBase::hasOneRef): Ditto.
4289        (WTF::RefCountedBase::refCount): Ditto.
4290        (WTF::RefCountedBase::derefBase): Ditto.
4291        (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
4292        * wtf/ThreadVerifier.h: Added.
4293        (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
4294        (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
4295        (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
4296        (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
4297        (WTF::ThreadVerifier::verifyThread):
4298        * GNUmakefile.am: Add ThreadVerifier.h to the build file.
4299        * JavaScriptCore.gypi: Ditto.
4300        * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
4301        * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
4302
43032009-12-08  Steve Block  <steveblock@google.com>
4304
4305        Reviewed by Adam Barth.
4306
4307        [Android] Adds Makefiles for Android port.
4308        https://bugs.webkit.org/show_bug.cgi?id=31325
4309
4310        * Android.mk: Added.
4311        * Android.v8.wtf.mk: Added.
4312
43132009-12-07  Dmitry Titov  <dimich@chromium.org>
4314
4315        Rubber-stamped by Darin Adler.
4316
4317        Remove ENABLE_SHARED_SCRIPT flags
4318        https://bugs.webkit.org/show_bug.cgi?id=32245
4319        This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
4320
4321        * Configurations/FeatureDefines.xcconfig:
4322        * wtf/Platform.h:
4323
43242009-12-07  Gavin Barraclough  <barraclough@apple.com>
4325
4326        Reviewed by NOBODY (Windows build fixage part I).
4327
4328        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4329
43302009-12-05  Gavin Barraclough  <barraclough@apple.com>
4331
4332        Reviewed by Oliver Hunt.
4333
4334        https://bugs.webkit.org/show_bug.cgi?id=32184
4335        Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
4336        Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
4337
4338        * API/JSCallbackObjectFunctions.h:
4339        (JSC::::toString):
4340        * API/JSValueRef.cpp:
4341        (JSValueIsStrictEqual):
4342        * JavaScriptCore.exp:
4343        * bytecompiler/BytecodeGenerator.cpp:
4344        (JSC::BytecodeGenerator::emitEqualityOp):
4345        * debugger/DebuggerCallFrame.cpp:
4346        (JSC::DebuggerCallFrame::functionName):
4347        (JSC::DebuggerCallFrame::calculatedFunctionName):
4348        * interpreter/Interpreter.cpp:
4349        (JSC::Interpreter::callEval):
4350        (JSC::Interpreter::privateExecute):
4351        * jit/JITStubs.cpp:
4352        (JSC::DEFINE_STUB_FUNCTION):
4353        * profiler/ProfileGenerator.cpp:
4354        (JSC::ProfileGenerator::addParentForConsoleStart):
4355        * profiler/Profiler.cpp:
4356        (JSC::Profiler::willExecute):
4357        (JSC::Profiler::didExecute):
4358        (JSC::Profiler::createCallIdentifier):
4359        (JSC::createCallIdentifierFromFunctionImp):
4360        * profiler/Profiler.h:
4361        * runtime/ArrayPrototype.cpp:
4362        (JSC::arrayProtoFuncIndexOf):
4363        (JSC::arrayProtoFuncLastIndexOf):
4364        * runtime/DateConstructor.cpp:
4365        (JSC::constructDate):
4366        * runtime/FunctionPrototype.cpp:
4367        (JSC::functionProtoFuncToString):
4368        * runtime/InternalFunction.cpp:
4369        (JSC::InternalFunction::name):
4370        (JSC::InternalFunction::displayName):
4371        (JSC::InternalFunction::calculatedDisplayName):
4372        * runtime/InternalFunction.h:
4373        * runtime/JSCell.cpp:
4374        (JSC::JSCell::getString):
4375        * runtime/JSCell.h:
4376        (JSC::JSValue::getString):
4377        * runtime/JSONObject.cpp:
4378        (JSC::gap):
4379        (JSC::Stringifier::Stringifier):
4380        (JSC::Stringifier::appendStringifiedValue):
4381        * runtime/JSObject.cpp:
4382        (JSC::JSObject::putDirectFunction):
4383        (JSC::JSObject::putDirectFunctionWithoutTransition):
4384        (JSC::JSObject::defineOwnProperty):
4385        * runtime/JSObject.h:
4386        * runtime/JSPropertyNameIterator.cpp:
4387        (JSC::JSPropertyNameIterator::get):
4388        * runtime/JSString.cpp:
4389        (JSC::JSString::Rope::~Rope):
4390        (JSC::JSString::resolveRope):
4391        (JSC::JSString::getPrimitiveNumber):
4392        (JSC::JSString::toNumber):
4393        (JSC::JSString::toString):
4394        (JSC::JSString::toThisString):
4395        (JSC::JSString::getStringPropertyDescriptor):
4396        * runtime/JSString.h:
4397        (JSC::JSString::Rope::createOrNull):
4398        (JSC::JSString::Rope::operator new):
4399        (JSC::JSString::value):
4400        (JSC::JSString::tryGetValue):
4401        (JSC::JSString::getIndex):
4402        (JSC::JSString::getStringPropertySlot):
4403        (JSC::JSValue::toString):
4404        * runtime/JSValue.h:
4405        * runtime/NativeErrorConstructor.cpp:
4406        (JSC::NativeErrorConstructor::NativeErrorConstructor):
4407        * runtime/Operations.cpp:
4408        (JSC::JSValue::strictEqualSlowCase):
4409        * runtime/Operations.h:
4410        (JSC::JSValue::equalSlowCaseInline):
4411        (JSC::JSValue::strictEqualSlowCaseInline):
4412        (JSC::JSValue::strictEqual):
4413        (JSC::jsLess):
4414        (JSC::jsLessEq):
4415        (JSC::jsAdd):
4416        (JSC::concatenateStrings):
4417        * runtime/PropertyDescriptor.cpp:
4418        (JSC::PropertyDescriptor::equalTo):
4419        * runtime/PropertyDescriptor.h:
4420        * runtime/StringPrototype.cpp:
4421        (JSC::stringProtoFuncReplace):
4422        (JSC::stringProtoFuncToLowerCase):
4423        (JSC::stringProtoFuncToUpperCase):
4424
44252009-12-07  Nikolas Zimmermann  <nzimmermann@rim.com>
4426
4427        Reviewed by Holger Freyther.
4428
4429        Turn on (SVG) Filters support, by default.
4430        https://bugs.webkit.org/show_bug.cgi?id=32224
4431
4432        * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
4433
44342009-12-07  Steve Falkenburg  <sfalken@apple.com>
4435
4436        Build fix. Be flexible about which version of ICU is used on Windows.
4437
4438        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
4439
44402009-12-07  Maciej Stachowiak  <mjs@apple.com>
4441
4442        Reviewed by Oliver Hunt.
4443
4444        op_loop_if_less JIT codegen is broken for 64-bit
4445        https://bugs.webkit.org/show_bug.cgi?id=32221
4446
4447        * jit/JITOpcodes.cpp:
4448        (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
4449
44502009-12-07  Oliver Hunt  <oliver@apple.com>
4451
4452        Reviewed by Maciej Stachowiak.
4453
4454        Object.create fails if properties on the descriptor are getters
4455        https://bugs.webkit.org/show_bug.cgi?id=32219
4456
4457        Correctly initialise the PropertySlots with the descriptor object.
4458
4459        * runtime/ObjectConstructor.cpp:
4460        (JSC::toPropertyDescriptor):
4461
44622009-12-06  Maciej Stachowiak  <mjs@apple.com>
4463
4464        Not reviewed, build fix.
4465
4466        Actually tested 64-bit *and* 32-bit build this time.
4467
4468        * jit/JITOpcodes.cpp:
4469        (JSC::JIT::emit_op_loop_if_false):
4470
44712009-12-06  Maciej Stachowiak  <mjs@apple.com>
4472
4473        Not reviewed, build fix.
4474
4475        Really really fix 64-bit build for prior patch (actually tested this time).
4476
4477        * jit/JITOpcodes.cpp:
4478        (JSC::JIT::emit_op_loop_if_false):
4479        (JSC::JIT::emitSlow_op_loop_if_false):
4480
44812009-12-06  Maciej Stachowiak  <mjs@apple.com>
4482
4483        Not reviewed, build fix.
4484
4485        Really fix 64-bit build for prior patch.
4486
4487        * jit/JITArithmetic.cpp:
4488        (JSC::JIT::emitSlow_op_jless):
4489
44902009-12-06  Maciej Stachowiak  <mjs@apple.com>
4491
4492        Not reviewed, build fix.
4493
4494        Fix 64-bit build for prior patch.
4495
4496        * jit/JITOpcodes.cpp:
4497        (JSC::JIT::emitSlow_op_loop_if_less):
4498
44992009-12-05  Maciej Stachowiak  <mjs@apple.com>
4500
4501        Reviewed by Oliver Hunt.
4502
4503        conway benchmark spends half it's time in op_less (jump fusion fails)
4504        https://bugs.webkit.org/show_bug.cgi?id=32190
4505
4506        <1% speedup on SunSpider and V8
4507        2x speedup on "conway" benchmark
4508
4509        Two optimizations:
4510        1) Improve codegen for logical operators &&, || and ! in a condition context
4511
4512        When generating code for combinations of &&, || and !, in a
4513        condition context (i.e. in an if statement or loop condition), we
4514        used to produce a value, and then separately jump based on its
4515        truthiness. Now we pass the false and true targets in, and let the
4516        logical operators generate jumps directly. This helps in four
4517        ways:
4518
4519        a) Individual clauses of a short-circuit logical operator can now
4520        jump directly to the then or else clause of an if statement (or to
4521        the top or exit of a loop) instead of jumping to a jump.
4522
4523        b) It used to be that jump fusion with the condition of the first
4524        clause of a logical operator was inhibited, because the register
4525        was ref'd to be used later, in the actual condition jump; this no
4526        longer happens since a jump straight to the final target is
4527        generated directly.
4528
4529        c) It used to be that jump fusion with the condition of the second
4530        clause of a logical operator was inhibited, because there was a
4531        jump target right after the second clause and before the actual
4532        condition jump. But now it's no longer necessary for the first
4533        clause to jump there so jump fusion is not blocked.
4534
4535        d) We avoid generating excess mov statements in some cases.
4536
4537        As a concrete example this source:
4538
4539        if (!((x < q && y < q) || (t < q && z < q))) {
4540            // ...
4541        }
4542
4543        Used to generate this bytecode:
4544
4545        [  34] less              r1, r-15, r-19
4546        [  38] jfalse            r1, 7(->45)
4547        [  41] less              r1, r-16, r-19
4548        [  45] jtrue             r1, 14(->59)
4549        [  48] less              r1, r-17, r-19
4550        [  52] jfalse            r1, 7(->59)
4551        [  55] less              r1, r-18, r-19
4552        [  59] jtrue             r1, 17(->76)
4553
4554        And now generates this bytecode (also taking advantage of the second optimization below):
4555
4556        [  34] jnless            r-15, r-19, 8(->42)
4557        [  38] jless             r-16, r-19, 26(->64)
4558        [  42] jnless            r-17, r-19, 8(->50)
4559        [  46] jless             r-18, r-19, 18(->64)
4560
4561        Note the jump fusion and the fact that there's less jump
4562        indirection - three of the four jumps go straight to the target
4563        clause instead of indirecting through another jump.
4564
4565        2) Implement jless opcode to take advantage of the above, since we'll now often generate
4566        a less followed by a jtrue where fusion is not forbidden.
4567
4568        * parser/Nodes.h:
4569        (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
4570        whether a node supports special conditional codegen. Return false as this is the default.
4571        (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
4572        defined for nodes that do have conditional codegen.
4573        (JSC::UnaryOpNode::expr): Add const version.
4574        (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
4575        supports it.
4576        (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
4577        * parser/Nodes.cpp:
4578        (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
4579        the true and false targets for the child node.
4580        (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
4581        directly, improving codegen quality. Also handles further nested conditional codegen.
4582        (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
4583        (JSC::IfNode::emitBytecode): ditto
4584        (JSC::IfElseNode::emitBytecode): ditto
4585        (JSC::DoWhileNode::emitBytecode): ditto
4586        (JSC::WhileNode::emitBytecode): ditto
4587        (JSC::ForNode::emitBytecode): ditto
4588
4589        * bytecode/Opcode.h:
4590        - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
4591        - Added jless opcode to take advantage of new fusion opportunities.
4592        * bytecode/CodeBlock.cpp:
4593        (JSC::CodeBlock::dump): Handle above.
4594        * bytecompiler/BytecodeGenerator.cpp:
4595        (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
4596        (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
4597        * bytecompiler/BytecodeGenerator.h:
4598        (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
4599        overly deep expressions etc.
4600        * interpreter/Interpreter.cpp:
4601        (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
4602        * jit/JIT.cpp:
4603        (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
4604        (JSC::JIT::privateCompileSlowCases): ditto
4605        * jit/JIT.h:
4606        * jit/JITArithmetic.cpp:
4607        (JSC::JIT::emit_op_jless):
4608        (JSC::JIT::emitSlow_op_jless): ditto
4609        (JSC::JIT::emitBinaryDoubleOp): ditto
4610        * jit/JITOpcodes.cpp:
4611        (JSC::JIT::emitSlow_op_loop_if_less): ditto
4612        (JSC::JIT::emit_op_loop_if_false): ditto
4613        (JSC::JIT::emitSlow_op_loop_if_false): ditto
4614        * jit/JITStubs.cpp:
4615        * jit/JITStubs.h:
4616        (JSC::):
4617
46182009-12-04  Kent Hansen  <kent.hansen@nokia.com>
4619
4620        Reviewed by Darin Adler.
4621
4622        JavaScript delete operator should return false for string properties
4623        https://bugs.webkit.org/show_bug.cgi?id=32012
4624
4625        * runtime/StringObject.cpp:
4626        (JSC::StringObject::deleteProperty):
4627
46282009-12-03  Drew Wilson  <atwilson@chromium.org>
4629
4630        Rolled back r51633 because it causes a perf regression in Chromium.
4631
4632        * wtf/Platform.h:
4633
46342009-12-03  Gavin Barraclough  <barraclough@apple.com>
4635
4636        Try and fix the Windows build.
4637
4638        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
4639
46402009-12-03  Mark Rowe  <mrowe@apple.com>
4641
4642        Try and fix the Mac build.
4643
4644        * JavaScriptCore.exp:  Export a symbol that should be exported.
4645
46462009-12-03  Oliver Hunt  <oliver@apple.com>
4647
4648        Reviewed by Gavin Barraclough.
4649
4650        REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
4651        https://bugs.webkit.org/show_bug.cgi?id=32133
4652
4653        Work around odd GCC-ism and correct the scopechain for use by
4654        calls made while a cachedcall is active on the callstack.
4655
4656        * interpreter/CachedCall.h:
4657        (JSC::CachedCall::newCallFrame):
4658        * runtime/JSArray.cpp:
4659        (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
4660        * runtime/StringPrototype.cpp:
4661        (JSC::stringProtoFuncReplace):
4662
46632009-12-03  Gavin Barraclough  <barraclough@apple.com>
4664
4665        Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
4666
4667        https://bugs.webkit.org/show_bug.cgi?id=32136
4668        Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
4669        Instead, allow the result of a string concatenation to be represented in a tree form - with a
4670        variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
4671
4672        Strings must still currently be resolved down to a flat UString representation before being used,
4673        but by holding the string in a rope representation during construction we can avoid copying data
4674        until we know the final size of the string.
4675
4676        ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
4677
4678        * JavaScriptCore.exp:
4679
4680            - Update exports.
4681
4682        * interpreter/Interpreter.cpp:
4683        (JSC::Interpreter::privateExecute):
4684
4685            - Make use of new JSString::length() method to avoid prematurely resolving ropes.
4686
4687        * jit/JITOpcodes.cpp:
4688        (JSC::JIT::privateCompileCTIMachineTrampolines):
4689
4690            - Switch the string length trampoline to read the length directly from JSString::m_length,
4691              rather than from the JSString's UString::Rep's 'len' property.
4692
4693        * jit/JITStubs.cpp:
4694        (JSC::DEFINE_STUB_FUNCTION):
4695
4696            - Modify op_add such that addition of two strings, where either or both strings are already
4697              in rope representation, produces a rope as a result.
4698
4699        * runtime/JSString.cpp:
4700        (JSC::JSString::Rope::~Rope):
4701        (JSC::copyChars):
4702        (JSC::JSString::resolveRope):
4703        (JSC::JSString::getPrimitiveNumber):
4704        (JSC::JSString::toBoolean):
4705        (JSC::JSString::toNumber):
4706        (JSC::JSString::toString):
4707        (JSC::JSString::toThisString):
4708        (JSC::JSString::getStringPropertyDescriptor):
4709        * runtime/JSString.h:
4710        (JSC::JSString::Rope::Fiber::Fiber):
4711        (JSC::JSString::Rope::Fiber::destroy):
4712        (JSC::JSString::Rope::Fiber::isRope):
4713        (JSC::JSString::Rope::Fiber::rope):
4714        (JSC::JSString::Rope::Fiber::string):
4715        (JSC::JSString::Rope::create):
4716        (JSC::JSString::Rope::initializeFiber):
4717        (JSC::JSString::Rope::ropeLength):
4718        (JSC::JSString::Rope::stringLength):
4719        (JSC::JSString::Rope::fibers):
4720        (JSC::JSString::Rope::Rope):
4721        (JSC::JSString::Rope::operator new):
4722        (JSC::JSString::JSString):
4723        (JSC::JSString::value):
4724        (JSC::JSString::length):
4725        (JSC::JSString::isRope):
4726        (JSC::JSString::rope):
4727        (JSC::JSString::string):
4728        (JSC::JSString::canGetIndex):
4729        (JSC::jsSingleCharacterSubstring):
4730        (JSC::JSString::getIndex):
4731        (JSC::jsSubstring):
4732        (JSC::JSString::getStringPropertySlot):
4733
4734            - Add rope form.
4735
4736        * runtime/Operations.h:
4737        (JSC::jsAdd):
4738        (JSC::concatenateStrings):
4739
4740            - Update string concatenation, and addition of ropes, to produce ropes.
4741
4742        * runtime/StringObject.cpp:
4743        (JSC::StringObject::getOwnPropertyNames):
4744
4745            - Make use of new JSString::length() method to avoid prematurely resolving ropes.
4746
47472009-11-23  Jeremy Moskovich  <jeremy@chromium.org>
4748
4749        Reviewed by Eric Seidel.
4750
4751        Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
4752        https://bugs.webkit.org/show_bug.cgi?id=31802
4753
4754        No test since this is already covered by existing pixel tests.
4755
4756        * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
4757
47582009-12-02  Oliver Hunt  <oliver@apple.com>
4759
4760        Reviewed by Gavin Barraclough.
4761
4762        Add files missed in prior patch.
4763
4764        * runtime/JSZombie.cpp:
4765        (JSC::):
4766        (JSC::JSZombie::leakedZombieStructure):
4767        * runtime/JSZombie.h: Added.
4768        (JSC::JSZombie::JSZombie):
4769        (JSC::JSZombie::isZombie):
4770        (JSC::JSZombie::classInfo):
4771        (JSC::JSZombie::isGetterSetter):
4772        (JSC::JSZombie::isAPIValueWrapper):
4773        (JSC::JSZombie::isPropertyNameIterator):
4774        (JSC::JSZombie::getCallData):
4775        (JSC::JSZombie::getConstructData):
4776        (JSC::JSZombie::getUInt32):
4777        (JSC::JSZombie::toPrimitive):
4778        (JSC::JSZombie::getPrimitiveNumber):
4779        (JSC::JSZombie::toBoolean):
4780        (JSC::JSZombie::toNumber):
4781        (JSC::JSZombie::toString):
4782        (JSC::JSZombie::toObject):
4783        (JSC::JSZombie::markChildren):
4784        (JSC::JSZombie::put):
4785        (JSC::JSZombie::deleteProperty):
4786        (JSC::JSZombie::toThisObject):
4787        (JSC::JSZombie::toThisString):
4788        (JSC::JSZombie::toThisJSString):
4789        (JSC::JSZombie::getJSNumber):
4790        (JSC::JSZombie::getOwnPropertySlot):
4791
47922009-12-02  Oliver Hunt  <oliver@apple.com>
4793
4794        Reviewed by Gavin Barraclough.
4795
4796        Add zombies to JSC
4797        https://bugs.webkit.org/show_bug.cgi?id=32103
4798
4799        Add a compile time flag to make the JSC collector replace "unreachable"
4800        objects with zombie objects.  The zombie object is a JSCell subclass that
4801        ASSERTs on any attempt to use the JSCell methods.  In addition there are
4802        a number of additional assertions in bottleneck code to catch zombie usage
4803        as quickly as possible.
4804
4805        Grrr. Argh. Brains.
4806
4807        * JavaScriptCore.xcodeproj/project.pbxproj:
4808        * interpreter/Register.h:
4809        (JSC::Register::Register):
4810        * runtime/ArgList.h:
4811        (JSC::MarkedArgumentBuffer::append):
4812        (JSC::ArgList::ArgList):
4813        * runtime/Collector.cpp:
4814        (JSC::Heap::destroy):
4815        (JSC::Heap::sweep):
4816        * runtime/Collector.h:
4817        * runtime/JSCell.h:
4818        (JSC::JSCell::isZombie):
4819        (JSC::JSValue::isZombie):
4820        * runtime/JSValue.h:
4821        (JSC::JSValue::decode):
4822        (JSC::JSValue::JSValue):
4823        * wtf/Platform.h:
4824
48252009-12-01  Jens Alfke  <snej@chromium.org>
4826
4827        Reviewed by Darin Adler.
4828
4829        Added variants of find/contains/add that allow a foreign key type to be used.
4830        This will allow AtomicString-keyed maps to be queried by C string without
4831        having to create a temporary AtomicString (see HTTPHeaderMap.)
4832        The code for this is adapted from the equivalent in HashSet.h.
4833
4834        * wtf/HashMap.h:
4835        (WTF::HashMap::find):
4836        (WTF::HashMap::contains):
4837        (WTF::HashMap::add):
4838        * wtf/HashSet.h: Changed "method" to "function member" in a comment.
4839
48402009-12-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
4841
4842        Revert 51551 because it broke GTK+.
4843
4844        * wtf/Platform.h:
4845
48462009-11-30  Gavin Barraclough  <barraclough@apple.com>
4847
4848        Windows Build fix.  Reviewed by NOBODY.
4849
4850        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4851
48522009-11-24  Gavin Barraclough  <barraclough@apple.com>
4853
4854        Reviewed by Geoff Garen.
4855
4856        Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
4857
4858        WebCore presently has to explicitly specify the world before entering into JSC,
4859        which is a little fragile (particularly since property access via a
4860        getter/setter might invoke execution). Instead derive the current world from
4861        the lexical global object.
4862
4863        Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
4864
4865        * API/JSBase.cpp:
4866        (JSEvaluateScript):
4867        * API/JSObjectRef.cpp:
4868        (JSObjectCallAsFunction):
4869        * JavaScriptCore.exp:
4870        * runtime/JSGlobalData.cpp:
4871        * runtime/JSGlobalData.h:
4872
48732009-11-30  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
4874
4875        Reviewed by Kenneth Rohde Christiansen.
4876
4877        [Qt] Remove obsolete PLATFORM(KDE) code
4878        https://bugs.webkit.org/show_bug.cgi?id=31958
4879
4880        KDE is now using unpatched QtWebKit.
4881
4882        * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
4883        * wtf/Platform.h: Remove PLATFORM(KDE) definition and code
4884        section that is guarded with it.
4885
48862009-11-30  Jan-Arve Sæther  <jan-arve.saether@nokia.com>
4887
4888        Reviewed by Simon Hausmann.
4889
4890        [Qt] Fix compilation with win32-icc
4891
4892        The Intel compiler does not support the __has_trivial_constructor type
4893        trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
4894        reason for that is that the Intel Compiler depends on the Microsoft
4895        Platform SDK, and in order to try to be "fully" MS compatible it will
4896        "pretend" to be the same MS compiler as was shipped with the MS PSDK.
4897        (Thus, compiling with win32-icc with VC8 SDK will make the source code
4898        "think" the compiler at hand supports this type trait).
4899
4900        * wtf/TypeTraits.h:
4901
49022009-11-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
4903
4904        Reviewed by Eric Seidel.
4905
4906        [Qt] Mac build has JIT disabled
4907        https://bugs.webkit.org/show_bug.cgi?id=31828
4908
4909        * wtf/Platform.h: Enable JIT for Qt Mac builds
4910
49112009-11-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
4912
4913        Reviewed by Eric Seidel.
4914
4915        Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
4916        https://bugs.webkit.org/show_bug.cgi?id=31943
4917
4918        * runtime/MarkStack.h:
4919        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
4920
49212009-11-28  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
4922
4923        Reviewed by Gavin Barraclough.
4924
4925        https://bugs.webkit.org/show_bug.cgi?id=31930
4926
4927        Seems a typo. We don't need ~270k memory to determine the vptrs.
4928
4929        * runtime/JSGlobalData.cpp:
4930        (JSC::VPtrSet::VPtrSet):
4931
49322009-11-27  Shinichiro Hamaji  <hamaji@chromium.org>
4933
4934        Unreviewed.
4935
4936        Move GOwnPtr* from wtf to wtf/gtk
4937        https://bugs.webkit.org/show_bug.cgi?id=31793
4938
4939        Build fix for chromium after r51423.
4940        Exclude gtk directory from chromium build.
4941
4942        * JavaScriptCore.gyp/JavaScriptCore.gyp:
4943
49442009-11-25  Oliver Hunt  <oliver@apple.com>
4945
4946        Reviewed by Gavin Barraclough.
4947
4948        Incorrect behaviour of jneq_null in the interpreter
4949        https://bugs.webkit.org/show_bug.cgi?id=31901
4950
4951        Correct the logic of jneq_null.  This is already covered by existing tests.
4952
4953        * interpreter/Interpreter.cpp:
4954        (JSC::Interpreter::privateExecute):
4955
49562009-11-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
4957
4958        Reviewed by Oliver Hunt.
4959
4960        Move GOwnPtr* from wtf to wtf/gtk
4961        https://bugs.webkit.org/show_bug.cgi?id=31793
4962
4963        * GNUmakefile.am: Change the path for GOwnPtr.*.
4964        * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
4965          GOwnPtr.cpp from the exclude list.
4966        * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
4967        * wscript: Remove GOwnPtr.cpp from the exclude list.
4968        * wtf/GOwnPtr.cpp: Removed.
4969        * wtf/GOwnPtr.h: Removed.
4970        * wtf/Threading.h: Change the path for GOwnPtr.h.
4971        * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
4972        * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
4973        * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
4974
49752009-11-24  Dmitry Titov  <dimich@chromium.org>
4976
4977        Reviewed by Eric Seidel.
4978
4979        Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
4980        https://bugs.webkit.org/show_bug.cgi?id=31444
4981
4982        * Configurations/FeatureDefines.xcconfig:
4983        * wtf/Platform.h:
4984
49852009-11-24  Chris Marrin  <cmarrin@apple.com>
4986
4987        Reviewed by Simon Fraser.
4988
4989        Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
4990        https://bugs.webkit.org/show_bug.cgi?id=27314
4991
4992        * wtf/Platform.h:
4993
49942009-11-24  Jason Smith  <dark.panda@gmail.com>
4995
4996        Reviewed by Alexey Proskuryakov.
4997
4998        RegExp#exec's returned Array-like object behaves differently from
4999        regular Arrays
5000        https://bugs.webkit.org/show_bug.cgi?id=31689
5001
5002        * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
5003        values are added to the returned RegExpMatchesArray
5004
50052009-11-24  Oliver Hunt  <oliver@apple.com>
5006
5007        Reviewed by Alexey Proskuryakov.
5008
5009        JSON.stringify performance on undefined is very poor
5010        https://bugs.webkit.org/show_bug.cgi?id=31839
5011
5012        Switch from a UString to a Vector<UChar> when building
5013        the JSON string, allowing us to safely remove the substr-copy
5014        we otherwise did when unwinding an undefined property.
5015
5016        Also turns out to be a ~5% speedup on stringification.
5017
5018        * runtime/JSONObject.cpp:
5019        (JSC::Stringifier::StringBuilder::append):
5020        (JSC::Stringifier::stringify):
5021        (JSC::Stringifier::Holder::appendNextProperty):
5022
50232009-11-24  Mark Rowe  <mrowe@apple.com>
5024
5025        Fix production builds where the source tree may be read-only.
5026
5027        * JavaScriptCore.xcodeproj/project.pbxproj:
5028
50292009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5030
5031        Reviewed by Kenneth Rohde Christiansen.
5032
5033        Include "config.h" to meet Coding Style Guidelines
5034        https://bugs.webkit.org/show_bug.cgi?id=31792
5035
5036        * wtf/unicode/UTF8.cpp:
5037        * wtf/unicode/glib/UnicodeGLib.cpp:
5038        * wtf/unicode/wince/UnicodeWince.cpp:
5039
50402009-11-23  Geoffrey Garen  <ggaren@apple.com>
5041
5042        Reviewed by Oliver Hunt.
5043
5044        Streamlined some Math functions where we expect or know the result not
5045        to be representable as an int.
5046
5047        SunSpider says 0.6% faster.
5048
5049        * runtime/JSNumberCell.h:
5050        (JSC::JSValue::JSValue):
5051        * runtime/JSValue.h:
5052        (JSC::JSValue::):
5053        (JSC::jsDoubleNumber):
5054        (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
5055        and skipping the "can I encode this as an int?" check, avoiding the
5056        overhead of int <-> double roundtripping and double <-> double comparison
5057        and branching.
5058
5059        * runtime/MathObject.cpp:
5060        (JSC::mathProtoFuncACos):
5061        (JSC::mathProtoFuncASin):
5062        (JSC::mathProtoFuncATan):
5063        (JSC::mathProtoFuncATan2):
5064        (JSC::mathProtoFuncCos):
5065        (JSC::mathProtoFuncExp):
5066        (JSC::mathProtoFuncLog):
5067        (JSC::mathProtoFuncRandom):
5068        (JSC::mathProtoFuncSin):
5069        (JSC::mathProtoFuncSqrt):
5070        (JSC::mathProtoFuncTan): For these functions, which we expect or know
5071        to produce results not representable as ints, call jsDoubleNumber instead
5072        of jsNumber.
5073
50742009-11-23  Mark Rowe  <mrowe@apple.com>
5075
5076        Unreviewed. Unbreak the regression tests after r51329.
5077
5078        * API/JSBase.cpp:
5079        (JSEvaluateScript): Null-check clientData before dereferencing it.
5080        * API/JSObjectRef.cpp:
5081        (JSObjectCallAsFunction): Ditto.
5082
50832009-11-23  Gavin Barraclough  <barraclough@apple.com>
5084
5085        Reviewed by Geoff Garen.
5086
5087        Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
5088
5089        Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
5090        and for this to automagically cause execution to take place in the world associated with the
5091        global object associated with the ExecState (JSContextRef) passed.  However this is not how
5092        things work - the world must be explicitly set within WebCore.
5093
5094        Making this work just for API calls to evaluate & call will be a far from perfect solution,
5095        since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
5096        A better solution would be to make this all work automagically all throughout WebCore, but this
5097        will require more refactoring.
5098
5099        Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
5100        to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
5101        tape, and should be removed once the current world no longer needs to be explicitly tracked.
5102
5103        * API/JSBase.cpp:
5104        (JSEvaluateScript):
5105        * API/JSObjectRef.cpp:
5106        (JSObjectCallAsFunction):
5107        * JavaScriptCore.exp:
5108        * runtime/JSGlobalData.cpp:
5109        (JSC::JSGlobalData::ClientData::beginningExecution):
5110        (JSC::JSGlobalData::ClientData::completedExecution):
5111        * runtime/JSGlobalData.h:
5112
51132009-11-23  Steve Block  <steveblock@google.com>
5114
5115        Reviewed by Dmitry Titov.
5116
5117        Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
5118        https://bugs.webkit.org/show_bug.cgi?id=31807
5119
5120        * wtf/android: Added.
5121        * wtf/android/MainThreadAndroid.cpp: Added.
5122        (WTF::timeoutFired):
5123        (WTF::initializeMainThreadPlatform):
5124        (WTF::scheduleDispatchFunctionsOnMainThread):
5125
51262009-11-23  Alexey Proskuryakov  <ap@apple.com>
5127
5128        Reviewed by Brady Eidson.
5129
5130        https://bugs.webkit.org/show_bug.cgi?id=31748
5131        Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
5132
5133        * JavaScriptCore.exp: Export callOnMainThreadAndWait.
5134
51352009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5136
5137        Reviewed by Kenneth Rohde Christiansen.
5138
5139        [Symbian] Fix lastIndexOf() for Symbian
5140        https://bugs.webkit.org/show_bug.cgi?id=31773
5141
5142        Symbian soft floating point library has problems with operators
5143        comparing NaN to numbers. Without a workaround lastIndexOf()
5144        function does not work.
5145
5146        Patch developed by David Leong.
5147
5148        * runtime/StringPrototype.cpp:
5149        (JSC::stringProtoFuncLastIndexOf):Add an extra test
5150        to check for NaN for Symbian.
5151
51522009-11-23  Steve Block  <steveblock@google.com>
5153
5154        Reviewed by Eric Seidel.
5155
5156        Android port lacks implementation of atomicIncrement and atomicDecrement.
5157        https://bugs.webkit.org/show_bug.cgi?id=31715
5158
5159        * wtf/Threading.h: Modified.
5160        (WTF::atomicIncrement): Added Android implementation.
5161        (WTF::atomicDecrement): Added Android implementation.
5162
51632009-11-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5164
5165        Unreviewed.
5166
5167        [Qt] Sort source lists and remove obsolete comments
5168        from the build system.
5169
5170        * JavaScriptCore.pri:
5171
51722009-11-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5173
5174        Reviewed by Eric Seidel.
5175
5176        [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
5177        https://bugs.webkit.org/show_bug.cgi?id=31753
5178
5179        * wtf/Platform.h:
5180
51812009-11-19  Steve Block  <steveblock@google.com>
5182
5183        Android port lacks configuration in Platform.h and config.h.
5184        https://bugs.webkit.org/show_bug.cgi?id=31671
5185
5186        * wtf/Platform.h: Modified. Added Android-specific configuration.
5187
51882009-11-19  Alexey Proskuryakov  <ap@apple.com>
5189
5190        Reviewed by Darin Adler.
5191
5192        https://bugs.webkit.org/show_bug.cgi?id=31690
5193        Make SocketStreamHandleCFNet work on Windows
5194
5195        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5196        * wtf/MainThread.cpp:
5197        (WTF::FunctionWithContext::FunctionWithContext):
5198        (WTF::dispatchFunctionsFromMainThread):
5199        (WTF::callOnMainThreadAndWait):
5200        * wtf/MainThread.h:
5201        Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
5202
52032009-11-19  Dmitry Titov  <dimich@chromium.org>
5204
5205        Reviewed by David Levin.
5206
5207        isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
5208        https://bugs.webkit.org/show_bug.cgi?id=31693
5209
5210        * wtf/ThreadingPthreads.cpp:
5211        (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
5212        (WTF::isMainThread): Ditto.
5213
52142009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5215
5216        Reviewed by Darin Adler.
5217
5218        Remove HAVE(STRING_H) guard from JavaScriptCore
5219        https://bugs.webkit.org/show_bug.cgi?id=31668
5220
5221        * config.h:
5222        * runtime/UString.cpp:
5223
52242009-11-19  Dumitru Daniliuc  <dumi@chromium.org>
5225
5226        Reviewed by Dmitry Titov.
5227
5228        Fixing a bug in MessageQueue::removeIf() that leads to an
5229        assertion failure.
5230
5231        https://bugs.webkit.org/show_bug.cgi?id=31657
5232
5233        * wtf/MessageQueue.h:
5234        (WTF::MessageQueue::removeIf):
5235
52362009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5237
5238        Reviewed by Darin Adler.
5239
5240        Remove HAVE(FLOAT_H) guard
5241        https://bugs.webkit.org/show_bug.cgi?id=31661
5242
5243        JavaScriptCore has a dependency on float.h, there is
5244        no need to guard float.h.
5245
5246        * runtime/DatePrototype.cpp: Remove include directive
5247        for float.h as it is included in MathExtras.h already.
5248        * runtime/Operations.cpp: Ditto.
5249        * runtime/UString.cpp: Ditto.
5250        * wtf/dtoa.cpp: Ditto.
5251        * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
5252        * wtf/Platform.h: Ditto.
5253
52542009-11-19  Thiago Macieira <thiago.macieira@nokia.com>
5255
5256        Reviewed by Simon Hausmann.
5257
5258        Build fix for 32-bit Sparc machines: these machines are big-endian.
5259
5260        * wtf/Platform.h:
5261
52622009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5263
5264        Reviewed by Kenneth Rohde Christiansen.
5265
5266        [Qt] Remove support for Qt v4.3 or older versions
5267        https://bugs.webkit.org/show_bug.cgi?id=29469
5268
5269        * JavaScriptCore.pro:
5270        * jsc.pro:
5271        * wtf/unicode/qt4/UnicodeQt4.h:
5272
52732009-11-18  Kent Tamura  <tkent@chromium.org>
5274
5275        Reviewed by Darin Adler.
5276
5277        Move UString::from(double) implementation to new
5278        WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
5279        code will use it.
5280        https://bugs.webkit.org/show_bug.cgi?id=31330
5281
5282        - Introduce new function createRep(const char*, unsigned) and
5283          UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
5284        - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
5285          or Infinity.
5286
5287        No new tests because this doesn't change the behavior.
5288
5289        * JavaScriptCore.exp:
5290        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5291        * runtime/UString.cpp:
5292        (JSC::createRep):
5293        (JSC::UString::UString):
5294        (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
5295        * runtime/UString.h:
5296        * wtf/dtoa.cpp:
5297        (WTF::dtoa): Fix a bug about rve.
5298        (WTF::append): A helper for doubleToStringInJavaScriptFormat().
5299        (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
5300        * wtf/dtoa.h:
5301
53022009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5303
5304        Reviewed by Kenneth Rohde Christiansen.
5305
5306        [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
5307        https://bugs.webkit.org/show_bug.cgi?id=31643
5308
5309        * JavaScriptCore.pro:
5310
53112009-11-18  Nate Chapin  <japhet@chromium.org>
5312
5313        Reviewed by Darin Fisher.
5314
5315        Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
5316
5317        https://bugs.webkit.org/show_bug.cgi?id=31648
5318
5319        * JavaScriptCore.gyp/JavaScriptCore.gyp:
5320
53212009-11-18  Thiago Macieira <thiago.macieira@nokia.com>
5322
5323        Reviewed by Gavin Barraclough.
5324
5325        [Qt] Implement symbol hiding for JSC's JIT functions.
5326
5327        These functions are implemented directly in assembly, so they need the
5328        proper directives to enable/disable visibility. On ELF systems, it's
5329        .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
5330        Windows, it's not necessary since you have to explicitly export. I
5331        also implemented the AIX idiom, though it's unlikely anyone will
5332        implement AIX/POWER JIT.
5333        https://bugs.webkit.org/show_bug.cgi?id=30864
5334
5335        * jit/JITStubs.cpp:
5336
53372009-11-18  Oliver Hunt  <oliver@apple.com>
5338
5339        Reviewed by Alexey Proskuryakov.
5340
5341        Interpreter may do an out of range access when throwing an exception in the profiler.
5342        https://bugs.webkit.org/show_bug.cgi?id=31635
5343
5344        Add bounds check.
5345
5346        * interpreter/Interpreter.cpp:
5347        (JSC::Interpreter::throwException):
5348
53492009-11-18  Gabor Loki  <loki@inf.u-szeged.hu>
5350
5351        Reviewed by Darin Adler.
5352
5353        Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
5354        https://bugs.webkit.org/show_bug.cgi?id=31631
5355
5356        * jit/ExecutableAllocator.h:
5357        (JSC::ExecutableAllocator::cacheFlush):
5358
53592009-11-18  Harald Fernengel  <harald.fernengel@nokia.com>
5360
5361        Reviewed by Simon Hausmann.
5362
5363        [Qt] Fix detection of linux-g++
5364
5365        Never use "linux-g++*" to check for linux-g++, since this will break embedded
5366        builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
5367        g++ on linux mkspec.
5368
5369        * JavaScriptCore.pri:
5370
53712009-11-17  Jon Honeycutt  <jhoneycutt@apple.com>
5372
5373        Add JSContextRefPrivate.h to list of copied files.
5374
5375        Reviewed by Mark Rowe.
5376
5377        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
5378
53792009-11-17  Martin Robinson  <martin.james.robinson@gmail.com>
5380
5381        Reviewed by Adam Barth.
5382
5383        [GTK] Style cleanup for GOwnPtr
5384        https://bugs.webkit.org/show_bug.cgi?id=31506
5385
5386        Remove forward declaration in GOwnPtr and do some style cleanup.
5387
5388        * wtf/GOwnPtr.cpp:
5389        * wtf/GOwnPtr.h:
5390        (WTF::GOwnPtr::GOwnPtr):
5391        (WTF::GOwnPtr::~GOwnPtr):
5392        (WTF::GOwnPtr::get):
5393        (WTF::GOwnPtr::release):
5394        (WTF::GOwnPtr::outPtr):
5395        (WTF::GOwnPtr::set):
5396        (WTF::GOwnPtr::clear):
5397        (WTF::GOwnPtr::operator*):
5398        (WTF::GOwnPtr::operator->):
5399        (WTF::GOwnPtr::operator!):
5400        (WTF::GOwnPtr::operator UnspecifiedBoolType):
5401        (WTF::GOwnPtr::swap):
5402        (WTF::swap):
5403        (WTF::operator==):
5404        (WTF::operator!=):
5405        (WTF::getPtr):
5406        (WTF::freeOwnedGPtr):
5407
54082009-11-17  Oliver Hunt  <oliver@apple.com>
5409
5410        Reviewed by Maciej Stachowiak.
5411
5412        Incorrect use of JavaScriptCore API in DumpRenderTree
5413        https://bugs.webkit.org/show_bug.cgi?id=31577
5414
5415        Add assertions to the 'toJS' functions to catch mistakes like
5416        this early.  Restructure existing code which blindly passed potentially
5417        null values to toJS when forwarding exceptions so that a null check is
5418        performed first.
5419
5420        * API/APICast.h:
5421        (toJS):
5422        (toJSForGC):
5423        * API/JSCallbackObjectFunctions.h:
5424        (JSC::::getOwnPropertySlot):
5425        (JSC::::put):
5426        (JSC::::deleteProperty):
5427        (JSC::::construct):
5428        (JSC::::hasInstance):
5429        (JSC::::call):
5430        (JSC::::toNumber):
5431        (JSC::::toString):
5432        (JSC::::staticValueGetter):
5433        (JSC::::callbackGetter):
5434        * API/tests/testapi.c: Fix errors in the API tester.
5435        (MyObject_getProperty):
5436        (MyObject_convertToType):
5437        (EvilExceptionObject_convertToType):
5438
54392009-11-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
5440
5441        Reviewed by Gavin Barraclough.
5442
5443        https://bugs.webkit.org/show_bug.cgi?id=31050
5444
5445        Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
5446        failed on a CortexA8 CPU, but not on a simulator; and
5447        JITCall.cpp modifications was somehow not committed to mainline.
5448
5449        * assembler/ARMAssembler.h:
5450        (JSC::ARMAssembler::fmrs_r):
5451        * assembler/MacroAssemblerARM.h:
5452        (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
5453        * jit/JITCall.cpp:
5454        (JSC::JIT::compileOpCall):
5455
54562009-11-16  Joerg Bornemann  <joerg.bornemann@trolltech.com>
5457
5458        Reviewed by Simon Hausmann.
5459
5460        Fix Qt build on Windows CE 6.
5461
5462        * JavaScriptCore.pri: Add missing include path.
5463        * wtf/Platform.h: Include ce_time.h for Windows CE 6.
5464
54652009-11-13  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
5466
5467        Reviewed by Gavin Barraclough.
5468
5469        https://bugs.webkit.org/show_bug.cgi?id=31050
5470
5471        Adding optimization support for mode JSVALUE32_64
5472        on ARM systems.
5473
5474        * jit/JIT.h:
5475        * jit/JITCall.cpp:
5476        (JSC::JIT::compileOpCall):
5477        * jit/JITPropertyAccess.cpp:
5478        (JSC::JIT::emit_op_method_check):
5479        (JSC::JIT::compileGetByIdHotPath):
5480        (JSC::JIT::compileGetByIdSlowCase):
5481        (JSC::JIT::emit_op_put_by_id):
5482
54832009-11-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
5484
5485        Reviewed by Gavin Barraclough.
5486
5487        https://bugs.webkit.org/show_bug.cgi?id=31050
5488
5489        Adding JSVALUE32_64 support for ARM (but not turning it
5490        on by default). All optimizations must be disabled, since
5491        this patch is only the first of a series of patches.
5492
5493        During the work, a lot of x86 specific code revealed and
5494        made platform independent.
5495        See revisions: 50531 50541 50593 50594 50595
5496
5497        * assembler/ARMAssembler.h:
5498        (JSC::ARMAssembler::):
5499        (JSC::ARMAssembler::fdivd_r):
5500        * assembler/MacroAssemblerARM.h:
5501        (JSC::MacroAssemblerARM::lshift32):
5502        (JSC::MacroAssemblerARM::neg32):
5503        (JSC::MacroAssemblerARM::rshift32):
5504        (JSC::MacroAssemblerARM::branchOr32):
5505        (JSC::MacroAssemblerARM::set8):
5506        (JSC::MacroAssemblerARM::setTest8):
5507        (JSC::MacroAssemblerARM::loadDouble):
5508        (JSC::MacroAssemblerARM::divDouble):
5509        (JSC::MacroAssemblerARM::convertInt32ToDouble):
5510        (JSC::MacroAssemblerARM::zeroDouble):
5511        * jit/JIT.cpp:
5512        * jit/JIT.h:
5513        * jit/JITOpcodes.cpp:
5514        (JSC::JIT::privateCompileCTIMachineTrampolines):
5515        * jit/JITStubs.cpp:
5516        * wtf/StdLibExtras.h:
5517
55182009-11-13  Dominik Röttsches  <dominik.roettsches@access-company.com>
5519
5520        Reviewed by Eric Seidel.
5521
5522        Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
5523        https://bugs.webkit.org/show_bug.cgi?id=31468
5524
5525        Adding isAlphanumeric abstraction, required
5526        by TextBoundaries.cpp.
5527
5528        * wtf/unicode/glib/UnicodeGLib.h:
5529        (WTF::Unicode::isAlphanumeric):
5530        * wtf/unicode/icu/UnicodeIcu.h:
5531        (WTF::Unicode::isAlphanumeric):
5532
55332009-11-13  Norbert Leser  <norbert.leser&nokia.com>
5534
5535        Reviewed by Eric Seidel.
5536
5537        Added macros for USERINCLUDE paths within symbian blocks
5538        to guarantee inclusion of respective header files from local path
5539        first (to avoid clashes with same names of header files in system include path).
5540
5541        * JavaScriptCore.pri:
5542
55432009-11-13  Oliver Hunt  <oliver@apple.com>
5544
5545        Reviewed by Geoff Garen.
5546
5547        JSValueProtect and JSValueUnprotect don't protect API wrapper values
5548        https://bugs.webkit.org/show_bug.cgi?id=31485
5549
5550        Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
5551        does not attempt to to strip out API wrapper objects.
5552
5553        * API/APICast.h:
5554        (toJSForGC):
5555        * API/JSValueRef.cpp:
5556        (JSValueProtect):
5557        (JSValueUnprotect):
5558        * API/tests/testapi.c:
5559        (makeGlobalNumberValue):
5560        (main):
5561
55622009-11-13  İsmail Dönmez  <ismail@namtrac.org>
5563
5564        Reviewed by Antti Koivisto.
5565
5566        Fix typo, ce_time.cpp should be ce_time.c
5567
5568        * JavaScriptCore.pri:
5569
55702009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
5571
5572        Reviewed by Adam Barth.
5573
5574        Calculate the time offset only if we were able to parse
5575        the date string. This saves an IPC in Chromium for
5576        invalid date strings.
5577        https://bugs.webkit.org/show_bug.cgi?id=31416
5578
5579        * wtf/DateMath.cpp:
5580        (WTF::parseDateFromNullTerminatedCharacters):
5581        (JSC::parseDateFromNullTerminatedCharacters):
5582
55832009-11-12  Oliver Hunt  <oliver@apple.com>
5584
5585        Rollout r50896 until i can work out why it causes failures.
5586
5587        * bytecompiler/BytecodeGenerator.cpp:
5588        (JSC::BytecodeGenerator::emitReturn):
5589        * interpreter/Interpreter.cpp:
5590        (JSC::Interpreter::execute):
5591        * parser/Nodes.cpp:
5592        (JSC::EvalNode::emitBytecode):
5593
55942009-11-12  Steve Falkenburg  <sfalken@apple.com>
5595
5596        Reviewed by Stephanie Lewis.
5597
5598        Remove LIBRARY directive from def file to fix Debug_All target.
5599
5600        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5601
56022009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
5603
5604        Rubber-stamped by Holger Freyther.
5605
5606        Revert r50204, since it makes DRT crash on 32 bits release builds
5607        for GTK+.
5608
5609        * wtf/FastMalloc.h:
5610
56112009-11-12  Oliver Hunt  <oliver@apple.com>
5612
5613        Reviewed by Gavin Barraclough.
5614
5615        Start unifying entry logic for function and eval code.
5616
5617        Eval now uses a ret instruction to end execution, and sets up
5618        a callframe more in line with what we do for function entry.
5619
5620        * bytecompiler/BytecodeGenerator.cpp:
5621        (JSC::BytecodeGenerator::emitReturn):
5622        * interpreter/Interpreter.cpp:
5623        (JSC::Interpreter::execute):
5624        * parser/Nodes.cpp:
5625        (JSC::EvalNode::emitBytecode):
5626
56272009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
5628
5629        Reviewed by Kenneth Rohde Christiansen.
5630
5631        [Qt] Disable pthread_setname_np.
5632
5633        This allows Qt builds on Mac from 10.6 to run on earlier version
5634        where this symbol is not present.
5635        https://bugs.webkit.org/show_bug.cgi?id=31403
5636
5637        * wtf/Platform.h:
5638
56392009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
5640
5641        Reviewed by Kenneth Rohde Christiansen.
5642
5643        [Qt] Fix linking on Linux 32-bit.
5644
5645        It was missing the ".text" directive at the top of the file,
5646        indicating that code would follow. Without it, the assembler created
5647        "NOTYPE" symbols, which would result in linker errors.
5648        https://bugs.webkit.org/show_bug.cgi?id=30863
5649
5650        * jit/JITStubs.cpp:
5651
56522009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5653
5654        Reviewed by Alexey Proskuryakov.
5655
5656        Refactor multiple JavaScriptCore threads
5657        https://bugs.webkit.org/show_bug.cgi?id=31328
5658
5659        Remove the id field from the PlatformThread structure
5660        as it is not used.
5661
5662        * runtime/Collector.cpp:
5663        (JSC::getCurrentPlatformThread):
5664        (JSC::suspendThread):
5665        (JSC::resumeThread):
5666        (JSC::getPlatformThreadRegisters):
5667
56682009-11-10  Geoffrey Garen  <ggaren@apple.com>
5669
5670        Linux build fix: Added an #include for UINT_MAX.
5671
5672        * runtime/WeakRandom.h:
5673
56742009-11-10  Geoffrey Garen  <ggaren@apple.com>
5675
5676        JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
5677
5678        * JavaScriptCore.xcodeproj/project.pbxproj:
5679
56802009-11-10  Geoffrey Garen  <ggaren@apple.com>
5681
5682        Reviewed by Gavin "avGni arBalroguch" Barraclough.
5683
5684        Faster Math.random, based on GameRand.
5685
5686        SunSpider says 1.4% faster.
5687
5688        * GNUmakefile.am:
5689        * JavaScriptCore.gypi:
5690        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5691        * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
5692
5693        * runtime/JSGlobalData.cpp:
5694        (JSC::JSGlobalData::JSGlobalData):
5695        * runtime/JSGlobalData.h: Use an object to track random number generation
5696        state, initialized to the current time.
5697
5698        * runtime/MathObject.cpp:
5699        (JSC::MathObject::MathObject):
5700        (JSC::mathProtoFuncRandom): Use the new hotness.
5701
5702        * runtime/WeakRandom.h: Added.
5703        (JSC::WeakRandom::WeakRandom):
5704        (JSC::WeakRandom::get):
5705        (JSC::WeakRandom::advance): The new hotness.
5706
57072009-11-09  Geoffrey Garen  <ggaren@apple.com>
5708
5709        Reviewed by Oliver Hunt.
5710
5711        Imported the v8 DST cache.
5712
5713        SunSpider says 1.5% faster.
5714
5715        * runtime/JSGlobalData.cpp:
5716        (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
5717        other date data.
5718
5719        * runtime/JSGlobalData.h:
5720        (JSC::DSTOffsetCache::DSTOffsetCache):
5721        (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
5722
5723        * wtf/DateMath.cpp:
5724        (WTF::calculateDSTOffsetSimple):
5725        (WTF::calculateDSTOffset):
5726        (WTF::parseDateFromNullTerminatedCharacters):
5727        (JSC::getDSTOffset):
5728        (JSC::gregorianDateTimeToMS):
5729        (JSC::msToGregorianDateTime):
5730        (JSC::parseDateFromNullTerminatedCharacters):
5731        * wtf/DateMath.h: The imported code for probing and updating the cache.
5732
57332009-11-09  Geoffrey Garen  <ggaren@apple.com>
5734
5735        Reviewed by Oliver Hunt.
5736
5737        Fixed an edge case that could cause the engine not to notice a timezone
5738        change.
5739
5740        No test because this case would require manual intervention to change
5741        the timezone during the test.
5742
5743        SunSpider reports no change.
5744
5745        * runtime/DateInstanceCache.h:
5746        (JSC::DateInstanceCache::DateInstanceCache):
5747        (JSC::DateInstanceCache::reset): Added a helper function for resetting
5748        this cache. Also, shrank the cache, since we'll be resetting it often.
5749
5750        * runtime/JSGlobalData.cpp:
5751        (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
5752        in resetting Date data. (Otherwise, a cache hit could bypass a necessary
5753        timezone update check.)
5754
57552009-11-09  Geoffrey Garen  <ggaren@apple.com>
5756
5757        Reviewed by Sam Weinig.
5758
5759        Some manual inlining and constant propogation in Date code.
5760
5761        SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
5762        says some previously evident stalls are now gone.
5763
5764        * runtime/DateConstructor.cpp:
5765        (JSC::callDate):
5766        * runtime/DateConversion.cpp:
5767        (JSC::formatTime):
5768        (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
5769
5770        * runtime/DateConversion.h:
5771        * runtime/DateInstance.cpp:
5772        (JSC::DateInstance::calculateGregorianDateTime):
5773        (JSC::DateInstance::calculateGregorianDateTimeUTC):
5774        * runtime/DateInstance.h:
5775        (JSC::DateInstance::gregorianDateTime):
5776        (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
5777        a UTC and non-UTC variant, and split each variant into a fast inline
5778        case and a slow out-of-line case.
5779
5780        * runtime/DatePrototype.cpp:
5781        (JSC::formatLocaleDate):
5782        (JSC::dateProtoFuncToString):
5783        (JSC::dateProtoFuncToUTCString):
5784        (JSC::dateProtoFuncToISOString):
5785        (JSC::dateProtoFuncToDateString):
5786        (JSC::dateProtoFuncToTimeString):
5787        (JSC::dateProtoFuncGetFullYear):
5788        (JSC::dateProtoFuncGetUTCFullYear):
5789        (JSC::dateProtoFuncToGMTString):
5790        (JSC::dateProtoFuncGetMonth):
5791        (JSC::dateProtoFuncGetUTCMonth):
5792        (JSC::dateProtoFuncGetDate):
5793        (JSC::dateProtoFuncGetUTCDate):
5794        (JSC::dateProtoFuncGetDay):
5795        (JSC::dateProtoFuncGetUTCDay):
5796        (JSC::dateProtoFuncGetHours):
5797        (JSC::dateProtoFuncGetUTCHours):
5798        (JSC::dateProtoFuncGetMinutes):
5799        (JSC::dateProtoFuncGetUTCMinutes):
5800        (JSC::dateProtoFuncGetSeconds):
5801        (JSC::dateProtoFuncGetUTCSeconds):
5802        (JSC::dateProtoFuncGetTimezoneOffset):
5803        (JSC::setNewValueFromTimeArgs):
5804        (JSC::setNewValueFromDateArgs):
5805        (JSC::dateProtoFuncSetYear):
5806        (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
5807
58082009-11-09  Geoffrey Garen  <ggaren@apple.com>
5809
5810        Build fix: export a new symbol.
5811
5812        * JavaScriptCore.exp:
5813        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5814
58152009-11-09  Geoffrey Garen  <ggaren@apple.com>
5816
5817        Reviewed by Sam "Home Wrecker" Weinig.
5818
5819        Added a tiny cache for Date parsing.
5820
5821        SunSpider says 1.2% faster.
5822
5823        * runtime/DateConversion.cpp:
5824        (JSC::parseDate): Try to reuse the last parsed Date, if present.
5825
5826        * runtime/JSGlobalData.cpp:
5827        (JSC::JSGlobalData::resetDateCache):
5828        * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
5829        this code to make resetting the date cache easier.
5830
5831        * runtime/JSGlobalObject.h:
5832        (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
5833        refactoring.
5834
5835        * wtf/DateMath.cpp:
5836        (JSC::parseDateFromNullTerminatedCharacters):
5837        * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
5838
58392009-11-09  Oliver Hunt  <oliver@apple.com>
5840
5841        Reviewed by Gavin Barraclough.
5842
5843        Can cache prototype lookups on uncacheable dictionaries.
5844        https://bugs.webkit.org/show_bug.cgi?id=31198
5845
5846        Replace fromDictionaryTransition with flattenDictionaryObject and
5847        flattenDictionaryStructure.  This change is necessary as we need to
5848        guarantee that our attempt to convert away from a dictionary structure
5849        will definitely succeed, and in some cases this requires mutating the
5850        object storage itself.
5851
5852        * interpreter/Interpreter.cpp:
5853        (JSC::Interpreter::tryCacheGetByID):
5854        * jit/JITStubs.cpp:
5855        (JSC::JITThunks::tryCacheGetByID):
5856        (JSC::DEFINE_STUB_FUNCTION):
5857        * runtime/BatchedTransitionOptimizer.h:
5858        (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
5859        * runtime/JSObject.h:
5860        (JSC::JSObject::flattenDictionaryObject):
5861        * runtime/Operations.h:
5862        (JSC::normalizePrototypeChain):
5863        * runtime/Structure.cpp:
5864        (JSC::Structure::flattenDictionaryStructure):
5865        (JSC::comparePropertyMapEntryIndices):
5866        * runtime/Structure.h:
5867
58682009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5869
5870        Not reviewed, build fix.
5871
5872        Remove extra character from r50701.
5873
5874        * JavaScriptCore.pri:
5875
58762009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5877
5878        Not reviewed, build fix.
5879
5880        Revert r50695 because it broke QtWebKit (clean builds).
5881
5882        * JavaScriptCore.pri:
5883
58842009-11-09  Norbert Leser  <norbert.leser@nokia.com>
5885
5886        Reviewed by Kenneth Rohde Christiansen.
5887
5888        Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
5889        Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
5890        and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
5891
5892        * JavaScriptCore.pri:
5893
58942009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5895
5896        Reviewed by Kenneth Rohde Christiansen.
5897
5898        Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
5899        https://bugs.webkit.org/show_bug.cgi?id=31040
5900
5901        * interpreter/Interpreter.cpp:
5902        (JSC::Interpreter::privateExecute):
5903
59042009-11-08  David Levin  <levin@chromium.org>
5905
5906        Reviewed by NOBODY (speculative snow leopard and windows build fixes).
5907
5908        * wtf/DateMath.cpp:
5909        (WTF::parseDateFromNullTerminatedCharacters):
5910        (JSC::gregorianDateTimeToMS):
5911        (JSC::msToGregorianDateTime):
5912        (JSC::parseDateFromNullTerminatedCharacters):
5913        * wtf/DateMath.h:
5914        (JSC::GregorianDateTime::GregorianDateTime):
5915
59162009-11-08  David Levin  <levin@chromium.org>
5917
5918        Reviewed by NOBODY (chromium build fix).
5919
5920        Hopefully, the last build fix.
5921
5922        Create better separation in DateMath about the JSC
5923        and non-JSC portions. Also, only expose the non-JSC
5924        version in the exports.
5925
5926        * JavaScriptCore.exp:
5927        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5928        * wtf/DateMath.cpp:
5929        (WTF::parseDateFromNullTerminatedCharacters):
5930        (JSC::getUTCOffset):
5931        (JSC::gregorianDateTimeToMS):
5932        (JSC::msToGregorianDateTime):
5933        (JSC::parseDateFromNullTerminatedCharacters):
5934        * wtf/DateMath.h:
5935        (JSC::gmtoffset):
5936
59372009-11-08  David Levin  <levin@chromium.org>
5938
5939        Reviewed by NOBODY (chromium build fix).
5940
5941        For the change in DateMath.
5942
5943        * config.h:
5944        * wtf/DateMath.cpp:
5945
59462009-11-06  Geoffrey Garen  <ggaren@apple.com>
5947
5948        Windows build fix: export some symbols.
5949
5950        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5951
59522009-11-06  Geoffrey Garen  <ggaren@apple.com>
5953
5954        Build fix: updated export file.
5955
5956        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
5957
59582009-11-06  Geoffrey Garen  <ggaren@apple.com>
5959
5960        Build fix: added some #includes.
5961
5962        * wtf/CurrentTime.h:
5963        * wtf/DateMath.h:
5964
59652009-11-06  Geoffrey Garen  <ggaren@apple.com>
5966
5967        Reviewed by Oliver Hunt.
5968
5969        https://bugs.webkit.org/show_bug.cgi?id=31197
5970        Implemented a timezone cache not based on Mac OS X's notify_check API.
5971
5972        If the VM calculates the local timezone offset from UTC, it caches the
5973        result until the end of the current VM invocation. (We don't want to cache
5974        forever, because the user's timezone may change over time.)
5975
5976        This removes notify_* overhead on Mac, and, more significantly, removes
5977        OS time and date call overhead on non-Mac platforms.
5978
5979        ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
5980        speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
5981
5982        * JavaScriptCore.exp:
5983
5984        * interpreter/CachedCall.h:
5985        (JSC::CachedCall::CachedCall):
5986        * interpreter/Interpreter.cpp:
5987        (JSC::Interpreter::execute):
5988        * runtime/JSGlobalObject.h:
5989        (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the
5990        DynamicGlobalObjectScope constructor responsible for checking whether a
5991        dynamicGlobalObject has already been set. This eliminated some duplicate
5992        client code, and allowed me to avoid adding even more duplicate client
5993        code. Made DynamicGlobalObjectScope responsible for resetting the
5994        local timezone cache upon first entry to the VM.
5995
5996        * runtime/DateConstructor.cpp:
5997        (JSC::constructDate):
5998        (JSC::callDate):
5999        (JSC::dateParse):
6000        (JSC::dateUTC):
6001        * runtime/DateConversion.cpp:
6002        (JSC::parseDate):
6003        * runtime/DateConversion.h:
6004        * runtime/DateInstance.cpp:
6005        (JSC::DateInstance::gregorianDateTime):
6006        * runtime/DateInstance.h:
6007        * runtime/DateInstanceCache.h:
6008        * runtime/DatePrototype.cpp:
6009        (JSC::setNewValueFromTimeArgs):
6010        (JSC::setNewValueFromDateArgs):
6011        (JSC::dateProtoFuncSetYear):
6012        * runtime/InitializeThreading.cpp:
6013        (JSC::initializeThreadingOnce):
6014        * runtime/JSGlobalData.cpp:
6015        (JSC::JSGlobalData::JSGlobalData):
6016        * runtime/JSGlobalData.h:
6017        * wtf/DateMath.cpp:
6018        (WTF::getCurrentUTCTime):
6019        (WTF::getCurrentUTCTimeWithMicroseconds):
6020        (WTF::getLocalTime):
6021        (JSC::getUTCOffset): Use the new cache. Also, see below.
6022        (JSC::gregorianDateTimeToMS):
6023        (JSC::msToGregorianDateTime):
6024        (JSC::initializeDates):
6025        (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
6026        accounts for the local timezone offset, to accomodate our new caching API,
6027        and a (possibly misguided) caller in WebCore. Also, see below.
6028        * wtf/DateMath.h:
6029        (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
6030        DateMath.* into the JSC namespace. The code needed to move so it could
6031        naturally interact with ExecState and JSGlobalData to support caching.
6032        Logically, it seemed right to move it, too, since this code is not really
6033        as low-level as the WTF namespace might imply -- it implements a set of
6034        date parsing and conversion quirks that are finely tuned to the JavaScript
6035        language. Also removed the Mac OS X notify_* infrastructure.
6036
6037        * wtf/CurrentTime.h:
6038        (WTF::currentTimeMS):
6039        (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
6040        it to make it consistent with WTF's currentTime function.
6041
60422009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
6043
6044        Unreviewed trivial buildfix after r50595.
6045
6046        Rename the remaining rshiftPtr calls to rshift32
6047
6048        * jit/JITArithmetic.cpp:
6049        (JSC::JIT::emit_op_rshift):
6050        * jit/JITInlineMethods.h:
6051        (JSC::JIT::emitFastArithImmToInt):
6052
60532009-11-06  Gavin Barraclough  <barraclough@apple.com>
6054
6055        Reviewed by Oliver Hunt.
6056
6057        Tidy up the shift methods on the macro-assembler interface.
6058
6059        Currently behaviour of shifts of a magnitude > 0x1f is undefined.
6060        Instead defined that all shifts are masked to this range.  This makes a lot of
6061        practical sense, both since having undefined behaviour is not particularly
6062        desirable, and because this behaviour is commonly required (particularly since
6063        it is required bt ECMA-262 for shifts).
6064
6065        Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
6066        masks from JITArithmetic, and remove rshiftPtr (this was used in case that
6067        could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
6068        on x86-64, which uses JSVALUE64!)
6069
6070        * assembler/MacroAssembler.h:
6071        * assembler/MacroAssemblerARM.h:
6072        (JSC::MacroAssemblerARM::lshift32):
6073        (JSC::MacroAssemblerARM::rshift32):
6074        * assembler/MacroAssemblerARMv7.h:
6075        (JSC::MacroAssemblerARMv7::lshift32):
6076        (JSC::MacroAssemblerARMv7::rshift32):
6077        * assembler/MacroAssemblerX86_64.h:
6078        * jit/JITArithmetic.cpp:
6079        (JSC::JIT::emit_op_lshift):
6080        (JSC::JIT::emit_op_rshift):
6081
60822009-11-05  Gavin Barraclough  <barraclough@apple.com>
6083
6084        Rubber Stamped by Oliver Hunt.
6085
6086        Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
6087
6088        * jit/JITInlineMethods.h:
6089        (JSC::JIT::emitPutJITStubArg):
6090        (JSC::JIT::emitPutJITStubArgConstant):
6091        (JSC::JIT::emitGetJITStubArg):
6092        (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
6093        * jit/JITStubCall.h:
6094        (JSC::JITStubCall::JITStubCall):
6095        (JSC::JITStubCall::getArgument):
6096        * jit/JITStubs.h:
6097
60982009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
6099
6100        Reviewed by Gavin Barraclough.
6101
6102        https://bugs.webkit.org/show_bug.cgi?id=31159
6103        Fix branchDouble behaviour on ARM THUMB2 JIT.
6104
6105        The x86 branchDouble behaviour is reworked, and all JIT
6106        ports should follow the x86 port. See bug 31104 and 31151
6107
6108        This patch contains a fix for the traditional ARM port
6109
6110        * assembler/ARMAssembler.h:
6111        (JSC::ARMAssembler::):
6112        (JSC::ARMAssembler::fmrs_r):
6113        (JSC::ARMAssembler::ftosid_r):
6114        * assembler/MacroAssemblerARM.h:
6115        (JSC::MacroAssemblerARM::):
6116        (JSC::MacroAssemblerARM::branchDouble):
6117        (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
6118
61192009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
6120
6121        Reviewed by Eric Seidel.
6122
6123        Removed the "this is part of the KDE project" comments from
6124        all *.h, *.cpp, *.idl, and *.pm files.
6125
6126        https://bugs.webkit.org/show_bug.cgi?id=31167
6127
6128        The maintenance and architecture page in the project wiki lists
6129        this as a task.
6130
6131        This change includes no changes or additions to test cases
6132        since the change affects only comments.
6133
6134        * wtf/wince/FastMallocWince.h:
6135
61362009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
6137
6138        Reviewed by Gavin Barraclough.
6139
6140        Use ARMv7 specific encoding for immediate constants on ARMv7 target
6141        https://bugs.webkit.org/show_bug.cgi?id=31060
6142
6143        * assembler/ARMAssembler.cpp:
6144        (JSC::ARMAssembler::getOp2): Use INVALID_IMM
6145        (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
6146        (JSC::ARMAssembler::moveImm): Ditto.
6147        (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
6148        instructions or a PC relative load.
6149        * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
6150        encoded as an immediate constant.
6151        (JSC::ARMAssembler::):
6152        (JSC::ARMAssembler::movw_r): 16-bit immediate load
6153        (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
6154        (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
6155        movw_r and mowt_r
6156
61572009-11-04  Mark Mentovai  <mark@chromium.org>
6158
6159        Reviewed by Mark Rowe.
6160
6161        Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
6162        BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
6163        consider the deployment target; the BUILDING_ON_ macros consider the
6164        headers being built against.
6165
6166        * wtf/Platform.h:
6167
61682009-11-04  Gavin Barraclough  <barraclough@apple.com>
6169
6170        Reviewed by Oliver Hunt.
6171
6172        https://bugs.webkit.org/show_bug.cgi?id=31151
6173        Fix branchDouble behaviour on ARM THUMB2 JIT.
6174
6175        The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
6176        for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
6177        branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
6178        DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
6179        ARMv7Assembler::ConditionLS, whereas they should be using
6180        ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
6181
6182        Fix these, and fill out the missing DoubleConditions.
6183
6184        * assembler/MacroAssemblerARMv7.h:
6185        (JSC::MacroAssemblerARMv7::):
6186        (JSC::MacroAssemblerARMv7::branchDouble):
6187
61882009-11-04  Gavin Barraclough  <barraclough@apple.com>
6189
6190        Rubber Stamped by Oliver Hunt.
6191
6192        Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
6193        implementation was generic, worked perfectly, just needed turning on).
6194
6195        * jit/JITOpcodes.cpp:
6196        * wtf/Platform.h:
6197
61982009-11-04  Gavin Barraclough  <barraclough@apple.com>
6199
6200        Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
6201
6202        Add a missing assert to the ARMv7 JIT.
6203
6204        * assembler/ARMv7Assembler.h:
6205        (JSC::ARMThumbImmediate::ARMThumbImmediate):
6206
62072009-11-04  Mark Rowe  <mrowe@apple.com>
6208
6209        Rubber-stamped by Oliver Hunt.
6210
6211        Remove bogus op_ prefix on dumped version of three opcodes.
6212
6213        * bytecode/CodeBlock.cpp:
6214        (JSC::CodeBlock::dump):
6215
62162009-11-04  Mark Rowe  <mrowe@apple.com>
6217
6218        Reviewed by Sam Weinig.
6219
6220        Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
6221
6222        We do this by having the registerName function return information about the constant if the register
6223        number corresponds to a constant.  This requires that registerName, and several functions that call it,
6224        be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
6225        ExecState also needs to be threaded down through these functions so that it can be passed on to
6226        constantName when needed.
6227
6228        * bytecode/CodeBlock.cpp:
6229        (JSC::constantName):
6230        (JSC::CodeBlock::registerName):
6231        (JSC::CodeBlock::printUnaryOp):
6232        (JSC::CodeBlock::printBinaryOp):
6233        (JSC::CodeBlock::printConditionalJump):
6234        (JSC::CodeBlock::printGetByIdOp):
6235        (JSC::CodeBlock::printPutByIdOp):
6236        (JSC::CodeBlock::dump):
6237        * bytecode/CodeBlock.h:
6238        (JSC::CodeBlock::isConstantRegisterIndex):
6239
62402009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
6241
6242        Reviewed by Alexey Proskuryakov.
6243
6244        https://bugs.webkit.org/show_bug.cgi?id=30647
6245        Solaris build failure due to strnstr.
6246
6247        * wtf/StringExtras.h: Enable strnstr on Solaris, too.
6248
62492009-11-04  Gavin Barraclough  <barraclough@apple.com>
6250
6251        Reviewed by Oliver Hunt.
6252
6253        https://bugs.webkit.org/show_bug.cgi?id=31104
6254        Refactor x86-specific behaviour out of the JIT.
6255
6256        - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
6257        - Refactor double to int conversion out into the MacroAssembler.
6258        - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement.
6259        - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify.
6260
6261        * assembler/MacroAssemblerARM.h:
6262        (JSC::MacroAssemblerARM::):
6263        * assembler/MacroAssemblerARMv7.h:
6264        (JSC::MacroAssemblerARMv7::):
6265        * assembler/MacroAssemblerX86Common.h:
6266        (JSC::MacroAssemblerX86Common::):
6267        (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
6268        (JSC::MacroAssemblerX86Common::branchDouble):
6269        (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
6270        * jit/JITArithmetic.cpp:
6271        (JSC::JIT::emitBinaryDoubleOp):
6272        (JSC::JIT::emit_op_div):
6273        (JSC::JIT::emitSlow_op_jnless):
6274        (JSC::JIT::emitSlow_op_jnlesseq):
6275        * jit/JITOpcodes.cpp:
6276        (JSC::JIT::emit_op_jfalse):
6277
62782009-11-04  Mark Mentovai  <mark@chromium.org>
6279
6280        Reviewed by Eric Seidel.
6281
6282        Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
6283        to be set as needed only in wtf/Platform.h.
6284
6285        * JavaScriptCore.gyp/JavaScriptCore.gyp:
6286
62872009-11-02  Oliver Hunt  <oliver@apple.com>
6288
6289        Reviewed by Gavin Barraclough.
6290
6291        REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
6292        https://bugs.webkit.org/show_bug.cgi?id=31045
6293
6294        Add guards to prevent caching of prototype chain lookups with dictionaries at the
6295        head of the chain.  Also add a few tighter assertions to cached prototype lookups
6296        to catch this in future.
6297
6298        * interpreter/Interpreter.cpp:
6299        (JSC::Interpreter::tryCacheGetByID):
6300        (JSC::Interpreter::privateExecute):
6301        * jit/JITStubs.cpp:
6302        (JSC::JITThunks::tryCacheGetByID):
6303
63042009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
6305
6306        Reviewed by Darin Adler.
6307
6308        PLATFORM(CF) should be set when building for Qt on Darwin
6309        https://bugs.webkit.org/show_bug.cgi?id=23671
6310
6311        * wtf/Platform.h: Turn on CF support if both QT and DARWIN
6312        platforms are defined.
6313
63142009-11-02  Dmitry Titov  <dimich@chromium.org>
6315
6316        Reviewed by David Levin.
6317
6318        Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
6319        https://bugs.webkit.org/show_bug.cgi?id=30612
6320
6321        * wtf/MessageQueue.h:
6322        (WTF::MessageQueue::alwaysTruePredicate):
6323        (WTF::MessageQueue::~MessageQueue):
6324        (WTF::MessageQueue::append):
6325        (WTF::MessageQueue::appendAndCheckEmpty):
6326        (WTF::MessageQueue::prepend):
6327        (WTF::MessageQueue::waitForMessage):
6328        (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
6329        (WTF::MessageQueue::tryGetMessage):
6330        (WTF::MessageQueue::removeIf):
6331        The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
6332        of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
6333        All methods have arguments of type PassOwnPtr<DataType> and return the same type.
6334
6335        * wtf/Threading.cpp:
6336        (WTF::createThread):
6337        Superficial change to trigger rebuild of JSC project on Windows,
6338        workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
6339
63402009-10-30  Geoffrey Garen  <ggaren@apple.com>
6341
6342        Reviewed by Oliver Hunt.
6343
6344        Fixed failing layout test: restore a special case I accidentally deleted.
6345
6346        * runtime/DatePrototype.cpp:
6347        (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
6348        that is NaN, reset the date to 0 *and* then apply the change; don't just
6349        reset the date to 0.
6350
63512009-10-30  Geoffrey Garen  <ggaren@apple.com>
6352
6353        Windows build fix: update for object-to-pointer change.
6354
6355        * runtime/DatePrototype.cpp:
6356        (JSC::formatLocaleDate):
6357
63582009-10-29  Geoffrey Garen  <ggaren@apple.com>
6359
6360        Reviewed by Darin Adler.
6361
6362        https://bugs.webkit.org/show_bug.cgi?id=30942
6363        Use pointers instead of copies to pass GregorianDateTime objects around.
6364
6365        SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
6366        speedup on date-format-tofte.
6367
6368        * runtime/DateInstance.cpp:
6369        (JSC::DateInstance::gregorianDateTime):
6370        * runtime/DateInstance.h:
6371        * runtime/DatePrototype.cpp:
6372        (JSC::formatLocaleDate):
6373        (JSC::dateProtoFuncToString):
6374        (JSC::dateProtoFuncToUTCString):
6375        (JSC::dateProtoFuncToISOString):
6376        (JSC::dateProtoFuncToDateString):
6377        (JSC::dateProtoFuncToTimeString):
6378        (JSC::dateProtoFuncGetFullYear):
6379        (JSC::dateProtoFuncGetUTCFullYear):
6380        (JSC::dateProtoFuncToGMTString):
6381        (JSC::dateProtoFuncGetMonth):
6382        (JSC::dateProtoFuncGetUTCMonth):
6383        (JSC::dateProtoFuncGetDate):
6384        (JSC::dateProtoFuncGetUTCDate):
6385        (JSC::dateProtoFuncGetDay):
6386        (JSC::dateProtoFuncGetUTCDay):
6387        (JSC::dateProtoFuncGetHours):
6388        (JSC::dateProtoFuncGetUTCHours):
6389        (JSC::dateProtoFuncGetMinutes):
6390        (JSC::dateProtoFuncGetUTCMinutes):
6391        (JSC::dateProtoFuncGetSeconds):
6392        (JSC::dateProtoFuncGetUTCSeconds):
6393        (JSC::dateProtoFuncGetTimezoneOffset):
6394        (JSC::setNewValueFromTimeArgs):
6395        (JSC::setNewValueFromDateArgs):
6396        (JSC::dateProtoFuncSetYear):
6397        (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
6398        since it no longer has an out parameter. Uses 0 to indicate invalid dates.
6399
64002009-10-30  Zoltan Horvath  <zoltan@webkit.org>
6401
6402        Reviewed by Darin Adler.
6403
6404        Allow custom memory allocation control for JavaScriptCore's ListHashSet
6405        https://bugs.webkit.org/show_bug.cgi?id=30853
6406
6407        Inherits ListHashSet class from FastAllocBase because it is
6408        instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
6409
6410        * wtf/ListHashSet.h:
6411
64122009-10-30  Oliver Hunt  <oliver@apple.com>
6413
6414        Reviewed by Gavin Barraclough.
6415
6416        Regression: crash enumerating properties of an object with getters or setters
6417        https://bugs.webkit.org/show_bug.cgi?id=30948
6418
6419        Add a guard to prevent us trying to cache property enumeration on
6420        objects with getters or setters.
6421
6422        * runtime/JSPropertyNameIterator.cpp:
6423        (JSC::JSPropertyNameIterator::create):
6424
64252009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
6426
6427        Reviewed by Eric Seidel.
6428
6429        Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
6430
6431        Bug 28420 -  Implement HTML5 <ruby> rendering
6432        (https://bugs.webkit.org/show_bug.cgi?id=28420)
6433
6434        No new tests (no functional change).
6435
6436        * Configurations/FeatureDefines.xcconfig:
6437
64382009-10-29  Oliver Hunt  <oliver@apple.com>
6439
6440        Reviewed by Maciej Stachowiak.
6441
6442        REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
6443        https://bugs.webkit.org/show_bug.cgi?id=30947
6444        <rdar://problem/7348833>
6445
6446        The logic for flagging that a structure has non-enumerable properties
6447        was in addPropertyWithoutTransition, rather than in the core Structure::put
6448        method.  Despite this I was unable to produce a testcase that caused
6449        the failure that etrade was experiencing, but the new assertion in
6450        getEnumerablePropertyNames triggers on numerous layout tests without
6451        the fix, so in effecti all for..in enumeration in any test ends up
6452        doing the required consistency check.
6453
6454        * runtime/Structure.cpp:
6455        (JSC::Structure::addPropertyWithoutTransition):
6456        (JSC::Structure::put):
6457        (JSC::Structure::getEnumerablePropertyNames):
6458        (JSC::Structure::checkConsistency):
6459
64602009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
6461
6462        Reviewed by Gavin Barraclough.
6463
6464        Add cacheFlush support for Thumb-2 on Linux
6465        https://bugs.webkit.org/show_bug.cgi?id=30865
6466
6467        * jit/ExecutableAllocator.h:
6468        (JSC::ExecutableAllocator::cacheFlush):
6469
64702009-10-28  Gavin Barraclough  <barraclough@apple.com>
6471
6472        Reviewed by Oliver Hunt.
6473
6474        JSC JIT on ARMv7 cannot link jumps >16Mb range
6475        https://bugs.webkit.org/show_bug.cgi?id=30891
6476
6477        Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
6478        In the cases where the jump would fall within a relative jump range, use a relative jump.
6479
6480        * JavaScriptCore.xcodeproj/project.pbxproj:
6481        * assembler/ARMv7Assembler.h:
6482        (JSC::ARMv7Assembler::~ARMv7Assembler):
6483        (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
6484        (JSC::ARMv7Assembler::):
6485        (JSC::ARMv7Assembler::executableCopy):
6486        (JSC::ARMv7Assembler::linkJump):
6487        (JSC::ARMv7Assembler::relinkJump):
6488        (JSC::ARMv7Assembler::setInt32):
6489        (JSC::ARMv7Assembler::isB):
6490        (JSC::ARMv7Assembler::isBX):
6491        (JSC::ARMv7Assembler::isMOV_imm_T3):
6492        (JSC::ARMv7Assembler::isMOVT):
6493        (JSC::ARMv7Assembler::isNOP_T1):
6494        (JSC::ARMv7Assembler::isNOP_T2):
6495        (JSC::ARMv7Assembler::linkJumpAbsolute):
6496        (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
6497        (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
6498        (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
6499        * assembler/MacroAssemblerARMv7.h:
6500        (JSC::MacroAssemblerARMv7::makeJump):
6501        (JSC::MacroAssemblerARMv7::makeBranch):
6502        * jit/JIT.h:
6503        * wtf/Platform.h:
6504
65052009-10-28  Oliver Hunt  <oliver@apple.com>
6506
6507        Reviewed by Geoff Garen.
6508
6509        Improve for..in enumeration performance
6510        https://bugs.webkit.org/show_bug.cgi?id=30887
6511
6512        Improve indexing of an object with a for..in iterator by
6513        identifying cases where get_by_val is being used with a iterator
6514        as the subscript and replace it with a new get_by_pname
6515        bytecode.  get_by_pname then optimizes lookups that directly access
6516        the base object.
6517
6518        * bytecode/CodeBlock.cpp:
6519        (JSC::CodeBlock::dump):
6520        * bytecode/Opcode.h:
6521        * bytecompiler/BytecodeGenerator.cpp:
6522        (JSC::BytecodeGenerator::emitGetByVal):
6523        * bytecompiler/BytecodeGenerator.h:
6524        (JSC::BytecodeGenerator::pushOptimisedForIn):
6525        (JSC::BytecodeGenerator::popOptimisedForIn):
6526        * interpreter/Interpreter.cpp:
6527        (JSC::Interpreter::privateExecute):
6528        * jit/JIT.cpp:
6529        (JSC::JIT::privateCompileMainPass):
6530        (JSC::JIT::privateCompileSlowCases):
6531        * jit/JIT.h:
6532        * jit/JITPropertyAccess.cpp:
6533        (JSC::JIT::compileGetDirectOffset):
6534        (JSC::JIT::emit_op_get_by_pname):
6535        (JSC::JIT::emitSlow_op_get_by_pname):
6536        * parser/Nodes.cpp:
6537        (JSC::ForInNode::emitBytecode):
6538        * runtime/JSObject.h:
6539        * runtime/JSPropertyNameIterator.cpp:
6540        (JSC::JSPropertyNameIterator::create):
6541        * runtime/JSPropertyNameIterator.h:
6542        (JSC::JSPropertyNameIterator::getOffset):
6543        (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
6544        * runtime/JSValue.h:
6545        (JSC::JSValue::):
6546        * runtime/Structure.cpp:
6547        (JSC::Structure::addPropertyTransition):
6548        (JSC::Structure::changePrototypeTransition):
6549        (JSC::Structure::despecifyFunctionTransition):
6550        (JSC::Structure::addAnonymousSlotsTransition):
6551        (JSC::Structure::getterSetterTransition):
6552        (JSC::Structure::toDictionaryTransition):
6553        (JSC::Structure::addPropertyWithoutTransition):
6554          Track the existence (or not) of non-enumerable properties.
6555        * runtime/Structure.h:
6556        (JSC::Structure::propertyStorageCapacity):
6557        (JSC::Structure::propertyStorageSize):
6558        (JSC::Structure::hasNonEnumerableProperties):
6559        (JSC::Structure::hasAnonymousSlots):
6560
65612009-10-28  Dmitry Titov  <dimich@chromium.org>
6562
6563        Not reviewed, attemp to fix Windows build.
6564
6565        Touch the cpp file to cause recompile.
6566
6567        * wtf/Threading.cpp:
6568        (WTF::threadEntryPoint):
6569
65702009-10-28  Dmitry Titov  <dimich@chromium.org>
6571
6572        Reviewed by David Levin.
6573
6574        https://bugs.webkit.org/show_bug.cgi?id=30805
6575        Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
6576        Existing Database tests cover this since Database removes tasks when it is stopped.
6577
6578        * wtf/MessageQueue.h:
6579        (WTF::::removeIf):
6580
65812009-10-28  Afonso R. Costa Jr.  <afonso.costa@openbossa.org>
6582
6583        Reviewed by Oliver Hunt.
6584
6585        [Qt] Enable YARR when YARR_JIT is enabled
6586        https://bugs.webkit.org/show_bug.cgi?id=30730
6587
6588        When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
6589        be toggled also.
6590
6591        * JavaScriptCore.pri:
6592
65932009-10-24  Martin Robinson  <martin.james.robinson@gmail.com>
6594
6595        Reviewed by Oliver Hunt.
6596
6597        Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
6598
6599        strict-aliasing warnings in JSFunction.h
6600        https://bugs.webkit.org/show_bug.cgi?id=27869
6601
6602        * runtime/JSFunction.h:
6603        (JSC::JSFunction::nativeFunction):
6604        (JSC::JSFunction::scopeChain):
6605        (JSC::JSFunction::setScopeChain):
6606        (JSC::JSFunction::setNativeFunction):
6607
66082009-10-28  Jan-Arve Sæther <jan-arve.saether@nokia.com>
6609
6610        Reviewed by Tor Arne Vestbø.
6611
6612        Build-fix for 64-bit Windows
6613
6614        * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
6615
66162009-10-28  Gavin Barraclough  <barraclough@apple.com>
6617
6618        Reviewed by NOBODY (build fix!).
6619
6620        * jit/JIT.h:
6621
66222009-10-26  Holger Hans Peter Freyther  <zecke@selfish.org>
6623
6624        Rubber-stamped by Darin Adler.
6625
6626        Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
6627        https://bugs.webkit.org/show_bug.cgi?id=30769
6628
6629        When using -fvisibility=hidden to hide all internal symbols by default
6630        the malloc symbols will be hidden as well. For memory instrumentation
6631        it is needed to provide an instrumented version of these symbols and
6632        override the normal routines and by changing the visibility back to
6633        default this becomes possible.
6634
6635        The only other solution would be to use system malloc instead of the
6636        TCmalloc implementation but this will not allow to analyze memory
6637        behavior with the default allocator.
6638
6639        * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
6640
66412009-10-27  Gavin Barraclough  <barraclough@apple.com>
6642
6643        Rubber Stamped by Samuel Q. Weinig.
6644
6645        Make the asserts protecting the offsets in the JIT more descriptive.
6646
6647        * jit/JIT.h:
6648        * jit/JITCall.cpp:
6649        (JSC::JIT::compileOpCall):
6650        * jit/JITPropertyAccess.cpp:
6651        (JSC::JIT::emit_op_method_check):
6652        (JSC::JIT::compileGetByIdHotPath):
6653        (JSC::JIT::compileGetByIdSlowCase):
6654        (JSC::JIT::emit_op_put_by_id):
6655
66562009-10-27  Geoffrey Garen  <ggaren@apple.com>
6657
6658        Reviewed by Sam Weinig.
6659
6660        A little bit of refactoring in the date code.
6661
6662        * JavaScriptCore.exp: Don't export this unused symbol.
6663
6664        * runtime/DateConstructor.cpp:
6665        (JSC::constructDate):
6666
6667        * runtime/DateInstance.cpp:
6668        (JSC::DateInstance::DateInstance):
6669        * runtime/DateInstance.h: Removed some unused functions. Changed the default
6670        constructor to ensure that a DateInstance is always initialized.
6671
6672        * runtime/DatePrototype.cpp:
6673        (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
6674        since it now requires one.
6675
6676        * wtf/DateMath.cpp:
6677        (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
6678        output will require it. Otherwise, our offset is 0.
6679
66802009-10-27  Geoffrey Garen  <ggaren@apple.com>
6681
6682        Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
6683
6684        * JavaScriptCore.xcodeproj/project.pbxproj:
6685
66862009-10-27  Geoffrey Garen  <ggaren@apple.com>
6687
6688        Build fix: re-readded this file.
6689
6690        * runtime/DateInstanceCache.h: Added.
6691        (JSC::DateInstanceData::create):
6692        (JSC::DateInstanceData::DateInstanceData):
6693        (JSC::DateInstanceCache::DateInstanceCache):
6694        (JSC::DateInstanceCache::add):
6695        (JSC::DateInstanceCache::lookup):
6696
66972009-10-27  Geoffrey Garen  <ggaren@apple.com>
6698
6699        Reviewed by Darin Adler and Oliver Hunt.
6700
6701        https://bugs.webkit.org/show_bug.cgi?id=30800
6702        Cache recently computed date data.
6703
6704        SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
6705
6706        * GNUmakefile.am:
6707        * JavaScriptCore.gypi:
6708        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6709        * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
6710
6711        * runtime/DateInstance.cpp:
6712        (JSC::DateInstance::DateInstance):
6713        (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
6714
6715        * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
6716        of a "cache cache".
6717
6718        * runtime/DatePrototype.cpp:
6719        (JSC::formatLocaleDate):
6720        (JSC::dateProtoFuncToString):
6721        (JSC::dateProtoFuncToUTCString):
6722        (JSC::dateProtoFuncToISOString):
6723        (JSC::dateProtoFuncToDateString):
6724        (JSC::dateProtoFuncToTimeString):
6725        (JSC::dateProtoFuncGetFullYear):
6726        (JSC::dateProtoFuncGetUTCFullYear):
6727        (JSC::dateProtoFuncToGMTString):
6728        (JSC::dateProtoFuncGetMonth):
6729        (JSC::dateProtoFuncGetUTCMonth):
6730        (JSC::dateProtoFuncGetDate):
6731        (JSC::dateProtoFuncGetUTCDate):
6732        (JSC::dateProtoFuncGetDay):
6733        (JSC::dateProtoFuncGetUTCDay):
6734        (JSC::dateProtoFuncGetHours):
6735        (JSC::dateProtoFuncGetUTCHours):
6736        (JSC::dateProtoFuncGetMinutes):
6737        (JSC::dateProtoFuncGetUTCMinutes):
6738        (JSC::dateProtoFuncGetSeconds):
6739        (JSC::dateProtoFuncGetUTCSeconds):
6740        (JSC::dateProtoFuncGetTimezoneOffset):
6741        (JSC::setNewValueFromTimeArgs):
6742        (JSC::setNewValueFromDateArgs):
6743        (JSC::dateProtoFuncSetYear):
6744        (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
6745        can access the DateInstanceCache.
6746
6747        * runtime/JSGlobalData.h: Keep a DateInstanceCache.
6748
67492009-10-27  James Robinson  <jamesr@chromium.org>
6750
6751        Reviewed by Darin Fisher.
6752
6753        Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
6754
6755        Chromium uses a different method to calculate the current time than is used in
6756        JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
6757        function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
6758        See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
6759
6760        https://bugs.webkit.org/show_bug.cgi?id=30833
6761
6762        * JavaScriptCore.gyp/JavaScriptCore.gyp:
6763        * wtf/CurrentTime.cpp:
6764
67652009-10-27  Peter Varga  <pvarga@inf.u-szeged.hu>
6766
6767        Rubber-stamped by Tor Arne Vestbø.
6768
6769        Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
6770        alternative.
6771
6772        * yarr/RegexInterpreter.cpp:
6773        (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
6774        (JSC::Yarr::ByteCompiler::alternativeDisjunction):
6775        (JSC::Yarr::ByteCompiler::emitDisjunction):
6776        * yarr/RegexJIT.cpp:
6777        (JSC::Yarr::RegexGenerator::generateDisjunction):
6778
67792009-10-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
6780
6781        Reviewed by Darin Adler.
6782
6783        Make .rc files compile on Windows without depending on MFC headers
6784        https://bugs.webkit.org/show_bug.cgi?id=30750
6785
6786        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
6787        winresrc.h because it exists even when MFC is not installed, and is
6788        all that's needed here.
6789
67902009-10-26  Gabor Loki  <loki@inf.u-szeged.hu>
6791
6792        Reviewed by Gavin Barraclough.
6793
6794        The thunkReturnAddress is on JITStackFrame on ARM JIT as well
6795        https://bugs.webkit.org/show_bug.cgi?id=30782
6796
6797        Move the thunkReturnAddress from top of the stack into the JITStackFrame
6798        structure. This is a requirement for JSValue32_64 support on ARM.
6799
6800        * assembler/MacroAssemblerARM.h:
6801        (JSC::MacroAssemblerARM::ret): Return with link register
6802        (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
6803        * jit/JIT.h: Remove unused ctiReturnRegister
6804        * jit/JITInlineMethods.h: Same as ARMv7
6805        (JSC::JIT::restoreArgumentReference): Ditto.
6806        (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
6807        * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
6808        * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
6809        small trampoline functions which handle return addresses for each
6810        CTI_STUB_FUNCTION.
6811        * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
6812        (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
6813        * yarr/RegexJIT.cpp:
6814        (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
6815
68162009-10-26  Steve Block  <steveblock@google.com>
6817
6818        Reviewed by Darin Adler.
6819
6820        Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
6821        https://bugs.webkit.org/show_bug.cgi?id=30713
6822
6823        * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
6824        * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
6825        * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
6826
68272009-10-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
6828
6829        Reviewed by Holger Freyther.
6830
6831        [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
6832        https://bugs.webkit.org/show_bug.cgi?id=30476
6833
6834        Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
6835        to jsc.exe.
6836
6837        * jsc.pro:
6838
68392009-10-23  Steve Block  <steveblock@google.com>
6840
6841        Reviewed by Dmitry Titov.
6842
6843        Fixes a leak in createThreadInternal on Android.
6844        https://bugs.webkit.org/show_bug.cgi?id=30698
6845
6846        * wtf/ThreadingPthreads.cpp: Modified.
6847        (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
6848
68492009-10-22  Geoffrey Garen  <ggaren@apple.com>
6850
6851        Reviewed by Alexey Proskuryakov.
6852
6853        Fixed ASSERT when opening Safari's Caches window while the Web Inspector
6854        is open.
6855
6856        * runtime/Collector.cpp:
6857        (JSC::typeName): Added two new types to the type name list in the Collector.
6858        These types have been around for a while, but nobody remembered to consider them here.
6859
6860        * runtime/JSCell.h:
6861        (JSC::JSCell::isPropertyNameIterator):
6862        * runtime/JSPropertyNameIterator.h:
6863        (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
6864        a way to tell if a cell is a JSPropertyNameIterator.
6865
68662009-10-22  Steve Falkenburg  <sfalken@apple.com>
6867
6868        Reviewed by Jon Honeycutt.
6869
6870        https://bugs.webkit.org/show_bug.cgi?id=30686
6871        Remove debug-specific def file.
6872        Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
6873        that target is only used internally, maintaining two files just to
6874        suppress a single link warning isn't worthwhile.
6875
6876        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
6877        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
6878
68792009-10-21  Jon Honeycutt  <jhoneycutt@apple.com>
6880
6881        <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
6882        <rdar://problem/7270314> After halting a transparent PluginView on
6883        Windows, the transparency is applied twice
6884
6885        Reviewed by Dan Bernstein.
6886
6887        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
6888        Export WTF::deleteOwnedPtr(HDC).
6889
6890        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
6891        Ditto.
6892
68932009-10-20  Geoffrey Garen  <ggaren@apple.com>
6894
6895        Windows build fix: updated variable name.
6896
6897        * runtime/DatePrototype.cpp:
6898        (JSC::formatLocaleDate):
6899
69002009-10-20  Geoffrey Garen  <ggaren@apple.com>
6901
6902        Reviewed by Mark Rowe.
6903
6904        * jit/JITOpcodes.cpp:
6905        (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
6906        size of a JSValue because m_jsStrings is an array of JSValues.
6907
69082009-10-20  Geoffrey Garen  <ggaren@apple.com>
6909
6910        Reviewed by Mark Rowe.
6911
6912        Fixed a 64-bit regression caused by the fix for
6913        https://bugs.webkit.org/show_bug.cgi?id=30570.
6914
6915        * jit/JITOpcodes.cpp:
6916        (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
6917        64-bit pointers are eight bytes long.
6918
69192009-10-20  Geoffrey Garen  <ggaren@apple.com>
6920
6921        Reviewed by Sam Weinig.
6922
6923        Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
6924        caller doesn't need to supply the DateInstance's own internal value to
6925        the DateInstance.
6926
6927        * runtime/DateInstance.cpp:
6928        (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
6929
6930        * runtime/DateInstance.h:
6931        * runtime/DatePrototype.cpp:
6932        (JSC::formatLocaleDate):
6933        (JSC::dateProtoFuncToString):
6934        (JSC::dateProtoFuncToUTCString):
6935        (JSC::dateProtoFuncToISOString):
6936        (JSC::dateProtoFuncToDateString):
6937        (JSC::dateProtoFuncToTimeString):
6938        (JSC::dateProtoFuncToLocaleString):
6939        (JSC::dateProtoFuncToLocaleDateString):
6940        (JSC::dateProtoFuncToLocaleTimeString):
6941        (JSC::dateProtoFuncGetTime):
6942        (JSC::dateProtoFuncGetFullYear):
6943        (JSC::dateProtoFuncGetUTCFullYear):
6944        (JSC::dateProtoFuncToGMTString):
6945        (JSC::dateProtoFuncGetMonth):
6946        (JSC::dateProtoFuncGetUTCMonth):
6947        (JSC::dateProtoFuncGetDate):
6948        (JSC::dateProtoFuncGetUTCDate):
6949        (JSC::dateProtoFuncGetDay):
6950        (JSC::dateProtoFuncGetUTCDay):
6951        (JSC::dateProtoFuncGetHours):
6952        (JSC::dateProtoFuncGetUTCHours):
6953        (JSC::dateProtoFuncGetMinutes):
6954        (JSC::dateProtoFuncGetUTCMinutes):
6955        (JSC::dateProtoFuncGetSeconds):
6956        (JSC::dateProtoFuncGetUTCSeconds):
6957        (JSC::dateProtoFuncGetTimezoneOffset):
6958        (JSC::setNewValueFromTimeArgs):
6959        (JSC::setNewValueFromDateArgs):
6960        (JSC::dateProtoFuncSetYear):
6961        (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
6962
69632009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
6964
6965        Reviewed by Geoffrey Garen.
6966
6967        The op_next_pname should use 4 bytes addressing mode in case of JSValue32
6968        https://bugs.webkit.org/show_bug.cgi?id=30570
6969
6970        * jit/JITOpcodes.cpp:
6971        (JSC::JIT::emit_op_next_pname):
6972
69732009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
6974
6975        Reviewed by Oliver Hunt.
6976
6977        Move OverridesMarkChildren flag from DatePrototype to its parent class
6978        https://bugs.webkit.org/show_bug.cgi?id=30372
6979
6980        * runtime/DateInstance.h:
6981        (JSC::DateInstance::createStructure):
6982        * runtime/DatePrototype.h:
6983
69842009-10-19  Geoffrey Garen  <ggaren@apple.com>
6985
6986        Reviewed by Oliver Hunt.
6987
6988        Tightened up some put_by_id_transition code generation.
6989        https://bugs.webkit.org/show_bug.cgi?id=30539
6990
6991        * jit/JIT.h:
6992        * jit/JITPropertyAccess.cpp:
6993        (JSC::JIT::testPrototype):
6994        (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
6995        checks or read Structures and prototypes from objects: they're all known
6996        constants at compile time.
6997
69982009-10-19  Geoffrey Garen  <ggaren@apple.com>
6999
7000        Reviewed by Sam Weinig.
7001
7002        Added a private API for getting a global context from a context, for
7003        clients who want to preserve a context for a later callback.
7004
7005        * API/APICast.h:
7006        (toGlobalRef): Added an ASSERT, since this function is used more often
7007        than before.
7008
7009        * API/JSContextRef.cpp:
7010        * API/JSContextRefPrivate.h: Added. The new API.
7011
7012        * API/tests/testapi.c:
7013        (print_callAsFunction):
7014        (main): Test the new API.
7015
7016        * JavaScriptCore.exp:
7017        * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
7018
70192009-10-17  Geoffrey Garen  <ggaren@apple.com>
7020
7021        Reviewed by Oliver Hunt.
7022
7023        Tightened up some instanceof code generation.
7024        https://bugs.webkit.org/show_bug.cgi?id=30488
7025
7026        * jit/JITOpcodes.cpp:
7027        (JSC::JIT::emit_op_instanceof):
7028        (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks -
7029        cell type checks and ImplementsDefaultHasIntance checks implicitly
7030        supersede object type checks.
7031
70322009-10-18  Kwang Yul Seo  <skyul@company100.net>
7033
7034        Reviewed by Darin Adler.
7035
7036        Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
7037        https://bugs.webkit.org/show_bug.cgi?id=30474
7038
7039        stricmp and strnicmp are deprecated beginning in Visual
7040        C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
7041
7042        * wtf/StringExtras.h:
7043        (strncasecmp):
7044        (strcasecmp):
7045
70462009-10-16  Geoffrey Garen  <ggaren@apple.com>
7047
7048        Build fix: apparently we shouldn't export those symbols?
7049
7050        * JavaScriptCore.exp:
7051
70522009-10-16  Geoffrey Garen  <ggaren@apple.com>
7053
7054        Build fix: export some symbols.
7055
7056        * JavaScriptCore.exp:
7057
70582009-10-16  Oliver Hunt  <oliver@apple.com>
7059
7060        Reviewed by Gavin Barraclough.
7061
7062        structure typeinfo flags should be inherited.
7063        https://bugs.webkit.org/show_bug.cgi?id=30468
7064
7065        Add StructureFlag constant to the various JSC classes and use
7066        it for the TypeInfo construction.  This allows us to simply
7067        accumulate flags by basing each classes StructureInfo on its parents.
7068
7069        * API/JSCallbackConstructor.h:
7070        (JSC::JSCallbackConstructor::createStructure):
7071        * API/JSCallbackFunction.h:
7072        (JSC::JSCallbackFunction::createStructure):
7073        * API/JSCallbackObject.h:
7074        (JSC::JSCallbackObject::createStructure):
7075        * debugger/DebuggerActivation.h:
7076        (JSC::DebuggerActivation::createStructure):
7077        * runtime/Arguments.h:
7078        (JSC::Arguments::createStructure):
7079        * runtime/BooleanObject.h:
7080        (JSC::BooleanObject::createStructure):
7081        * runtime/DatePrototype.h:
7082        (JSC::DatePrototype::createStructure):
7083        * runtime/FunctionPrototype.h:
7084        (JSC::FunctionPrototype::createStructure):
7085        * runtime/GlobalEvalFunction.h:
7086        (JSC::GlobalEvalFunction::createStructure):
7087        * runtime/InternalFunction.h:
7088        (JSC::InternalFunction::createStructure):
7089        * runtime/JSActivation.h:
7090        (JSC::JSActivation::createStructure):
7091        * runtime/JSArray.h:
7092        (JSC::JSArray::createStructure):
7093        * runtime/JSByteArray.cpp:
7094        (JSC::JSByteArray::createStructure):
7095        * runtime/JSByteArray.h:
7096        * runtime/JSFunction.h:
7097        (JSC::JSFunction::createStructure):
7098        * runtime/JSGlobalObject.h:
7099        (JSC::JSGlobalObject::createStructure):
7100        * runtime/JSNotAnObject.h:
7101        (JSC::JSNotAnObject::createStructure):
7102        * runtime/JSONObject.h:
7103        (JSC::JSONObject::createStructure):
7104        * runtime/JSObject.h:
7105        (JSC::JSObject::createStructure):
7106        * runtime/JSStaticScopeObject.h:
7107        (JSC::JSStaticScopeObject::createStructure):
7108        * runtime/JSVariableObject.h:
7109        (JSC::JSVariableObject::createStructure):
7110        * runtime/JSWrapperObject.h:
7111        (JSC::JSWrapperObject::createStructure):
7112        * runtime/MathObject.h:
7113        (JSC::MathObject::createStructure):
7114        * runtime/NumberConstructor.h:
7115        (JSC::NumberConstructor::createStructure):
7116        * runtime/NumberObject.h:
7117        (JSC::NumberObject::createStructure):
7118        * runtime/RegExpConstructor.h:
7119        (JSC::RegExpConstructor::createStructure):
7120        * runtime/RegExpObject.h:
7121        (JSC::RegExpObject::createStructure):
7122        * runtime/StringObject.h:
7123        (JSC::StringObject::createStructure):
7124        * runtime/StringObjectThatMasqueradesAsUndefined.h:
7125        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
7126
71272009-10-16  Geoffrey Garen  <ggaren@apple.com>
7128
7129        Reviewed by Oliver Hunt.
7130
7131        Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
7132        in JSPropertyNameIterator; inline more code.
7133
7134        1.024x as fast on SunSpider (fasta: 1.43x as fast).
7135
7136        * bytecode/CodeBlock.cpp:
7137        (JSC::CodeBlock::dump):
7138        * bytecode/Opcode.h:
7139        * bytecompiler/BytecodeGenerator.cpp:
7140        (JSC::BytecodeGenerator::emitGetPropertyNames):
7141        (JSC::BytecodeGenerator::emitNextPropertyName):
7142        * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
7143        op_get_pnames and op_next_pname so that we can track iteration state
7144        in the register file instead of in the JSPropertyNameIterator. (To be
7145        cacheable, the JSPropertyNameIterator must be stateless.)
7146
7147        * interpreter/Interpreter.cpp:
7148        (JSC::Interpreter::tryCachePutByID):
7149        (JSC::Interpreter::tryCacheGetByID): Updated for rename to
7150        "normalizePrototypeChain" and removal of "isCacheable".
7151
7152        (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
7153        iteration state tracking.
7154
7155        * jit/JIT.cpp:
7156        (JSC::JIT::privateCompileMainPass):
7157        * jit/JIT.h:
7158        * jit/JITOpcodes.cpp:
7159        (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
7160        iteration state tracking.
7161
7162        (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
7163
7164        * jit/JITStubs.cpp:
7165        (JSC::JITThunks::tryCachePutByID):
7166        (JSC::JITThunks::tryCacheGetByID): Updated for rename to
7167        "normalizePrototypeChain" and removal of "isCacheable".
7168
7169        (JSC::DEFINE_STUB_FUNCTION):
7170        * jit/JITStubs.h:
7171        (JSC::): Added has_property and to_object stubs. Removed op_next_pname
7172        stub, since has_property is all we need anymore.
7173
7174        * parser/Nodes.cpp:
7175        (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
7176        iteration state tracking.
7177
7178        * runtime/JSCell.h:
7179        * runtime/JSObject.cpp:
7180        (JSC::JSObject::getPropertyNames): Don't do caching at this layer
7181        anymore, since we don't create a JSPropertyNameIterator at this layer.
7182
7183        * runtime/JSPropertyNameIterator.cpp:
7184        (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
7185        (JSC::JSPropertyNameIterator::get):  Updated for in-RegisterFile
7186        iteration state tracking.
7187        (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
7188
7189        * runtime/JSPropertyNameIterator.h:
7190        (JSC::JSPropertyNameIterator::size):
7191        (JSC::JSPropertyNameIterator::setCachedStructure):
7192        (JSC::JSPropertyNameIterator::cachedStructure):
7193        (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
7194        (JSC::JSPropertyNameIterator::cachedPrototypeChain):
7195        (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
7196        (JSC::Structure::setEnumerationCache): Don't store iteration state in
7197        a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
7198        Structure.
7199
7200        * runtime/JSValue.h:
7201        (JSC::asCell):
7202        * runtime/MarkStack.h: Make those mischievous #include gods happy.
7203
7204        * runtime/ObjectConstructor.cpp:
7205
7206        * runtime/Operations.h:
7207        (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
7208        to normalizePrototypeChain, since it changes dictionary prototypes to
7209        non-dictionary objects.
7210
7211        * runtime/PropertyNameArray.cpp:
7212        (JSC::PropertyNameArray::add):
7213        * runtime/PropertyNameArray.h:
7214        (JSC::PropertyNameArrayData::PropertyNameArrayData):
7215        (JSC::PropertyNameArray::data):
7216        (JSC::PropertyNameArray::size):
7217        (JSC::PropertyNameArray::begin):
7218        (JSC::PropertyNameArray::end): Simplified some code here to help with
7219        current and future refactoring.
7220
7221        * runtime/Protect.h:
7222        * runtime/Structure.cpp:
7223        (JSC::Structure::~Structure):
7224        (JSC::Structure::addPropertyWithoutTransition):
7225        (JSC::Structure::removePropertyWithoutTransition): No need to clear
7226        the enumeration cache with adding / removing properties without
7227        transition. It is an error to add / remove properties without transition
7228        once an object has been observed, and we can ASSERT to catch that.
7229
7230        * runtime/Structure.h:
7231        (JSC::Structure::enumerationCache): Changed the enumeration cache to
7232        hold a JSPropertyNameIterator.
7233
7234        * runtime/StructureChain.cpp:
7235        * runtime/StructureChain.h:
7236        (JSC::StructureChain::head): Removed StructureChain::isCacheable because
7237        it was wrong-headed in two ways: (1) It gave up when a prototype was a
7238        dictionary, but instead we want un-dictionary heavily accessed
7239        prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
7240        a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
7241        is only releavant to for-in caching.
7242
72432009-10-16  Steve Falkenburg  <sfalken@apple.com>
7244
7245        Reviewed by Adam Roben.
7246
7247        Add a Debug_All configuration to build entire stack as debug.
7248        Change Debug_Internal to:
7249        - stop using _debug suffix for all WebKit/Safari binaries
7250        - not use _debug as a DLL naming suffix
7251        - use non-debug C runtime lib.
7252
7253        * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
7254        * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
7255        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
7256        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
7257        * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
7258        * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
7259        * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
7260        * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
7261
72622009-10-16  Oliver Hunt  <oliver@apple.com>
7263
7264        Reviewed by Gavin Barraclough.
7265
7266        Make typeinfo flags default to false
7267        https://bugs.webkit.org/show_bug.cgi?id=30372
7268
7269        Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
7270        flag.
7271
7272        * API/JSCallbackConstructor.h:
7273        (JSC::JSCallbackConstructor::createStructure):
7274        * API/JSCallbackObject.h:
7275        (JSC::JSCallbackObject::createStructure):
7276        * debugger/DebuggerActivation.h:
7277        (JSC::DebuggerActivation::createStructure):
7278        * runtime/Arguments.h:
7279        (JSC::Arguments::createStructure):
7280        * runtime/BooleanObject.h:
7281        (JSC::BooleanObject::createStructure):
7282        * runtime/DatePrototype.h:
7283        (JSC::DatePrototype::createStructure):
7284        * runtime/FunctionPrototype.h:
7285        (JSC::FunctionPrototype::createStructure):
7286        * runtime/GlobalEvalFunction.h:
7287        (JSC::GlobalEvalFunction::createStructure):
7288        * runtime/JSAPIValueWrapper.h:
7289        (JSC::JSAPIValueWrapper::createStructure):
7290        * runtime/JSActivation.h:
7291        (JSC::JSActivation::createStructure):
7292        * runtime/JSArray.h:
7293        (JSC::JSArray::createStructure):
7294        * runtime/JSByteArray.cpp:
7295        (JSC::JSByteArray::createStructure):
7296        * runtime/JSFunction.h:
7297        (JSC::JSFunction::createStructure):
7298        * runtime/JSGlobalObject.h:
7299        (JSC::JSGlobalObject::createStructure):
7300        * runtime/JSNotAnObject.h:
7301        (JSC::JSNotAnObject::createStructure):
7302        * runtime/JSONObject.h:
7303        (JSC::JSONObject::createStructure):
7304        * runtime/JSObject.cpp:
7305        (JSC::JSObject::getPropertyNames):
7306        * runtime/JSObject.h:
7307        (JSC::JSObject::createStructure):
7308        * runtime/JSStaticScopeObject.h:
7309        (JSC::JSStaticScopeObject::createStructure):
7310        * runtime/JSTypeInfo.h:
7311        (JSC::TypeInfo::overridesGetPropertyNames):
7312        * runtime/JSVariableObject.h:
7313        (JSC::JSVariableObject::createStructure):
7314        * runtime/JSWrapperObject.h:
7315        (JSC::JSWrapperObject::createStructure):
7316        * runtime/MathObject.h:
7317        (JSC::MathObject::createStructure):
7318        * runtime/NumberConstructor.h:
7319        (JSC::NumberConstructor::createStructure):
7320        * runtime/NumberObject.h:
7321        (JSC::NumberObject::createStructure):
7322        * runtime/RegExpConstructor.h:
7323        (JSC::RegExpConstructor::createStructure):
7324        * runtime/RegExpObject.h:
7325        (JSC::RegExpObject::createStructure):
7326        * runtime/StringObject.h:
7327        (JSC::StringObject::createStructure):
7328        * runtime/StringObjectThatMasqueradesAsUndefined.h:
7329        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
7330        * runtime/StructureChain.cpp:
7331        (JSC::StructureChain::isCacheable):
7332
73332009-10-16  Kevin Ollivier  <kevino@theolliviers.com>
7334
7335        wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion
7336        structure differs.
7337
7338        * wtf/Platform.h:
7339
73402009-10-16  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7341
7342        Reviewed by Simon Hausmann.
7343
7344        [Qt] Implement ExecutableAllocator for Symbian
7345        https://bugs.webkit.org/show_bug.cgi?id=29946
7346
7347        Tested with YARR JIT enabled for Symbian;
7348        This patch does not (yet) enable YARR JIT by default.
7349
7350        * JavaScriptCore.pri:
7351        * jit/ExecutableAllocator.h:
7352        * jit/ExecutableAllocatorSymbian.cpp: Added.
7353        (JSC::ExecutableAllocator::intializePageSize):
7354        (JSC::ExecutablePool::systemAlloc):
7355        (JSC::ExecutablePool::systemRelease):
7356
73572009-10-15  Oliver Hunt  <oliver@apple.com>
7358
7359        Reviewed by Darin Adler.
7360
7361        Make typeinfo flags default to false
7362        https://bugs.webkit.org/show_bug.cgi?id=30372
7363
7364        Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
7365
7366        * API/JSCallbackConstructor.h:
7367        (JSC::JSCallbackConstructor::createStructure):
7368        * API/JSCallbackFunction.h:
7369        (JSC::JSCallbackFunction::createStructure):
7370        * API/JSCallbackObject.h:
7371        (JSC::JSCallbackObject::createStructure):
7372        * debugger/DebuggerActivation.h:
7373        (JSC::DebuggerActivation::createStructure):
7374        * runtime/Arguments.h:
7375        (JSC::Arguments::createStructure):
7376        * runtime/BooleanObject.h:
7377        (JSC::BooleanObject::createStructure):
7378        * runtime/DatePrototype.h:
7379        (JSC::DatePrototype::createStructure):
7380        * runtime/FunctionPrototype.h:
7381        (JSC::FunctionPrototype::createStructure):
7382        * runtime/GetterSetter.h:
7383        (JSC::GetterSetter::createStructure):
7384        * runtime/GlobalEvalFunction.h:
7385        (JSC::GlobalEvalFunction::createStructure):
7386        * runtime/InternalFunction.h:
7387        (JSC::InternalFunction::createStructure):
7388        * runtime/JSAPIValueWrapper.h:
7389        (JSC::JSAPIValueWrapper::createStructure):
7390        * runtime/JSActivation.h:
7391        (JSC::JSActivation::createStructure):
7392        * runtime/JSArray.h:
7393        (JSC::JSArray::createStructure):
7394        (JSC::MarkStack::markChildren):
7395        * runtime/JSByteArray.cpp:
7396        (JSC::JSByteArray::createStructure):
7397        * runtime/JSFunction.h:
7398        (JSC::JSFunction::createStructure):
7399        * runtime/JSGlobalObject.h:
7400        (JSC::JSGlobalObject::createStructure):
7401        * runtime/JSNotAnObject.h:
7402        (JSC::JSNotAnObject::createStructure):
7403        * runtime/JSNumberCell.h:
7404        (JSC::JSNumberCell::createStructure):
7405        * runtime/JSONObject.h:
7406        (JSC::JSONObject::createStructure):
7407        * runtime/JSObject.h:
7408        (JSC::JSObject::createStructure):
7409        * runtime/JSPropertyNameIterator.h:
7410        (JSC::JSPropertyNameIterator::createStructure):
7411        * runtime/JSStaticScopeObject.h:
7412        (JSC::JSStaticScopeObject::createStructure):
7413        * runtime/JSString.h:
7414        (JSC::JSString::createStructure):
7415        * runtime/JSTypeInfo.h:
7416        (JSC::TypeInfo::overridesMarkChildren):
7417        * runtime/JSVariableObject.h:
7418        (JSC::JSVariableObject::createStructure):
7419        * runtime/JSWrapperObject.h:
7420        (JSC::JSWrapperObject::createStructure):
7421        * runtime/MathObject.h:
7422        (JSC::MathObject::createStructure):
7423        * runtime/NumberConstructor.h:
7424        (JSC::NumberConstructor::createStructure):
7425        * runtime/NumberObject.h:
7426        (JSC::NumberObject::createStructure):
7427        * runtime/RegExpConstructor.h:
7428        (JSC::RegExpConstructor::createStructure):
7429        * runtime/RegExpObject.h:
7430        (JSC::RegExpObject::createStructure):
7431        * runtime/StringObject.h:
7432        (JSC::StringObject::createStructure):
7433        * runtime/StringObjectThatMasqueradesAsUndefined.h:
7434        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
7435
74362009-10-14  Oliver Hunt  <oliver@apple.com>
7437
7438        Reviewed by Geoff Garen.
7439
7440        Make typeinfo flags default to false
7441        https://bugs.webkit.org/show_bug.cgi?id=30372
7442
7443        Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
7444
7445        * API/JSCallbackConstructor.h:
7446        (JSC::JSCallbackConstructor::createStructure):
7447        * API/JSCallbackFunction.h:
7448        (JSC::JSCallbackFunction::createStructure):
7449        * API/JSCallbackObject.h:
7450        (JSC::JSCallbackObject::createStructure):
7451        * debugger/DebuggerActivation.h:
7452        (JSC::DebuggerActivation::createStructure):
7453        * jit/JITStubs.cpp:
7454        (JSC::DEFINE_STUB_FUNCTION):
7455        * runtime/Arguments.h:
7456        (JSC::Arguments::createStructure):
7457        * runtime/BooleanObject.h:
7458        (JSC::BooleanObject::createStructure):
7459        * runtime/DatePrototype.h:
7460        (JSC::DatePrototype::createStructure):
7461        * runtime/FunctionPrototype.h:
7462        (JSC::FunctionPrototype::createStructure):
7463        * runtime/GlobalEvalFunction.h:
7464        (JSC::GlobalEvalFunction::createStructure):
7465        * runtime/InternalFunction.h:
7466        (JSC::InternalFunction::createStructure):
7467        * runtime/JSActivation.h:
7468        (JSC::JSActivation::createStructure):
7469        * runtime/JSArray.h:
7470        (JSC::JSArray::createStructure):
7471        * runtime/JSByteArray.cpp:
7472        (JSC::JSByteArray::createStructure):
7473        * runtime/JSFunction.h:
7474        (JSC::JSFunction::createStructure):
7475        * runtime/JSGlobalObject.h:
7476        (JSC::JSGlobalObject::createStructure):
7477        * runtime/JSNumberCell.h:
7478        (JSC::JSNumberCell::createStructure):
7479        * runtime/JSONObject.h:
7480        (JSC::JSONObject::createStructure):
7481        * runtime/JSObject.h:
7482        (JSC::JSObject::createStructure):
7483        (JSC::JSCell::fastGetOwnPropertySlot):
7484        * runtime/JSStaticScopeObject.h:
7485        (JSC::JSStaticScopeObject::createStructure):
7486        * runtime/JSString.h:
7487        (JSC::JSString::createStructure):
7488        * runtime/JSTypeInfo.h:
7489        (JSC::TypeInfo::overridesGetOwnPropertySlot):
7490        * runtime/JSVariableObject.h:
7491        (JSC::JSVariableObject::createStructure):
7492        * runtime/JSWrapperObject.h:
7493        (JSC::JSWrapperObject::createStructure):
7494        * runtime/MathObject.h:
7495        (JSC::MathObject::createStructure):
7496        * runtime/NumberConstructor.h:
7497        (JSC::NumberConstructor::createStructure):
7498        * runtime/NumberObject.h:
7499        (JSC::NumberObject::createStructure):
7500        * runtime/RegExpConstructor.h:
7501        (JSC::RegExpConstructor::createStructure):
7502        * runtime/RegExpObject.h:
7503        (JSC::RegExpObject::createStructure):
7504        * runtime/StringObject.h:
7505        (JSC::StringObject::createStructure):
7506        * runtime/StringObjectThatMasqueradesAsUndefined.h:
7507        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
7508
75092009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
75102009-10-14  Darin Adler  <darin@apple.com>
7511
7512        Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
7513        can build on Windows.
7514
7515        * wtf/MathExtras.h: Added llround and llroundf for Windows.
7516
75172009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
7518
7519        wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
7520
7521        * wtf/Platform.h:
7522
75232009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7524
7525        Reviewed by Simon Hausmann.
7526
7527        Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
7528        https://bugs.webkit.org/show_bug.cgi?id=30278
7529
7530        Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
7531        from the make system into common code.
7532
7533        * wtf/Platform.h:
7534
75352009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7536
7537        Reviewed by Darin Adler.
7538
7539        ARM compiler does not understand reinterpret_cast<void*>
7540        https://bugs.webkit.org/show_bug.cgi?id=29034
7541
7542        Change reinterpret_cast<void*> to regular C style (void*) cast
7543        for the ARM RVCT compiler.
7544
7545        * assembler/MacroAssemblerCodeRef.h:
7546        (JSC::FunctionPtr::FunctionPtr):
7547        * jit/JITOpcodes.cpp: Cast to FunctionPtr first
7548           instead of directly casting to reinterpret_cast
7549        * jit/JITStubCall.h: Ditto + change the type of m_stub
7550          from void* to FunctionPtr.
7551        (JSC::JITStubCall::JITStubCall):
7552        (JSC::JITStubCall::call):
7553        * jit/JITStubs.cpp: Ditto.
7554        (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
7555
75562009-10-11  Oliver Hunt  <oliver@apple.com>
7557
7558        Re-enable the JIT.
7559
7560        * wtf/Platform.h:
7561
75622009-10-10  Oliver Hunt  <oliver@apple.com>
7563
7564        Reviewed by Maciej Stachowiak.
7565
7566        Support for String.trim(), String.trimLeft() and String.trimRight() methods
7567        https://bugs.webkit.org/show_bug.cgi?id=26590
7568
7569        Implement trim, trimLeft, and trimRight
7570
7571        * runtime/StringPrototype.cpp:
7572        (JSC::isTrimWhitespace):
7573           Our normal string whitespace function does not include U+200B which
7574           is needed for compatibility with mozilla's implementation of trim.
7575           U+200B does not appear to be expected according to spec, however I am
7576           choosing to be lax, and match mozilla behavior so have added this
7577           exception.
7578        (JSC::trimString):
7579
75802009-10-09  Geoffrey Garen  <ggaren@apple.com>
7581
7582        Reviewed by Oliver Hunt.
7583
7584        Eliminated some legacy bytecode weirdness.
7585
7586        Use vPC[x] subscripting instead of ++vPC to access instruction operands.
7587        This is simpler, and often more efficient.
7588
7589        To support this, and to remove use of hard-coded offsets in bytecode and
7590        JIT code generation and dumping, calculate jump offsets from the beginning
7591        of an instruction, rather than the middle or end.
7592
7593        Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
7594        opcodes.
7595
7596        SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
7597        mode.
7598
7599        * bytecode/CodeBlock.cpp:
7600        (JSC::printConditionalJump):
7601        (JSC::CodeBlock::dump):
7602        * bytecompiler/BytecodeGenerator.cpp:
7603        (JSC::BytecodeGenerator::emitJump):
7604        (JSC::BytecodeGenerator::emitJumpIfTrue):
7605        (JSC::BytecodeGenerator::emitJumpIfFalse):
7606        (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
7607        (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
7608        (JSC::BytecodeGenerator::emitComplexJumpScopes):
7609        (JSC::BytecodeGenerator::emitJumpScopes):
7610        (JSC::BytecodeGenerator::emitNextPropertyName):
7611        (JSC::BytecodeGenerator::emitCatch):
7612        (JSC::BytecodeGenerator::emitJumpSubroutine):
7613        (JSC::prepareJumpTableForImmediateSwitch):
7614        (JSC::prepareJumpTableForCharacterSwitch):
7615        (JSC::prepareJumpTableForStringSwitch):
7616        (JSC::BytecodeGenerator::endSwitch):
7617        * bytecompiler/Label.h:
7618        (JSC::Label::setLocation):
7619        (JSC::Label::bind):
7620        * interpreter/Interpreter.cpp:
7621        (JSC::Interpreter::resolve):
7622        (JSC::Interpreter::resolveSkip):
7623        (JSC::Interpreter::resolveGlobal):
7624        (JSC::Interpreter::resolveBase):
7625        (JSC::Interpreter::resolveBaseAndProperty):
7626        (JSC::Interpreter::createExceptionScope):
7627        (JSC::Interpreter::privateExecute):
7628        * interpreter/Interpreter.h:
7629        * jit/JIT.cpp:
7630        (JSC::JIT::privateCompile):
7631        * jit/JITArithmetic.cpp:
7632        (JSC::JIT::emit_op_jnless):
7633        (JSC::JIT::emitSlow_op_jnless):
7634        (JSC::JIT::emit_op_jnlesseq):
7635        (JSC::JIT::emitSlow_op_jnlesseq):
7636        (JSC::JIT::emitBinaryDoubleOp):
7637        * jit/JITOpcodes.cpp:
7638        (JSC::JIT::emit_op_jmp):
7639        (JSC::JIT::emit_op_loop):
7640        (JSC::JIT::emit_op_loop_if_less):
7641        (JSC::JIT::emitSlow_op_loop_if_less):
7642        (JSC::JIT::emit_op_loop_if_lesseq):
7643        (JSC::JIT::emitSlow_op_loop_if_lesseq):
7644        (JSC::JIT::emit_op_loop_if_true):
7645        (JSC::JIT::emitSlow_op_loop_if_true):
7646        (JSC::JIT::emit_op_jfalse):
7647        (JSC::JIT::emitSlow_op_jfalse):
7648        (JSC::JIT::emit_op_jtrue):
7649        (JSC::JIT::emitSlow_op_jtrue):
7650        (JSC::JIT::emit_op_jeq_null):
7651        (JSC::JIT::emit_op_jneq_null):
7652        (JSC::JIT::emit_op_jneq_ptr):
7653        (JSC::JIT::emit_op_jsr):
7654        (JSC::JIT::emit_op_next_pname):
7655        (JSC::JIT::emit_op_jmp_scopes):
7656
76572009-10-09  Geoffrey Garen  <ggaren@apple.com>
7658
7659        Reviewed by Sam Weinig.
7660
7661        Migrated some code that didn't belong out of Structure.
7662
7663        SunSpider says maybe 1.03x faster.
7664
7665        * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
7666        a Structure's prototype the direct responsility of the object using it.
7667        (Giving Structure a mark function was misleading because it implied that
7668        all live structures get marked during GC, when they don't.)
7669
7670        * runtime/JSGlobalObject.cpp:
7671        (JSC::markIfNeeded):
7672        (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
7673        on the global object. Maybe this wasn't necessary, but now we don't have
7674        to wonder.
7675
7676        * runtime/JSObject.cpp:
7677        (JSC::JSObject::getPropertyNames):
7678        (JSC::JSObject::getOwnPropertyNames):
7679        (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
7680        * runtime/JSObject.h:
7681        (JSC::JSObject::markChildrenDirect):
7682        * runtime/PropertyNameArray.h:
7683        * runtime/Structure.cpp:
7684        * runtime/Structure.h:
7685        (JSC::Structure::setEnumerationCache):
7686        (JSC::Structure::enumerationCache): Moved property name gathering code
7687        from Structure to JSObject because having a Structure iterate its JSObject
7688        was a layering violation. A JSObject is implemented using a Structure; not
7689        the other way around.
7690
76912009-10-09  Mark Rowe  <mrowe@apple.com>
7692
7693        Attempt to fix the GTK release build.
7694
7695        * GNUmakefile.am: Include Grammar.cpp in release builds now that
7696        AllInOneFile.cpp is gone.
7697
76982009-10-09  Gabor Loki  <loki@inf.u-szeged.hu>
7699
7700        Rubber-stamped by Eric Seidel.
7701
7702        Add ARM JIT support for Gtk port (disabled by default)
7703        https://bugs.webkit.org/show_bug.cgi?id=30228
7704
7705        * GNUmakefile.am:
7706
77072009-10-08  Geoffrey Garen  <ggaren@apple.com>
7708
7709        Tiger build fix: added a few more variable initializations.
7710
7711        * runtime/StringPrototype.cpp:
7712        (JSC::stringProtoFuncReplace):
7713        (JSC::stringProtoFuncSearch):
7714
77152009-10-08  Geoffrey Garen  <ggaren@apple.com>
7716
7717        Qt build fix: added missing #include.
7718
7719        * jsc.cpp:
7720
77212009-10-08  Geoffrey Garen  <ggaren@apple.com>
7722
7723        Tiger build fix: initialize variable whose initialization the compiler
7724        can't otherwise figure out.
7725
7726        * runtime/RegExpObject.cpp:
7727        (JSC::RegExpObject::match):
7728
77292009-10-08  Geoffrey Garen  <ggaren@apple.com>
7730
7731        Windows build fix: updated exports.
7732
7733        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7734        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
7735
77362009-10-08  Geoffrey Garen  <ggaren@apple.com>
7737
7738        Tiger build fix: fixed file name case.
7739
7740        * JavaScriptCore.xcodeproj/project.pbxproj:
7741
77422009-10-08  Geoffrey Garen  <ggaren@apple.com>
7743
7744        Reviewed by Maciej Stachowiak.
7745
7746        At long last, I pronounce the death of AllInOneFile.cpp.
7747
7748        SunSpider reports a 1.01x speedup.
7749
7750        * AllInOneFile.cpp: Removed.
7751        * GNUmakefile.am:
7752        * JavaScriptCore.exp:
7753        * JavaScriptCore.gypi:
7754        * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
7755        to compilation stages.
7756
7757        * parser/Grammar.y:
7758        * parser/Lexer.cpp:
7759        * parser/Lexer.h:
7760        (JSC::jscyylex):
7761        * runtime/ArrayConstructor.cpp:
7762        (JSC::constructArrayWithSizeQuirk):
7763        * runtime/Collector.h:
7764        * runtime/JSCell.cpp:
7765        (JSC::JSCell::operator new):
7766        * runtime/JSCell.h:
7767        (JSC::JSCell::operator new):
7768        * runtime/JSGlobalObject.cpp:
7769        (JSC::JSGlobalObject::operator new):
7770        * runtime/JSNumberCell.h:
7771        (JSC::JSNumberCell::operator new):
7772        * runtime/JSString.cpp:
7773        * runtime/JSString.h:
7774        (JSC::jsString):
7775        (JSC::jsSubstring):
7776        (JSC::jsOwnedString):
7777        * runtime/RegExpConstructor.cpp:
7778        * runtime/RegExpConstructor.h:
7779        (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
7780        (JSC::RegExpConstructorPrivate::lastOvector):
7781        (JSC::RegExpConstructorPrivate::tempOvector):
7782        (JSC::RegExpConstructorPrivate::changeLastOvector):
7783        (JSC::RegExpConstructor::performMatch):
7784        * runtime/StringPrototype.cpp:
7785        (JSC::stringProtoFuncMatch):
7786        * yarr/RegexJIT.cpp:
7787        * yarr/RegexJIT.h:
7788        (JSC::Yarr::executeRegex): Inlined a few things that Shark said
7789        were hot, on the presumption that AllInOneFile.cpp used to inline them
7790        automatically.
7791
77922009-10-08  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
7793
7794        Reviewed by Gavin Barraclough.
7795
7796        Fix for JIT'ed op_call instructions (evals, constructs, etc.)
7797        when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
7798
7799        https://bugs.webkit.org/show_bug.cgi?id=30201
7800
7801        * jit/JITCall.cpp:
7802        (JSC::JIT::compileOpCall):
7803
78042009-10-07  Geoffrey Garen  <ggaren@apple.com>
7805
7806        Windows build fix: removed no longer exported symbol.
7807
7808        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7809        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
7810
78112009-10-07  Geoffrey Garen  <ggaren@apple.com>
7812
7813        Reviewed by Oliver Hunt.
7814
7815        Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
7816        thread, permanently slowing down JavaScript
7817
7818        Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
7819        since WebCore no longer uses it.
7820
7821        * JavaScriptCore.exp:
7822        * runtime/Collector.cpp:
7823        (JSC::Heap::protect):
7824        (JSC::Heap::unprotect):
7825        (JSC::Heap::markProtectedObjects):
7826        (JSC::Heap::protectedGlobalObjectCount):
7827        (JSC::Heap::protectedObjectCount):
7828        (JSC::Heap::protectedObjectTypeCounts):
7829        * runtime/Collector.h:
7830
78312009-10-07  Zoltan Horvath  <zoltan@webkit.org>
7832
7833        Reviewed by Darin Adler.
7834
7835        Allow custom memory allocation control for JavaScriptCore's IdentifierArena
7836        https://bugs.webkit.org/show_bug.cgi?id=30158
7837
7838        Inherits IdentifierArena class from FastAllocBase because it has been
7839        instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
7840
7841        * parser/ParserArena.h:
7842
78432009-10-07  Adam Roben  <aroben@apple.com>
7844
7845        Export DateInstance::info in a way that works on Windows
7846
7847        Fixes <http://webkit.org/b/30171>
7848        fast/dom/Window/window-postmessage-clone.html fails on Windows
7849
7850        Reviewed by Anders Carlsson.
7851
7852        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7853        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
7854        Removed the export of DateInstance::info from here.
7855
7856        * runtime/DateInstance.h: Use JS_EXPORTDATA to export
7857        DateInstance::info, which is the required way of exporting data on
7858        Windows.
7859
78602009-10-07  Jørgen Lind  <jorgen.lind@nokia.com>
7861
7862        Reviewed by Simon Hausmann.
7863
7864        When enabling or disabling the JIT through .qmake.cache, make sure
7865        to also toggle ENABLE_YARR_JIT.
7866
7867        * JavaScriptCore.pri:
7868
78692009-10-06  Priit Laes  <plaes@plaes.org>
7870
7871        Reviewed by Gavin Barraclough.
7872
7873        Linking fails with "relocation R_X86_64_PC32 against symbol
7874        `cti_vm_throw'"
7875        https://bugs.webkit.org/show_bug.cgi?id=28422
7876
7877        * jit/JITStubs.cpp:
7878        Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
7879        in text segment causing relocation errors on amd64 architecture.
7880        Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
7881
78822009-10-06  Oliver Hunt  <oliver@apple.com>
7883
7884        Windows linking fix
7885
7886        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7887        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
7888
78892009-10-06  Oliver Hunt  <oliver@apple.com>
7890
7891        Reviewed by NOBODY (build fix).
7892
7893        Windows build fix.
7894
7895        * runtime/DateInstance.cpp:
7896
78972009-10-05  Oliver Hunt  <oliver@apple.com>
7898
7899        Reviewed by Gavin Barraclough.
7900
7901        It should be possible to post (clone) built-in JS objects to Workers
7902        https://bugs.webkit.org/show_bug.cgi?id=22878
7903
7904        Expose helpers to throw correct exceptions during object graph walk
7905        used for cloning and add a helper function to create Date instances
7906        without going through the JS Date constructor function.
7907
7908        * JavaScriptCore.exp:
7909        * JavaScriptCore.xcodeproj/project.pbxproj:
7910        * runtime/DateInstance.cpp:
7911        (JSC::DateInstance::DateInstance):
7912        * runtime/DateInstance.h:
7913        * runtime/ExceptionHelpers.cpp:
7914        (JSC::createTypeError):
7915        * runtime/ExceptionHelpers.h:
7916
79172009-10-06  David Levin  <levin@chromium.org>
7918
7919        Reviewed by Oliver Hunt.
7920
7921        StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
7922        https://bugs.webkit.org/show_bug.cgi?id=30095
7923
7924        * wtf/CrossThreadRefCounted.h:
7925        Removed an unused function and assert improvement.
7926        (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
7927        (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
7928        (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
7929        (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
7930        non-threadsafe operation, add an assert that the class is owned by the current thread.
7931
79322009-10-05  Kevin Ollivier  <kevino@theolliviers.com>
7933
7934        wx build fix. Add Symbian files to the list of excludes.
7935
7936        * wscript:
7937
79382009-10-05  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
7939
7940        Reviewed by Simon Hausmann.
7941
7942        [Qt] Remove precompiled header from JavaScriptCore compilation to
7943        prevent qmake warning during autonomous compilation.
7944        https://bugs.webkit.org/show_bug.cgi?id=30069
7945
7946        * JavaScriptCore.pro:
7947
79482009-10-02  Geoffrey Garen  <ggaren@apple.com>
7949
7950        Reviewed by Sam Weinig.
7951
7952        Removed the concept of a "fast access cutoff" in arrays, because it
7953        punished some patterns of array access too much, and made things too
7954        complex for inlining in some cases.
7955
7956        1.3% speedup on SunSpider.
7957
7958        * jit/JITOpcodes.cpp:
7959        (JSC::JIT::emitSlow_op_get_by_val):
7960        (JSC::JIT::emitSlow_op_put_by_val):
7961        * jit/JITPropertyAccess.cpp:
7962        (JSC::JIT::emit_op_get_by_val):
7963        (JSC::JIT::emitSlow_op_get_by_val):
7964        (JSC::JIT::emit_op_put_by_val):
7965        (JSC::JIT::emitSlow_op_put_by_val):
7966        * jit/JITStubs.cpp:
7967        * jit/JITStubs.h:
7968        (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
7969        getting / putting from / to an array. Inline putting past the end of
7970        the array.
7971
7972        * runtime/JSArray.cpp:
7973        (JSC::JSArray::JSArray):
7974        (JSC::JSArray::getOwnPropertySlot):
7975        (JSC::JSArray::getOwnPropertyDescriptor):
7976        (JSC::JSArray::put):
7977        (JSC::JSArray::putSlowCase):
7978        (JSC::JSArray::deleteProperty):
7979        (JSC::JSArray::getOwnPropertyNames):
7980        (JSC::JSArray::increaseVectorLength):
7981        (JSC::JSArray::setLength):
7982        (JSC::JSArray::pop):
7983        (JSC::JSArray::push):
7984        (JSC::JSArray::sort):
7985        (JSC::JSArray::fillArgList):
7986        (JSC::JSArray::copyToRegisters):
7987        (JSC::JSArray::compactForSorting):
7988        (JSC::JSArray::checkConsistency):
7989        * runtime/JSArray.h:
7990        (JSC::JSArray::canGetIndex):
7991        (JSC::JSArray::canSetIndex):
7992        (JSC::JSArray::setIndex):
7993        (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
7994        replaced with checks for JSValue() to detect reads and writes from / to
7995        uninitialized parts of the array.
7996
79972009-10-02  Jonni Rainisto  <jonni.rainisto@nokia.com>
7998
7999        Reviewed by Darin Adler.
8000
8001        Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
8002        https://bugs.webkit.org/show_bug.cgi?id=29956
8003
8004        * wtf/RandomNumber.cpp:
8005        (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
8006
80072009-10-02  Geoffrey Garen  <ggaren@apple.com>
8008
8009        Reviewed by Sam Weinig.
8010
8011        Take one branch instead of two to test for JSValue().
8012
8013        1.1% SunSpider speedup.
8014
8015        * jit/JITCall.cpp:
8016        (JSC::JIT::compileOpCall):
8017        * jit/JITOpcodes.cpp:
8018        (JSC::JIT::emit_op_to_jsnumber):
8019        (JSC::JIT::emit_op_create_arguments):
8020        * jit/JITPropertyAccess.cpp:
8021        (JSC::JIT::emitSlow_op_get_by_val):
8022        (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
8023        of testing for the cell tag with a 0 payload.
8024
8025        * runtime/JSValue.cpp:
8026        (JSC::JSValue::description): Added support for dumping the new empty value,
8027        and deleted values, in debug builds.
8028
8029        * runtime/JSValue.h:
8030        (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
8031
8032        (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
8033        tag, to avoid having two different c++ versions of null / empty.
8034
8035        (JSC::JSValue::operator bool): Test for the empty value tag, instead
8036        of testing for the cell tag with a 0 payload.
8037
80382009-10-02  Steve Falkenburg  <sfalken@apple.com>
8039
8040        Reviewed by Mark Rowe.
8041
8042        <https://bugs.webkit.org/show_bug.cgi?id=29989>
8043        Safari version number shouldn't be exposed in WebKit code
8044
8045        For a WebKit version of 532.3.4:
8046        Product version is: 5.32.3.4 (was 4.0.3.0)
8047        File version is: 5.32.3.4 (was 4.532.3.4)
8048
8049        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
8050
80512009-10-02  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
8052
8053        Rubber-stamped by Simon Hausmann.
8054
8055        Fix the Qt on Mac OS X build.
8056
8057        * wtf/FastMalloc.cpp:
8058
80592009-10-02  Jørgen Lind  <jorgen.lind@nokia.com>
8060
8061        Reviewed by Simon Hausmann.
8062
8063        Allow enabling and disabling of the JIT through a qmake variable.
8064
8065        Qt's configure may set this variable through .qmake.cache if a
8066        commandline option is given and/or the compile test for hwcap.h
8067        failed/succeeded.
8068
8069        * JavaScriptCore.pri:
8070
80712009-10-01  Mark Rowe  <mrowe@apple.com>
8072
8073        Fix the Tiger build.  Don't unconditionally enable 3D canvas as it is not supported on Tiger.
8074
8075        * Configurations/FeatureDefines.xcconfig:
8076
80772009-10-01  Yongjun Zhang  <yongjun.zhang@nokia.com>
8078
8079        Reviewed by Darin Adler.
8080
8081        https://bugs.webkit.org/show_bug.cgi?id=29187
8082
8083        Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
8084        bug regarding templated classes.
8085
8086        The compiler bug is reported at:
8087        https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
8088
8089        The change will be reverted when the above bug is fixed in winscw compiler.
8090
8091        * wtf/ListRefPtr.h:
8092        (WTF::::~ListRefPtr):
8093
80942009-10-01  Zoltan Horvath  <zoltan@webkit.org>
8095
8096        Reviewed by Simon Hausmann.
8097
8098        [Qt] Allow custom memory allocation control for the whole JavaScriptCore
8099        https://bugs.webkit.org/show_bug.cgi?id=27029
8100
8101        Since in JavaScriptCore almost every class which has been instantiated by operator new is
8102        inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
8103        when USE_SYSTEM_MALLOC=0.
8104
8105        Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
8106        (It's needed for the functionality of TCmalloc.)
8107
8108        Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
8109
8110        * JavaScriptCore.pri:
8111        * wtf/FastMalloc.cpp:
8112        (WTF::sleep):
8113        * wtf/FastMalloc.h:
8114
81152009-09-30  Gabor Loki  <loki@inf.u-szeged.hu>
8116
8117        Reviewed by George Staikos.
8118
8119        Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
8120        https://bugs.webkit.org/show_bug.cgi?id=29122
8121
8122        Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
8123        macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
8124        when Thumb-2 instruction set is the required target. The
8125        PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
8126        case where the code is common the PLATFORM(ARM) have to be used.
8127
8128        Modified by George Wright  <gwright@rim.com> to correctly work
8129        with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
8130        compiler macros, as well as adding readability changes.
8131
8132        * wtf/Platform.h:
8133
81342009-09-30  Oliver Hunt  <oliver@apple.com>
8135
8136        Reviewed by Geoff Garen.
8137
8138        Devirtualise array toString conversion
8139
8140        Tweak the implementation of Array.prototype.toString to have a fast path
8141        when acting on a true JSArray.
8142
8143        * runtime/ArrayPrototype.cpp:
8144        (JSC::arrayProtoFuncToString):
8145
81462009-09-30  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
8147
8148        Reviewed by Geoffrey Garen.
8149
8150        Buildfix for platforms using JSVALUE32.
8151        https://bugs.webkit.org/show_bug.cgi?id=29915
8152
8153        After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
8154        Also removed unreachable code.
8155
8156        * jit/JITArithmetic.cpp:
8157        (JSC::JIT::emit_op_add):
8158         - Declaration of "OperandTypes types" moved before first use.
8159         - Typos fixed: dst modified to result, regT2 added.
8160         - Unreachable code removed.
8161        (JSC::JIT::emitSlow_op_add):
8162         - Missing declaration of "OperandTypes types" added.
8163
81642009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com>
8165
8166        Reviewed by Simon Hausmann.
8167
8168        Reduce heap size on Symbian from 64MB to 8MB.
8169
8170        This is not a perfect fix, it requires more fine tuning.
8171        But this makes it possible again to debug in the emulator,
8172        which is more important in order to be able to fix other
8173        run-time issues.
8174
8175        * runtime/Collector.h:
8176
81772009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com>
8178
8179        Reviewed by Simon Hausmann.
8180
8181        Fix CRASH() macro for Symbian build.
8182
8183        * wtf/Assertions.h: Added missing }
8184
81852009-09-29  Geoffrey Garen  <ggaren@apple.com>
8186
8187        Reviewed by Gavin Barraclough.
8188
8189        Inlined a few math operations.
8190
8191        ~1% SunSpider speedup.
8192
8193        * jit/JIT.h:
8194        * jit/JITArithmetic.cpp:
8195        (JSC::JIT::compileBinaryArithOpSlowCase):
8196        (JSC::JIT::emitSlow_op_add):
8197        (JSC::JIT::emitSlow_op_mul):
8198        (JSC::JIT::emit_op_sub):
8199        (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
8200        a constant int and a double.
8201
82022009-09-28  Oliver Hunt  <oliver@apple.com>
8203
8204        Reviewed by Gavin Barraclough.
8205
8206        Tidy up codeblock sampler
8207        https://bugs.webkit.org/show_bug.cgi?id=29836
8208
8209        Some rather simple refactoring of codeblock sampler so that
8210        it's easier for us to use it to find problems in non-jsc
8211        environments
8212
8213        * JavaScriptCore.exp:
8214        * bytecode/SamplingTool.h:
8215        * debugger/Debugger.cpp:
8216        (JSC::evaluateInGlobalCallFrame):
8217        * debugger/DebuggerCallFrame.cpp:
8218        (JSC::DebuggerCallFrame::evaluate):
8219        * interpreter/Interpreter.cpp:
8220        (JSC::Interpreter::Interpreter):
8221        (JSC::Interpreter::execute):
8222        (JSC::Interpreter::privateExecute):
8223        (JSC::Interpreter::enableSampler):
8224        (JSC::Interpreter::dumpSampleData):
8225        (JSC::Interpreter::startSampling):
8226        (JSC::Interpreter::stopSampling):
8227        * interpreter/Interpreter.h:
8228        (JSC::Interpreter::sampler):
8229        * jit/JIT.h:
8230        * jsc.cpp:
8231        (runWithScripts):
8232        * runtime/Completion.cpp:
8233        (JSC::checkSyntax):
8234        (JSC::evaluate):
8235        * runtime/Executable.h:
8236        (JSC::EvalExecutable::EvalExecutable):
8237        (JSC::ProgramExecutable::create):
8238        (JSC::ProgramExecutable::ProgramExecutable):
8239        * runtime/JSGlobalData.cpp:
8240        (JSC::JSGlobalData::startSampling):
8241        (JSC::JSGlobalData::stopSampling):
8242        (JSC::JSGlobalData::dumpSampleData):
8243        * runtime/JSGlobalData.h:
8244        * runtime/JSGlobalObjectFunctions.cpp:
8245        (JSC::globalFuncEval):
8246
82472009-09-29  Jeremy Orlow  <jorlow@chromium.org>
8248
8249        Reviewed by Dimitri Glazkov.
8250
8251        Add GYP generated files to svn:ignore
8252        https://bugs.webkit.org/show_bug.cgi?id=29895
8253
8254        The following files are generated by JavaScriptCore's GYP file and should be ignored:
8255
8256        pcre.mk
8257        wtf.scons
8258        wtf.mk
8259        SConstruct
8260        wtf_config.scons
8261        wtf_config.mk
8262        pcre.scons
8263
8264        * JavaScriptCore.gyp: Changed property svn:ignore.
8265
82662009-09-29  Geoffrey Garen  <ggaren@apple.com>
8267
8268        Reviewed by Sam Weinig.
8269
8270        Standardized an optimization for adding non-numbers.
8271
8272        SunSpider says maybe a tiny speedup.
8273
8274        * jit/JITArithmetic.cpp:
8275        (JSC::JIT::emit_op_add):
8276        (JSC::JIT::emitSlow_op_add):
8277
82782009-09-29  Geoffrey Garen  <ggaren@apple.com>
8279
8280        Windows build fix: export a new symbol.
8281
8282        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8283        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
8284
82852009-09-28  Geoffrey Garen  <ggaren@apple.com>
8286
8287        Reviewed by Sam Weinig.
8288
8289        Removed virtual destructor from JSGlobalObjectData to eliminate pointer
8290        fix-ups when accessing JSGlobalObject::d.
8291
8292        Replaced with an explicit destructor function pointer.
8293
8294        6% speedup on bench-alloc-nonretained.js.
8295
8296        * JavaScriptCore.exp:
8297        * runtime/JSGlobalObject.cpp:
8298        (JSC::JSGlobalObject::~JSGlobalObject):
8299        (JSC::JSGlobalObject::destroyJSGlobalObjectData):
8300        * runtime/JSGlobalObject.h:
8301        (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
8302        (JSC::JSGlobalObject::JSGlobalObject):
8303
83042009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
8305
8306        Reviewed by David Kilzer.
8307
8308        [Qt] Assert messages prints visible in Symbian
8309        https://bugs.webkit.org/show_bug.cgi?id=29808
8310
8311        Asserts use vprintf to print the messages to stderr.
8312        In Symbian Open C it is not possible to see stderr so
8313        I routed the messages to stdout instead.
8314
8315        * wtf/Assertions.cpp:
8316
83172009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
8318
8319        Reviewed by Darin Adler.
8320
8321        [Qt] Symbian CRASH macro implementation
8322
8323        Added Symbian specific crash macro that
8324        stops to crash line if JIT debugging is used.
8325        Additional differentiation of access violation
8326        (KERN-EXEC 3) and CRASH panic.
8327
8328        * wtf/Assertions.h:
8329
83302009-09-28  Mark Rowe  <mrowe@apple.com>
8331
8332        Fix the PowerPC build.
8333
8334        * JavaScriptCore.exp:
8335
83362009-09-28  Mark Rowe  <mrowe@apple.com>
8337
8338        Reviewed by Gavin Barraclough.
8339
8340        <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
8341
8342        * runtime/Collector.cpp:
8343        (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
8344        to ensure that we correctly interpret the contents of registers during marking.
8345
83462009-09-28  Geoffrey Garen  <ggaren@apple.com>
8347
8348        Windows build fix: added new exports.
8349
8350        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8351        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
8352
83532009-09-28  Geoffrey Garen  <ggaren@apple.com>
8354
8355        Windows build fix: removed exports that no longer exist.
8356
8357        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8358        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
8359
83602009-09-28  Geoffrey Garen  <ggaren@apple.com>
8361
8362        Reviewed by Darin Adler.
8363
8364        NotNullPassRefPtr: smart pointer optimized for passing references that are not null
8365        https://bugs.webkit.org/show_bug.cgi?id=29822
8366
8367        Added NotNullPassRefPtr, and deployed it in all places that initialize
8368        JavaScript objects.
8369
8370        2.2% speedup on bench-allocate-nonretained.js.
8371
8372        * API/JSCallbackConstructor.cpp:
8373        (JSC::JSCallbackConstructor::JSCallbackConstructor):
8374        * API/JSCallbackConstructor.h:
8375        * API/JSCallbackObject.h:
8376        * API/JSCallbackObjectFunctions.h:
8377        (JSC::JSCallbackObject::JSCallbackObject):
8378        * JavaScriptCore.exp:
8379        * bytecode/CodeBlock.h:
8380        (JSC::CodeBlock::addFunctionDecl):
8381        (JSC::CodeBlock::addFunctionExpr):
8382        * runtime/ArrayConstructor.cpp:
8383        (JSC::ArrayConstructor::ArrayConstructor):
8384        * runtime/ArrayConstructor.h:
8385        * runtime/ArrayPrototype.cpp:
8386        (JSC::ArrayPrototype::ArrayPrototype):
8387        * runtime/ArrayPrototype.h:
8388        * runtime/BooleanConstructor.cpp:
8389        (JSC::BooleanConstructor::BooleanConstructor):
8390        * runtime/BooleanConstructor.h:
8391        * runtime/BooleanObject.cpp:
8392        (JSC::BooleanObject::BooleanObject):
8393        * runtime/BooleanObject.h:
8394        * runtime/BooleanPrototype.cpp:
8395        (JSC::BooleanPrototype::BooleanPrototype):
8396        * runtime/BooleanPrototype.h:
8397        * runtime/DateConstructor.cpp:
8398        (JSC::DateConstructor::DateConstructor):
8399        * runtime/DateConstructor.h:
8400        * runtime/DateInstance.cpp:
8401        (JSC::DateInstance::DateInstance):
8402        * runtime/DateInstance.h:
8403        * runtime/DatePrototype.cpp:
8404        (JSC::DatePrototype::DatePrototype):
8405        * runtime/DatePrototype.h:
8406        * runtime/ErrorConstructor.cpp:
8407        (JSC::ErrorConstructor::ErrorConstructor):
8408        * runtime/ErrorConstructor.h:
8409        * runtime/ErrorInstance.cpp:
8410        (JSC::ErrorInstance::ErrorInstance):
8411        * runtime/ErrorInstance.h:
8412        * runtime/ErrorPrototype.cpp:
8413        (JSC::ErrorPrototype::ErrorPrototype):
8414        * runtime/ErrorPrototype.h:
8415        * runtime/FunctionConstructor.cpp:
8416        (JSC::FunctionConstructor::FunctionConstructor):
8417        * runtime/FunctionConstructor.h:
8418        * runtime/FunctionPrototype.cpp:
8419        (JSC::FunctionPrototype::FunctionPrototype):
8420        * runtime/FunctionPrototype.h:
8421        * runtime/GlobalEvalFunction.cpp:
8422        (JSC::GlobalEvalFunction::GlobalEvalFunction):
8423        * runtime/GlobalEvalFunction.h:
8424        * runtime/InternalFunction.cpp:
8425        (JSC::InternalFunction::InternalFunction):
8426        * runtime/InternalFunction.h:
8427        (JSC::InternalFunction::InternalFunction):
8428        * runtime/JSActivation.cpp:
8429        (JSC::JSActivation::JSActivation):
8430        * runtime/JSActivation.h:
8431        (JSC::JSActivation::JSActivationData::JSActivationData):
8432        * runtime/JSArray.cpp:
8433        (JSC::JSArray::JSArray):
8434        * runtime/JSArray.h:
8435        * runtime/JSByteArray.cpp:
8436        (JSC::JSByteArray::JSByteArray):
8437        * runtime/JSByteArray.h:
8438        * runtime/JSFunction.cpp:
8439        (JSC::JSFunction::JSFunction):
8440        * runtime/JSFunction.h:
8441        * runtime/JSGlobalObject.h:
8442        (JSC::JSGlobalObject::JSGlobalObject):
8443        * runtime/JSONObject.h:
8444        (JSC::JSONObject::JSONObject):
8445        * runtime/JSObject.h:
8446        (JSC::JSObject::JSObject):
8447        (JSC::JSObject::setStructure):
8448        * runtime/JSVariableObject.h:
8449        (JSC::JSVariableObject::JSVariableObject):
8450        * runtime/JSWrapperObject.h:
8451        (JSC::JSWrapperObject::JSWrapperObject):
8452        * runtime/MathObject.cpp:
8453        (JSC::MathObject::MathObject):
8454        * runtime/MathObject.h:
8455        * runtime/NativeErrorConstructor.cpp:
8456        (JSC::NativeErrorConstructor::NativeErrorConstructor):
8457        * runtime/NativeErrorConstructor.h:
8458        * runtime/NativeErrorPrototype.cpp:
8459        (JSC::NativeErrorPrototype::NativeErrorPrototype):
8460        * runtime/NativeErrorPrototype.h:
8461        * runtime/NumberConstructor.cpp:
8462        (JSC::NumberConstructor::NumberConstructor):
8463        * runtime/NumberConstructor.h:
8464        * runtime/NumberObject.cpp:
8465        (JSC::NumberObject::NumberObject):
8466        * runtime/NumberObject.h:
8467        * runtime/NumberPrototype.cpp:
8468        (JSC::NumberPrototype::NumberPrototype):
8469        * runtime/NumberPrototype.h:
8470        * runtime/ObjectConstructor.cpp:
8471        (JSC::ObjectConstructor::ObjectConstructor):
8472        * runtime/ObjectConstructor.h:
8473        * runtime/ObjectPrototype.cpp:
8474        (JSC::ObjectPrototype::ObjectPrototype):
8475        * runtime/ObjectPrototype.h:
8476        * runtime/PropertyNameArray.h:
8477        (JSC::PropertyNameArrayData::setCachedPrototypeChain):
8478        * runtime/PrototypeFunction.cpp:
8479        (JSC::PrototypeFunction::PrototypeFunction):
8480        * runtime/PrototypeFunction.h:
8481        * runtime/RegExpConstructor.cpp:
8482        (JSC::RegExpConstructor::RegExpConstructor):
8483        * runtime/RegExpConstructor.h:
8484        * runtime/RegExpObject.cpp:
8485        (JSC::RegExpObject::RegExpObject):
8486        * runtime/RegExpObject.h:
8487        (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
8488        * runtime/RegExpPrototype.cpp:
8489        (JSC::RegExpPrototype::RegExpPrototype):
8490        * runtime/RegExpPrototype.h:
8491        * runtime/StringConstructor.cpp:
8492        (JSC::StringConstructor::StringConstructor):
8493        * runtime/StringConstructor.h:
8494        * runtime/StringObject.cpp:
8495        (JSC::StringObject::StringObject):
8496        * runtime/StringObject.h:
8497        * runtime/StringObjectThatMasqueradesAsUndefined.h:
8498        (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
8499        * runtime/StringPrototype.cpp:
8500        (JSC::StringPrototype::StringPrototype):
8501        * runtime/StringPrototype.h:
8502        * wtf/PassRefPtr.h:
8503        (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
8504        (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
8505        (WTF::NotNullPassRefPtr::get):
8506        (WTF::NotNullPassRefPtr::clear):
8507        (WTF::NotNullPassRefPtr::releaseRef):
8508        (WTF::NotNullPassRefPtr::operator*):
8509        (WTF::NotNullPassRefPtr::operator->):
8510        (WTF::NotNullPassRefPtr::operator!):
8511        (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
8512        * wtf/RefPtr.h:
8513        (WTF::RefPtr::RefPtr):
8514        (WTF::operator==):
8515
85162009-09-28  Oliver Hunt  <oliver@apple.com>
8517
8518        Reviewed by Geoff Garen.
8519
8520        Hard dependency on SSE2 instruction set with JIT
8521        https://bugs.webkit.org/show_bug.cgi?id=29779
8522
8523        Add floating point support checks to op_jfalse and op_jtrue, and
8524        fix the logic for the slow case of op_add
8525
8526        * jit/JITArithmetic.cpp:
8527        (JSC::JIT::emitSlow_op_add):
8528        * jit/JITOpcodes.cpp:
8529        (JSC::JIT::emit_op_jfalse):
8530        (JSC::JIT::emit_op_jtrue):
8531
85322009-09-28  Yaar Schnitman  <yaar@chromium.org>
8533
8534        Reviewed by Dimitri Glazkov.
8535
8536        Chromium port - recognize we are being built independently
8537        of chromium and look for dependencies under webkit/chromium rather
8538        than chromium/src.
8539
8540        https://bugs.webkit.org/show_bug.cgi?id=29722
8541
8542        * JavaScriptCore.gyp/JavaScriptCore.gyp:
8543
85442009-09-28  Jakub Wieczorek  <faw217@gmail.com>
8545
8546        Reviewed by Simon Hausmann.
8547
8548        [Qt] Implement XSLT support with QtXmlPatterns.
8549        https://bugs.webkit.org/show_bug.cgi?id=28303
8550
8551        * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
8552
85532009-09-28  Gabor Loki  <loki@inf.u-szeged.hu>
8554
8555        Reviewed by Simon Hausmann.
8556
8557        Remove __clear_cache which is an internal function of GCC
8558        https://bugs.webkit.org/show_bug.cgi?id=28886
8559
8560        Although __clear_cache is exported from GCC, this is an internal
8561        function. GCC makes no promises about it.
8562
8563        * jit/ExecutableAllocator.h:
8564        (JSC::ExecutableAllocator::cacheFlush):
8565
85662009-09-28  Sam Weinig  <sam@webkit.org>
8567
8568        Reviewed by Oliver Hunt.
8569
8570        Fix an absolute path to somewhere in Oliver's machine to a relative path
8571        for derived JSONObject.lut.h.
8572
8573        * JavaScriptCore.xcodeproj/project.pbxproj:
8574
85752009-09-28  Joerg Bornemann  <joerg.bornemann@nokia.com>
8576
8577        Reviewed by Simon Hausmann.
8578
8579        Add ARM version detection for Windows CE.
8580
8581        * wtf/Platform.h:
8582
85832009-09-26  Yongjun Zhang  <yongjun.zhang@nokia.com>
8584
8585        Reviewed by Simon Hausmann.
8586
8587        Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
8588
8589        Re-use Windows shrinkAllocation implementation because Symbian doesn't
8590        support releasing part of memory region.
8591
8592        Use fastMalloc and fastFree to implement allocateStack and releaseStack
8593        for Symbian port.
8594
8595        * JavaScriptCore.pri:
8596        * runtime/MarkStack.h:
8597        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
8598        * runtime/MarkStackSymbian.cpp: Added.
8599        (JSC::MarkStack::initializePagesize):
8600        (JSC::MarkStack::allocateStack):
8601        (JSC::MarkStack::releaseStack):
8602
86032009-09-25  Gabor Loki  <loki@inf.u-szeged.hu>
8604
8605        Reviewed by Gavin Barraclough.
8606
8607        Fix unaligned data access in YARR_JIT on ARMv5 and below.
8608        https://bugs.webkit.org/show_bug.cgi?id=29695
8609
8610        On ARMv5 and below all data access should be naturally aligned.
8611        In the YARR_JIT there is a case when character pairs are
8612        loaded from the input string, but this data access is not
8613        naturally aligned. This fix introduces load32WithUnalignedHalfWords
8614        and branch32WithUnalignedHalfWords functions which contain
8615        naturally aligned memory loads - half word loads - on ARMv5 and below.
8616
8617        * assembler/MacroAssemblerARM.cpp:
8618        (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
8619        * assembler/MacroAssemblerARM.h:
8620        (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
8621        (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
8622        * assembler/MacroAssemblerARMv7.h:
8623        (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
8624        (JSC::MacroAssemblerARMv7::branch32):
8625        (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
8626        * assembler/MacroAssemblerX86Common.h:
8627        (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
8628        (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
8629        * wtf/Platform.h:
8630        * yarr/RegexJIT.cpp:
8631        (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
8632
86332009-09-25  Jeremy Orlow  <jorlow@chromium.org>
8634
8635        This is breaking Chromium try bots, so I'm counting this as a build fix.
8636
8637        Add more svn:ignore exceptions.  On different platforms, these files are
8638        generated with different case for JavaScriptCore.  Also there are some
8639        wtf project files that get built apparently.
8640
8641        * JavaScriptCore.gyp: Changed property svn:ignore.
8642
86432009-09-25  Ada Chan  <adachan@apple.com>
8644
8645        Build fix.
8646
8647        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8648        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
8649
86502009-09-25  Geoffrey Garen  <ggaren@apple.com>
8651
8652        Reviewed by Darin Adler.
8653
8654        Inlined some object creation code, including lexicalGlobalObject access
8655        https://bugs.webkit.org/show_bug.cgi?id=29750
8656
8657        SunSpider says 0.5% faster.
8658
8659        0.8% speedup on bench-alloc-nonretained.js.
8660        2.5% speedup on v8-splay.js.
8661
8662        * interpreter/CachedCall.h:
8663        (JSC::CachedCall::CachedCall):
8664        * interpreter/CallFrame.h:
8665        (JSC::ExecState::lexicalGlobalObject):
8666        (JSC::ExecState::globalThisValue):
8667        * interpreter/Interpreter.cpp:
8668        (JSC::Interpreter::dumpRegisters):
8669        (JSC::Interpreter::execute):
8670        (JSC::Interpreter::privateExecute):
8671        * jit/JITStubs.cpp:
8672        (JSC::DEFINE_STUB_FUNCTION):
8673        * runtime/FunctionConstructor.cpp:
8674        (JSC::constructFunction):
8675        * runtime/ScopeChain.cpp:
8676        (JSC::ScopeChainNode::print):
8677        * runtime/ScopeChain.h:
8678        (JSC::ScopeChainNode::ScopeChainNode):
8679        (JSC::ScopeChainNode::~ScopeChainNode):
8680        (JSC::ScopeChainNode::push):
8681        (JSC::ScopeChain::ScopeChain):
8682        (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
8683        Replaced accessor function for globalObject() with data member. Replaced
8684        globalThisObject() accessor with direct access to globalThis, to match.
8685
8686        * runtime/JSGlobalObject.cpp:
8687        (JSC::JSGlobalObject::init):
8688        * runtime/JSGlobalObject.h: Inlined array and object construction.
8689
86902009-09-25  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
8691
8692        Reviewed by Gavin Barraclough.
8693
8694        Add ARM version detection rules for Symbian
8695        https://bugs.webkit.org/show_bug.cgi?id=29715
8696
8697        * wtf/Platform.h:
8698
86992009-09-24  Xan Lopez  <xlopez@igalia.com>
8700
8701        Reviewed by Mark "Do It!" Rowe.
8702
8703        Some GCC versions don't like C++-style comments in preprocessor
8704        directives, change to C-style to shut them up.
8705
8706        * wtf/Platform.h:
8707
87082009-09-24  Oliver Hunt  <oliver@apple.com>
8709
8710        Reviewed by Gavin Barraclough.
8711
8712        Division is needlessly slow in 64-bit
8713        https://bugs.webkit.org/show_bug.cgi?id=29723
8714
8715        Add codegen for op_div on x86-64
8716
8717        * jit/JIT.cpp:
8718        (JSC::JIT::privateCompileMainPass):
8719        (JSC::JIT::privateCompileSlowCases):
8720        * jit/JIT.h:
8721        * jit/JITArithmetic.cpp:
8722        (JSC::JIT::compileBinaryArithOpSlowCase):
8723        (JSC::JIT::emit_op_div):
8724        (JSC::JIT::emitSlow_op_div):
8725        * jit/JITInlineMethods.h:
8726        (JSC::JIT::isOperandConstantImmediateDouble):
8727        (JSC::JIT::addressFor):
8728        (JSC::JIT::emitLoadDouble):
8729        (JSC::JIT::emitLoadInt32ToDouble):
8730        (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
8731
87322009-09-24  Jeremy Orlow  <jorlow@chromium.org>
8733
8734        Reviewed by Dimitri Glazkov.
8735
8736        Add GYP generated files to svn:ignore
8737        https://bugs.webkit.org/show_bug.cgi?id=29724
8738
8739        Adding the following files to the svn:ignore list (all in the
8740        JavaScriptCore/JavaScriptCore.gyp directory)
8741
8742        JavaScriptCore.xcodeproj
8743        JavaScriptCore.sln
8744        JavaScriptCore.vcproj
8745        JavaScriptCore_Debug.rules
8746        JavaScriptCore_Release.rules
8747        JavaScriptCore_Release - no tcmalloc.rules
8748        JavaScriptCore_Purify.rules
8749        JavaScriptCore.mk
8750        JavaScriptCore_Debug_rules.mk
8751        JavaScriptCore_Release_rules.mk
8752        JavaScriptCore_Release - no tcmalloc_rules.mk
8753        JavaScriptCore_Purify_rules.mk
8754        JavaScriptCore.scons
8755        JavaScriptCore_main.scons
8756
8757        * JavaScriptCore.gyp: Changed property svn:ignore.
8758
87592009-09-24  Yong Li  <yong.li@torchmobile.com>
8760
8761        Reviewed by Adam Barth.
8762
8763        Replace platform-dependent code with WTF::currentTime()
8764        https://bugs.webkit.org/show_bug.cgi?id=29148
8765
8766        * jsc.cpp:
8767        (StopWatch::start):
8768        (StopWatch::stop):
8769        (StopWatch::getElapsedMS):
8770        * runtime/TimeoutChecker.cpp:
8771        (JSC::getCPUTime):
8772
87732009-09-24  Mark Rowe  <mrowe@apple.com>
8774
8775        Reviewed by Sam Weinig.
8776
8777        <rdar://problem/7215058> FastMalloc scavenging thread should be named
8778
8779        * wtf/FastMalloc.cpp:
8780        (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
8781        * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
8782        * wtf/ThreadingPthreads.cpp:
8783        (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
8784
87852009-09-24  Geoffrey Garen  <ggaren@apple.com>
8786
8787        Reviewed by Sam Weinig.
8788
8789        Renamed clear to removeAll, as suggested by Darin Adler.
8790
8791        * wtf/HashCountedSet.h:
8792        (WTF::::removeAll):
8793
87942009-09-24  Mark Rowe  <mrowe@apple.com>
8795
8796        Reviewed by Gavin Barraclough.
8797
8798        Fix FastMalloc to build with assertions enabled.
8799
8800        * wtf/FastMalloc.cpp:
8801        (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
8802        * wtf/TCSpinLock.h:
8803        (TCMalloc_SpinLock::IsHeld):
8804
88052009-09-24  Geoffrey Garen  <ggaren@apple.com>
8806
8807        Suggested by Darin Adler.
8808
8809        Removed some unnecessary parameter names.
8810
8811        * wtf/HashCountedSet.h:
8812
88132009-09-24  Janne Koskinen  <janne.p.koskinen@digia.com>
8814
8815        Reviewed by Simon Hausmann.
8816
8817        On Windows JSChar is typedef'ed to wchar_t.
8818
8819        When building with WINSCW for Symbian we need to do the
8820        same typedef.
8821
8822        * API/JSStringRef.h:
8823
88242009-09-23  Geoffrey Garen  <ggaren@apple.com>
8825
8826        A piece of my last patch that I forgot.
8827
8828        * wtf/HashCountedSet.h:
8829        (WTF::::clear): Added HashCountedSet::clear.
8830
88312009-09-24  Gabor Loki  <loki@inf.u-szeged.hu>
8832
8833        Reviewed by Gavin Barraclough.
8834
8835        Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
8836        https://bugs.webkit.org/show_bug.cgi?id=28886
8837
8838        There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
8839        which contain __clear_cache built-in function only for C while the C++
8840        version of __clear_cache is missing on ARM architectures.
8841
8842        Fixed a small bug in the inline assembly of cacheFlush function on
8843        ARM_TRADITIONAL.
8844
8845        * jit/ExecutableAllocator.h:
8846        (JSC::ExecutableAllocator::cacheFlush):
8847
88482009-09-23  Geoffrey Garen  <ggaren@apple.com>
8849
8850        Reviewed by Sam Weinig.
8851
8852        Added the ability to swap vectors with inline capacities, so you can
8853        store a vector with inline capacity in a hash table.
8854
8855        * wtf/Vector.h:
8856        (WTF::swap):
8857        (WTF::VectorBuffer::swap):
8858
88592009-09-23  David Kilzer  <ddkilzer@apple.com>
8860
8861        Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
8862
8863        Reviewed by Mark Rowe.
8864
8865        * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
8866        building on 64-bit SnowLeopard.  Define to 0 elsewhere.
8867
88682009-09-22  Oliver Hunt  <oliver@apple.com>
8869
8870        Reviewed by Geoff Garen.
8871
8872        Code sampling builds are broken.
8873        https://bugs.webkit.org/show_bug.cgi?id=29662
8874
8875        Fix build.
8876
8877        * bytecode/EvalCodeCache.h:
8878        (JSC::EvalCodeCache::get):
8879        * bytecode/SamplingTool.cpp:
8880        (JSC::ScriptSampleRecord::sample):
8881        (JSC::SamplingTool::doRun):
8882        (JSC::SamplingTool::notifyOfScope):
8883        (JSC::compareScriptSampleRecords):
8884        (JSC::SamplingTool::dump):
8885        * bytecode/SamplingTool.h:
8886        (JSC::ScriptSampleRecord::ScriptSampleRecord):
8887        (JSC::ScriptSampleRecord::~ScriptSampleRecord):
8888        (JSC::SamplingTool::SamplingTool):
8889        * bytecompiler/BytecodeGenerator.cpp:
8890        (JSC::BytecodeGenerator::BytecodeGenerator):
8891        (JSC::BytecodeGenerator::emitNewFunction):
8892        (JSC::BytecodeGenerator::emitNewFunctionExpression):
8893        * bytecompiler/BytecodeGenerator.h:
8894        (JSC::BytecodeGenerator::makeFunction):
8895        * debugger/Debugger.cpp:
8896        (JSC::evaluateInGlobalCallFrame):
8897        * debugger/DebuggerCallFrame.cpp:
8898        (JSC::DebuggerCallFrame::evaluate):
8899        * parser/Nodes.cpp:
8900        (JSC::ScopeNode::ScopeNode):
8901        * runtime/Completion.cpp:
8902        (JSC::checkSyntax):
8903        (JSC::evaluate):
8904        * runtime/Executable.cpp:
8905        (JSC::FunctionExecutable::fromGlobalCode):
8906        * runtime/Executable.h:
8907        (JSC::ScriptExecutable::ScriptExecutable):
8908        (JSC::EvalExecutable::EvalExecutable):
8909        (JSC::EvalExecutable::create):
8910        (JSC::ProgramExecutable::ProgramExecutable):
8911        (JSC::FunctionExecutable::create):
8912        (JSC::FunctionExecutable::FunctionExecutable):
8913        * runtime/JSGlobalObjectFunctions.cpp:
8914        (JSC::globalFuncEval):
8915
89162009-09-22  Darin Adler  <darin@apple.com>
8917
8918        Reviewed by Sam Weinig.
8919
8920        * wtf/Forward.h: Added PassOwnPtr.
8921
89222009-09-22  Yaar Schnitman  <yaar@chromium.org>
8923
8924        Reviewed by David Levin.
8925
8926        Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
8927
8928        https://bugs.webkit.org/show_bug.cgi?id=29617
8929
8930        * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
8931
89322009-09-22  Thiago Macieira  <thiago.macieira@nokia.com>
8933
8934        Reviewed by Simon Hausmann.
8935
8936        Fix compilation with WINSCW: no varargs macros
8937
8938        Disable variadic arguments for WINSCW just like we do
8939        for MSVC7.
8940
8941        * wtf/Assertions.h:
8942
89432009-09-22  Kent Hansen  <khansen@trolltech.com>
8944
8945        Reviewed by Simon Hausmann.
8946
8947        Disable variadic macros on MSVC7.
8948
8949        This was originally added in r26589 but not extended
8950        when LOG_DISABLED/ASSERT_DISABLED was introduced.
8951
8952        * wtf/Assertions.h:
8953
89542009-09-22  Simon Hausmann  <simon.hausmann@nokia.com>
8955
8956        Unreviewed build fix for Windows CE < 5
8957
8958        Define WINCEBASIC to disable the IsDebuggerPresent() code in
8959        wtf/Assertions.cpp.
8960
8961        * JavaScriptCore.pri:
8962
89632009-09-22  Joerg Bornemann  <joerg.bornemann@nokia.com>
8964
8965        Reviewed by Simon Hausmann.
8966
8967        Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
8968
8969        https://bugs.webkit.org/show_bug.cgi?id=29367
8970
8971        On Widows CE we must decommit all committed pages before we release
8972        them. See VirtualFree documentation.
8973        Desktop Windows behaves much smoother in this situation.
8974
8975        * interpreter/RegisterFile.cpp:
8976        (JSC::RegisterFile::~RegisterFile):
8977
89782009-09-21  Greg Bolsinga  <bolsinga@apple.com>
8979
8980        Reviewed by Simon Fraser & Sam Weinig.
8981
8982        Add ENABLE(ORIENTATION_EVENTS)
8983        https://bugs.webkit.org/show_bug.cgi?id=29508
8984
8985        * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
8986
89872009-09-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
8988
8989        Reviewed by Eric Seidel.
8990
8991        [Fix] SourceCode's uninitialized member
8992
8993        Potential source of crashes and bugs was fixed. Default constructor
8994        didn't initialized m_provider member.
8995
8996        https://bugs.webkit.org/show_bug.cgi?id=29364
8997
8998        * parser/SourceCode.h:
8999        (JSC::SourceCode::SourceCode):
9000
90012009-09-21  Oliver Hunt  <oliver@apple.com>
9002
9003        Reviewed by Geoff Garen.
9004
9005        REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
9006        https://bugs.webkit.org/show_bug.cgi?id=29599
9007
9008        It is unsafe to attempt to cache new property transitions on
9009        dictionaries of any type.
9010
9011        * interpreter/Interpreter.cpp:
9012        (JSC::Interpreter::tryCachePutByID):
9013        * jit/JITStubs.cpp:
9014        (JSC::JITThunks::tryCachePutByID):
9015
90162009-09-21  Oliver Hunt  <oliver@apple.com>
9017
9018        RS=Maciej Stachowiak.
9019
9020        Re-land SNES fix with corrected assertion.
9021
9022        * interpreter/Interpreter.cpp:
9023        (JSC::Interpreter::resolveGlobal):
9024        (JSC::Interpreter::tryCachePutByID):
9025        (JSC::Interpreter::tryCacheGetByID):
9026        * jit/JITStubs.cpp:
9027        (JSC::JITThunks::tryCachePutByID):
9028        (JSC::JITThunks::tryCacheGetByID):
9029        (JSC::DEFINE_STUB_FUNCTION):
9030        * runtime/BatchedTransitionOptimizer.h:
9031        (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
9032        * runtime/JSObject.cpp:
9033        (JSC::JSObject::removeDirect):
9034        * runtime/Structure.cpp:
9035        (JSC::Structure::Structure):
9036        (JSC::Structure::getEnumerablePropertyNames):
9037        (JSC::Structure::despecifyDictionaryFunction):
9038        (JSC::Structure::addPropertyTransitionToExistingStructure):
9039        (JSC::Structure::addPropertyTransition):
9040        (JSC::Structure::removePropertyTransition):
9041        (JSC::Structure::toDictionaryTransition):
9042        (JSC::Structure::toCacheableDictionaryTransition):
9043        (JSC::Structure::toUncacheableDictionaryTransition):
9044        (JSC::Structure::fromDictionaryTransition):
9045        (JSC::Structure::removePropertyWithoutTransition):
9046        * runtime/Structure.h:
9047        (JSC::Structure::isDictionary):
9048        (JSC::Structure::isUncacheableDictionary):
9049        (JSC::Structure::):
9050        * runtime/StructureChain.cpp:
9051        (JSC::StructureChain::isCacheable):
9052
90532009-09-21  Adam Roben  <aroben@apple.com>
9054
9055        Revert r48573, as it caused many assertion failures
9056
9057        * interpreter/Interpreter.cpp:
9058        * jit/JITStubs.cpp:
9059        * runtime/BatchedTransitionOptimizer.h:
9060        * runtime/JSObject.cpp:
9061        * runtime/Structure.cpp:
9062        * runtime/Structure.h:
9063        * runtime/StructureChain.cpp:
9064
90652009-09-21  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
9066
9067        Unreviewed make dist build fix. Missing files.
9068
9069        * GNUmakefile.am:
9070
90712009-09-19  Gavin Barraclough  <barraclough@apple.com>
9072
9073        Reviewed by Sam 'Cabin Boy' Weinig.
9074
9075        Fix stack alignment with ARM THUMB2 JIT.
9076        https://bugs.webkit.org/show_bug.cgi?id=29526
9077
9078        Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
9079        multiple of 16 bytes.
9080
9081        * jit/JITStubs.cpp:
9082        (JSC::JITThunks::JITThunks):
9083        * jit/JITStubs.h:
9084
90852009-09-20  Oliver Hunt  <oliver@apple.com>
9086
9087        Reviewed by Maciej Stachowiak.
9088
9089        SNES is too slow
9090        https://bugs.webkit.org/show_bug.cgi?id=29534
9091
9092        The problem was that the emulator used multiple classes with
9093        more properties than our dictionary cutoff allowed, this resulted
9094        in more or less all critical logic inside the emulator requiring
9095        uncached property access.
9096
9097        Rather than simply bumping the dictionary cutoff, this patch
9098        recognises that there are two ways to create a "dictionary"
9099        structure.  Either by adding a large number of properties, or
9100        by removing a property.  In the case of adding properties we
9101        know all the existing properties will maintain their existing
9102        offsets, so we could cache access to those properties, if we
9103        know they won't be removed.
9104
9105        To make this possible, this patch adds the logic required to
9106        distinguish a dictionary created by addition from one created
9107        by removal.  With this logic in place we can now cache access
9108        to objects with large numbers of properties.
9109
9110        SNES performance improved by more than 6x.
9111
9112        * interpreter/Interpreter.cpp:
9113        (JSC::Interpreter::resolveGlobal):
9114        (JSC::Interpreter::tryCachePutByID):
9115        (JSC::Interpreter::tryCacheGetByID):
9116        * jit/JITStubs.cpp:
9117        (JSC::JITThunks::tryCachePutByID):
9118        (JSC::JITThunks::tryCacheGetByID):
9119        (JSC::DEFINE_STUB_FUNCTION):
9120        * runtime/BatchedTransitionOptimizer.h:
9121        (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
9122        * runtime/JSObject.cpp:
9123        (JSC::JSObject::removeDirect):
9124        * runtime/Structure.cpp:
9125        (JSC::Structure::Structure):
9126        (JSC::Structure::getEnumerablePropertyNames):
9127        (JSC::Structure::despecifyDictionaryFunction):
9128        (JSC::Structure::addPropertyTransitionToExistingStructure):
9129        (JSC::Structure::addPropertyTransition):
9130        (JSC::Structure::removePropertyTransition):
9131        (JSC::Structure::toDictionaryTransition):
9132        (JSC::Structure::toCacheableDictionaryTransition):
9133        (JSC::Structure::toUncacheableDictionaryTransition):
9134        (JSC::Structure::fromDictionaryTransition):
9135        (JSC::Structure::removePropertyWithoutTransition):
9136        * runtime/Structure.h:
9137        (JSC::Structure::isDictionary):
9138        (JSC::Structure::isUncacheableDictionary):
9139        (JSC::Structure::):
9140        * runtime/StructureChain.cpp:
9141        (JSC::StructureChain::isCacheable):
9142
91432009-09-19  Oliver Hunt  <oliver@apple.com>
9144
9145        Reviewed by Maciej Stachowiak.
9146
9147        Implement ES5 Object.create function
9148        https://bugs.webkit.org/show_bug.cgi?id=29524
9149
9150        Implement Object.create.  Very simple patch, effectively Object.defineProperties
9151        only creating the target object itself.
9152
9153        * runtime/CommonIdentifiers.h:
9154        * runtime/ObjectConstructor.cpp:
9155        (JSC::ObjectConstructor::ObjectConstructor):
9156        (JSC::objectConstructorCreate):
9157
91582009-09-19  Dan Bernstein  <mitz@apple.com>
9159
9160        Fix clean debug builds.
9161
9162        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9163
91642009-09-19  Joerg Bornemann  <joerg.bornemann@nokia.com>
9165
9166        Reviewed by George Staikos.
9167
9168        QtWebKit Windows CE compile fix
9169
9170        https://bugs.webkit.org/show_bug.cgi?id=29379
9171
9172        There is no _aligned_alloc or _aligned_free on Windows CE.
9173        We just use the Windows code that was there before and use VirtualAlloc.
9174        But that also means that the BLOCK_SIZE must be 64K as this function
9175        allocates on 64K boundaries.
9176
9177        * runtime/Collector.cpp:
9178        (JSC::Heap::allocateBlock):
9179        (JSC::Heap::freeBlock):
9180        * runtime/Collector.h:
9181
91822009-09-19  Oliver Hunt  <oliver@apple.com>
9183
9184        Reviewed by Sam Weinig.
9185
9186        Implement ES5 Object.defineProperties function
9187        https://bugs.webkit.org/show_bug.cgi?id=29522
9188
9189        Implement Object.defineProperties.  Fairly simple patch, simply makes use of
9190        existing functionality used for defineProperty.
9191
9192        * runtime/CommonIdentifiers.h:
9193        * runtime/ObjectConstructor.cpp:
9194        (JSC::ObjectConstructor::ObjectConstructor):
9195        (JSC::defineProperties):
9196        (JSC::objectConstructorDefineProperties):
9197
91982009-09-19  Oliver Hunt  <oliver@apple.com>
9199
9200        Reviewed by NOBODY (Build fix).
9201
9202        Windows build fix part2
9203
9204        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9205        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9206
92072009-09-19  Oliver Hunt  <oliver@apple.com>
9208
9209        Reviewed by NOBODY (Buildfix).
9210
9211        Windows build fix part 1.
9212
9213        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9214        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9215
92162009-09-18  Oliver Hunt  <oliver@apple.com>
9217
9218        Reviewed by Geoff Garen.
9219
9220        Implement ES5 Object.defineProperty function
9221        https://bugs.webkit.org/show_bug.cgi?id=29503
9222
9223        Implement Object.defineProperty.  This requires adding the API to
9224        ObjectConstructor, along with a helper function that implements the
9225        ES5 internal [[ToPropertyDescriptor]] function.  It then adds
9226        JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
9227        Currently defineOwnProperty uses a delete followed by a put to redefine
9228        attributes of a property, clearly this is less efficient than it could be
9229        but we can improve this if it needs to be possible in future.
9230
9231        * JavaScriptCore.exp:
9232        * debugger/DebuggerActivation.cpp:
9233        (JSC::DebuggerActivation::defineGetter):
9234        (JSC::DebuggerActivation::defineSetter):
9235        * debugger/DebuggerActivation.h:
9236        * interpreter/Interpreter.cpp:
9237        (JSC::Interpreter::privateExecute):
9238        * jit/JITStubs.cpp:
9239          Update defineGetter/Setter calls
9240        * runtime/CommonIdentifiers.h:
9241        * runtime/JSArray.cpp:
9242        (JSC::JSArray::getOwnPropertySlot):
9243        * runtime/JSGlobalObject.cpp:
9244        (JSC::JSGlobalObject::defineGetter):
9245        (JSC::JSGlobalObject::defineSetter):
9246        * runtime/JSGlobalObject.h:
9247        * runtime/JSObject.cpp:
9248        (JSC::JSObject::defineGetter):
9249        (JSC::JSObject::defineSetter):
9250        (JSC::putDescriptor):
9251        (JSC::JSObject::defineOwnProperty):
9252        * runtime/JSObject.h:
9253        * runtime/ObjectConstructor.cpp:
9254        (JSC::ObjectConstructor::ObjectConstructor):
9255        (JSC::objectConstructorGetOwnPropertyDescriptor):
9256        (JSC::toPropertyDescriptor):
9257        (JSC::objectConstructorDefineProperty):
9258        * runtime/ObjectPrototype.cpp:
9259        (JSC::objectProtoFuncDefineGetter):
9260        (JSC::objectProtoFuncDefineSetter):
9261        * runtime/PropertyDescriptor.cpp:
9262        (JSC::PropertyDescriptor::writable):
9263        (JSC::PropertyDescriptor::enumerable):
9264        (JSC::PropertyDescriptor::configurable):
9265        (JSC::PropertyDescriptor::isDataDescriptor):
9266        (JSC::PropertyDescriptor::isGenericDescriptor):
9267        (JSC::PropertyDescriptor::isAccessorDescriptor):
9268        (JSC::PropertyDescriptor::getter):
9269        (JSC::PropertyDescriptor::setter):
9270        (JSC::PropertyDescriptor::setDescriptor):
9271        (JSC::PropertyDescriptor::setAccessorDescriptor):
9272        (JSC::PropertyDescriptor::setWritable):
9273        (JSC::PropertyDescriptor::setEnumerable):
9274        (JSC::PropertyDescriptor::setConfigurable):
9275        (JSC::PropertyDescriptor::setSetter):
9276        (JSC::PropertyDescriptor::setGetter):
9277        (JSC::PropertyDescriptor::equalTo):
9278        (JSC::PropertyDescriptor::attributesEqual):
9279        (JSC::PropertyDescriptor::attributesWithOverride):
9280        * runtime/PropertyDescriptor.h:
9281        (JSC::PropertyDescriptor::PropertyDescriptor):
9282        (JSC::PropertyDescriptor::value):
9283        (JSC::PropertyDescriptor::setValue):
9284        (JSC::PropertyDescriptor::isEmpty):
9285        (JSC::PropertyDescriptor::writablePresent):
9286        (JSC::PropertyDescriptor::enumerablePresent):
9287        (JSC::PropertyDescriptor::configurablePresent):
9288        (JSC::PropertyDescriptor::setterPresent):
9289        (JSC::PropertyDescriptor::getterPresent):
9290        (JSC::PropertyDescriptor::operator==):
9291        (JSC::PropertyDescriptor::):
9292
92932009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
9294
9295        Reviewed by Gavin Barraclough.
9296
9297        Build fix to enable ARM_THUMB2 on Linux
9298        https://bugs.webkit.org/show_bug.cgi?id=
9299
9300        * jit/ExecutableAllocator.h:
9301        (JSC::ExecutableAllocator::cacheFlush):
9302        * jit/JITStubs.cpp:
9303        * wtf/Platform.h:
9304
93052009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
9306
9307        Reviewed by Gavin Barraclough.
9308
9309        Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
9310        https://bugs.webkit.org/show_bug.cgi?id=29122
9311
9312        Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
9313        macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
9314        when Thumb-2 instruction set is the required target. The
9315        PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
9316        case where the code is common the PLATFORM(ARM) have to be used.
9317
9318        * assembler/ARMAssembler.cpp:
9319        * assembler/ARMAssembler.h:
9320        * assembler/ARMv7Assembler.h:
9321        * assembler/MacroAssembler.h:
9322        * assembler/MacroAssemblerARM.cpp:
9323        * assembler/MacroAssemblerARM.h:
9324        * assembler/MacroAssemblerCodeRef.h:
9325        (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
9326        * jit/ExecutableAllocator.h:
9327        * jit/JIT.h:
9328        * jit/JITInlineMethods.h:
9329        (JSC::JIT::beginUninterruptedSequence):
9330        (JSC::JIT::preserveReturnAddressAfterCall):
9331        (JSC::JIT::restoreReturnAddressBeforeReturn):
9332        (JSC::JIT::restoreArgumentReference):
9333        (JSC::JIT::restoreArgumentReferenceForTrampoline):
9334        * jit/JITOpcodes.cpp:
9335        * jit/JITStubs.cpp:
9336        (JSC::JITThunks::JITThunks):
9337        * jit/JITStubs.h:
9338        * wtf/Platform.h:
9339        * yarr/RegexJIT.cpp:
9340        (JSC::Yarr::RegexGenerator::generateEnter):
9341
93422009-09-18  Joerg Bornemann  <joerg.bornemann@nokia.com>
9343
9344        Reviewed by Simon Hausmann.
9345
9346        Fix the Qt/Windows CE build.
9347
9348        * JavaScriptCore.pri: Build the ce_time.cpp functions from
9349        within Qt externally.
9350        * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
9351        Qt build these functions are no external, too.
9352
93532009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
9354
9355        Reviewed by Simon Hausmann.
9356
9357        Symbian/WINSCW build fox.
9358
9359        Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
9360        revision 24774.
9361
9362        WINSCW defines wchar_t, thus UChar has to be wchar_t
9363
9364        * wtf/unicode/qt4/UnicodeQt4.h:
9365
93662009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
9367
9368        Reviewed by Simon Hausmann.
9369
9370        Symbian/WINSCW build fix.
9371
9372        https://bugs.webkit.org/show_bug.cgi?id=29186
9373
9374        WINSCW Template specialisation name in declaration must the be the same as in implementation.
9375
9376        * runtime/LiteralParser.h:
9377
93782009-09-15  Norbert Leser  <norbert.leser@nokia.com>
9379
9380        Reviewed by Darin Adler.
9381
9382        https://bugs.webkit.org/show_bug.cgi?id=27060
9383
9384        Symbian compiler for emulator target (WINSCW) fails with
9385        "illegal operand" for m_attributesInPrevious in structure.ccp
9386        (when calling make_pair functions).
9387        This error is apparently due to the compiler not properly
9388        resolving the unsigned type of the declared bitfield.
9389
9390        Initial patch explicitly casted m_attributesInPrevious
9391        to unsigned, but since bitfield optimization is not critical for
9392        the emulator target, this conditional change in header file
9393        appears to be least intrusive.
9394
9395        * runtime/Structure.h:
9396
93972009-09-16  Gabor Loki  <loki@inf.u-szeged.hu>
9398
9399        Reviewed by Darin Adler.
9400
9401        Fix GCC warnings on ARM_THUMB2 platform
9402
9403        * assembler/ARMv7Assembler.h:
9404        (JSC::ARMThumbImmediate::countLeadingZerosPartial):
9405        * assembler/MacroAssemblerARMv7.h:
9406        (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
9407        (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
9408
94092009-09-16  Greg Bolsinga  <bolsinga@apple.com>
9410
9411        Add ENABLE(INSPECTOR)
9412        https://bugs.webkit.org/show_bug.cgi?id=29260
9413
9414        Reviewed by David Kilzer.
9415
9416        * wtf/Platform.h:
9417
94182009-09-16  Greg Bolsinga  <bolsinga@apple.com>
9419
9420        Add ENABLE(CONTEXT_MENUS)
9421        https://bugs.webkit.org/show_bug.cgi?id=29225
9422
9423        Reviewed by David Kilzer.
9424
9425        * wtf/Platform.h:
9426
94272009-09-16  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
9428
9429        Reviewed by Eric Seidel.
9430
9431        The webkit stdint and stdbool headers exists because
9432        the compiler MSVC doesn't include them.  The check
9433        should not check for PLATFORM(WIN_OS) but for MSVC.
9434
9435        * os-win32/stdbool.h:
9436        * os-win32/stdint.h:
9437
94382009-09-16  Greg Bolsinga  <bolsinga@apple.com>
9439
9440        Add ENABLE(DRAG_SUPPORT)
9441        https://bugs.webkit.org/show_bug.cgi?id=29233
9442
9443        Reviewed by David Kilzer.
9444
9445        * wtf/Platform.h:
9446
94472009-09-16  Kevin Ollivier  <kevino@theolliviers.com>
9448
9449        waf build fix after flag was moved to correct place.
9450
9451        * wscript:
9452
94532009-09-16  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
9454
9455        Reviewed by Simon Hausmann.
9456
9457        [Qt] Build fix for 64-bit Qt on Mac OS X
9458
9459        * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
9460
94612009-09-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
9462
9463        Reviewed by Simon Hausmann.
9464
9465        [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
9466        https://bugs.webkit.org/show_bug.cgi?id=29295
9467
9468        This is an important fix when JavaScript workers are in use, since
9469        unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
9470        QThreadStorage calls the destructor of a given object, which is the
9471        ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
9472        not support the calling of a static utility function when the thread
9473        is about to close. In this patch we call the ThreadSpecific::destroy()
9474        utility function from the destructor of ThreadSpecific::Data. Moreover,
9475        since Qt resets all thread local values to 0 before the calling of the
9476        appropriate destructors, we set back the pointer to its original value.
9477        This is necessary because the get() method of the ThreadSpecific
9478        object may be called during the exuction of the destructor.
9479
9480        * wtf/ThreadSpecific.h:
9481        (WTF::ThreadSpecific::Data::~Data):
9482        (WTF::::~ThreadSpecific):
9483        (WTF::::set):
9484        (WTF::::destroy):
9485
94862009-09-10  Oliver Hunt  <oliver@apple.com>
9487
9488        Reviewed by Geoff Garen.
9489
9490        Allow anonymous storage inside JSObject
9491        https://bugs.webkit.org/show_bug.cgi?id=29168
9492
9493        Add the concept of anonymous slots to Structures so that it is
9494        possible to store references to values that need marking in the
9495        standard JSObject storage buffer.  This allows us to reduce the
9496        malloc overhead of some objects (by allowing them to store JS
9497        values in the inline storage of the object) and reduce the
9498        dependence of custom mark functions (if all an objects children
9499        are in the standard object property storage there's no need to
9500        mark them manually).
9501
9502        * JavaScriptCore.exp:
9503        * runtime/JSObject.h:
9504        (JSC::JSObject::putAnonymousValue):
9505        (JSC::JSObject::getAnonymousValue):
9506        (JSC::JSObject::addAnonymousSlots):
9507        * runtime/JSWrapperObject.h:
9508        (JSC::JSWrapperObject::createStructure):
9509        (JSC::JSWrapperObject::JSWrapperObject):
9510        (JSC::JSWrapperObject::setInternalValue):
9511        * runtime/PropertyMapHashTable.h:
9512        * runtime/Structure.cpp:
9513        (JSC::Structure::~Structure):
9514        (JSC::Structure::materializePropertyMap):
9515        (JSC::Structure::addAnonymousSlotsTransition):
9516        (JSC::Structure::copyPropertyTable):
9517        (JSC::Structure::put):
9518        (JSC::Structure::rehashPropertyMapHashTable):
9519        * runtime/Structure.h:
9520        (JSC::Structure::propertyStorageSize):
9521        (JSC::StructureTransitionTable::reifySingleTransition):
9522        * runtime/StructureTransitionTable.h:
9523        (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
9524        (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
9525        (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
9526        (JSC::StructureTransitionTable::getAnonymousSlotTransition):
9527        (JSC::StructureTransitionTable::addAnonymousSlotTransition):
9528        (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
9529
95302009-09-15  Alex Milowski  <alex@milowski.com>
9531
9532        Reviewed by Tor Arne Vestbø.
9533
9534        Added the ENABLE_MATHML define to the features
9535
9536        * Configurations/FeatureDefines.xcconfig:
9537
95382009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
9539
9540        Reviewed by Tor Arne Vestbø.
9541
9542        [Qt] Build fix for windows.
9543
9544        After http://trac.webkit.org/changeset/47795 the MinGW build broke,
9545        because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
9546
9547        * runtime/Collector.cpp:
9548        (JSC::Heap::allocateBlock): MinGW case added.
9549        (JSC::Heap::freeBlock): MinGW case added.
9550
95512009-09-15  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
9552
9553        Reviewed by Tor Arne Vestbø.
9554
9555        [Qt] Build fix for Windows/MinGW
9556
9557        https://bugs.webkit.org/show_bug.cgi?id=29268
9558
9559        * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
9560
95612009-09-14  Gabor Loki  <loki@inf.u-szeged.hu>
9562
9563        Reviewed by Gavin Barraclough.
9564
9565        Detect VFP at runtime in generic ARM port on Linux platform.
9566        https://bugs.webkit.org/show_bug.cgi?id=29076
9567
9568        * JavaScriptCore.pri:
9569        * assembler/MacroAssemblerARM.cpp: Added.
9570        (JSC::isVFPPresent):
9571        * assembler/MacroAssemblerARM.h:
9572        (JSC::MacroAssemblerARM::supportsFloatingPoint):
9573
95742009-09-14  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
9575
9576        Reviewed by Tor Arne Vestbø.
9577
9578        [Qt] Build fix for windows build.
9579
9580        * JavaScriptCore.pri: Correct a logic error.
9581        * pcre/dftables: Add missing paranthesis for tmpdir function.
9582
95832009-09-12  Oliver Hunt  <oliver@apple.com>
9584
9585        Reviewed by NOBODY (Build fix).
9586
9587        Build fix for windows exports (again).
9588
9589        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9590        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9591
95922009-09-12  Oliver Hunt  <oliver@apple.com>
9593
9594        Reviewed by NOBODY (Build fix).
9595
9596        Build fix for windows exports.
9597
9598        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9599        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9600
96012009-09-12  Oliver Hunt  <oliver@apple.com>
9602
9603        Reviewed by NOBODY (Build fix).
9604
9605        Correct fix for non-allinonefile builds
9606
9607        * runtime/ObjectConstructor.cpp:
9608
96092009-09-12  Oliver Hunt  <oliver@apple.com>
9610
9611        Reviewed by NOBODY (Build fix).
9612
9613        Fix non-allinonefile builds
9614
9615        * runtime/ObjectConstructor.cpp:
9616
96172009-09-12  Oliver Hunt  <oliver@apple.com>
9618
9619        Reviewed by Maciej Stachowiak.
9620
9621        [ES5] Implement Object.keys
9622        https://bugs.webkit.org/show_bug.cgi?id=29170
9623
9624        This patch basically requires two separate steps, the first is to split getPropertyNames
9625        into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
9626        in the same way as getOwnPropertySlot and getPropertySlot.  In essence getOwnPropertyNames
9627        produces the list of properties on an object excluding its prototype chain and getPropertyNames
9628        just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
9629
9630        * API/JSCallbackObject.h:
9631        * API/JSCallbackObjectFunctions.h:
9632        (JSC::::getOwnPropertyNames):
9633        * JavaScriptCore.exp:
9634        * debugger/DebuggerActivation.cpp:
9635        (JSC::DebuggerActivation::getOwnPropertyNames):
9636        * debugger/DebuggerActivation.h:
9637        * runtime/CommonIdentifiers.h:
9638        * runtime/JSArray.cpp:
9639        (JSC::JSArray::getOwnPropertyNames):
9640        * runtime/JSArray.h:
9641        * runtime/JSByteArray.cpp:
9642        (JSC::JSByteArray::getOwnPropertyNames):
9643        * runtime/JSByteArray.h:
9644        * runtime/JSNotAnObject.cpp:
9645        (JSC::JSNotAnObject::getOwnPropertyNames):
9646        * runtime/JSNotAnObject.h:
9647        * runtime/JSObject.cpp:
9648        (JSC::JSObject::getOwnPropertyNames):
9649        * runtime/JSObject.h:
9650        * runtime/JSVariableObject.cpp:
9651        (JSC::JSVariableObject::getOwnPropertyNames):
9652        * runtime/JSVariableObject.h:
9653        * runtime/ObjectConstructor.cpp:
9654        (JSC::ObjectConstructor::ObjectConstructor):
9655        (JSC::objectConstructorKeys):
9656        * runtime/RegExpMatchesArray.h:
9657        (JSC::RegExpMatchesArray::getOwnPropertyNames):
9658        * runtime/StringObject.cpp:
9659        (JSC::StringObject::getOwnPropertyNames):
9660        * runtime/StringObject.h:
9661        * runtime/Structure.cpp:
9662        (JSC::Structure::getOwnEnumerablePropertyNames):
9663        (JSC::Structure::getEnumerablePropertyNames):
9664        * runtime/Structure.h:
9665
96662009-09-11  Oliver Hunt  <oliver@apple.com>
9667
9668        Reviewed by Sam Weinig.
9669
9670        getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
9671        https://bugs.webkit.org/show_bug.cgi?id=29214
9672
9673        Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
9674        This flag is used to make sure that caching of the property name data is safe.
9675
9676        * API/JSCallbackConstructor.h:
9677        (JSC::JSCallbackConstructor::createStructure):
9678        * debugger/DebuggerActivation.h:
9679        (JSC::DebuggerActivation::createStructure):
9680        * runtime/BooleanObject.h:
9681        (JSC::BooleanObject::createStructure):
9682        * runtime/DatePrototype.h:
9683        (JSC::DatePrototype::createStructure):
9684        * runtime/FunctionPrototype.h:
9685        (JSC::FunctionPrototype::createStructure):
9686        * runtime/JSONObject.h:
9687        (JSC::JSONObject::createStructure):
9688        * runtime/JSObject.h:
9689        (JSC::JSObject::createStructure):
9690        * runtime/JSTypeInfo.h:
9691        (JSC::TypeInfo::hasDefaultGetPropertyNames):
9692        * runtime/JSVariableObject.h:
9693        (JSC::JSVariableObject::createStructure):
9694        * runtime/JSWrapperObject.h:
9695        (JSC::JSWrapperObject::createStructure):
9696        * runtime/MathObject.h:
9697        (JSC::MathObject::createStructure):
9698        * runtime/NumberConstructor.h:
9699        (JSC::NumberConstructor::createStructure):
9700        * runtime/NumberObject.h:
9701        (JSC::NumberObject::createStructure):
9702        * runtime/RegExpConstructor.h:
9703        (JSC::RegExpConstructor::createStructure):
9704        * runtime/RegExpObject.h:
9705        (JSC::RegExpObject::createStructure):
9706        * runtime/StructureChain.cpp:
9707        (JSC::StructureChain::isCacheable):
9708
97092009-09-11  Alexey Proskuryakov  <ap@webkit.org>
9710
9711        Reviewed by Geoff Garen.
9712
9713        https://bugs.webkit.org/show_bug.cgi?id=29207
9714        Add checks for using WebCore JS context on secondary threads
9715
9716        * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
9717        * runtime/JSGlobalData.h:
9718        Added a new mainThreadOnly flag that WebCore would set.
9719
9720        * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
9721        so this is a good place to check that the API isn't used form a wrong thread.
9722
97232009-09-11  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
9724
9725        Reviewed by Simon Hausmann.
9726
9727        Compiling JavaScriptCore on sparc 64 with gcc fails.
9728
9729        ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
9730        however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
9731
9732        The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
9733        a mutex instead when compiling for sparc 64 with gcc.
9734
9735        https://bugs.webkit.org/show_bug.cgi?id=29175
9736
9737        * wtf/Platform.h:
9738        __sparc64__ is not defined on all OS.
9739        Uses instead: __sparc__ && __arch64__ || __sparcv9
9740        * wtf/Threading.h:
9741
97422009-09-11  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
9743
9744        Reviewed by Simon Hausmann.
9745
9746        Fix compile error on Windows7(64Bit) with latest SDK.
9747
9748        Added the missing include file.
9749
9750        * runtime/UString.cpp:
9751
97522009-09-11  Joerg Bornemann  <joerg.bornemann@trolltech.com>
9753
9754        Reviewed by Simon Hausmann.
9755
9756        Qt/Windows CE compile fix, include the executable allocator and
9757        markstack implementation in the windows build.
9758
9759        * JavaScriptCore.pri:
9760
97612009-09-08  John Abd-El-Malek  <jam@chromium.org>
9762
9763        Reviewed by Dimitri Glazkov.
9764
9765        Remove unneeded define for ActiveX.
9766        https://bugs.webkit.org/show_bug.cgi?id=29054
9767
9768        * wtf/Platform.h:
9769
97702009-09-10  Mark Rowe  <mrowe@apple.com>
9771
9772        Rubber-stamped by Sam Weinig.
9773
9774        Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
9775
9776        * Configurations/FeatureDefines.xcconfig:
9777
97782009-09-10  Fumitoshi Ukai  <ukai@chromium.org>
9779
9780        Reviewed by Alexey Proskuryakov.
9781
9782        Export WTF::tryFastMalloc used in WebSocketChannel.
9783        https://bugs.webkit.org/show_bug.cgi?id=28038
9784
9785        * JavaScriptCore.exp:
9786        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9787        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
9788
97892009-09-10  Oliver Hunt  <oliver@apple.com>
9790
9791        Reviewed by NOBODY (Build fix).
9792
9793        Make StructureTransitionTable use an enum for the PtrAndFlags member
9794        used for the single transition slot optimisation.
9795
9796        * runtime/StructureTransitionTable.h:
9797        (JSC::StructureTransitionTable::StructureTransitionTable):
9798        (JSC::StructureTransitionTable::usingSingleTransitionSlot):
9799        (JSC::StructureTransitionTable::):
9800
98012009-09-10  Oliver Hunt  <oliver@apple.com>
9802
9803        Reviewed by Geoff Garen.
9804
9805        Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization
9806        https://bugs.webkit.org/show_bug.cgi?id=29141
9807
9808        Make StructureTransitionTable encapsulate the single transition slot optimization.
9809
9810        * runtime/Structure.cpp:
9811        (JSC::Structure::Structure):
9812        (JSC::Structure::~Structure):
9813        (JSC::Structure::addPropertyTransitionToExistingStructure):
9814        (JSC::Structure::addPropertyTransition):
9815        (JSC::Structure::addPropertyWithoutTransition):
9816        (JSC::Structure::removePropertyWithoutTransition):
9817        (JSC::Structure::hasTransition):
9818        * runtime/Structure.h:
9819        (JSC::StructureTransitionTable::contains):
9820        (JSC::StructureTransitionTable::get):
9821        (JSC::StructureTransitionTable::hasTransition):
9822        (JSC::StructureTransitionTable::reifySingleTransition):
9823        * runtime/StructureTransitionTable.h:
9824        (JSC::StructureTransitionTable::StructureTransitionTable):
9825        (JSC::StructureTransitionTable::~StructureTransitionTable):
9826        (JSC::StructureTransitionTable::remove):
9827        (JSC::StructureTransitionTable::add):
9828        (JSC::StructureTransitionTable::table):
9829        (JSC::StructureTransitionTable::singleTransition):
9830        (JSC::StructureTransitionTable::usingSingleTransitionSlot):
9831        (JSC::StructureTransitionTable::setSingleTransition):
9832        (JSC::StructureTransitionTable::setTransitionTable):
9833        (JSC::StructureTransitionTable::):
9834        * wtf/PtrAndFlags.h:
9835        (WTF::PtrAndFlags::PtrAndFlags):
9836
98372009-09-10  Zoltan Horvath  <zoltan@webkit.org>
9838
9839        Reviewed by Darin Adler.
9840
9841        Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet
9842        https://bugs.webkit.org/show_bug.cgi?id=25930
9843
9844        FastAllocBase has been extended with fastDeleteSkippingDestructor function which
9845        releases memory without destructor call. fastDeleteAllValues has been implemented
9846        similar as deleteAllValues but it uses fastDelete function to release memory.
9847
9848        * wtf/FastAllocBase.h:
9849        (WTF::fastDeleteSkippingDestructor):
9850        * wtf/HashSet.h:
9851        (WTF::fastDeleteAllValues):
9852
98532009-09-10  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
9854
9855        Reviewed by Darin Adler.
9856
9857        ARM compiler does not understand GCC visibility attribute
9858        https://bugs.webkit.org/show_bug.cgi?id=29079
9859
9860        * API/JSBase.h: Make the test more specific to hit only
9861        the GCC compiler
9862
98632009-09-10  Adam Barth  <abarth@webkit.org>
9864
9865        Unreviewed revert of the previous change.  It broke the tests.
9866
9867        * wtf/dtoa.cpp:
9868        (WTF::dtoa):
9869
98702009-09-10  Ben Laurie  <benl@google.com>
9871
9872        Reviewed by Adam Barth.
9873
9874        <https://bugs.webkit.org/show_bug.cgi?id=26836>
9875
9876        If dtoa was given a small buffer and the number was either infinite or
9877        NaN, then the buffer would be overflowed.
9878
9879        * wtf/dtoa.cpp:
9880
98812009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
9882
9883        Reviewed by Darin Adler.
9884
9885        Change reinterpret_cast to static_cast in r48212.
9886
9887        * jit/ExecutableAllocator.h:
9888        (JSC::ExecutableAllocator::cacheFlush):
9889
98902009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
9891
9892        Reviewed by Darin Adler.
9893
9894        Remove WTF_PLATFORM_FORCE_PACK as it is no longer used
9895        https://bugs.webkit.org/show_bug.cgi?id=29066
9896
9897        * wtf/Platform.h:
9898
98992009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
9900
9901        Reviewed by Ariya Hidayat.
9902
9903        Implement flushing the instruction cache for Symbian
9904        https://bugs.webkit.org/show_bug.cgi?id=29075
9905
9906        * jit/ExecutableAllocator.h:
9907        (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush
9908        the instruction cache on Symbian
9909
99102009-09-09  Kent Hansen  <khansen@trolltech.com>
9911
9912        Reviewed by Darin Adler.
9913
9914        https://bugs.webkit.org/show_bug.cgi?id=29024
9915        Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL
9916
9917        These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler.
9918
9919        * JavaScriptCore.gypi:
9920        * JavaScriptCore.xcodeproj/project.pbxproj:
9921        * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h.
9922        * runtime/Structure.h:
9923        * runtime/TypeInfo.h: Removed.
9924
99252009-09-08  Oliver Hunt  <oliver@apple.com>
9926
9927        Reviewed by Maciej Stachowiak.
9928
9929        JSON.stringify(Date) loses the milliseconds information
9930        https://bugs.webkit.org/show_bug.cgi?id=29063
9931
9932        Make sure we include milliseconds in the output of toISOString.
9933
9934        * runtime/DatePrototype.cpp:
9935        (JSC::dateProtoFuncToISOString):
9936
99372009-09-08  Kevin Ollivier  <kevino@theolliviers.com>
9938
9939        wx build fix, generate derived sources earlier in order to make sure
9940        they're found by the build system when generating the list of sources to build.
9941
9942        * wscript:
9943
99442009-09-08  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
9945
9946        Reviewed by Simon Hausmann.
9947
9948        Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined
9949        https://bugs.webkit.org/show_bug.cgi?id=29011
9950
9951        * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for
9952        atomicIncrement and atomicDecrement
9953
99542009-09-07  Zoltan Horvath  <zoltan@webkit.org>
9955
9956        Reviewed by Darin Adler.
9957
9958        Allow custom memory allocation control in Yarr's RegexInterpreter
9959        https://bugs.webkit.org/show_bug.cgi?id=29025
9960
9961        Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has
9962        been instantiated by 'new':
9963
9964        class ByteDisjunction
9965        -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462
9966
9967        struct BytecodePattern
9968        -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279
9969
9970        * yarr/RegexInterpreter.h:
9971
99722009-09-07  Drew Wilson  <atwilson@google.com>
9973
9974        Reverting r48121 to fix Windows build errors.
9975
9976        * JavaScriptCore.exp:
9977
99782009-09-07  Drew Wilson  <atwilson@google.com>
9979
9980        Reviewed by David Levin.
9981
9982        Enable SHARED_WORKERS by default
9983        https://bugs.webkit.org/show_bug.cgi?id=28959
9984
9985        * Configurations/FeatureDefines.xcconfig:
9986
99872009-09-07  Fumitoshi Ukai  <ukai@chromium.org>
9988
9989        Reviewed by Alexey Proskuryakov.
9990
9991        Export WTF::tryFastMalloc used in WebSocketChannel.
9992        https://bugs.webkit.org/show_bug.cgi?id=28038
9993
9994        * JavaScriptCore.exp:
9995
99962009-09-04  Oliver Hunt  <oliver@apple.com>
9997
9998        Reviewed by NOBODY (Build fix).
9999
10000        Fix windows export files
10001
10002        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10003        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10004
100052009-09-04  Oliver Hunt  <oliver@apple.com>
10006
10007        Reviewed by Gavin Barraclough.
10008
10009        [[ToString]] conversion should use the actual toString function for String objects.
10010
10011        Remove incorrect specialisations of toString conversions on StringObject.
10012
10013        * JavaScriptCore.exp:
10014        * runtime/StringObject.cpp:
10015        * runtime/StringObject.h:
10016
100172009-09-04  Steve Falkenburg  <sfalken@apple.com>
10018
10019        Windows build fix.
10020
10021        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export.
10022        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export.
10023
100242009-09-04  Steve Falkenburg  <sfalken@apple.com>
10025
10026        Windows build fix.
10027
10028        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export.
10029        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export.
10030
100312009-09-04  Darin Adler  <darin@apple.com>
10032
10033        Reviewed by Geoff Garen.
10034
10035        DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
10036        https://bugs.webkit.org/show_bug.cgi?id=28909
10037
10038        Part two.
10039
10040        Make some improvements to garbage collection code:
10041
10042            1) Create a runtime assertion that catches any classes that
10043               override markChildren but have the HasDefaultMark bit set.
10044            2) Remove checks of the mark bit outside the MarkStack::append
10045               function; they are redundant.
10046            3) Improve the efficiency of the asObject and asArray functions
10047               when called on JSCell* to avoid a round trip to JSValue.
10048            4) Make more callers use the checked asCell and asObject
10049               casting functions rather than unchecked casts.
10050            5) Removed the JSCell::marked function and other GC-related
10051               functions because these operations are no longer things that
10052               code other than the core GC code needs to do directly. Fixed
10053               callers that were calling them.
10054
10055        * runtime/Collector.cpp:
10056        (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain.
10057        (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark
10058        bit and call to MarkStack::drain.
10059        (JSC::Heap::collect): Removed unneeded checks of the mark bit and also
10060        changed call to SmallStrings::mark to call markChildren instead to match
10061        the rest of the objects.
10062        (JSC::typeName): Removed unneeded cast to JSObject*.
10063
10064        * runtime/JSArray.h:
10065        (JSC::asArray): Added an overload for JSCell* and changed the JSValue
10066        version to call it. Removed some unneeded casts.
10067        (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in
10068        a header, and if not marked inline this could lead to linking problems.
10069        (JSC::MarkStack::markChildren): Added. This helper function is used by
10070        the drain function to avoid repating code. Also added the code here to
10071        check fro default mark violations in debug code. If a markChildren
10072        function adds something to the mark stack, but the type info claimed
10073        hasDefaultMark was true, then we will get an assertion now. Also fixed
10074        the assertion about the mark bit to use the Heap function directly
10075        because we don't have a JSCell::marked function any more.
10076        (JSC::MarkStack::drain): Changed a local variable from "v" to "value",
10077        and from "currentCell" to "cell". Changed to call markChildren in two
10078        places instead of repeating a chain of if statements twice. Changed
10079        code that reads and writes the mark bit to use Heap::isCellMarked and
10080        Heap::markCell so we can eliminate the JSCell::marked and
10081        JSCell::markCellDirect functions.
10082
10083        * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member
10084        functions. Added a comment explaining that asCell should be deprecated
10085        in favor of the JSValue asCell member function.
10086        (JSC::MarkStack::append): Added the assertion that catches callers
10087        that have set the HasDefaultMark bit incorrectly. Changed
10088        code that reads and writes the mark bit to use Heap::isCellMarked and
10089        Heap::markCell so we can eliminate the JSCell::marked and
10090        JSCell::markCellDirect functions. Moved the overload of
10091        MarkStack::append for JSValue here so it can call through to the cell
10092        version. The old version had a copy of all the code instead, but that
10093        repeated the conversion from JSValue to JSCell* and the check for
10094        whether a value is a cell multiple times.
10095        (JSC::Structure::markAggregate): Moved this function here to avoid
10096        dependencies for Structure.h, since this calls MarkStack::append.
10097
10098        * runtime/JSObject.cpp:
10099        (JSC::JSObject::markChildren): Added code to clear
10100        m_isCheckingForDefaultMarkViolation so the marking done by JSObject
10101        doesn't trigger the assertion.
10102
10103        * runtime/JSValue.h: Moved some stray includes that were outside the
10104        header guard inside it. Not sure how that happened! Removed the
10105        GC-related member functions markChildren, hasChildren, marked, and
10106        markDirect.
10107
10108        * runtime/JSWrapperObject.h: Made markChildren private.
10109        (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
10110        HasDefaultMark bit was set.
10111
10112        * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and
10113        initialized it to false. Moved the append function body from here to
10114        JSCell.h. Added a declaration of a private markChildren function used
10115        inside the drain function.
10116
10117        * runtime/SmallStrings.cpp:
10118        (JSC::SmallStrings::markChildren): Changed the name and style of this
10119        function to match other functions. This allows us to share the normal
10120        mark stack code path.
10121
10122        * runtime/SmallStrings.h: Changed the name and interface of mark to
10123        the more-normal markChildren style.
10124
10125        * runtime/Structure.h: Moved the body of markAggregate into the
10126        JSCell.h to avoid a circular dependency with JSCell.h.
10127
101282009-09-04  Darin Adler  <darin@apple.com>
10129
10130        Reviewed by Geoff Garen.
10131
10132        DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
10133        https://bugs.webkit.org/show_bug.cgi?id=28909
10134
10135        Part one.
10136
10137        Make some improvements to garbage collection code:
10138
10139            1) Fix the two classes that had the default mark bit set but
10140               should not.
10141            2) Remove checks of the mark bit outside the MarkStack::append
10142               function; they are redundant.
10143            3) Make more callers use the checked asCell and asObject
10144               casting functions rather than unchecked casts.
10145            4) Removed some GC-related functions because these operations are
10146               no longer things that code other than the core GC code needs
10147               to do directly. Fixed callers that were calling them.
10148
10149        * bytecode/CodeBlock.cpp:
10150        (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
10151        bit before calling MarkStack::append.
10152
10153        * interpreter/Register.h: Removed unneeded marked and markChildren
10154        functions.
10155
10156        * jit/JITStubs.cpp:
10157        (op_eq): Removed unneeded assertions, instead using checked casting
10158        functions such as asObject.
10159
10160        * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
10161
10162        * runtime/GetterSetter.cpp:
10163        (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
10164
10165        * runtime/GlobalEvalFunction.h:
10166        (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
10167        HasDefaultMark bit was set.
10168
10169        * runtime/JSCell.cpp:
10170        (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
10171
10172        * runtime/JSObject.h:
10173        (JSC::asObject): Added an overload for JSCell* and changed the JSValue
10174        version to call it.
10175        (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
10176
10177        * runtime/JSWrapperObject.h: Made markChildren private.
10178        (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
10179        HasDefaultMark bit was set. Later we may want to optimize this for
10180        wrapper types that never have cells in their internal values, but there
10181        is no measured performance regression in SunSpider or V8 doing this
10182        all the time.
10183
10184        * runtime/MarkStack.cpp: Tweaked formatting.
10185
101862009-09-04  Kevin Ollivier  <kevino@theolliviers.com>
10187
10188        wx build fix. Switch USE_ defines over to the compiler so that they can be
10189        checked by files not including config.h (like WebCorePrefix.h).
10190
10191        * wtf/Platform.h:
10192
101932009-09-03  Yong Li  <yong.li@torchmobile.com>
10194
10195        Reviewed by David Levin.
10196
10197        Remove unnecessary dependency on unistd.h
10198        https://bugs.webkit.org/show_bug.cgi?id=28962
10199
10200        * runtime/Completion.cpp:
10201
102022009-09-03  Fumitoshi Ukai  <ukai@chromium.org>
10203
10204        Reviewed by Eric Seidel.
10205
10206        Add strnstr for Linux and Windows in StringExtras.h
10207        https://bugs.webkit.org/show_bug.cgi?id=28901
10208
10209        * wtf/StringExtras.h:
10210        (strnstr):
10211
102122009-09-03  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
10213
10214        Reviewed by Darin Adler.
10215
10216        Allow custom memory allocation control for JavaScriptCore's HashEntry class
10217        https://bugs.webkit.org/show_bug.cgi?id=27830
10218
10219        Inherits HashEntry class from FastAllocBase because it has been
10220        instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32.
10221
10222        * runtime/Lookup.h:
10223
102242009-09-02  Gavin Barraclough  <barraclough@apple.com>
10225
10226        Should crash if JIT code buffer allocation fails.
10227
10228        https://bugs.webkit.org/show_bug.cgi?id=28926
10229        <rdar://problem/7031922>
10230
10231        * jit/ExecutableAllocatorPosix.cpp:
10232        (JSC::ExecutablePool::systemAlloc):
10233        * jit/ExecutableAllocatorWin.cpp:
10234        (JSC::ExecutablePool::systemAlloc):
10235
102362009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
10237
10238        waf build fixes for Windows/MSVC.
10239
10240        * wscript:
10241
102422009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
10243
10244        Build fix for building on Windows.
10245
10246        * wtf/ThreadingPthreads.cpp:
10247
102482009-09-02  Norbert Leser  <norbert.leser@nokia.com>
10249
10250        Reviewed by Eric Seidel.
10251
10252        Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled
10253
10254        RegisterFile constructor currently throws #error when both
10255        MMAP and VIRTUALALLOC conditions fail.
10256        On any platform that does not provide these features
10257        (for instance, Symbian),
10258        the fallback should be regular malloc (or fastMalloc).
10259        It is functionally equivalent in this case, even though it may
10260        have certain drawbacks such as lack of dynamic pre-allocation.
10261
10262        * interpreter/RegisterFile.cpp:
10263        (JSC::RegisterFile::~RegisterFile):
10264        * interpreter/RegisterFile.h:
10265        (JSC::RegisterFile::RegisterFile):
10266
102672009-08-31  Robert Agoston  <Agoston.Robert@stud.u-szeged.hu>
10268
10269        Reviewed by Gavin Barraclough.
10270
10271        Fixed typo.
10272        https://bugs.webkit.org/show_bug.cgi?id=28691
10273
10274        * parser/Parser.h:
10275        (JSC::Parser::parse):
10276
102772009-08-27  Oliver Hunt  <oliver@apple.com>
10278
10279        Reviewed by Maciej Stachowiak.
10280
10281        JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects
10282        https://bugs.webkit.org/show_bug.cgi?id=28797
10283
10284        Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception
10285        checks, and corrected the logic in gap to correctly convert Number and String objects.
10286
10287        * runtime/JSONObject.cpp:
10288        (JSC::unwrapBoxedPrimitive):
10289        (JSC::gap):
10290        (JSC::Stringifier::Stringifier):
10291        (JSC::Stringifier::appendStringifiedValue):
10292
102932009-08-27  Oliver Hunt  <oliver@apple.com>
10294
10295        Reviewed by Adam Roben.
10296
10297        JSON.stringify replacer array does not accept values that are not string primitives.
10298        https://bugs.webkit.org/show_bug.cgi?id=28788
10299
10300        Update the JSON stringifier to initialise its replacer array according to the most
10301        recent version of the spec.
10302
10303        * runtime/Identifier.h:
10304        (JSC::Identifier::from):
10305        * runtime/JSONObject.cpp:
10306        (JSC::Stringifier::Stringifier):
10307
103082009-08-27  Alexey Proskuryakov  <ap@apple.com>
10309
10310        Reviewed by Oliver Hunt.
10311
10312        https://bugs.webkit.org/show_bug.cgi?id=28753
10313        <rdar://problem/7173448> Excessive number of threads (and a crash)
10314
10315        * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement
10316        and return the new value. Also added using directives for these functions, to match
10317        te rest of WTF.
10318
103192009-08-27  Brent Fulgham  <bfulgham@webkit.org>
10320
10321        Reviewed by Adam Roben.
10322
10323        Link the testapi against CFLite when building the WinCairo port.
10324
10325        * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite
10326          target.  Update all targets to inherit from either the
10327          JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops
10328          file (WinCairo target).
10329        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove
10330          input file CoreFoundation.lib. This is provided by either the
10331          JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file.
10332
103332009-08-27  Steve Falkenburg  <sfalken@apple.com>
10334
10335        Reviewed by Geoff Garen.
10336
10337        Fix Windows-specific crash due to missing memory clearing call.
10338
10339        * runtime/Collector.cpp:
10340        (JSC::Heap::allocateBlock):
10341
103422009-08-27  Brent Fulgham  <bfulgham@webkit.org>
10343
10344        Build fix: JavaScriptCore_debug.def missing some exports.  Apple
10345        Windows build does not use this file, so it was not noticed previously.
10346
10347        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10348
103492009-08-27  Gavin Barraclough  <barraclough@apple.com>
10350
10351        Reviewed by Oliver Hunt.
10352
10353        x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
10354        https://bugs.webkit.org/show_bug.cgi?id=28317
10355
10356        Missed one, fix part II.
10357
10358        * assembler/MacroAssemblerX86Common.h:
10359        (JSC::MacroAssemblerX86Common::move):
10360        * assembler/X86Assembler.h:
10361        (JSC::CAN_SIGN_EXTEND_8_32):
10362
103632009-08-27  Oliver Hunt  <oliver@apple.com>
10364
10365        Reviewed by Adam Roben.
10366
10367        JSON.stringify replacer array does not accept values that are not string primitives.
10368        https://bugs.webkit.org/show_bug.cgi?id=28788
10369
10370        Update the JSON stringifier to initialise its replacer array according to the most
10371        recent version of the spec.
10372
10373        * runtime/Identifier.h:
10374        (JSC::Identifier::from):
10375        * runtime/JSONObject.cpp:
10376        (JSC::Stringifier::Stringifier):
10377
103782009-08-27  Oliver Hunt  <oliver@apple.com>
10379
10380        Reviewed by Alexey Proskuryakov.
10381
10382        JSON parser accepts trailing comma in array literals
10383        https://bugs.webkit.org/show_bug.cgi?id=28779
10384
10385        Update parser to correctly fail if there's a trailing comma.
10386
10387        * runtime/LiteralParser.cpp:
10388        (JSC::LiteralParser::parse):
10389
103902009-08-26  Oliver Hunt  <oliver@apple.com>
10391
10392        Reviewed by Gavin Barraclough.
10393
10394        'this' in JSON.parse reviver is the global object
10395        https://bugs.webkit.org/show_bug.cgi?id=28752
10396
10397        This is a technically simple change, we merely update the code for calling
10398        the reviver function to pass the correct this object.  Doing so however
10399        exposes the holder to arbitrary mutation by the reviver function so it is
10400        necessary for us to now guard all property accesses against the possibility
10401        of failure.
10402
10403        * runtime/JSArray.h:
10404          JSON needs to delete a property from the array, so we friend its
10405          Walker class so that we can make a non-virtual call to the arrays
10406          delete and getOwnPropertySlot methods.
10407        * runtime/JSONObject.cpp:
10408        (JSC::Walker::callReviver):
10409          We need to pass the correct this object
10410        (JSC::Walker::walk):
10411          Update calls to callReviver, and update property logic logic
10412          to correctly handle the holder being mutated by the reviver
10413          function.
10414
104152009-08-26  Alice Liu  <alice.liu@apple.com>
10416
10417        Windows build fix: added some exported symbols
10418
10419        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10420        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10421
104222009-08-26  Geoffrey Garen  <ggaren@apple.com>
10423
10424        Windows build fix: Removed some exported symbols that no longer exist.
10425
10426        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10427        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10428
104292009-08-26  Gavin Barraclough  <barraclough@apple.com>
10430
10431        Reviewed by Olliejver Hunt.
10432
10433        x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
10434        https://bugs.webkit.org/show_bug.cgi?id=28317
10435
10436        We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page,
10437        so pointers are never representable as a 32-bit integer, and always have to be represented by
10438        a separate immediate load instruction, rather than within the immediate field of an arithmetic
10439        or memory operation.
10440
10441        We explicitly check for a couple of cases where a value might be representable in 32-bit, but
10442        these probably never kick in on Mac OS, and only kick in to hose GTK.  Deleting these does not
10443        show a performance degradation on SunSpider.  Remove.
10444
10445        * assembler/MacroAssemblerX86_64.h:
10446        (JSC::MacroAssemblerX86_64::storePtr):
10447        (JSC::MacroAssemblerX86_64::branchPtr):
10448
104492009-08-26  Geoffrey Garen  <ggaren@apple.com>
10450
10451        Reviewed by Oliver Hunt.
10452
10453        A bit of Collector refatoring.
10454
10455        SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay).
10456
10457        * JavaScriptCore.exp:
10458
10459        * runtime/JSCell.cpp:
10460        (JSC::JSCell::toPrimitive):
10461        (JSC::JSCell::getPrimitiveNumber):
10462        (JSC::JSCell::toBoolean):
10463        (JSC::JSCell::toNumber):
10464        (JSC::JSCell::toString):
10465        (JSC::JSCell::toObject): Removed pure virtual functions from
10466        JSCell, so the collector can construct one. This allowed
10467        me to remove a bunch of ASSERT_NOT_REACHED throughout the
10468        code, too.
10469
10470        * runtime/JSCell.h:
10471        (JSC::JSCell::JSCell): ditto
10472        (JSC::Heap::heap): Inlined this function because it's trivial.
10473
10474        * JavaScriptCore.exp:
10475
10476        * runtime/Collector.cpp:
10477        (JSC::Heap::destroy):
10478        (JSC::Heap::allocateBlock):
10479        (JSC::Heap::freeBlock):
10480        (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since
10481        it doesn't actually free the Heap object.
10482        (JSC::Heap::heapAllocate):
10483        (JSC::Heap::sweep):
10484        * runtime/Collector.h: Refactored block allocation and destruction
10485        into helper functions.
10486
10487        * runtime/GetterSetter.cpp:
10488        * runtime/JSAPIValueWrapper.cpp:
10489        * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations
10490        of pure virtual functions. (See above.)
10491
10492=== End re-roll-in of r47738:47740 with Windows crash fixed ===
10493
104942009-08-26  Geoffrey Garen  <ggaren@apple.com>
10495
10496        Build fix: start out with a 32-bit value to avoid a shortening warning.
10497
10498        * runtime/Collector.cpp:
10499        (JSC::Heap::sweep):
10500
105012009-08-24  Geoffrey Garen  <ggaren@apple.com>
10502
10503        Reviewed by Oliver Hunt.
10504
10505        Substantially reduced VM thrash in the GC heap.
10506
10507        1.08x faster on v8 (1.60x faster on v8-splay).
10508
10509        1.40x faster on bench-alloc-nonretained.
10510
10511        1.90x faster on bench-alloc-retained.
10512
10513        SunSpider says no change.
10514
10515        * runtime/Collector.cpp:
10516        (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local
10517        variables unconditionally after calling collect(), since they may be used
10518        even if we don't "goto scan". (In the bug I saw, usedBlocks got out of
10519        sync with heap.usedBlocks).
10520        (JSC::Heap::sweep): Keep enough free heap space to accomodate
10521        the number of objects we'll allocate before the next GC, plus 25%, for
10522        good measure.
10523        * runtime/Collector.h: Bumped the block size to 256k. This seems to give
10524        the best cache performance, and it prevents us from initiating lots of
10525        VM traffic to recover very small chunks of memory.
10526
10527=== Begin re-roll-in of r47738:47740 with Windows crash fixed ===
10528
105292009-08-25  Drew Wilson  <atwilson@google.com>
10530
10531        Reviewed by David Levin.
10532
10533        postMessage() spec now supports sending arrays of ports
10534        https://bugs.webkit.org/show_bug.cgi?id=26902
10535
10536        Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.
10537
10538        * wtf/VectorTraits.h:
10539
105402009-08-26  Xan Lopez  <xlopez@igalia.com>
10541
10542        Rubber-stamped by Gustavo Noronha.
10543
10544        Remove duplicated files from file list.
10545
10546        * GNUmakefile.am:
10547
105482009-08-26  Oliver Hunt  <oliver@apple.com>
10549
10550        Reviewed by NOBODY (Build fix).
10551
10552        More export fixes.
10553
10554        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10555        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10556
105572009-08-26  Oliver Hunt  <oliver@apple.com>
10558
10559        Reviewed by NOBODY (Build fix).
10560
10561        Hopefully fix all the exports from JSC on windows
10562
10563        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10564        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10565
105662009-08-26  Oliver Hunt  <oliver@apple.com>
10567
10568        Reviewed by NOBODY (Build fixes).
10569
10570        Forgot I added files to JavaScriptCore.
10571
10572        * GNUmakefile.am:
10573        * JavaScriptCore.gypi:
10574        * JavaScriptCore.pri:
10575        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10576        * JavaScriptCoreSources.bkl:
10577
105782009-08-25  Oliver Hunt  <oliver@apple.com>
10579
10580        Reviewed by Gavin Barraclough.
10581
10582        [ES5] Implement getOwnPropertyDescriptor
10583        https://bugs.webkit.org/show_bug.cgi?id=28724
10584
10585        Implement the core runtime support for getOwnPropertyDescriptor.
10586        This adds a virtual getOwnPropertyDescriptor method to every class
10587        that implements getOwnPropertySlot that shadows the behaviour of
10588        getOwnPropertySlot.  The alternative would be to make getOwnPropertySlot
10589        (or PropertySlots in general) provide property attribute information,
10590        but quick testing showed this to be a regression.
10591
10592        * JavaScriptCore.exp:
10593        * JavaScriptCore.xcodeproj/project.pbxproj:
10594        * runtime/Arguments.cpp:
10595        (JSC::Arguments::getOwnPropertyDescriptor):
10596        * runtime/Arguments.h:
10597        * runtime/ArrayPrototype.cpp:
10598        (JSC::ArrayPrototype::getOwnPropertyDescriptor):
10599        * runtime/ArrayPrototype.h:
10600        * runtime/CommonIdentifiers.h:
10601        * runtime/DatePrototype.cpp:
10602        (JSC::DatePrototype::getOwnPropertyDescriptor):
10603        * runtime/DatePrototype.h:
10604        * runtime/JSArray.cpp:
10605        (JSC::JSArray::getOwnPropertyDescriptor):
10606        * runtime/JSArray.h:
10607        * runtime/JSByteArray.cpp:
10608        (JSC::JSByteArray::getOwnPropertyDescriptor):
10609        * runtime/JSByteArray.h:
10610        * runtime/JSFunction.cpp:
10611        (JSC::JSFunction::getOwnPropertyDescriptor):
10612        * runtime/JSFunction.h:
10613        * runtime/JSGlobalObject.h:
10614        (JSC::JSGlobalObject::getOwnPropertyDescriptor):
10615        * runtime/JSNotAnObject.cpp:
10616        (JSC::JSNotAnObject::getOwnPropertyDescriptor):
10617        * runtime/JSNotAnObject.h:
10618        * runtime/JSONObject.cpp:
10619        (JSC::JSONObject::getOwnPropertySlot):
10620        (JSC::JSONObject::getOwnPropertyDescriptor):
10621        * runtime/JSONObject.h:
10622        * runtime/JSObject.cpp:
10623        (JSC::JSObject::getOwnPropertyDescriptor):
10624        (JSC::JSObject::getPropertyDescriptor):
10625        * runtime/JSObject.h:
10626        * runtime/JSString.cpp:
10627        (JSC::JSString::getStringPropertyDescriptor):
10628        (JSC::JSString::getOwnPropertyDescriptor):
10629        * runtime/JSString.h:
10630        * runtime/JSVariableObject.cpp:
10631        (JSC::JSVariableObject::symbolTableGet):
10632        * runtime/JSVariableObject.h:
10633        * runtime/Lookup.h:
10634        (JSC::getStaticPropertyDescriptor):
10635        (JSC::getStaticFunctionDescriptor):
10636        (JSC::getStaticValueDescriptor):
10637          Add property descriptor equivalents of the lookup
10638          table access functions
10639
10640        * runtime/MathObject.cpp:
10641        (JSC::MathObject::getOwnPropertySlot):
10642        (JSC::MathObject::getOwnPropertyDescriptor):
10643        * runtime/MathObject.h:
10644        * runtime/NumberConstructor.cpp:
10645        (JSC::NumberConstructor::getOwnPropertyDescriptor):
10646        * runtime/NumberConstructor.h:
10647        * runtime/ObjectConstructor.cpp:
10648        (JSC::ObjectConstructor::ObjectConstructor):
10649        (JSC::objectConstructorGetOwnPropertyDescriptor):
10650        * runtime/PropertyDescriptor.cpp: Added.
10651        (JSC::PropertyDescriptor::writable):
10652        (JSC::PropertyDescriptor::enumerable):
10653        (JSC::PropertyDescriptor::configurable):
10654        (JSC::PropertyDescriptor::hasAccessors):
10655        (JSC::PropertyDescriptor::setUndefined):
10656        (JSC::PropertyDescriptor::getter):
10657        (JSC::PropertyDescriptor::setter):
10658        (JSC::PropertyDescriptor::setDescriptor):
10659        (JSC::PropertyDescriptor::setAccessorDescriptor):
10660        * runtime/PropertyDescriptor.h: Added.
10661        (JSC::PropertyDescriptor::PropertyDescriptor):
10662        (JSC::PropertyDescriptor::attributes):
10663        (JSC::PropertyDescriptor::isValid):
10664        (JSC::PropertyDescriptor::value):
10665        * runtime/RegExpConstructor.cpp:
10666        (JSC::RegExpConstructor::getOwnPropertyDescriptor):
10667        * runtime/RegExpConstructor.h:
10668        * runtime/RegExpMatchesArray.h:
10669        (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
10670        * runtime/RegExpObject.cpp:
10671        (JSC::RegExpObject::getOwnPropertyDescriptor):
10672        * runtime/RegExpObject.h:
10673        * runtime/StringObject.cpp:
10674        (JSC::StringObject::getOwnPropertyDescriptor):
10675        * runtime/StringObject.h:
10676        * runtime/StringPrototype.cpp:
10677        (JSC::StringPrototype::getOwnPropertyDescriptor):
10678        * runtime/StringPrototype.h:
10679
106802009-08-24  Gavin Barraclough  <barraclough@apple.com>
10681
10682        Reviewed by Darin Adler.
10683
10684        How many copies of the parameters do you need?
10685        https://bugs.webkit.org/show_bug.cgi?id=28701
10686
10687        The function parameters in JSC get copied a lot - and unnecessarily so.
10688
10689        Originally this happened due to duplicating FunctionBodyNodes on recompilation,
10690        though the problem has been exacerbated by copying the parameters from the
10691        original function body onto the executable, then back onto the real body that
10692        will be generated (this happens on every function).  And this is all made worse
10693        since the data structures in question are a little ugly - C style arrays of C++
10694        objects containing ref counts, so they need a full copy-construct (rather than
10695        a simple memcpy).
10696
10697        This can all be greatly simplified by just punting the parameters off into
10698        their own ref-counted object, and forgoing all the copying.
10699
10700        ~no performance change, possible slight progression.
10701
10702        * bytecompiler/BytecodeGenerator.cpp:
10703        (JSC::BytecodeGenerator::BytecodeGenerator):
10704        * bytecompiler/BytecodeGenerator.h:
10705        (JSC::BytecodeGenerator::makeFunction):
10706        * parser/Nodes.cpp:
10707        (JSC::FunctionParameters::FunctionParameters):
10708        (JSC::FunctionBodyNode::FunctionBodyNode):
10709        (JSC::FunctionBodyNode::finishParsing):
10710        * parser/Nodes.h:
10711        (JSC::FunctionBodyNode::parameters):
10712        (JSC::FunctionBodyNode::parameterCount):
10713        * runtime/Executable.cpp:
10714        (JSC::FunctionExecutable::~FunctionExecutable):
10715        (JSC::FunctionExecutable::compile):
10716        (JSC::FunctionExecutable::reparseExceptionInfo):
10717        (JSC::FunctionExecutable::fromGlobalCode):
10718        (JSC::FunctionExecutable::paramString):
10719        * runtime/Executable.h:
10720        (JSC::FunctionExecutable::FunctionExecutable):
10721        (JSC::FunctionExecutable::parameterCount):
10722
107232009-08-25  Brent Fulgham  <bfulgham@webkit.org>
10724
10725        Reviewed by NOBODY (Buildfix).
10726
10727        * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target
10728          that inherits from the debug_wincairo property sheet and therefore
10729          links to the proper debug library.
10730        * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target
10731          that inherits from the debug_wincairo property sheet and therefore
10732          links to the proper debug library.
10733
107342009-08-25  Chris Marrin  <cmarrin@apple.com>
10735
10736        Reviewed by Simon Fraser.
10737
10738        Export tryFastMalloc for Canvas3D work
10739        https://bugs.webkit.org/show_bug.cgi?id=28018
10740
10741        * JavaScriptCore.exp:
10742
107432009-08-25  David Levin  <levin@chromium.org>
10744
10745        Reviewed by Adam Roben.
10746
10747        PLATFORM(CFNETWORK) should be USE(CFNETWORK).
10748        https://bugs.webkit.org/show_bug.cgi?id=28713
10749
10750        * wtf/Platform.h: Added a #define to catch this issue in the
10751        future. The define would generate an error on gcc without the
10752        space in the expansion, but Visual C++ needs the space to cause an error.
10753
107542009-08-24  Brent Fulgham  <bfulgham@webkit.org>
10755
10756        Reviewed by Steve Falkenburg.
10757
10758        Revise CFLite Debug build to emit DLL's with _debug label.
10759        https://bugs.webkit.org/show_bug.cgi?id=28695.
10760
10761        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify
10762          Cairo debug build to inherit from new debug_cairo property sheet.
10763        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops:
10764          Modify to look for debug CFLite when in debug build.
10765
107662009-08-24  Gavin Barraclough  <barraclough@apple.com>
10767
10768        Reviewed by Oliver Adler & Darin Hunt.
10769
10770        https://bugs.webkit.org/show_bug.cgi?id=28691
10771        Do not retain ScopeNodes outside of parsing
10772
10773        There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types.
10774
10775        * bytecode/EvalCodeCache.h:
10776        (JSC::EvalCodeCache::get):
10777        * bytecompiler/BytecodeGenerator.cpp:
10778        (JSC::BytecodeGenerator::BytecodeGenerator):
10779        (JSC::BytecodeGenerator::emitNewFunction):
10780        (JSC::BytecodeGenerator::emitNewFunctionExpression):
10781        * bytecompiler/BytecodeGenerator.h:
10782        (JSC::BytecodeGenerator::makeFunction):
10783        * debugger/Debugger.cpp:
10784        (JSC::Debugger::recompileAllJSFunctions):
10785        (JSC::evaluateInGlobalCallFrame):
10786        * debugger/DebuggerCallFrame.cpp:
10787        (JSC::DebuggerCallFrame::evaluate):
10788        * interpreter/Interpreter.cpp:
10789        (JSC::Interpreter::execute):
10790        (JSC::Interpreter::prepareForRepeatCall):
10791        (JSC::Interpreter::privateExecute):
10792        * jit/JITStubs.cpp:
10793        (JSC::DEFINE_STUB_FUNCTION):
10794        * parser/Nodes.cpp:
10795        (JSC::ScopeNodeData::ScopeNodeData):
10796        (JSC::ProgramNode::create):
10797        (JSC::EvalNode::create):
10798        (JSC::FunctionBodyNode::create):
10799        * parser/Nodes.h:
10800        (JSC::ScopeNode::adoptData):
10801        (JSC::FunctionBodyNode::parameterCount):
10802        * parser/Parser.cpp:
10803        * parser/Parser.h:
10804        (JSC::Parser::arena):
10805        (JSC::Parser::Parser):
10806        (JSC::Parser::parse):
10807        * runtime/ArrayPrototype.cpp:
10808        (JSC::isNumericCompareFunction):
10809        (JSC::arrayProtoFuncSort):
10810        * runtime/Completion.cpp:
10811        (JSC::checkSyntax):
10812        (JSC::evaluate):
10813        * runtime/Executable.cpp:
10814        (JSC::FunctionExecutable::~FunctionExecutable):
10815        (JSC::EvalExecutable::compile):
10816        (JSC::ProgramExecutable::checkSyntax):
10817        (JSC::ProgramExecutable::compile):
10818        (JSC::FunctionExecutable::compile):
10819        (JSC::EvalExecutable::generateJITCode):
10820        (JSC::ProgramExecutable::generateJITCode):
10821        (JSC::FunctionExecutable::generateJITCode):
10822        (JSC::FunctionExecutable::reparseExceptionInfo):
10823        (JSC::EvalExecutable::reparseExceptionInfo):
10824        (JSC::FunctionExecutable::recompile):
10825        (JSC::FunctionExecutable::fromGlobalCode):
10826        (JSC::FunctionExecutable::copyParameters):
10827        (JSC::FunctionExecutable::paramString):
10828        * runtime/Executable.h:
10829        (JSC::ScriptExecutable::ScriptExecutable):
10830        (JSC::ScriptExecutable::sourceID):
10831        (JSC::ScriptExecutable::sourceURL):
10832        (JSC::ScriptExecutable::lineNo):
10833        (JSC::ScriptExecutable::lastLine):
10834        (JSC::ScriptExecutable::usesEval):
10835        (JSC::ScriptExecutable::usesArguments):
10836        (JSC::ScriptExecutable::needsActivation):
10837        (JSC::ScriptExecutable::recordParse):
10838        (JSC::EvalExecutable::bytecode):
10839        (JSC::EvalExecutable::jitCode):
10840        (JSC::ProgramExecutable::bytecode):
10841        (JSC::ProgramExecutable::reparseExceptionInfo):
10842        (JSC::ProgramExecutable::jitCode):
10843        (JSC::FunctionExecutable::FunctionExecutable):
10844        (JSC::FunctionExecutable::make):
10845        (JSC::FunctionExecutable::bytecode):
10846        (JSC::FunctionExecutable::isGenerated):
10847        (JSC::FunctionExecutable::name):
10848        (JSC::FunctionExecutable::parameterCount):
10849        (JSC::FunctionExecutable::jitCode):
10850        * runtime/FunctionConstructor.cpp:
10851        (JSC::constructFunction):
10852        * runtime/JSGlobalData.cpp:
10853        (JSC::JSGlobalData::numericCompareFunction):
10854        * runtime/JSGlobalObjectFunctions.cpp:
10855        (JSC::globalFuncEval):
10856
108572009-08-24  Darin Adler  <darin@apple.com>
10858
10859        * runtime/ObjectPrototype.cpp:
10860        (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot
10861        to land. Leave out the branch, since we don't need one.
10862
108632009-08-24  Darin Adler  <darin@apple.com>
10864
10865        Reviewed by Geoff Garen.
10866
10867        Array index miss case creates a string every time
10868        https://bugs.webkit.org/show_bug.cgi?id=28664
10869
10870        SunSpider test results I saw:
10871
10872            0.5% faster overall
10873            1% faster on crypto-aes
10874            20% faster on crypto-md5
10875            13% faster on crypto-sha1
10876
10877        * runtime/ObjectPrototype.cpp:
10878        (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names
10879        to true.
10880        (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new
10881        property has a name that is the string form of a UInt32.
10882        (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot
10883        if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true.
10884
10885        * runtime/ObjectPrototype.h: Added declarations for the above.
10886
108872009-08-24  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
10888
10889        Unreviewed. Fix a typo in my distcheck build fix.
10890
10891        * GNUmakefile.am:
10892
108932009-08-23  Gustavo Noronha Silva  <gns@gnome.org>
10894
10895        Unreviewed build fix for make distcheck.
10896
10897        * GNUmakefile.am: Added files required for the build.
10898
108992009-08-22  Maciej Stachowiak  <mjs@apple.com>
10900
10901        Reviewed by Mark Rowe.
10902
10903        REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC
10904        https://bugs.webkit.org/show_bug.cgi?id=28655
10905
10906        * runtime/JSFunction.cpp:
10907        (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable.
10908        * wtf/Platform.h:
10909
109102009-08-22  Darin Adler  <darin@apple.com>
10911
10912        Fix storage leak from syntax tree arena allocation patch.
10913
10914        * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable
10915        because it has a vector.
10916
109172009-08-21  Darin Adler  <darin@apple.com>
10918
10919        Fix Qt build.
10920
10921        * parser/Nodes.cpp:
10922        (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again.
10923        This is used outside Nodes.cpp so can't be inline unless
10924        it is in the header.
10925
109262009-08-21  Darin Adler  <darin@apple.com>
10927
10928        Two loose ends from the last commit.
10929
10930        * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h
10931        and create_hash_table project-internal instead of "private".
10932        * runtime/Executable.h: Removed accidentally-added constructor.
10933
109342009-08-21  Darin Adler  <darin@apple.com>
10935
10936        Reviewed by Gavin Barraclough.
10937
10938        Syntax tree nodes should use arena allocation
10939        https://bugs.webkit.org/show_bug.cgi?id=25674
10940
10941        Use an actual arena now. 0.6% speedup on SunSpider.
10942
10943        New and improved with 100% less leaking of the universe.
10944
10945        * JavaScriptCore.exp:
10946        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10947        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
10948        Removed all exports involving the class FunctionBodyNode, which no
10949        longer needs to be used outside JavaScriptCore.
10950
10951        * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and
10952        Executable.h project-internal instead of "private".
10953
10954        * bytecompiler/BytecodeGenerator.cpp:
10955        (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
10956        contains const Identifier* now.
10957
10958        * parser/Grammar.y: Made identifiers from the lexer be const
10959        Identifier* and updated since VarStack contains const Identifier* now.
10960
10961        * parser/Lexer.cpp:
10962        (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
10963        (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
10964        and changed to call ParserArena.
10965        (JSC::Lexer::clear): Removed the code to manage m_identifiers and
10966        added code to set m_arena to 0.
10967        * parser/Lexer.h: Updated for changes above.
10968
10969        * parser/NodeConstructors.h:
10970        (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
10971        on the arena.
10972        (JSC::ParserArenaDeletable::operator new): Changed to call the
10973        allocateDeletable function on the arena instead of deleteWithArena.
10974        (JSC::PropertyNode::PropertyNode): Added new constructor that makes
10975        numeric identifiers. Some day we might want to optimize this for
10976        integers so it doesn't create a string for each one.
10977        (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
10978        since it's now a const Identifier& so it can't be left uninitialized.
10979        (JSC::BreakNode::BreakNode): Ditto.
10980        (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
10981        to keep track of the statements rather than a separate statement vector.
10982        (JSC::BlockNode::BlockNode): Ditto.
10983        (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
10984
10985        * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
10986        It seemed strangely out of place in the header.
10987        (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
10988        UString as well as Identifier.
10989        (JSC::SourceElements::singleStatement): Added.
10990        (JSC::SourceElements::lastStatement): Added.
10991        (JSC::RegExpNode::emitBytecode): Changed the throwError code to use
10992        the substitution mechanism instead of doing a string append.
10993        (JSC::SourceElements::emitBytecode): Added. Replaces the old
10994        statementListEmitCode function, since we now keep the SourceElements
10995        objects around.
10996        (JSC::BlockNode::lastStatement): Added.
10997        (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
10998        statementListEmitCode.
10999        (JSC::CaseClauseNode::emitBytecode): Added.
11000        (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
11001        instead of statementListEmitCode.
11002        (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
11003        SourceElements* instead of using releaseContentsIntoVector.
11004        (JSC::ScopeNode::emitStatementsBytecode): Added.
11005        (JSC::ScopeNode::singleStatement): Added.
11006        (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
11007        of statementListEmitCode.
11008        (JSC::EvalNode::emitBytecode): Ditto.
11009        (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
11010        insetad of statementListEmitCode and check for the return node using
11011        the new functions.
11012
11013        * parser/Nodes.h: Changed VarStack to store const Identifier* instead
11014        of Identifier and rely on the arena to control lifetime. Added a new
11015        ParserArenaFreeable class. Made ParserArenaDeletable inherit from
11016        FastAllocBase instead of having its own operator new. Base the Node
11017        class on ParserArenaFreeable. Changed the various Node classes
11018        to use const Identifier& instead of Identifier to avoid the need to
11019        call their destructors and allow them to function as "freeable" in the
11020        arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
11021        Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
11022        CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
11023        as a base class since they do not descend from Node. Eliminated the
11024        StatementVector type and instead have various classes use SourceElements*
11025        instead of StatementVector. This prevents those classes from having to
11026        use ParserArenaDeletable to make sure the vector destructor is called.
11027
11028        * parser/Parser.cpp:
11029        (JSC::Parser::parse): Pass the arena to the lexer.
11030
11031        * parser/Parser.h: Added an include of ParserArena.h, which is no longer
11032        included by Nodes.h.
11033        (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the
11034        singleStatement function, since there is no longer any children function.
11035        Removed some unneeded use of RefPtr.
11036
11037        * parser/ParserArena.cpp:
11038        (JSC::ParserArena::ParserArena): Added. Initializes the new members,
11039        m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
11040        (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
11041        since we store only the current pointer and the end of pool pointer.
11042        (JSC::ParserArena::deallocateObjects): Added. Contains the common
11043        memory-deallocation logic used by both the destructor and the
11044        reset function.
11045        (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
11046        (JSC::ParserArena::reset): Ditto. Also added code to zero out the
11047        new structures, and switched to use clear() instead of shrink(0) since
11048        we don't really reuse arenas.
11049        (JSC::ParserArena::makeNumericIdentifier): Added.
11050        (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
11051        is empty.
11052        (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
11053        since this is used only for assertions at the moment.
11054        (JSC::ParserArena::derefWithArena): Make non-inline.
11055
11056        * parser/ParserArena.h: Added an actual arena of "freeable" objects,
11057        ones that don't need destructors to be called. Also added a separate
11058        IdentifierArena object, a segmented vector of identifiers that used
11059        to be in the Lexer.
11060
11061        * runtime/Executable.h: Moved the definition of the
11062        FunctionExecutable::make function here. It can't go in JSFunction.h
11063        since that header has to be used outside JavaScriptCore and so can't
11064        include this, which includes Nodes.h. The function could be moved
11065        elswhere if we don't want to include JSFunction.h in this header, but
11066        for now this seems to be the best place.
11067
11068        * runtime/JSFunction.h: Removed the include of Executable.h and
11069        definition of the FunctionExecutable::make function.
11070
11071        * wtf/FastMalloc.cpp: Fixed an incorrect comment.
11072
110732009-08-21  Mark Rowe  <mrowe@apple.com>
11074
11075        Fix the non-JIT build.
11076
11077        * runtime/Executable.cpp:
11078        * runtime/Executable.h:
11079
110802009-08-21  Gavin Barraclough  <barraclough@apple.com>
11081
11082        Speculative QuickTime build fix.
11083
11084        * runtime/JSArray.cpp:
11085
110862009-08-21  Gavin Barraclough  <barraclough@apple.com>
11087
11088        Speculative QT build fix.
11089
11090        * runtime/StringPrototype.cpp:
11091
110922009-08-21  Gavin Barraclough  <barraclough@apple.com>
11093
11094        Reviewed by Oliver Hunt.
11095
11096        Restructure Executable types so that host functions do not hold a FunctionExecutable.
11097        https://bugs.webkit.org/show_bug.cgi?id=28621
11098
11099        All JSFunction objects have a pointer to an Executable*.  This is currently always a
11100        FunctionExecutable, however this has a couple of drawbacks.  Host functions do not
11101        store a range of information that the FunctionExecutable provides (source, name,
11102        CodeBlock & information presently held on the FunctionBodyNode).
11103
11104        [ * nearly all... see below! ]
11105
11106        Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific
11107        to JS sourced executable types (source, node) into a new subclass (ScriptExecutable),
11108        and create a new NativeExecutable type.  We now provide a new method in JSFunction
11109        to access & downcast to FunctionExecutable, but in doing so we can make an early
11110        check (with an ASSERT) to ensure that the Executable read from a function will only
11111        be treated as a FunctionExecutable (and thus the JS sepcific fields will only be
11112        accessed) if the JSFunction is not a host function.
11113
11114        There is one JSFunction that currently does not have an Executable, which is the
11115        object created to allow us to read out the vtable pointer.  By making this change
11116        we can also add a new Executable type fror this object (VPtrHackExecutable).
11117        Since this means that really all JSFunctions have an Executable we no longer have
11118        to null-check m_executable before us it - particularly in isHostFunction().
11119
11120        This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase
11121        can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase
11122        that might be a FunctionExecutable or a NativeExecutable.  This does now mean that all
11123        ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be
11124        ref-counted, however this seems less-bad than host functions unnecessarily providing
11125        interface to access non-host specific information.
11126
11127        The class hierarcy has changed from this:
11128
11129        - ExecutableBase
11130            - ProgramExecutable
11131            - EvalExecutable
11132                - CacheableEvalExecutable (also RefCounted by multiple-inheritance)
11133            - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions)
11134
11135        To this:
11136
11137        - RefCounted
11138            - ExecutableBase
11139                - NativeExecutable
11140                - VPtrHackExecutable
11141                - ScriptExecutable
11142                    - ProgramExecutable
11143                    - EvalExecutable
11144                    - FunctionExecutable
11145
11146        This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()).
11147
11148        * bytecode/CodeBlock.cpp:
11149        (JSC::CodeBlock::CodeBlock):
11150        * bytecode/CodeBlock.h:
11151        (JSC::CodeBlock::ownerExecutable):
11152        (JSC::GlobalCodeBlock::GlobalCodeBlock):
11153        * bytecode/EvalCodeCache.h:
11154        (JSC::EvalCodeCache::get):
11155        * debugger/Debugger.cpp:
11156        (JSC::Debugger::recompileAllJSFunctions):
11157        * interpreter/CachedCall.h:
11158        (JSC::CachedCall::CachedCall):
11159        * interpreter/Interpreter.cpp:
11160        (JSC::Interpreter::callEval):
11161        (JSC::Interpreter::privateExecute):
11162        * jit/JITStubs.cpp:
11163        (JSC::DEFINE_STUB_FUNCTION):
11164        * profiler/Profiler.cpp:
11165        (JSC::createCallIdentifierFromFunctionImp):
11166        * runtime/Arguments.h:
11167        (JSC::Arguments::getArgumentsData):
11168        (JSC::Arguments::Arguments):
11169        * runtime/Executable.cpp:
11170        (JSC::NativeExecutable::~NativeExecutable):
11171        (JSC::VPtrHackExecutable::~VPtrHackExecutable):
11172        * runtime/Executable.h:
11173        (JSC::ExecutableBase::ExecutableBase):
11174        (JSC::ExecutableBase::~ExecutableBase):
11175        (JSC::ExecutableBase::isHostFunction):
11176        (JSC::NativeExecutable::NativeExecutable):
11177        (JSC::VPtrHackExecutable::VPtrHackExecutable):
11178        (JSC::ScriptExecutable::ScriptExecutable):
11179        (JSC::ScriptExecutable::source):
11180        (JSC::ScriptExecutable::sourceID):
11181        (JSC::ScriptExecutable::sourceURL):
11182        (JSC::ScriptExecutable::lineNo):
11183        (JSC::ScriptExecutable::lastLine):
11184        (JSC::ScriptExecutable::usesEval):
11185        (JSC::ScriptExecutable::usesArguments):
11186        (JSC::ScriptExecutable::needsActivation):
11187        (JSC::EvalExecutable::EvalExecutable):
11188        (JSC::EvalExecutable::create):
11189        (JSC::ProgramExecutable::ProgramExecutable):
11190        (JSC::FunctionExecutable::FunctionExecutable):
11191        * runtime/FunctionPrototype.cpp:
11192        (JSC::functionProtoFuncToString):
11193        * runtime/JSFunction.cpp:
11194        (JSC::JSFunction::JSFunction):
11195        (JSC::JSFunction::~JSFunction):
11196        (JSC::JSFunction::markChildren):
11197        (JSC::JSFunction::getCallData):
11198        (JSC::JSFunction::call):
11199        (JSC::JSFunction::lengthGetter):
11200        (JSC::JSFunction::getConstructData):
11201        (JSC::JSFunction::construct):
11202        * runtime/JSFunction.h:
11203        (JSC::JSFunction::executable):
11204        (JSC::JSFunction::jsExecutable):
11205        (JSC::JSFunction::isHostFunction):
11206
112072009-08-20  Oliver Hunt  <oliver@apple.com>
11208
11209        Reviewed by Maciej Stachowiak.
11210
11211        Browser hangs on opening Web Inspector.
11212        https://bugs.webkit.org/show_bug.cgi?id=28438
11213
11214        Code generation needs to be able to walk the entire scopechain in some
11215        cases, however the symbol table used by activations was a member of the
11216        codeblock.  Following recompilation this may no longer exist, leading
11217        to a crash or hang on lookup.
11218
11219        We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
11220        for the CodeBlocks used by function code.  This allows activations to
11221        maintain ownership of a copy of the symbol table even after recompilation so
11222        they can continue to work.
11223
11224        * bytecode/CodeBlock.cpp:
11225        (JSC::CodeBlock::CodeBlock):
11226        * bytecode/CodeBlock.h:
11227        (JSC::CodeBlock::symbolTable):
11228        (JSC::CodeBlock::sharedSymbolTable):
11229        (JSC::GlobalCodeBlock::GlobalCodeBlock):
11230        (JSC::FunctionCodeBlock::FunctionCodeBlock):
11231        (JSC::FunctionCodeBlock::~FunctionCodeBlock):
11232        * interpreter/Interpreter.cpp:
11233        (JSC::Interpreter::retrieveArguments):
11234        * runtime/Executable.cpp:
11235        (JSC::EvalExecutable::generateBytecode):
11236        (JSC::FunctionExecutable::generateBytecode):
11237        (JSC::FunctionExecutable::reparseExceptionInfo):
11238        (JSC::EvalExecutable::reparseExceptionInfo):
11239        * runtime/JSActivation.h:
11240        (JSC::JSActivation::JSActivationData::JSActivationData):
11241        (JSC::JSActivation::JSActivationData::~JSActivationData):
11242        * runtime/SymbolTable.h:
11243
112442009-08-20  Xan Lopez  <xlopez@igalia.com>
11245
11246        Add new file to GTK+ build.
11247
11248        * GNUmakefile.am:
11249
112502009-08-20  Geoffrey Garen  <ggaren@apple.com>
11251
11252        Reviewed by Maciej Stachowiak.
11253
11254        Added a number => string cache.
11255
11256        1.07x faster on v8 (1.7x faster on v8-splay).
11257        1.004x faster on SunSpider.
11258
11259        * runtime/JSCell.h: Moved JSValue::toString to JSString.h.
11260        * runtime/JSGlobalData.h: Holds the cache.
11261        * runtime/JSNumberCell.cpp:
11262        (JSC::JSNumberCell::toString):
11263        (JSC::JSNumberCell::toThisString): Removed -0 special case.
11264        UString handles this now, since too many clients were
11265        special-casing it.
11266
11267        * runtime/JSString.h:
11268        (JSC::JSValue::toString): Use the cache when converting
11269        an int or double to string.
11270
11271        * runtime/Operations.h:
11272        (JSC::concatenateStrings): Call toString to take advantage
11273        of the cache.
11274
11275        * runtime/SmallStrings.h:
11276        (JSC::NumericStrings::add):
11277        (JSC::NumericStrings::lookup): The cache.
11278
11279        * runtime/UString.cpp:
11280        (JSC::UString::from): Added -0 special case mentioned above.
11281        Removed appendNumeric because it's mutually exclusive with the
11282        cache.
11283
112842009-08-20  Oliver Hunt  <oliver@apple.com>
11285
11286        Reviewed by Gavin Barraclough.
11287
11288        REGRESSION: fast/profiler/call.html is crashing occasionally
11289        https://bugs.webkit.org/show_bug.cgi?id=28476
11290
11291        Using the codeblock for information about how many parameters and
11292        locals a function has is unsafe in certain circumstances.  The
11293        basic scenario is all function code being cleared in response to
11294        the debugger or profiler being enabled, and then an activation is
11295        marked before its associated function is re-executed.
11296
11297        To deal with this scenario we store the variable count of a function
11298        directly in the FunctionExecutable, and then use that information.
11299
11300        * runtime/Arguments.h:
11301        (JSC::Arguments::getArgumentsData):
11302        * runtime/Executable.cpp:
11303        (JSC::FunctionExecutable::generateBytecode):
11304        * runtime/Executable.h:
11305        (JSC::FunctionExecutable::FunctionExecutable):
11306        (JSC::FunctionExecutable::variableCount):
11307        * runtime/JSActivation.cpp:
11308        (JSC::JSActivation::markChildren):
11309
113102009-08-20  Gavin Barraclough  <barraclough@apple.com>
11311
11312        Reviewed by Oliver Hunt.
11313
11314        Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect
11315        <bug lost in the great bug disasteroony of 08/20/09!>
11316
11317        The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match
11318        the argument number used within the stub functions in JITStubs.cpp, but it doesn't.
11319
11320        Firstly, all the numbers changed when we added a void* 'reserved' as the first slot
11321        (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to
11322        peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number
11323        of machine words, and on 32_64 build the argument slots to stub functions are two
11324        words wide).
11325
11326        * jit/JIT.h:
11327        * jit/JITCall.cpp:
11328        (JSC::JIT::compileOpCallSetupArgs):
11329        (JSC::JIT::compileOpConstructSetupArgs):
11330        (JSC::JIT::compileOpCallVarargsSetupArgs):
11331        (JSC::JIT::compileOpCall):
11332        * jit/JITInlineMethods.h:
11333        (JSC::JIT::emitPutJITStubArg):
11334        (JSC::JIT::emitPutJITStubArgConstant):
11335        (JSC::JIT::emitGetJITStubArg):
11336        (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
11337        * jit/JITOpcodes.cpp:
11338        (JSC::JIT::privateCompileCTIMachineTrampolines):
11339        * jit/JITPropertyAccess.cpp:
11340        (JSC::JIT::privateCompilePutByIdTransition):
11341
113422009-08-20  Oliver Hunt  <oliver@apple.com>
11343
11344        Reviewed by Geoff Garen.
11345
11346        REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
11347        https://bugs.webkit.org/show_bug.cgi?id=28332
11348
11349        Follow up style fixes that were missed in review.
11350
11351        * runtime/Structure.cpp:
11352        (JSC::Structure::hasTransition):
11353        * runtime/Structure.h:
11354        (JSC::Structure::get):
11355        (JSC::StructureTransitionTable::contains):
11356        * runtime/StructureTransitionTable.h:
11357        (JSC::StructureTransitionTable::add):
11358
113592009-08-20  Oliver Hunt  <oliver@apple.com>
11360
11361        Add new exports to windows jsc build
11362
11363        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
11364        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
11365
113662009-08-20  Oliver Hunt  <oliver@apple.com>
11367
11368        Reviewed by Gavin Barraclough.
11369
11370        REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
11371        https://bugs.webkit.org/show_bug.cgi?id=28332
11372
11373        The method check optimisation made transitions aware of the value being
11374        assigned when a transition was assigning a function.  This had the side
11375        effect of making every assignment of a function expression result in a
11376        new transition, and thus a new Structure.  The net result of this is that
11377        the common JS idiom of
11378
11379            function MyObject() {
11380                this.myFunction = function(...){...};
11381            }
11382            new MyObject();
11383
11384        Will produce a unique structure on every iteration, meaning that all
11385        caching is defeated and there is a significant amount of structure churn.
11386
11387        The fix is to return the transition to its original form where it is
11388        keyed off a property name + attributes tuple, but have each transition
11389        support an optional transition on a specific value.
11390
11391        * JavaScriptCore.exp:
11392        * runtime/JSObject.h:
11393        (JSC::JSObject::putDirectInternal):
11394        * runtime/Structure.cpp:
11395        (JSC::Structure::~Structure):
11396        (JSC::Structure::addPropertyTransitionToExistingStructure):
11397        (JSC::Structure::addPropertyTransition):
11398        (JSC::Structure::hasTransition):
11399        * runtime/Structure.h:
11400        (JSC::Structure::transitionedFor):
11401        (JSC::Structure::hasTransition):
11402        (JSC::Structure::):
11403        (JSC::StructureTransitionTable::contains):
11404        (JSC::StructureTransitionTable::get):
11405        * runtime/StructureTransitionTable.h:
11406        (JSC::StructureTransitionTableHashTraits::emptyValue):
11407        (JSC::StructureTransitionTable::hasTransition):
11408        (JSC::StructureTransitionTable::remove):
11409        (JSC::StructureTransitionTable::add):
11410
114112009-08-20  Gavin Barraclough  <barraclough@apple.com>
11412
11413        Reviewed by Oliver Hunt.
11414
11415        Remove FunctionCodeBlock.
11416        https://bugs.webkit.org/show_bug.cgi?id=28502
11417
11418        These only exist to allow JIT code to dereference properties off the
11419        CodeBlock for any callee, regardless of whether it is a host function.
11420
11421        Instead just use the FunctionExecutable.  Copy the m_parameters field
11422        from the CodeBlock into the Executable, and use this to distinguish
11423        between host functions, functions that have been bytecompiled, and
11424        functions that have not.
11425
11426        m_parameters is moved to ExecutableBase rather than FunctionExecutable
11427        so that (as a separate change) we can move make a separate class of
11428        executable for host code, which is not devived from FunctionExecutable
11429        (host code does not feature any of the properties that normal executable
11430        do and will provide, such as source, attributes, and a parsed name).
11431
11432        1% win on v8 tests, 0.5% on sunspider.
11433
11434        * bytecode/CodeBlock.cpp:
11435        (JSC::CodeBlock::derefStructures):
11436        (JSC::CodeBlock::refStructures):
11437        (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
11438        (JSC::CodeBlock::handlerForBytecodeOffset):
11439        (JSC::CodeBlock::lineNumberForBytecodeOffset):
11440        (JSC::CodeBlock::expressionRangeForBytecodeOffset):
11441        (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
11442        (JSC::CodeBlock::functionRegisterForBytecodeOffset):
11443        (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
11444        (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
11445        * bytecode/CodeBlock.h:
11446        (JSC::):
11447        (JSC::CodeBlock::source):
11448        (JSC::CodeBlock::sourceOffset):
11449        (JSC::CodeBlock::evalCodeCache):
11450        (JSC::CodeBlock::createRareDataIfNecessary):
11451
11452            remove NativeCodeBlocks and the NativeCode code type.
11453
11454        * jit/JIT.cpp:
11455        (JSC::JIT::linkCall):
11456
11457            Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock.
11458
11459        * jit/JITCall.cpp:
11460        (JSC::JIT::compileOpCallInitializeCallFrame):
11461        (JSC::JIT::compileOpCallSetupArgs):
11462        (JSC::JIT::compileOpCallVarargsSetupArgs):
11463        (JSC::JIT::compileOpConstructSetupArgs):
11464        (JSC::JIT::compileOpCallVarargs):
11465        (JSC::JIT::compileOpCall):
11466        (JSC::JIT::compileOpCallSlowCase):
11467
11468            Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0.
11469
11470        * jit/JITOpcodes.cpp:
11471        (JSC::JIT::privateCompileCTIMachineTrampolines):
11472
11473            Rewrite call trampolines to not use the CodeBlock.
11474
11475        * jit/JITStubs.cpp:
11476        (JSC::DEFINE_STUB_FUNCTION):
11477
11478            Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock.
11479
11480        * runtime/Executable.cpp:
11481        (JSC::FunctionExecutable::generateBytecode):
11482        (JSC::FunctionExecutable::recompile):
11483        (JSC::FunctionExecutable::FunctionExecutable):
11484        * runtime/Executable.h:
11485        (JSC::ExecutableBase::):
11486        (JSC::ExecutableBase::ExecutableBase):
11487        (JSC::FunctionExecutable::isHostFunction):
11488
11489            Add m_numParameters.
11490
11491        * runtime/JSFunction.cpp:
11492        (JSC::JSFunction::~JSFunction):
11493
11494            Only call generatedBytecode() on JSFunctions non-host FunctionExecutables.
11495
114962009-08-20  Yongjun Zhang  <yongjun.zhang@nokia.com>
11497
11498        Reviewed by Eric Seidel.
11499
11500        https://bugs.webkit.org/show_bug.cgi?id=28054
11501
11502        Use a helper function to work around winscw compiler forward declaration bug
11503        regarding templated classes.
11504
11505        Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler
11506        work with the default UnSpecifiedBoolType() operator, which removes the winscw
11507        specific bool cast hack.
11508
11509        * wtf/PassRefPtr.h:
11510        (WTF::derefIfNotNull):
11511        (WTF::PassRefPtr::~PassRefPtr):
11512
115132009-08-19  Yong Li  <yong.li@torchmobile.com>
11514
11515        Reviewed by Gavin Barraclough.
11516
11517        Change namespace ARM to ARMRegisters
11518        X86 to X86Registers to avoid conflict with macros
11519        https://bugs.webkit.org/show_bug.cgi?id=28428
11520
11521        * assembler/ARMAssembler.cpp:
11522        * assembler/ARMAssembler.h:
11523        * assembler/ARMv7Assembler.h:
11524        * assembler/MacroAssemblerARM.h:
11525        * assembler/MacroAssemblerARMv7.h:
11526        * assembler/MacroAssemblerX86Common.h:
11527        * assembler/MacroAssemblerX86_64.h:
11528        * assembler/X86Assembler.h:
11529        * jit/JIT.h:
11530        * jit/JITArithmetic.cpp:
11531        * jit/JITInlineMethods.h:
11532        * jit/JITOpcodes.cpp:
11533        * wrec/WRECGenerator.cpp:
11534        * wrec/WRECGenerator.h:
11535        * yarr/RegexJIT.cpp:
11536
115372009-08-19  Oliver Hunt  <oliver@apple.com>
11538
11539        Reviewed by Gavin Barraclough.
11540
11541        Devirtualise marking
11542        https://bugs.webkit.org/show_bug.cgi?id=28294
11543
11544        We actually need to mark the value in a number object if we're using the
11545        32bit number representation.
11546
11547        * runtime/NumberObject.h:
11548        (JSC::NumberObject::createStructure):
11549
115502009-08-19  Gavin Barraclough  <barraclough@apple.com>
11551
11552        Reviewed by Darin Adler.
11553
11554         We probably shouldn't be keeping the AST for eval nodes around forevar.
11555        https://bugs.webkit.org/show_bug.cgi?id=28469
11556
11557        EvalNodes don't destroyData() (delete their parser data) since they need to hold onto
11558        their varStack.  Copy a list of variable onto EvalCodeBlock, and this can go away.
11559
11560        * bytecode/CodeBlock.h:
11561        (JSC::EvalCodeBlock::variable):
11562        (JSC::EvalCodeBlock::numVariables):
11563        (JSC::EvalCodeBlock::adoptVariables):
11564        * bytecompiler/BytecodeGenerator.cpp:
11565        (JSC::BytecodeGenerator::BytecodeGenerator):
11566        * interpreter/Interpreter.cpp:
11567        (JSC::Interpreter::execute):
11568        * parser/Nodes.h:
11569        * runtime/Executable.cpp:
11570        (JSC::EvalExecutable::generateBytecode):
11571        * runtime/Executable.h:
11572
115732009-08-19  Jungshik Shin  <jshin@chromium.org>
11574
11575        Reviewed by Darin Adler.
11576
11577        http://bugs.webkit.org/show_bug.cgi?id=28441
11578
11579        Fix a build issue with ICU 4.2 or later on Windows with Visual C++.
11580        Instead of defining all isXXX and toupper/tolower as
11581          WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h,
11582        #define them to be different by prepending 'WTF_...ASCIIType_h' with
11583        the originial names like 'toupper_WTF_...ASCIIType_h'.
11584
11585        * wtf/DisallowCType.h:
11586
115872009-08-18  Oliver Hunt  <oliver@apple.com>
11588
11589        Reviewed by Gavin Barraclough.
11590
11591        Assigning a function to an object should always use the existing transition, even if the transition is not specialized
11592        https://bugs.webkit.org/show_bug.cgi?id=28442
11593
11594        Check for an unspecialized transition as an alternative to always failing if specialisation does not match.
11595
11596        * runtime/Structure.cpp:
11597        (JSC::Structure::addPropertyTransitionToExistingStructure):
11598
115992009-08-18  Dirk Schulze  <krit@webkit.org>
11600
11601        Reviewed by Oliver Hunt.
11602
11603        Added additional getter to ByteArray with an unsigned char as return.
11604        ByteArray can take unsigned char directly now.
11605
11606        * wtf/ByteArray.h:
11607        (WTF::ByteArray::set):
11608        (WTF::ByteArray::get):
11609
116102009-08-18  Peter Kasting  <pkasting@google.com>
11611
11612        Reviewed by Eric Seidel.
11613
11614        https://bugs.webkit.org/show_bug.cgi?id=28415
11615        Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
11616        have it.
11617
11618        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
11619        * JavaScriptCore.vcproj/testapi/testapi.vcproj:
11620
116212009-08-18  Xan Lopez  <xlopez@igalia.com>
11622
11623        Try to fix the GTK+ build.
11624
11625        * GNUmakefile.am:
11626
116272009-08-17  Gavin Barraclough  <barraclough@apple.com>
11628
11629        Reviewed by Sam Weinig.
11630
11631        No, silly runtime, AST nodes are not for you.
11632
11633        We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
11634        the runtime, which means that these nodes must be persisted outside of the
11635        arena, contain both parser & runtime data, etc.  This is all a bit of a mess.
11636
11637        Move functionality into a new FunctionExecutable class.
11638
11639        * API/JSCallbackFunction.cpp:
11640        * API/JSObjectRef.cpp:
11641        * JavaScriptCore.exp:
11642        * JavaScriptCore.xcodeproj/project.pbxproj:
11643        * bytecode/CodeBlock.cpp:
11644        (JSC::CodeBlock::CodeBlock):
11645        (JSC::CodeBlock::markAggregate):
11646        (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
11647        (JSC::CodeBlock::lineNumberForBytecodeOffset):
11648        (JSC::CodeBlock::shrinkToFit):
11649        * bytecode/CodeBlock.h:
11650        (JSC::CodeBlock::getBytecodeIndex):
11651        (JSC::CodeBlock::discardBytecode):
11652        (JSC::CodeBlock::instructionCount):
11653        (JSC::CodeBlock::getJITCode):
11654        (JSC::CodeBlock::executablePool):
11655        (JSC::CodeBlock::ownerExecutable):
11656        (JSC::CodeBlock::extractExceptionInfo):
11657        (JSC::CodeBlock::addFunctionDecl):
11658        (JSC::CodeBlock::functionDecl):
11659        (JSC::CodeBlock::numberOfFunctionDecls):
11660        (JSC::CodeBlock::addFunctionExpr):
11661        (JSC::CodeBlock::functionExpr):
11662        (JSC::GlobalCodeBlock::GlobalCodeBlock):
11663        (JSC::ProgramCodeBlock::ProgramCodeBlock):
11664        (JSC::EvalCodeBlock::EvalCodeBlock):
11665        (JSC::FunctionCodeBlock::FunctionCodeBlock):
11666        (JSC::NativeCodeBlock::NativeCodeBlock):
11667        * bytecode/EvalCodeCache.h:
11668        * bytecode/SamplingTool.cpp:
11669        (JSC::SamplingTool::doRun):
11670        * bytecompiler/BytecodeGenerator.cpp:
11671        (JSC::BytecodeGenerator::BytecodeGenerator):
11672        (JSC::BytecodeGenerator::emitNewFunction):
11673        (JSC::BytecodeGenerator::emitNewFunctionExpression):
11674        * bytecompiler/BytecodeGenerator.h:
11675        * debugger/Debugger.cpp:
11676        (JSC::Debugger::recompileAllJSFunctions):
11677        * interpreter/CachedCall.h:
11678        (JSC::CachedCall::CachedCall):
11679        * interpreter/CallFrameClosure.h:
11680        * interpreter/Interpreter.cpp:
11681        (JSC::Interpreter::unwindCallFrame):
11682        (JSC::Interpreter::throwException):
11683        (JSC::Interpreter::execute):
11684        (JSC::Interpreter::prepareForRepeatCall):
11685        (JSC::Interpreter::debug):
11686        (JSC::Interpreter::privateExecute):
11687        (JSC::Interpreter::retrieveLastCaller):
11688        * interpreter/Interpreter.h:
11689        * jit/JIT.cpp:
11690        (JSC::JIT::privateCompile):
11691        * jit/JIT.h:
11692        (JSC::JIT::compile):
11693        * jit/JITOpcodes.cpp:
11694        (JSC::JIT::privateCompileCTIMachineTrampolines):
11695        (JSC::JIT::emit_op_new_func):
11696        (JSC::JIT::emit_op_new_func_exp):
11697        * jit/JITStubs.cpp:
11698        (JSC::DEFINE_STUB_FUNCTION):
11699        * jit/JITStubs.h:
11700        (JSC::):
11701        * parser/Nodes.cpp:
11702        (JSC::FunctionBodyNode::reparseDataIfNecessary):
11703        * parser/Nodes.h:
11704        (JSC::EvalNode::partialDestroyData):
11705        * parser/Parser.h:
11706        * profiler/ProfileGenerator.cpp:
11707        * profiler/Profiler.cpp:
11708        (JSC::Profiler::createCallIdentifier):
11709        (JSC::createCallIdentifierFromFunctionImp):
11710        * runtime/Arguments.h:
11711        (JSC::Arguments::getArgumentsData):
11712        (JSC::Arguments::Arguments):
11713        (JSC::JSActivation::copyRegisters):
11714        * runtime/ArrayPrototype.cpp:
11715        (JSC::isNumericCompareFunction):
11716        * runtime/CallData.h:
11717        (JSC::):
11718        * runtime/Collector.cpp:
11719        (JSC::Heap::collect):
11720        * runtime/ConstructData.h:
11721        (JSC::):
11722        * runtime/ExceptionHelpers.cpp:
11723        (JSC::createUndefinedVariableError):
11724        (JSC::createInvalidParamError):
11725        (JSC::createNotAConstructorError):
11726        (JSC::createNotAFunctionError):
11727        (JSC::createNotAnObjectError):
11728        * runtime/Executable.cpp: Added.
11729        (JSC::EvalExecutable::generateBytecode):
11730        (JSC::ProgramExecutable::generateBytecode):
11731        (JSC::FunctionExecutable::generateBytecode):
11732        (JSC::EvalExecutable::generateJITCode):
11733        (JSC::ProgramExecutable::generateJITCode):
11734        (JSC::FunctionExecutable::generateJITCode):
11735        (JSC::FunctionExecutable::isHostFunction):
11736        (JSC::FunctionExecutable::markAggregate):
11737        (JSC::FunctionExecutable::reparseExceptionInfo):
11738        (JSC::EvalExecutable::reparseExceptionInfo):
11739        (JSC::FunctionExecutable::recompile):
11740        (JSC::FunctionExecutable::FunctionExecutable):
11741        * runtime/Executable.h:
11742        (JSC::ExecutableBase::~ExecutableBase):
11743        (JSC::ExecutableBase::ExecutableBase):
11744        (JSC::ExecutableBase::source):
11745        (JSC::ExecutableBase::sourceID):
11746        (JSC::ExecutableBase::lastLine):
11747        (JSC::ExecutableBase::usesEval):
11748        (JSC::ExecutableBase::usesArguments):
11749        (JSC::ExecutableBase::needsActivation):
11750        (JSC::ExecutableBase::astNode):
11751        (JSC::ExecutableBase::generatedJITCode):
11752        (JSC::ExecutableBase::getExecutablePool):
11753        (JSC::EvalExecutable::EvalExecutable):
11754        (JSC::EvalExecutable::bytecode):
11755        (JSC::EvalExecutable::varStack):
11756        (JSC::EvalExecutable::evalNode):
11757        (JSC::EvalExecutable::jitCode):
11758        (JSC::ProgramExecutable::ProgramExecutable):
11759        (JSC::ProgramExecutable::reparseExceptionInfo):
11760        (JSC::ProgramExecutable::bytecode):
11761        (JSC::ProgramExecutable::programNode):
11762        (JSC::ProgramExecutable::jitCode):
11763        (JSC::FunctionExecutable::FunctionExecutable):
11764        (JSC::FunctionExecutable::name):
11765        (JSC::FunctionExecutable::bytecode):
11766        (JSC::FunctionExecutable::generatedBytecode):
11767        (JSC::FunctionExecutable::usesEval):
11768        (JSC::FunctionExecutable::usesArguments):
11769        (JSC::FunctionExecutable::parameterCount):
11770        (JSC::FunctionExecutable::paramString):
11771        (JSC::FunctionExecutable::isGenerated):
11772        (JSC::FunctionExecutable::body):
11773        (JSC::FunctionExecutable::jitCode):
11774        (JSC::FunctionExecutable::createNativeThunk):
11775        * runtime/FunctionConstructor.cpp:
11776        (JSC::constructFunction):
11777        * runtime/FunctionPrototype.cpp:
11778        (JSC::functionProtoFuncToString):
11779        * runtime/JSActivation.cpp:
11780        (JSC::JSActivation::JSActivation):
11781        (JSC::JSActivation::markChildren):
11782        (JSC::JSActivation::isDynamicScope):
11783        (JSC::JSActivation::argumentsGetter):
11784        * runtime/JSActivation.h:
11785        (JSC::JSActivation::JSActivationData::JSActivationData):
11786        * runtime/JSFunction.cpp:
11787        (JSC::JSFunction::isHostFunction):
11788        (JSC::JSFunction::JSFunction):
11789        (JSC::JSFunction::~JSFunction):
11790        (JSC::JSFunction::markChildren):
11791        (JSC::JSFunction::getCallData):
11792        (JSC::JSFunction::call):
11793        (JSC::JSFunction::lengthGetter):
11794        (JSC::JSFunction::getConstructData):
11795        (JSC::JSFunction::construct):
11796        * runtime/JSFunction.h:
11797        (JSC::JSFunction::executable):
11798        (JSC::FunctionExecutable::make):
11799        * runtime/JSGlobalData.cpp:
11800        (JSC::JSGlobalData::JSGlobalData):
11801        (JSC::JSGlobalData::numericCompareFunction):
11802        * runtime/JSGlobalData.h:
11803
118042009-08-17  Mark Rowe  <mrowe@apple.com>
11805
11806        Reviewed by Darin Adler.
11807
11808        Fix 300,000+ leaks seen during the regression tests.
11809
11810        EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
11811        While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
11812        To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
11813        refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
11814        now uses CacheableEvalExecutable::create and avoids the leak.
11815
11816        * bytecode/EvalCodeCache.h:
11817        (JSC::EvalCodeCache::get):
11818        * interpreter/Interpreter.cpp:
11819        (JSC::Interpreter::callEval):
11820        * runtime/Executable.h:
11821        (JSC::CacheableEvalExecutable::create):
11822        (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
11823
118242009-08-17  Oliver Hunt  <oliver@apple.com>
11825
11826        RS=Mark Rowe.
11827
11828        REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
11829        https://bugs.webkit.org/show_bug.cgi?id=28341
11830        <rdar://problem/7145615>
11831
11832        Reverting r47292.  Alas Prototype.js breaks with Arguments inheriting
11833        from Array as ES5 attempted.  Prototype.js defines $A in terms of a
11834        function it places on (among other global objects) the Array prototype,
11835        thus breaking $A for arrays.
11836
11837        * runtime/Arguments.h:
11838        (JSC::Arguments::Arguments):
11839        * runtime/JSGlobalObject.cpp:
11840        (JSC::JSGlobalObject::reset):
11841        (JSC::JSGlobalObject::markChildren):
11842        * runtime/JSGlobalObject.h:
11843        (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
11844        * runtime/ObjectPrototype.cpp:
11845        (JSC::ObjectPrototype::ObjectPrototype):
11846        * runtime/ObjectPrototype.h:
11847        * tests/mozilla/ecma_3/Function/arguments-001.js:
11848
118492009-08-17  Peter Kasting  <pkasting@google.com>
11850
11851        Reviewed by Steve Falkenburg.
11852
11853        https://bugs.webkit.org/show_bug.cgi?id=27323
11854        Only add Cygwin to the path when it isn't already there.  This avoids
11855        causing problems for people who purposefully have non-Cygwin versions of
11856        executables like svn in front of the Cygwin ones in their paths.
11857
11858        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
11859        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
11860        * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
11861        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
11862        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
11863
118642009-08-17  Xan Lopez  <xlopez@igalia.com>
11865
11866        Reviewed by Mark Rowe.
11867
11868        Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
11869
11870        * wtf/FastMalloc.cpp:
11871        (WTF::fastMalloc):
11872        (WTF::fastCalloc):
11873        (WTF::fastRealloc):
11874
118752009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
11876
11877        Reviewed by Mark Rowe.
11878
11879        Fix crash on ./ecma_2/RegExp/exec-002.js.
11880        https://bugs.webkit.org/show_bug.cgi?id=28353
11881
11882        Change the order of freeParenthesesDisjunctionContext and
11883        popParenthesesDisjunctionContext on all call sites as the pop
11884        method is accessing backTrack->lastContext which is the context
11885        that is about to be freed.
11886
11887        * yarr/RegexInterpreter.cpp:
11888        (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
11889        (JSC::Yarr::Interpreter::backtrackParentheses):
11890
118912009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
11892
11893        Reviewed by Mark Rowe.
11894
11895        https://bugs.webkit.org/show_bug.cgi?id=28352
11896
11897        Fix coding style violations. Use m_ for C++ class members. Remove
11898        trailing whitespace on empty lines.
11899
11900        * yarr/RegexInterpreter.cpp:
11901        (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
11902        (JSC::Yarr::Interpreter::tryConsumeCharacter):
11903        (JSC::Yarr::Interpreter::tryConsumeBackReference):
11904        (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
11905        (JSC::Yarr::Interpreter::backtrackParentheses):
11906        (JSC::Yarr::ByteCompiler::ByteCompiler):
11907        (JSC::Yarr::ByteCompiler::compile):
11908        (JSC::Yarr::ByteCompiler::checkInput):
11909        (JSC::Yarr::ByteCompiler::assertionBOL):
11910        (JSC::Yarr::ByteCompiler::assertionEOL):
11911        (JSC::Yarr::ByteCompiler::assertionWordBoundary):
11912        (JSC::Yarr::ByteCompiler::atomPatternCharacter):
11913        (JSC::Yarr::ByteCompiler::atomCharacterClass):
11914        (JSC::Yarr::ByteCompiler::atomBackReference):
11915        (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
11916        (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
11917        (JSC::Yarr::ByteCompiler::popParenthesesStack):
11918        (JSC::Yarr::ByteCompiler::closeAlternative):
11919        (JSC::Yarr::ByteCompiler::closeBodyAlternative):
11920        (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
11921        (JSC::Yarr::ByteCompiler::regexBegin):
11922        (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
11923        (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
11924        (JSC::Yarr::ByteCompiler::emitDisjunction):
11925
119262009-08-15  Mark Rowe  <mrowe@apple.com>
11927
11928        Fix the build with JIT disabled.
11929
11930        * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
11931        * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
11932        NativeFunctionWrapper is when the JIT is disabled.
11933
119342009-08-15  Adam Bergkvist  <adam.bergkvist@ericsson.com>
11935
11936        Reviewed by Sam Weinig.
11937
11938        Added ENABLE_EVENTSOURCE flag.
11939        https://bugs.webkit.org/show_bug.cgi?id=14997
11940
11941        * Configurations/FeatureDefines.xcconfig:
11942
119432009-08-14  Gavin Barraclough  <barraclough@apple.com>
11944
11945        * parser/Parser.h:
11946        (JSC::EvalExecutable::parse):
11947        (JSC::ProgramExecutable::parse):
11948        * runtime/Executable.h:
11949
119502009-08-14  Gavin Barraclough  <barraclough@apple.com>
11951
11952        Reviewed by Oliver Hunt.
11953
11954        Remove AST nodes from use within the Runtime (outside of parsing), stage 1
11955        https://bugs.webkit.org/show_bug.cgi?id=28330
11956
11957        Remove the EvalNode and ProgramNode from use in the runtime.  They still exist
11958        after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
11959        and are also still reachable behind CodeBlock::m_ownerNode.
11960
11961        The next step will be to beat back FunctionBodyNode in the same fashion.
11962        Then remove the usage via CodeBlock, then only construct these nodes only on
11963        demand during bytecode generation.
11964
11965        * JavaScriptCore.xcodeproj/project.pbxproj:
11966        * bytecode/CodeBlock.h:
11967        (JSC::GlobalCodeBlock::GlobalCodeBlock):
11968        (JSC::GlobalCodeBlock::~GlobalCodeBlock):
11969        (JSC::ProgramCodeBlock::ProgramCodeBlock):
11970        (JSC::EvalCodeBlock::EvalCodeBlock):
11971        (JSC::FunctionCodeBlock::FunctionCodeBlock):
11972        (JSC::NativeCodeBlock::NativeCodeBlock):
11973        * bytecode/EvalCodeCache.h:
11974        (JSC::EvalCodeCache::get):
11975        * debugger/Debugger.cpp:
11976        (JSC::evaluateInGlobalCallFrame):
11977        * debugger/DebuggerCallFrame.cpp:
11978        (JSC::DebuggerCallFrame::evaluate):
11979        * interpreter/Interpreter.cpp:
11980        (JSC::Interpreter::callEval):
11981        (JSC::Interpreter::execute):
11982        * interpreter/Interpreter.h:
11983        * parser/Nodes.cpp:
11984        (JSC::FunctionBodyNode::createNativeThunk):
11985        (JSC::FunctionBodyNode::generateBytecode):
11986        (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
11987        * parser/Parser.h:
11988        (JSC::Parser::parse):
11989        (JSC::Parser::reparse):
11990        (JSC::Parser::parseFunctionFromGlobalCode):
11991        (JSC::::parse):
11992        * runtime/Completion.cpp:
11993        (JSC::checkSyntax):
11994        (JSC::evaluate):
11995        * runtime/Error.cpp:
11996        (JSC::throwError):
11997        * runtime/Error.h:
11998        * runtime/Executable.h: Added.
11999        (JSC::TemplateExecutable::TemplateExecutable):
12000        (JSC::TemplateExecutable::markAggregate):
12001        (JSC::TemplateExecutable::sourceURL):
12002        (JSC::TemplateExecutable::lineNo):
12003        (JSC::TemplateExecutable::bytecode):
12004        (JSC::TemplateExecutable::jitCode):
12005        (JSC::EvalExecutable::EvalExecutable):
12006        (JSC::ProgramExecutable::ProgramExecutable):
12007        * runtime/FunctionConstructor.cpp:
12008        (JSC::constructFunction):
12009        * runtime/FunctionConstructor.h:
12010        * runtime/JSGlobalData.cpp:
12011        (JSC::JSGlobalData::numericCompareFunction):
12012        * runtime/JSGlobalObject.cpp:
12013        (JSC::JSGlobalObject::~JSGlobalObject):
12014        (JSC::JSGlobalObject::markChildren):
12015        * runtime/JSGlobalObject.h:
12016        (JSC::JSGlobalObject::codeBlocks):
12017        * runtime/JSGlobalObjectFunctions.cpp:
12018        (JSC::globalFuncEval):
12019
120202009-08-14  Darin Adler  <darin@apple.com>
12021
12022        Reviewed by Sam Weinig.
12023
12024        Rename the confusing isObject(<class>) to inherits(<class>).
12025        It still works on non-objects, returning false.
12026
12027        * runtime/ArrayConstructor.cpp:
12028        (JSC::arrayConstructorIsArray): Removed unneeded isObject call
12029        and updated remaining isObject call to new name, inherits.
12030
12031        * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
12032        but more importantly, made it non-virtual (it was already inline)
12033        so it is now as fast as JSObject::inherits was.
12034
12035        * runtime/JSObject.h: Removed inherits function since the one
12036        in the base class is fine as-is. Also made various JSCell functions
12037        that should not be called on JSObject uncallable by making them
12038        both private and not implemented.
12039        (JSC::JSCell::inherits): Updated name.
12040        (JSC::JSValue::inherits): Ditto.
12041
12042        * debugger/Debugger.cpp:
12043        (JSC::Debugger::recompileAllJSFunctions):
12044        * interpreter/Interpreter.cpp:
12045        (JSC::Interpreter::unwindCallFrame):
12046        * runtime/ArrayPrototype.cpp:
12047        (JSC::arrayProtoFuncToString):
12048        (JSC::arrayProtoFuncToLocaleString):
12049        (JSC::arrayProtoFuncConcat):
12050        * runtime/BooleanPrototype.cpp:
12051        (JSC::booleanProtoFuncToString):
12052        (JSC::booleanProtoFuncValueOf):
12053        * runtime/DateConstructor.cpp:
12054        (JSC::constructDate):
12055        * runtime/DatePrototype.cpp:
12056        (JSC::dateProtoFuncToString):
12057        (JSC::dateProtoFuncToUTCString):
12058        (JSC::dateProtoFuncToISOString):
12059        (JSC::dateProtoFuncToDateString):
12060        (JSC::dateProtoFuncToTimeString):
12061        (JSC::dateProtoFuncToLocaleString):
12062        (JSC::dateProtoFuncToLocaleDateString):
12063        (JSC::dateProtoFuncToLocaleTimeString):
12064        (JSC::dateProtoFuncGetTime):
12065        (JSC::dateProtoFuncGetFullYear):
12066        (JSC::dateProtoFuncGetUTCFullYear):
12067        (JSC::dateProtoFuncToGMTString):
12068        (JSC::dateProtoFuncGetMonth):
12069        (JSC::dateProtoFuncGetUTCMonth):
12070        (JSC::dateProtoFuncGetDate):
12071        (JSC::dateProtoFuncGetUTCDate):
12072        (JSC::dateProtoFuncGetDay):
12073        (JSC::dateProtoFuncGetUTCDay):
12074        (JSC::dateProtoFuncGetHours):
12075        (JSC::dateProtoFuncGetUTCHours):
12076        (JSC::dateProtoFuncGetMinutes):
12077        (JSC::dateProtoFuncGetUTCMinutes):
12078        (JSC::dateProtoFuncGetSeconds):
12079        (JSC::dateProtoFuncGetUTCSeconds):
12080        (JSC::dateProtoFuncGetMilliSeconds):
12081        (JSC::dateProtoFuncGetUTCMilliseconds):
12082        (JSC::dateProtoFuncGetTimezoneOffset):
12083        (JSC::dateProtoFuncSetTime):
12084        (JSC::setNewValueFromTimeArgs):
12085        (JSC::setNewValueFromDateArgs):
12086        (JSC::dateProtoFuncSetYear):
12087        (JSC::dateProtoFuncGetYear):
12088        * runtime/FunctionPrototype.cpp:
12089        (JSC::functionProtoFuncToString):
12090        * runtime/JSActivation.cpp:
12091        (JSC::JSActivation::argumentsGetter):
12092        * runtime/JSValue.h:
12093        * runtime/RegExpConstructor.cpp:
12094        (JSC::constructRegExp):
12095        * runtime/RegExpPrototype.cpp:
12096        (JSC::regExpProtoFuncTest):
12097        (JSC::regExpProtoFuncExec):
12098        (JSC::regExpProtoFuncCompile):
12099        (JSC::regExpProtoFuncToString):
12100        * runtime/ScopeChain.cpp:
12101        (JSC::ScopeChain::localDepth):
12102        * runtime/StringPrototype.cpp:
12103        (JSC::stringProtoFuncReplace):
12104        (JSC::stringProtoFuncToString):
12105        (JSC::stringProtoFuncMatch):
12106        (JSC::stringProtoFuncSearch):
12107        (JSC::stringProtoFuncSplit):
12108        Updated to new name, inherits, from old name, isObject.
12109
121102009-07-31  Harald Fernengel  <harald.fernengel@nokia.com>
12111
12112        Reviewed by Simon Hausmann.
12113
12114        Adding QNX as a platform. Currently only tested with Qt.
12115
12116        https://bugs.webkit.org/show_bug.cgi?id=27885
12117
12118        * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
12119          since QNX doesn't have the pthread _nt functions
12120        * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
12121          defines
12122        * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
12123
121242009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
12125
12126        Reviewed by Simon Hausmann.
12127
12128        Currently generic ARM and ARMv7 platforms work only with JSVALUE32
12129        https://bugs.webkit.org/show_bug.cgi?id=28300
12130
12131        * wtf/Platform.h:
12132
121332009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
12134
12135        Reviewed by Simon Hausmann.
12136
12137        Enable JIT on ARM for QT by default
12138        https://bugs.webkit.org/show_bug.cgi?id=28259
12139
12140        * wtf/Platform.h:
12141
121422009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
12143
12144        Reviewed by Simon Hausmann.
12145
12146        Enable YARR_JIT on ARM for QT by default
12147        https://bugs.webkit.org/show_bug.cgi?id=28259
12148
12149        * wtf/Platform.h:
12150
121512009-08-14  Oliver Hunt  <oliver@apple.com>
12152
12153        Reviewed by Gavin Barraclough.
12154
12155        [ES5] Arguments object should inherit from Array
12156        https://bugs.webkit.org/show_bug.cgi?id=28298
12157
12158        Make the Arguments object conform to the behaviour specified in ES5.
12159        The simple portion of this is to make Arguments use Array.prototype
12160        as its prototype rather than Object.prototype.
12161
12162        The spec then requires us to set instance.constructor to the pristine
12163        Object constructor, and instance.toString and instance.toLocaleString
12164        to the pristine versions from Object.prototype.  To do this we now
12165        make the ObjectPrototype constructor return its toString and
12166        toLocaleString functions (similar to the call and apply functions
12167        from FunctionPrototype).
12168
12169        Oddly enough this reports itself as a slight win, but given the code
12170        isn't hit in the tests that claim to have improved I put this down to
12171        code motion.
12172
12173        * runtime/Arguments.h:
12174        (JSC::Arguments::Arguments):
12175        (JSC::Arguments::initializeStandardProperties):
12176        * runtime/JSGlobalObject.cpp:
12177        (JSC::JSGlobalObject::reset):
12178        (JSC::JSGlobalObject::markChildren):
12179        * runtime/JSGlobalObject.h:
12180        (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
12181        (JSC::JSGlobalObject::objectConstructor):
12182        (JSC::JSGlobalObject::objectToStringFunction):
12183        (JSC::JSGlobalObject::objectToLocaleStringFunction):
12184        * runtime/ObjectPrototype.cpp:
12185        (JSC::ObjectPrototype::ObjectPrototype):
12186        * runtime/ObjectPrototype.h:
12187        * tests/mozilla/ecma_3/Function/arguments-001.js:
12188          Update test to new es5 behaviour
12189
121902009-08-14  Oliver Hunt  <oliver@apple.com>
12191
12192        Remove MarkStack::drain from the JSC exports file
12193
12194        MarkStack::drain is now marked inline, the including it in the exports file
12195        produces an ld warning
12196
12197        * JavaScriptCore.exp:
12198
121992009-08-13  Sam Weinig  <sam@webkit.org>
12200
12201        Reviewed by Oliver Hunt.
12202
12203        Remove accidentally left in debugging statement.
12204
12205        * runtime/JSArray.h:
12206        (JSC::MarkStack::drain):
12207
122082009-08-13  Oliver Hunt  <oliver@apple.com>
12209
12210        Reviewed by Maciej Stachowiak.
12211
12212        [ES5] Implement Array.isArray
12213        https://bugs.webkit.org/show_bug.cgi?id=28296
12214
12215        Add support for Array.isArray to the Array constructor
12216
12217        * runtime/ArrayConstructor.cpp:
12218        (JSC::ArrayConstructor::ArrayConstructor):
12219        (JSC::arrayConstructorIsArray):
12220        * runtime/ArrayConstructor.h:
12221        * runtime/CommonIdentifiers.h:
12222        * runtime/JSArray.h:
12223        (JSC::MarkStack::drain):
12224        * runtime/JSGlobalObject.cpp:
12225        (JSC::JSGlobalObject::reset):
12226
122272009-08-13  Oliver Hunt  <oliver@apple.com>
12228
12229        Reviewed by NOBODY (Buildfix).
12230
12231        Attempt to fix windows build
12232
12233        * runtime/Collector.cpp:
12234
122352009-08-13  Oliver Hunt  <oliver@apple.com>
12236
12237        Reviewed by Maciej Stachowiak.
12238
12239        Devirtualise marking
12240        https://bugs.webkit.org/show_bug.cgi?id=28294
12241
12242        Add a bit to TypeInfo to indicate that an object uses the standard
12243        JSObject::markChildren method.  This allows us to devirtualise marking
12244        of most objects (though a branch is still needed).  We also add a branch
12245        to identify arrays thus devirtualising marking in that case as well.
12246
12247        In order to make the best use of this devirtualisation I've also reworked
12248        the MarkStack::drain() logic to make the iteration more efficient.
12249
12250        * API/JSCallbackConstructor.h:
12251        (JSC::JSCallbackConstructor::createStructure):
12252        * API/JSCallbackFunction.h:
12253        (JSC::JSCallbackFunction::createStructure):
12254        * JavaScriptCore.exp:
12255        * runtime/BooleanObject.h:
12256        (JSC::BooleanObject::createStructure):
12257        * runtime/FunctionPrototype.h:
12258        (JSC::FunctionPrototype::createStructure):
12259        * runtime/InternalFunction.h:
12260        (JSC::InternalFunction::createStructure):
12261        * runtime/JSAPIValueWrapper.h:
12262        (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
12263        * runtime/JSArray.cpp:
12264        (JSC::JSArray::markChildren):
12265        * runtime/JSArray.h:
12266        (JSC::JSArray::markChildrenDirect):
12267        (JSC::MarkStack::drain):
12268        * runtime/JSByteArray.cpp:
12269        (JSC::JSByteArray::createStructure):
12270        * runtime/JSCell.h:
12271        (JSC::MarkStack::append):
12272        * runtime/JSGlobalData.cpp:
12273        (JSC::JSGlobalData::JSGlobalData):
12274        * runtime/JSNumberCell.h:
12275        (JSC::JSNumberCell::createStructure):
12276        * runtime/JSONObject.h:
12277        (JSC::JSONObject::createStructure):
12278        * runtime/JSObject.cpp:
12279        (JSC::JSObject::markChildren):
12280        * runtime/JSObject.h:
12281        (JSC::JSObject::markChildrenDirect):
12282        (JSC::JSObject::createStructure):
12283        * runtime/JSString.h:
12284        (JSC::JSString::createStructure):
12285        * runtime/JSType.h:
12286        (JSC::):
12287        * runtime/MarkStack.h:
12288        (JSC::MarkStack::MarkStack):
12289        (JSC::MarkStack::MarkSet::MarkSet):
12290        (JSC::MarkStack::MarkStackArray::last):
12291        * runtime/MathObject.h:
12292        (JSC::MathObject::createStructure):
12293        * runtime/NumberConstructor.h:
12294        (JSC::NumberConstructor::createStructure):
12295        * runtime/NumberObject.h:
12296        (JSC::NumberObject::createStructure):
12297        * runtime/RegExpConstructor.h:
12298        (JSC::RegExpConstructor::createStructure):
12299        * runtime/RegExpObject.h:
12300        (JSC::RegExpObject::createStructure):
12301        * runtime/StringObjectThatMasqueradesAsUndefined.h:
12302        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
12303        * runtime/TypeInfo.h:
12304        (JSC::TypeInfo::hasDefaultMark):
12305
123062009-08-13  Darin Adler  <darin@apple.com>
12307
12308        Reviewed by Mark Rowe.
12309
12310        Some small bits of housekeeping.
12311
12312        * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
12313        project instead of private. Remove JSONObject.lut.h.
12314
12315        * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
12316        * assembler/AssemblerBufferWithConstantPool.h: Ditto.
12317        * bytecompiler/BytecodeGenerator.h: Ditto.
12318
12319        * wtf/SegmentedVector.h: Add a "using" statement as we do
12320        with the other WTF headers.
12321
123222009-08-13  Darin Adler  <darin@apple.com>
12323
12324        Fix Tiger build.
12325
12326        * parser/Grammar.y: Use a template function so we can compile
12327        setStatementLocation even if it comes before YYLTYPE is defined.
12328
123292009-08-13  Darin Adler  <darin@apple.com>
12330
12331        Reviewed by George Staikos.
12332
12333        Too much use of void* in Grammar.y
12334        https://bugs.webkit.org/show_bug.cgi?id=28287
12335
12336        * parser/Grammar.y: Changed all the helper functions to
12337        take a JSGlobalData* instead of a void*. A couple formatting
12338        tweaks that I missed when breaking this into pieces.
12339
123402009-08-13  Darin Adler  <darin@apple.com>
12341
12342        Reviewed by George Staikos.
12343
12344        Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
12345
12346        * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
12347        format. Marked a few more functions inline.
12348
123492009-08-13  Darin Adler  <darin@apple.com>
12350
12351        Reviewed by George Staikos.
12352
12353        Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
12354
12355        * parser/Grammar.y: Pass the number to the PropertyNode instead of
12356        first turning it into an Identifier.
12357
12358        * parser/NodeConstructors.h:
12359        (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
12360        so the code to convert to a string can be here instead of Grammar.y.
12361        * parser/Nodes.h: Ditto.
12362
123632009-08-13  Darin Adler  <darin@apple.com>
12364
12365        Reviewed by George Staikos.
12366
12367        Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
12368
12369        * parser/Grammar.y: Eliminate the DBG macro.
12370
123712009-08-13  Darin Adler  <darin@apple.com>
12372
12373        Reviewed by George Staikos.
12374
12375        Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
12376
12377        * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
12378
123792009-08-13  Darin Adler  <darin@apple.com>
12380
12381        Reviewed by George Staikos.
12382
12383        George asked me to break the patch from
12384        https://bugs.webkit.org/show_bug.cgi?id=28287
12385        into smaller pieces and land it in stages.
12386
12387        * parser/Grammar.y: Eliminate the LEXER macro.
12388
123892009-08-13  Mark Rowe  <mrowe@apple.com>
12390
12391        Try some more to fix the Windows build.
12392
12393        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
12394        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
12395
123962009-08-13  Mark Rowe  <mrowe@apple.com>
12397
12398        Try and fix the Windows build.
12399
12400        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
12401        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
12402
124032009-08-13  Darin Adler  <darin@apple.com>
12404
12405        Reviewed by David Levin.
12406
12407        JavaScriptCore tweaks to get ready for the parser arena
12408        https://bugs.webkit.org/show_bug.cgi?id=28243
12409
12410        Eliminate dependencies on Nodes.h outside JavaScriptCore,
12411        and cut down on them inside JavaScriptCore.
12412
12413        Change regular expression parsing to use identifiers as
12414        with other strings we parse.
12415
12416        Fix a couple things that are needed to use const Identifier
12417        more, which will be part of the parser arena work.
12418
12419        * JavaScriptCore.exp: Resorted and updated.
12420
12421        * JavaScriptCore.xcodeproj/project.pbxproj: Changed
12422        CollectorHeapIterator.h to be project-internal.
12423
12424        * bytecompiler/BytecodeGenerator.cpp:
12425        (JSC::BytecodeGenerator::emitPushNewScope): Added const.
12426        * bytecompiler/BytecodeGenerator.h: Ditto.
12427
12428        * debugger/Debugger.cpp:
12429        (JSC::Debugger::recompileAllJSFunctions): Moved this function
12430        here from WebCore. Here is better since it uses so many internals.
12431        Removed unimportant optimization for the no listener case.
12432        * debugger/Debugger.h: Ditto. Also removed unneeded include
12433        and tweaked formatting and comments.
12434
12435        * debugger/DebuggerCallFrame.cpp:
12436        (JSC::DebuggerCallFrame::functionName): Call asFunction instead
12437        of doing the unchecked static_cast.
12438        (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
12439
12440        * jit/JITStubs.cpp:
12441        (JSC::op_call_JSFunction): Call isHostFunction on the body rather
12442        than on the JSFunction.
12443        (JSC::vm_lazyLinkCall): Ditto.
12444        (JSC::op_construct_JSConstruct): Ditto.
12445
12446        * parser/Grammar.y: Changed callers to use new scanRegExp with
12447        out arguments instead of relying on state in the Lexer. And
12448        callers that just want to skip a regular expression to use
12449        skipRegExp.
12450
12451        * parser/Lexer.cpp:
12452        (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
12453        add a prefix argument so we can add in the "=" character as needed.
12454        Also rewrote to streamline the logic a bit inspired by suggestions
12455        by David Levin.
12456        (JSC::Lexer::skipRegExp): Added. Version of the function above that
12457        does not actually put the regular expression into a string.
12458        (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
12459        * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
12460        skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
12461
12462        * parser/NodeConstructors.h:
12463        (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
12464        * parser/Nodes.cpp:
12465        (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
12466        m_flags are now Identifier instead of UString.
12467        (JSC::FunctionBodyNode::make): Moved this function here instead
12468        of putting it in the JSFunction.h header.
12469        * parser/Nodes.h: Changed RegExpNode to use Identifier.
12470
12471        * profiler/Profiler.cpp:
12472        (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
12473        on the body instead of on the JSFunction object.
12474        * runtime/FunctionPrototype.cpp:
12475        (JSC::functionProtoFuncToString): Ditto.
12476
12477        * runtime/JSFunction.cpp:
12478        (JSC::JSFunction::isHostFunction): Moved here from header.
12479        (JSC::JSFunction::isHostFunctionNonInline): Added.
12480        (JSC::JSFunction::JSFunction): Removed unneeded initialization of
12481        m_body to 0.
12482        (JSC::JSFunction::setBody): Moved here from header.
12483
12484        * runtime/JSFunction.h: Removed unneeded includes. Moved private
12485        constructor down to the private section. Made virtual functions
12486        private. Removed unneeded overload of setBody and moved the body
12487        of the function into the .cpp file. Changed assertions to use
12488        the non-inline version of isHostFunction.
12489
12490        * runtime/PropertySlot.cpp:
12491        (JSC::PropertySlot::functionGetter): Use asFunction instead
12492        of doing the unchecked static_cast.
12493
12494        * wtf/SegmentedVector.h:
12495        (WTF::SegmentedVector::isEmpty): Added.
12496
124972009-08-13  Mark Rowe  <mrowe@apple.com>
12498
12499        Rubber-stamped by Darin Adler.
12500
12501        Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
12502        from within the grammar to prevent these nodes from being leaked.
12503
12504        * parser/Grammar.y:
12505
125062009-08-13  Simon Hausmann  <simon.hausmann@nokia.com>
12507
12508        Reviewed by Ariya Hidayat.
12509
12510        Remove the special-case for Qt wrt JSVALUE_32 introduced in
12511        r46709. It must've been a dependency issue on the bot, as
12512        after a manual build all the tests pass on amd64 and ia32.
12513
12514        * wtf/Platform.h:
12515
125162009-08-12  Gabor Loki  <loki@inf.u-szeged.hu>
12517
12518        Reviewed by Gavin Barraclough.
12519
12520        Add optimize call and property access support for ARM JIT.
12521        https://bugs.webkit.org/show_bug.cgi?id=24986
12522
12523        For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
12524        END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
12525        space for instructions and constants of the named sequence. This
12526        method is vital for those architecture which are using constant pool.
12527
12528        The 'latePatch' method - which was linked to JmpSrc - is replaced with
12529        a port specific solution (each calls are marked to place their address
12530        on the constant pool).
12531
12532        * assembler/ARMAssembler.cpp:
12533        (JSC::ARMAssembler::linkBranch):
12534        (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
12535        * assembler/ARMAssembler.h:
12536        (JSC::ARMAssembler::JmpSrc::JmpSrc):
12537        (JSC::ARMAssembler::sizeOfConstantPool):
12538        (JSC::ARMAssembler::jmp):
12539        (JSC::ARMAssembler::linkCall):
12540        * assembler/ARMv7Assembler.h:
12541        * assembler/AbstractMacroAssembler.h:
12542        * assembler/AssemblerBufferWithConstantPool.h:
12543        (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
12544        computation of the remaining space.
12545        * assembler/MacroAssemblerARM.h:
12546        (JSC::MacroAssemblerARM::branch32):
12547        (JSC::MacroAssemblerARM::nearCall):
12548        (JSC::MacroAssemblerARM::call):
12549        (JSC::MacroAssemblerARM::branchPtrWithPatch):
12550        (JSC::MacroAssemblerARM::ensureSpace):
12551        (JSC::MacroAssemblerARM::sizeOfConstantPool):
12552        (JSC::MacroAssemblerARM::prepareCall):
12553        * assembler/X86Assembler.h:
12554        * jit/JIT.h:
12555        * jit/JITCall.cpp:
12556        (JSC::JIT::compileOpCall):
12557        * jit/JITInlineMethods.h:
12558        (JSC::JIT::beginUninterruptedSequence):
12559        (JSC::JIT::endUninterruptedSequence):
12560        * jit/JITPropertyAccess.cpp:
12561        (JSC::JIT::emit_op_method_check):
12562        (JSC::JIT::compileGetByIdHotPath):
12563        (JSC::JIT::compileGetByIdSlowCase):
12564        (JSC::JIT::emit_op_put_by_id):
12565
125662009-08-12  Gavin Barraclough  <barraclough@apple.com>
12567
12568        Rubber Stamped by Dave Kilzer.
12569
12570        Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
12571
12572        * wtf/Platform.h:
12573
125742009-08-12  Gavin Barraclough  <barraclough@apple.com>
12575
12576        Reviewed by Maciej Stachoviak.
12577
12578        Ooops - moved code that had been accidentally added to op_new_func instead of
12579        op_new_func_exp, to where it shoulds be.
12580
12581        * interpreter/Interpreter.cpp:
12582        (JSC::Interpreter::privateExecute):
12583        * wtf/Platform.h:
12584
125852009-08-12  Ada Chan  <adachan@apple.com>
12586
12587        Added workaround for the limitation that VirtualFree with MEM_RELEASE
12588        can only accept the base address returned by VirtualAlloc when the region
12589        was reserved and it can only free the entire region, and not a part of it.
12590
12591        Reviewed by Oliver Hunt.
12592
12593        * runtime/MarkStack.h:
12594        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
12595        * runtime/MarkStackWin.cpp:
12596        (JSC::MarkStack::releaseStack):
12597
125982009-08-12  Balazs Kelemen  <kelemen.balazs.3@stud.u-szeged.hu>
12599
12600        Reviewed by Ariya Hidayat.
12601
12602        Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
12603        since LLONG_MIN is not defined in standard c++.
12604
12605        * runtime/UString.cpp:
12606        (JSC::UString::from):
12607
126082009-08-12  Benjamin Otte  <otte@gnome.org>
12609
12610        Reviewed by Jan Alonzo.
12611
12612        Buildfix for Gtk platforms debug builds.
12613
12614        * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
12615        depending on platform.
12616
126172009-08-12  Simon Hausmann  <simon.hausmann@nokia.com>
12618
12619        Prospective build fix for Mac and 32-bit Windows.
12620
12621        * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
12622        (JSC::UString::from): Use %lld instead of %I64d for snprintf
12623        on non-windows platforms.
12624
126252009-08-12  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
12626
12627        Reviewed by Simon Hausmann.
12628
12629        Fix compile error on 64Bit Windows, when UString::from
12630        is called with an intptr_t.
12631
12632        Added new UString::From overload with long long parameter.
12633
12634        Thanks to Holger for the long long idea.
12635
12636        * runtime/UString.cpp:
12637        (JSC::UString::from):
12638        * runtime/UString.h:
12639
126402009-08-11  Oliver Hunt  <oliver@apple.com>
12641
12642        Reviewed by Mark Rowe.
12643
12644        Minor style fixes.
12645
12646        * runtime/UString.h:
12647        (JSC::UString::Rep::createEmptyBuffer):
12648        * wtf/FastMalloc.h:
12649        (WTF::TryMallocReturnValue::getValue):
12650
126512009-08-11  Oliver Hunt  <oliver@apple.com>
12652
12653        Reviewed by Gavin Barraclough.
12654
12655        Make it harder to misuse try* allocation routines
12656        https://bugs.webkit.org/show_bug.cgi?id=27469
12657
12658        Jump through a few hoops to make it much harder to accidentally
12659        miss null-checking of values returned by the try-* allocation
12660        routines.
12661
12662        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12663        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12664        * JavaScriptCore.xcodeproj/project.pbxproj:
12665        * runtime/JSArray.cpp:
12666        (JSC::JSArray::putSlowCase):
12667        (JSC::JSArray::increaseVectorLength):
12668        * runtime/StringPrototype.cpp:
12669        (JSC::stringProtoFuncFontsize):
12670        (JSC::stringProtoFuncLink):
12671        * runtime/UString.cpp:
12672        (JSC::allocChars):
12673        (JSC::reallocChars):
12674        (JSC::expandCapacity):
12675        (JSC::UString::Rep::reserveCapacity):
12676        (JSC::UString::expandPreCapacity):
12677        (JSC::createRep):
12678        (JSC::concatenate):
12679        (JSC::UString::spliceSubstringsWithSeparators):
12680        (JSC::UString::replaceRange):
12681        (JSC::UString::append):
12682        (JSC::UString::operator=):
12683        * runtime/UString.h:
12684        (JSC::UString::Rep::createEmptyBuffer):
12685        * wtf/FastMalloc.cpp:
12686        (WTF::tryFastZeroedMalloc):
12687        (WTF::tryFastMalloc):
12688        (WTF::tryFastCalloc):
12689        (WTF::tryFastRealloc):
12690        (WTF::TCMallocStats::tryFastMalloc):
12691        (WTF::TCMallocStats::tryFastCalloc):
12692        (WTF::TCMallocStats::tryFastRealloc):
12693        * wtf/FastMalloc.h:
12694        (WTF::TryMallocReturnValue::TryMallocReturnValue):
12695        (WTF::TryMallocReturnValue::~TryMallocReturnValue):
12696        (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
12697        (WTF::TryMallocReturnValue::getValue):
12698        * wtf/Platform.h:
12699        * wtf/PossiblyNull.h: Added.
12700        (WTF::PossiblyNull::PossiblyNull):
12701        (WTF::PossiblyNull::~PossiblyNull):
12702        (WTF::::getValue):
12703
127042009-08-11  Gavin Barraclough  <barraclough@apple.com>
12705
12706        Reviewed by NOBODY (build fix part deux).
12707
12708        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12709        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12710
127112009-08-11  Gavin Barraclough  <barraclough@apple.com>
12712
12713        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12714        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12715
127162009-08-11  Gavin Barraclough  <barraclough@apple.com>
12717
12718        Reviewed by Oliver Hunt.
12719
12720        Restrict use of FuncDeclNode & FuncExprNode to the parser.
12721        https://bugs.webkit.org/show_bug.cgi?id=28209
12722
12723        These objects were also being referenced from the CodeBlock.  By changing this
12724        to just retain pointers to FunctionBodyNodes these classes can be restricted to
12725        use during parsing.
12726
12727        No performance impact (or sub-percent progression).
12728
12729        * JavaScriptCore.exp:
12730            Update symbols.
12731
12732        * bytecode/CodeBlock.cpp:
12733        (JSC::CodeBlock::mark):
12734        (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
12735        (JSC::CodeBlock::shrinkToFit):
12736        * bytecode/CodeBlock.h:
12737        (JSC::CodeBlock::addFunction):
12738        (JSC::CodeBlock::function):
12739            Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
12740
12741        * bytecompiler/BytecodeGenerator.cpp:
12742        (JSC::BytecodeGenerator::BytecodeGenerator):
12743        (JSC::BytecodeGenerator::addConstant):
12744        (JSC::BytecodeGenerator::emitNewFunction):
12745        (JSC::BytecodeGenerator::emitNewFunctionExpression):
12746        * bytecompiler/BytecodeGenerator.h:
12747            FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
12748
12749        * interpreter/Interpreter.cpp:
12750        (JSC::Interpreter::execute):
12751        (JSC::Interpreter::privateExecute):
12752            Update to reflect chnages in CodeBlock.
12753
12754        * jit/JITOpcodes.cpp:
12755        (JSC::JIT::emit_op_new_func_exp):
12756        * jit/JITStubs.cpp:
12757        (JSC::DEFINE_STUB_FUNCTION):
12758        * jit/JITStubs.h:
12759        (JSC::):
12760            Update to reflect chnages in CodeBlock.
12761
12762        * parser/Grammar.y:
12763            FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
12764
12765        * parser/NodeConstructors.h:
12766        (JSC::FuncExprNode::FuncExprNode):
12767        (JSC::FuncDeclNode::FuncDeclNode):
12768        * parser/Nodes.cpp:
12769        (JSC::ScopeNodeData::mark):
12770        (JSC::FunctionBodyNode::finishParsing):
12771        * parser/Nodes.h:
12772        (JSC::FunctionBodyNode::ident):
12773            Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
12774
12775        * runtime/JSFunction.h:
12776        (JSC::FunctionBodyNode::make):
12777            Make this method inline (was FuncDeclNode::makeFunction).
12778
127792009-08-11  Oliver Hunt  <oliver@apple.com>
12780
12781        Reviewed by Gavin Barraclough.
12782
12783        Native JSON.stringify does not omit functions
12784        https://bugs.webkit.org/show_bug.cgi?id=28117
12785
12786        Objects that are callable should be treated as undefined when
12787        serialising to JSON.
12788
12789        * runtime/JSONObject.cpp:
12790        (JSC::Stringifier::appendStringifiedValue):
12791
127922009-08-11  Oliver Hunt  <oliver@apple.com>
12793
12794        Reviewed by Geoff Garen.
12795
12796        REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
12797        https://bugs.webkit.org/show_bug.cgi?id=28169
12798
12799        Handle the case where someone has attempted to shadow a property
12800        on the global object with a constant.
12801
12802        * bytecompiler/BytecodeGenerator.cpp:
12803        (JSC::BytecodeGenerator::constRegisterFor):
12804        * parser/Nodes.cpp:
12805        (JSC::ConstDeclNode::emitCodeSingle):
12806
128072009-08-11  John Gregg  <johnnyg@google.com>
12808
12809        Reviewed by Maciej Stachowiak.
12810
12811        Desktop Notifications API
12812        https://bugs.webkit.org/show_bug.cgi?id=25463
12813
12814        Adds ENABLE_NOTIFICATION flag.
12815
12816        * Configurations/FeatureDefines.xcconfig:
12817        * wtf/Platform.h:
12818
128192009-08-11  Maxime Simon  <simon.maxime@gmail.com>
12820
12821        Reviewed by Eric Seidel.
12822
12823        Modifications on JavaScriptCore to allow Haiku port.
12824        https://bugs.webkit.org/show_bug.cgi?id=28121
12825
12826        * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
12827        (JSC::currentThreadStackBase): Haiku uses its own threading system.
12828        * wtf/Platform.h: Defining all Haiku platform values.
12829        * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
12830
128312009-08-11  Jessie Berlin  <jberlin@apple.com>
12832
12833        Reviewed by Adam Roben.
12834
12835        Fix windows build.
12836
12837        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12838
128392009-08-11  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
12840
12841        Reviewed by Tor Arne Vestbø.
12842
12843        Buildfix for Qt-win platforms.
12844
12845        * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
12846
128472009-08-10  Oliver Hunt  <oliver@apple.com>
12848
12849        Reviewed by NOBODY (And another build fix).
12850
12851        Add new exports for MSVC
12852
12853        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12854        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12855        * JavaScriptCore.xcodeproj/project.pbxproj:
12856
128572009-08-10  Oliver Hunt  <oliver@apple.com>
12858
12859        Reviewed by NOBODY (yet another build fix).
12860
12861        Remove obsolete entries from MSVC exports file
12862
12863        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12864        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
12865
128662009-08-10  Oliver Hunt  <oliver@apple.com>
12867
12868        Add includes needed for non-allinonefile builds
12869
12870        * runtime/GetterSetter.h:
12871        * runtime/ScopeChain.h:
12872
128732009-08-10  Oliver Hunt  <oliver@apple.com>
12874
12875        Fix export file for last build fix
12876
12877        * JavaScriptCore.exp:
12878
128792009-08-10  Oliver Hunt  <oliver@apple.com>
12880
12881        Hoist page size initialization into platform specific code.
12882
12883        * jit/ExecutableAllocatorPosix.cpp:
12884        * jit/ExecutableAllocatorWin.cpp:
12885        * runtime/MarkStack.h:
12886        (JSC::MarkStack::pageSize):
12887        * runtime/MarkStackPosix.cpp:
12888        (JSC::MarkStack::initializePagesize):
12889        * runtime/MarkStackWin.cpp:
12890        (JSC::MarkStack::initializePagesize):
12891
128922009-08-07  Oliver Hunt  <oliver@apple.com>
12893
12894        Reviewed by Gavin Barraclough.
12895
12896        Stack overflow crash in JavaScript garbage collector mark pass
12897        https://bugs.webkit.org/show_bug.cgi?id=12216
12898
12899        Make the GC mark phase iterative by using an explicit mark stack.
12900        To do this marking any single object is performed in multiple stages
12901          * The object is appended to the MarkStack, this sets the marked
12902            bit for the object using the new markDirect() function, and then
12903            returns
12904          * When the MarkStack is drain()ed the object is popped off the stack
12905            and markChildren(MarkStack&) is called on the object to collect
12906            all of its children.  drain() then repeats until the stack is empty.
12907
12908        Additionally I renamed a number of methods from 'mark' to 'markAggregate'
12909        in order to make it more clear that marking of those object was not
12910        going to result in an actual recursive mark.
12911
12912        * GNUmakefile.am
12913        * JavaScriptCore.exp:
12914        * JavaScriptCore.gypi:
12915        * JavaScriptCore.pri:
12916        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12917        * JavaScriptCore.xcodeproj/project.pbxproj:
12918        * bytecode/CodeBlock.cpp:
12919        (JSC::CodeBlock::markAggregate):
12920        * bytecode/CodeBlock.h:
12921        * bytecode/EvalCodeCache.h:
12922        (JSC::EvalCodeCache::markAggregate):
12923        * debugger/DebuggerActivation.cpp:
12924        (JSC::DebuggerActivation::markChildren):
12925        * debugger/DebuggerActivation.h:
12926        * interpreter/Register.h:
12927        * interpreter/RegisterFile.h:
12928        (JSC::RegisterFile::markGlobals):
12929        (JSC::RegisterFile::markCallFrames):
12930        * parser/Nodes.cpp:
12931        (JSC::ScopeNodeData::markAggregate):
12932        (JSC::EvalNode::markAggregate):
12933        (JSC::FunctionBodyNode::markAggregate):
12934        * parser/Nodes.h:
12935        (JSC::ScopeNode::markAggregate):
12936        * runtime/ArgList.cpp:
12937        (JSC::MarkedArgumentBuffer::markLists):
12938        * runtime/ArgList.h:
12939        * runtime/Arguments.cpp:
12940        (JSC::Arguments::markChildren):
12941        * runtime/Arguments.h:
12942        * runtime/Collector.cpp:
12943        (JSC::Heap::markConservatively):
12944        (JSC::Heap::markCurrentThreadConservativelyInternal):
12945        (JSC::Heap::markCurrentThreadConservatively):
12946        (JSC::Heap::markOtherThreadConservatively):
12947        (JSC::Heap::markStackObjectsConservatively):
12948        (JSC::Heap::markProtectedObjects):
12949        (JSC::Heap::collect):
12950        * runtime/Collector.h:
12951        * runtime/GetterSetter.cpp:
12952        (JSC::GetterSetter::markChildren):
12953        * runtime/GetterSetter.h:
12954        (JSC::GetterSetter::GetterSetter):
12955        (JSC::GetterSetter::createStructure):
12956        * runtime/GlobalEvalFunction.cpp:
12957        (JSC::GlobalEvalFunction::markChildren):
12958        * runtime/GlobalEvalFunction.h:
12959        * runtime/JSActivation.cpp:
12960        (JSC::JSActivation::markChildren):
12961        * runtime/JSActivation.h:
12962        * runtime/JSArray.cpp:
12963        (JSC::JSArray::markChildren):
12964        * runtime/JSArray.h:
12965        * runtime/JSCell.h:
12966        (JSC::JSCell::markCellDirect):
12967        (JSC::JSCell::markChildren):
12968        (JSC::JSValue::markDirect):
12969        (JSC::JSValue::markChildren):
12970        (JSC::JSValue::hasChildren):
12971        (JSC::MarkStack::append):
12972        (JSC::MarkStack::drain):
12973        * runtime/JSFunction.cpp:
12974        (JSC::JSFunction::markChildren):
12975        * runtime/JSFunction.h:
12976        * runtime/JSGlobalData.cpp:
12977        (JSC::JSGlobalData::JSGlobalData):
12978        * runtime/JSGlobalData.h:
12979        * runtime/JSGlobalObject.cpp:
12980        (JSC::markIfNeeded):
12981        (JSC::JSGlobalObject::markChildren):
12982        * runtime/JSGlobalObject.h:
12983        * runtime/JSNotAnObject.cpp:
12984        (JSC::JSNotAnObject::markChildren):
12985        * runtime/JSNotAnObject.h:
12986        * runtime/JSONObject.cpp:
12987        (JSC::Stringifier::markAggregate):
12988        (JSC::JSONObject::markStringifiers):
12989        * runtime/JSONObject.h:
12990        * runtime/JSObject.cpp:
12991        (JSC::JSObject::markChildren):
12992        (JSC::JSObject::defineGetter):
12993        (JSC::JSObject::defineSetter):
12994        * runtime/JSObject.h:
12995        * runtime/JSPropertyNameIterator.cpp:
12996        (JSC::JSPropertyNameIterator::markChildren):
12997        * runtime/JSPropertyNameIterator.h:
12998        (JSC::JSPropertyNameIterator::createStructure):
12999        (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
13000        (JSC::JSPropertyNameIterator::create):
13001        * runtime/JSStaticScopeObject.cpp:
13002        (JSC::JSStaticScopeObject::markChildren):
13003        * runtime/JSStaticScopeObject.h:
13004        * runtime/JSType.h:
13005        (JSC::):
13006        * runtime/JSValue.h:
13007        * runtime/JSWrapperObject.cpp:
13008        (JSC::JSWrapperObject::markChildren):
13009        * runtime/JSWrapperObject.h:
13010        * runtime/MarkStack.cpp: Added.
13011        (JSC::MarkStack::compact):
13012        * runtime/MarkStack.h: Added.
13013        (JSC::):
13014        (JSC::MarkStack::MarkStack):
13015        (JSC::MarkStack::append):
13016        (JSC::MarkStack::appendValues):
13017        (JSC::MarkStack::~MarkStack):
13018        (JSC::MarkStack::MarkSet::MarkSet):
13019        (JSC::MarkStack::pageSize):
13020
13021        MarkStackArray is a non-shrinking, mmap-based vector type
13022        used for storing objects to be marked.
13023        (JSC::MarkStack::MarkStackArray::MarkStackArray):
13024        (JSC::MarkStack::MarkStackArray::~MarkStackArray):
13025        (JSC::MarkStack::MarkStackArray::expand):
13026        (JSC::MarkStack::MarkStackArray::append):
13027        (JSC::MarkStack::MarkStackArray::removeLast):
13028        (JSC::MarkStack::MarkStackArray::isEmpty):
13029        (JSC::MarkStack::MarkStackArray::size):
13030        (JSC::MarkStack::MarkStackArray::shrinkAllocation):
13031        * runtime/MarkStackPosix.cpp: Added.
13032        (JSC::MarkStack::allocateStack):
13033        (JSC::MarkStack::releaseStack):
13034        * runtime/MarkStackWin.cpp: Added.
13035        (JSC::MarkStack::allocateStack):
13036        (JSC::MarkStack::releaseStack):
13037
13038        * runtime/ScopeChain.h:
13039        * runtime/ScopeChainMark.h:
13040        (JSC::ScopeChain::markAggregate):
13041        * runtime/SmallStrings.cpp:
13042        (JSC::SmallStrings::mark):
13043        * runtime/Structure.h:
13044        (JSC::Structure::markAggregate):
13045
130462009-08-10  Mark Rowe  <mrowe@apple.com>
13047
13048        Reviewed by Darin Adler.
13049
13050        Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot.
13051
13052        * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since
13053        we implement the nothrow variants of new and new[].  The nothrow variant of delete is called
13054        explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated
13055        memory being passed to the system allocator to free.
13056
130572009-08-10  Jan Michael Alonzo  <jmalonzo@webkit.org>
13058
13059        [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug
13060        section. This file is already part of AllInOneFile in Release builds.
13061
13062        * GNUmakefile.am:
13063
130642009-08-10  Darin Adler  <darin@apple.com>
13065
13066        * wtf/FastMalloc.h: Fix build.
13067
130682009-08-10  Darin Adler  <darin@apple.com>
13069
13070        Reviewed by Mark Rowe.
13071
13072        FastMalloc.h has cross-platform code but marked as WinCE-only
13073        https://bugs.webkit.org/show_bug.cgi?id=28160
13074
13075        1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is
13076           not platform-specific.
13077        2) The code tried to override operator delete nothrow, which does not exist.
13078        3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code
13079           in FastMalloc.cpp checks only if the macro is defined.
13080
13081        * wtf/FastMalloc.h: See above.
13082        * wtf/FastMalloc.cpp: Ditto.
13083
130842009-08-10  Sam Weinig  <sam@webkit.org>
13085
13086        Reviewed by Anders Carlsson.
13087
13088        Fix an annoying indentation issue.
13089
13090        * runtime/DateConstructor.cpp:
13091        (JSC::constructDate):
13092
130932009-08-10  Xan Lopez  <xlopez@igalia.com>
13094
13095        Unreviewed build fix.
13096
13097        Add new files to makefile.
13098
13099        * GNUmakefile.am:
13100
131012009-08-10  Simon Hausmann  <simon.hausmann@nokia.com>
13102
13103        Fix compilation with the interpreter instead of the JIT by including
13104        PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h.
13105
13106        * runtime/ObjectConstructor.cpp:
13107
131082009-08-09  Oliver Hunt  <oliver@apple.com>
13109
13110        Reviewed by George Staikos.
13111
13112        JSON.stringify replacer returning undefined does not omit object properties
13113        https://bugs.webkit.org/show_bug.cgi?id=28118
13114
13115        Correct behaviour of stringify when using a replacer function that returns
13116        undefined.  This is a simple change to move the undefined value check to
13117        after the replacer function is called.  This means that the replacer function
13118        is now called for properties with the value undefined, however i've confirmed
13119        that this behaviour is correct.
13120
13121        In addition I've made the cyclic object exception have a more useful error
13122        message.
13123
13124        * runtime/JSONObject.cpp:
13125        (JSC::Stringifier::appendStringifiedValue):
13126
131272009-08-08  Oliver Hunt  <oliver@apple.com>
13128
13129        Reviewed by Eric Seidel and Sam Weinig.
13130
13131        [ES5] Implement Object.getPrototypeOf
13132        https://bugs.webkit.org/show_bug.cgi?id=28114
13133
13134        Implement getPrototypeOf
13135
13136        * runtime/CommonIdentifiers.h:
13137        * runtime/JSGlobalObject.cpp:
13138        (JSC::JSGlobalObject::reset):
13139        * runtime/ObjectConstructor.cpp:
13140        (JSC::ObjectConstructor::ObjectConstructor):
13141        (JSC::objectConsGetPrototypeOf):
13142        * runtime/ObjectConstructor.h:
13143
131442009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13145
13146        Reviewed by Eric Seidel.
13147
13148        Allow custom memory allocation control for Noncopyable class
13149        https://bugs.webkit.org/show_bug.cgi?id=27879
13150
13151        Several classes which are inherited from Noncopyable are instantiated by
13152        operator new, so Noncopyable class has been inherited from FastAllocBase.
13153
13154        * wtf/Noncopyable.h:
13155
131562009-08-07  George Staikos <george.staikos@torchmobile.com>
13157
13158        Reviewed by Eric Seidel.
13159
13160        https://bugs.webkit.org/show_bug.cgi?id=27305
13161        Implement WinCE-specific unicode layer.
13162        Written by George Staikos <george.staikos@torchmobile.com>
13163        with bug fixes by Yong Li <yong.li@torchmobile.com>
13164        refactored by Joe Mason <joe.mason@torchmobile.com>
13165
13166        * wtf/Platform.h:
13167        * wtf/unicode/Unicode.h:
13168        * wtf/unicode/wince/UnicodeWince.cpp: Added.
13169        (WTF::Unicode::toLower):
13170        (WTF::Unicode::toUpper):
13171        (WTF::Unicode::foldCase):
13172        (WTF::Unicode::isPrintableChar):
13173        (WTF::Unicode::isSpace):
13174        (WTF::Unicode::isLetter):
13175        (WTF::Unicode::isUpper):
13176        (WTF::Unicode::isLower):
13177        (WTF::Unicode::isDigit):
13178        (WTF::Unicode::isPunct):
13179        (WTF::Unicode::toTitleCase):
13180        (WTF::Unicode::direction):
13181        (WTF::Unicode::category):
13182        (WTF::Unicode::decompositionType):
13183        (WTF::Unicode::combiningClass):
13184        (WTF::Unicode::mirroredChar):
13185        (WTF::Unicode::digitValue):
13186        * wtf/unicode/wince/UnicodeWince.h: Added.
13187        (WTF::Unicode::):
13188        (WTF::Unicode::isSeparatorSpace):
13189        (WTF::Unicode::isHighSurrogate):
13190        (WTF::Unicode::isLowSurrogate):
13191        (WTF::Unicode::isArabicChar):
13192        (WTF::Unicode::hasLineBreakingPropertyComplexContext):
13193        (WTF::Unicode::umemcasecmp):
13194        (WTF::Unicode::surrogateToUcs4):
13195
131962009-08-07  Yongjun Zhang  <yongjun.zhang@nokia.com>
13197
13198        Reviewed by Eric Seidel.
13199
13200        https://bugs.webkit.org/show_bug.cgi?id=28069
13201
13202        Add inline to help winscw compiler resolve specialized argument in
13203        templated functions.
13204
13205        * runtime/LiteralParser.cpp:
13206        (JSC::LiteralParser::Lexer::lexString):
13207
132082009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13209
13210        Reviewed by Eric Seidel.
13211
13212        Allow custom memory allocation control for RegExpObjectData struct
13213        http://bugs.webkit.org/show_bug.cgi?id=26750
13214
13215        Inherits RegExpObjectData struct from FastAllocBase because
13216        it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62
13217
13218        * runtime/RegExpObject.h:
13219
132202009-08-06  Norbert Leser  <norbert.leser@nokia.com>
13221
13222        Reviewed by Darin Adler.
13223
13224        Updated patch for bug #27059:
13225        Symbian platform always uses little endian encoding,
13226        regardless of compiler.
13227        We need to make sure that we correctly detect EABI architecture
13228        for armv5 targets on Symbian,
13229        where __EABI__ is set but not __ARM_EABI__
13230
13231        * wtf/Platform.h:
13232
132332009-08-06  Adam Barth  <abarth@webkit.org>
13234
13235        Unreviewed revert.
13236
13237        http://bugs.webkit.org/show_bug.cgi?id=27879
13238
13239        Revert 46877 because it broke GTK.
13240
13241        * wtf/Noncopyable.h:
13242
132432009-08-06  Gavin Barraclough  <barraclough@apple.com>
13244
13245        Reviewed by Oliver Hunt.
13246
13247        Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
13248        ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
13249
13250        This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
13251        (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
13252
13253        * bytecode/CodeBlock.cpp:
13254        (JSC::printStructureStubInfo):
13255            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13256
13257        * bytecode/CodeBlock.h:
13258        (JSC::):
13259        (JSC::CallLinkInfo::seenOnce):
13260        (JSC::CallLinkInfo::setSeen):
13261        (JSC::MethodCallLinkInfo::seenOnce):
13262        (JSC::MethodCallLinkInfo::setSeen):
13263            - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
13264
13265        * bytecode/StructureStubInfo.cpp:
13266        (JSC::StructureStubInfo::deref):
13267            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13268
13269        * bytecode/StructureStubInfo.h:
13270        (JSC::StructureStubInfo::StructureStubInfo):
13271        (JSC::StructureStubInfo::initGetByIdSelf):
13272        (JSC::StructureStubInfo::initGetByIdProto):
13273        (JSC::StructureStubInfo::initGetByIdChain):
13274        (JSC::StructureStubInfo::initGetByIdSelfList):
13275        (JSC::StructureStubInfo::initGetByIdProtoList):
13276        (JSC::StructureStubInfo::initPutByIdTransition):
13277        (JSC::StructureStubInfo::initPutByIdReplace):
13278        (JSC::StructureStubInfo::seenOnce):
13279        (JSC::StructureStubInfo::setSeen):
13280            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
13281
13282        * bytecompiler/BytecodeGenerator.cpp:
13283        (JSC::BytecodeGenerator::emitGetById):
13284        (JSC::BytecodeGenerator::emitPutById):
13285            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13286
13287        * jit/JIT.cpp:
13288        (JSC::JIT::privateCompileCTIMachineTrampolines):
13289        (JSC::JIT::unlinkCall):
13290            - Remove the "don't lazy link" stage of calls.
13291
13292        * jit/JIT.h:
13293        (JSC::JIT::compileCTIMachineTrampolines):
13294            - Remove the "don't lazy link" stage of calls.
13295
13296        * jit/JITCall.cpp:
13297        (JSC::JIT::compileOpCallSlowCase):
13298            - Remove the "don't lazy link" stage of calls.
13299
13300        * jit/JITStubs.cpp:
13301        (JSC::JITThunks::JITThunks):
13302        (JSC::JITThunks::tryCachePutByID):
13303        (JSC::JITThunks::tryCacheGetByID):
13304        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
13305        (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
13306            - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
13307
13308        * jit/JITStubs.h:
13309        (JSC::JITThunks::ctiStringLengthTrampoline):
13310        (JSC::JITStubs::):
13311            - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
13312
13313        * wtf/PtrAndFlags.h:
13314        (WTF::PtrAndFlags::PtrAndFlags):
13315        (WTF::PtrAndFlags::operator!):
13316        (WTF::PtrAndFlags::operator->):
13317            - Add ! and -> operators, add constuctor with pointer argument.
13318
133192009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13320
13321        Reviewed by Adam Barth.
13322
13323        Allow custom memory allocation control for Noncopyable class
13324        https://bugs.webkit.org/show_bug.cgi?id=27879
13325
13326        Several classes which inherited from Noncopyable are instantiated by
13327        operator new, so Noncopyable class has been inherited from FastAllocBase.
13328
13329        * wtf/Noncopyable.h:
13330
133312009-08-06  Mark Rowe  <mrowe@apple.com>
13332
13333        Rubber-stamped by Sam Weinig.
13334
13335        Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.
13336
13337        * JavaScriptCore.xcodeproj/project.pbxproj:
13338
133392009-08-06  Mark Rowe  <mrowe@apple.com>
13340
13341        Bring a little order to our otherwise out of control lives.
13342
13343        * JavaScriptCore.xcodeproj/project.pbxproj:
13344
133452009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13346
13347        Reviewed by Darin Adler.
13348
13349        Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct
13350        https://bugs.webkit.org/show_bug.cgi?id=27877
13351
13352        Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by
13353        'new' in JavaScriptCore/jit/JITStubs.cpp:1229.
13354
13355        * bytecode/Instruction.h:
13356
133572009-08-05  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13358
13359        Reviewed by Darin Adler.
13360
13361        Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct
13362        https://bugs.webkit.org/show_bug.cgi?id=27875
13363
13364        Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by
13365        'new' in JavaScriptCore/parser/Nodes.cpp:1848.
13366
13367        * parser/Nodes.h:
13368
133692009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
13370
13371        Reviewed by Gavin Barraclough.
13372
13373        Add floating point support for generic ARM port.
13374        https://bugs.webkit.org/show_bug.cgi?id=24986
13375
13376        * assembler/ARMAssembler.cpp:
13377        (JSC::ARMAssembler::doubleTransfer):
13378        * assembler/ARMAssembler.h:
13379        (JSC::ARM::):
13380        (JSC::ARMAssembler::):
13381        (JSC::ARMAssembler::faddd_r):
13382        (JSC::ARMAssembler::fsubd_r):
13383        (JSC::ARMAssembler::fmuld_r):
13384        (JSC::ARMAssembler::fcmpd_r):
13385        (JSC::ARMAssembler::fdtr_u):
13386        (JSC::ARMAssembler::fdtr_d):
13387        (JSC::ARMAssembler::fmsr_r):
13388        (JSC::ARMAssembler::fsitod_r):
13389        (JSC::ARMAssembler::fmstat):
13390        * assembler/MacroAssemblerARM.h:
13391        (JSC::MacroAssemblerARM::):
13392        (JSC::MacroAssemblerARM::supportsFloatingPoint):
13393        (JSC::MacroAssemblerARM::loadDouble):
13394        (JSC::MacroAssemblerARM::storeDouble):
13395        (JSC::MacroAssemblerARM::addDouble):
13396        (JSC::MacroAssemblerARM::subDouble):
13397        (JSC::MacroAssemblerARM::mulDouble):
13398        (JSC::MacroAssemblerARM::convertInt32ToDouble):
13399        (JSC::MacroAssemblerARM::branchDouble):
13400        * jit/JIT.h:
13401
134022009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
13403
13404        Reviewed by Gavin Barraclough.
13405
13406        Add JIT support for generic ARM port without optimizations.
13407        https://bugs.webkit.org/show_bug.cgi?id=24986
13408
13409        All JIT optimizations are disabled.
13410
13411        Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
13412        Signed off by Gabor Loki <loki@inf.u-szeged.hu>
13413
13414        * assembler/ARMAssembler.cpp:
13415        (JSC::ARMAssembler::baseIndexTransfer32):
13416        * assembler/AbstractMacroAssembler.h:
13417        (JSC::AbstractMacroAssembler::Imm32::Imm32):
13418        * assembler/MacroAssemblerARM.h:
13419        (JSC::MacroAssemblerARM::store32):
13420        (JSC::MacroAssemblerARM::move):
13421        (JSC::MacroAssemblerARM::branch32):
13422        (JSC::MacroAssemblerARM::add32):
13423        (JSC::MacroAssemblerARM::sub32):
13424        (JSC::MacroAssemblerARM::load32):
13425        * bytecode/CodeBlock.h:
13426        (JSC::CodeBlock::getBytecodeIndex):
13427        * jit/JIT.h:
13428        * jit/JITInlineMethods.h:
13429        (JSC::JIT::restoreArgumentReference):
13430        * jit/JITOpcodes.cpp:
13431        * jit/JITStubs.cpp:
13432        * jit/JITStubs.h:
13433        (JSC::JITStackFrame::returnAddressSlot):
13434        * wtf/Platform.h:
13435
134362009-08-04  Gavin Barraclough  <barraclough@apple.com>
13437
13438        Rubber Stamped by Oiver Hunt.
13439
13440        Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests.
13441        https://bugs.webkit.org/show_bug.cgi?id=27874
13442
13443        * yarr/RegexInterpreter.cpp:
13444        (JSC::Yarr::Interpreter::allocDisjunctionContext):
13445        (JSC::Yarr::Interpreter::freeDisjunctionContext):
13446        (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
13447        (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
13448
134492009-08-04  Oliver Hunt  <oliver@apple.com>
13450
13451        PPC64 Build fix
13452
13453        * wtf/Platform.h:
13454
134552009-08-04  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
13456
13457        Reviewed by Adam Treat
13458
13459        Explicitly include limits.h header when using INT_MAX and INT_MIN
13460
13461        * interpreter/Interpreter.cpp
13462
134632009-08-03  Harald Fernengel  <harald.fernengel@nokia.com>
13464
13465        Reviewed by Darin Adler.
13466
13467        Fix compile error for ambigous call to abs()
13468        https://bugs.webkit.org/show_bug.cgi?id=27873
13469
13470        Fix ambiguity in abs(long int) call by calling labs() instead
13471
13472        * wtf/DateMath.cpp: replace call to abs() with labs()
13473
134742009-08-03  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
13475
13476        Reviewed by Eric Seidel.
13477
13478        [Qt] Consolidate common gcc flags to WebKit.pri
13479        https://bugs.webkit.org/show_bug.cgi?id=27934
13480
13481        * JavaScriptCore.pro:
13482
134832009-08-03  Ada Chan  <adachan@apple.com>
13484
13485        Fixed the Tiger build.
13486
13487        * wtf/FastMalloc.cpp:
13488
134892009-08-03  Ada Chan  <adachan@apple.com>
13490
13491        Reviewed by Darin Adler.
13492
13493        Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash.
13494        https://bugs.webkit.org/show_bug.cgi?id=27900
13495
13496        * wtf/FastMalloc.cpp:
13497
134982009-08-03  Fumitoshi Ukai  <ukai@chromium.org>
13499
13500        Reviewed by Jan Alonzo.
13501
13502        Fix build break on Gtk/x86_64.
13503        https://bugs.webkit.org/show_bug.cgi?id=27936
13504
13505        Use JSVALUE64 for X86_64 LINUX, except Qt.
13506
13507        * wtf/Platform.h:
13508
135092009-08-02  Xan Lopez  <xlopez@igalia.com>
13510
13511        Fix the GTK+ build.
13512
13513        * wtf/Platform.h:
13514
135152009-08-02  Geoffrey Garen  <ggaren@apple.com>
13516
13517        Reviewed by Sam Weinig.
13518
13519        Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously
13520        crash with it enabled.
13521
13522        * wtf/Platform.h:
13523
135242009-08-02  Geoffrey Garen  <ggaren@apple.com>
13525
13526        Qt build fix.
13527
13528        Added JSAPIValueWrapper.cpp to the build.
13529
13530        * JavaScriptCore.pri:
13531
135322009-08-02  Geoffrey Garen  <ggaren@apple.com>
13533
13534        Windows build fix.
13535
13536        Exported symbols for JSAPIValueWrapper.
13537
13538        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13539        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
13540
135412009-08-02  Geoffrey Garen  <ggaren@apple.com>
13542
13543        GTK build fix.
13544
13545        * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start.
13546
135472009-08-02  Geoffrey Garen  <ggaren@apple.com>
13548
13549        Qt build fix.
13550
13551        * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX.
13552
135532009-08-02  Geoffrey Garen  <ggaren@apple.com>
13554
13555        Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject,
13556        and JSImmediate::toThisObject, and removed their exported symbols.
13557
13558        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13559        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
13560        * runtime/JSImmediate.cpp:
13561        * runtime/JSImmediate.h:
13562
135632009-08-02  Geoffrey Garen  <ggaren@apple.com>
13564
13565        Reviewed by Mark Rowe.
13566
13567        Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64).
13568
13569        * wtf/Platform.h:
13570
135712009-08-02  Kevin Ollivier  <kevino@theolliviers.com>
13572
13573        Reviewed by Jan Alonzo.
13574
13575        Script for building the JavaScriptCore library for wx.
13576        https://bugs.webkit.org/show_bug.cgi?id=27619
13577
13578        * wscript: Added.
13579
135802009-08-02  Yong Li  <yong.li@torchmobile.com>
13581
13582        Reviewed by George Staikos.
13583
13584        DateMath depends on strftime and localtime, which need to be imported manually on WinCE
13585        https://bugs.webkit.org/show_bug.cgi?id=26558
13586
13587        * wtf/DateMath.cpp:
13588
135892009-08-01  David Kilzer  <ddkilzer@apple.com>
13590
13591        wtf/Threading.h: added include of Platform.h
13592
13593        Reviewed by Mark Rowe.
13594
13595        * wtf/Threading.h: Added #include "Platform.h" since this header
13596        uses PLATFORM() and other macros.
13597
135982009-08-01  Mark Rowe  <mrowe@apple.com>
13599
13600        Rubber-stamped by Oliver Hunt.
13601
13602        Roll out r46668 as it was misinformed.  ScopeChain is only used with placement new.
13603
13604        * runtime/ScopeChain.h:
13605
136062009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13607
13608        Allow custom memory allocation control for JavaScriptCore's HashMap class
13609        http://bugs.webkit.org/show_bug.cgi?id=27871
13610
13611        Inherits HashMap class from FastAllocBase because it has been
13612        instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148.
13613
13614        * wtf/RefPtrHashMap.h:
13615        (WTF::):
13616
136172009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13618
13619        Allow custom memory allocation control for JavaScriptCore's ScopeChain class
13620        https://bugs.webkit.org/show_bug.cgi?id=27834
13621
13622        Inherits ScopeChain class from FastAllocBase because it has been
13623        instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109.
13624
13625        * runtime/ScopeChain.h:
13626
136272009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13628
13629        Reviewed by Darin Adler.
13630
13631        Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct
13632        https://bugs.webkit.org/show_bug.cgi?id=27833
13633
13634        Inherits RegExpConstructorPrivate class from FastAllocBase because it has been
13635        instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152.
13636
13637        * runtime/RegExpConstructor.cpp:
13638
136392009-07-31  Yong Li  <yong.li@torchmobile.com>
13640
13641        Reviewed by George Staikos.
13642
13643        Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER
13644        currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com>
13645        https://bugs.webkit.org/show_bug.cgi?id=27848
13646
13647        * wtf/CurrentTime.cpp:
13648        (WTF::currentSystemTime): get current time with GetCurrentFT
13649        (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount
13650        * wtf/Platform.h:
13651
136522009-07-31  Ada Chan  <adachan@apple.com>
13653
13654        Fixes the Windows release-PGO build.
13655
13656        Reviewed by Jon Honeycutt.
13657
13658        * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread().
13659        * wtf/FastMalloc.cpp:
13660        (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build.
13661
136622009-07-31  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
13663
13664        Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp
13665        https://bugs.webkit.org/show_bug.cgi?id=27874
13666
13667        Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods.
13668
13669        * yarr/RegexInterpreter.cpp:
13670        (JSC::Yarr::Interpreter::allocDisjunctionContext):
13671        (JSC::Yarr::Interpreter::freeDisjunctionContext):
13672        (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
13673        (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
13674
136752009-07-30  Xan Lopez  <xlopez@igalia.com>
13676
13677        Reviewed by Jan Alonzo.
13678
13679        Fix compiler warning.
13680
13681        GCC does not like C++-style comments in preprocessor directives.
13682
13683        * wtf/Platform.h:
13684
136852009-07-30  John McCall  <rjmccall@apple.com>
13686
13687        Reviewed by Gavin Barraclough.
13688
13689        Optimize the X86_64 trampolines: avoid the need for filler arguments
13690        and move the stub-args area closer to the stack pointer.
13691
13692        * jit/JIT.h: adjust patch offsets because of slight code-size change
13693        * jit/JITCode.h:
13694        (JSC::JITCode::execute): don't pass filler args
13695        * jit/JITStubs.cpp:
13696        (ctiTrampoline): (X86_64): push args onto stack, use args directly
13697        (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement
13698        (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement
13699        * jit/JITStubs.h:
13700        (JITStackFrame): (X86_64): move args area earlier
13701        (ctiTrampoline): remove filler args from prototype
13702
137032009-07-30  Gavin Barraclough  <barraclough@apple.com>
13704
13705        Temporarily revert r46618 since this is b0rking on Linux.
13706
137072009-07-23  Gavin Barraclough  <barraclough@apple.com>
13708
13709        Reviewed by Oliver Hunt.
13710
13711        Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
13712        ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
13713
13714        This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
13715        (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
13716
13717        * bytecode/CodeBlock.cpp:
13718        (JSC::printStructureStubInfo):
13719            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13720
13721        * bytecode/CodeBlock.h:
13722        (JSC::):
13723        (JSC::CallLinkInfo::seenOnce):
13724        (JSC::CallLinkInfo::setSeen):
13725        (JSC::MethodCallLinkInfo::seenOnce):
13726        (JSC::MethodCallLinkInfo::setSeen):
13727            - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
13728
13729        * bytecode/StructureStubInfo.cpp:
13730        (JSC::StructureStubInfo::deref):
13731            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13732
13733        * bytecode/StructureStubInfo.h:
13734        (JSC::StructureStubInfo::StructureStubInfo):
13735        (JSC::StructureStubInfo::initGetByIdSelf):
13736        (JSC::StructureStubInfo::initGetByIdProto):
13737        (JSC::StructureStubInfo::initGetByIdChain):
13738        (JSC::StructureStubInfo::initGetByIdSelfList):
13739        (JSC::StructureStubInfo::initGetByIdProtoList):
13740        (JSC::StructureStubInfo::initPutByIdTransition):
13741        (JSC::StructureStubInfo::initPutByIdReplace):
13742        (JSC::StructureStubInfo::seenOnce):
13743        (JSC::StructureStubInfo::setSeen):
13744            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
13745
13746        * bytecompiler/BytecodeGenerator.cpp:
13747        (JSC::BytecodeGenerator::emitGetById):
13748        (JSC::BytecodeGenerator::emitPutById):
13749            - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
13750
13751        * jit/JIT.cpp:
13752        (JSC::JIT::privateCompileCTIMachineTrampolines):
13753        (JSC::JIT::unlinkCall):
13754            - Remove the "don't lazy link" stage of calls.
13755
13756        * jit/JIT.h:
13757        (JSC::JIT::compileCTIMachineTrampolines):
13758            - Remove the "don't lazy link" stage of calls.
13759
13760        * jit/JITCall.cpp:
13761        (JSC::JIT::compileOpCallSlowCase):
13762            - Remove the "don't lazy link" stage of calls.
13763
13764        * jit/JITStubs.cpp:
13765        (JSC::JITThunks::JITThunks):
13766        (JSC::JITThunks::tryCachePutByID):
13767        (JSC::JITThunks::tryCacheGetByID):
13768        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
13769        (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
13770            - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
13771
13772        * jit/JITStubs.h:
13773        (JSC::JITThunks::ctiStringLengthTrampoline):
13774        (JSC::JITStubs::):
13775            - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
13776
13777        * wtf/PtrAndFlags.h:
13778        (WTF::PtrAndFlags::PtrAndFlags):
13779        (WTF::PtrAndFlags::operator!):
13780        (WTF::PtrAndFlags::operator->):
13781            - Add ! and -> operators, add constuctor with pointer argument.
13782
137832009-07-30  Geoffrey Garen  <ggaren@apple.com>
13784
13785        Reviewed by Gavin Barraclough.
13786
13787        Fixed failing tests seen on Windows buildbot.
13788
13789        * jit/JITStubs.cpp:
13790        (JSC::DEFINE_STUB_FUNCTION):
13791        * jit/JITStubs.h:
13792        (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result,
13793        regardless of compiler. gcc on mac uses 32-bit values for bool,
13794        but gcc on linux and MSVC on Windows use 8-bit values.
13795
137962009-07-30  Geoffrey Garen  <ggaren@apple.com>
13797
13798        Windows build fix: added missing symbols on Windows.
13799
13800        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13801        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
13802
138032009-07-30  Geoffrey Garen  <ggaren@apple.com>
13804
13805        Windows build fix: removed stale symbols on Windows.
13806
13807        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13808        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
13809
13810=== End merge of nitro-extreme branch 2009-07-30 ===
13811
138122009-07-20  Geoffrey Garen  <ggaren@apple.com>
13813
13814        Fixed a post-review typo in r46066 that caused tons of test failures.
13815
13816        SunSpider reports no change.
13817
13818        * runtime/JSArray.cpp:
13819        (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid
13820        uninitialized members at the end.
13821
138222009-07-20  Geoffrey Garen  <ggaren@apple.com>
13823
13824        Windows WebKit build fix: Added some missing exports.
13825
13826        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13827        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
13828
138292009-07-17  Geoffrey Garen  <ggaren@apple.com>
13830
13831        Reviewed by Sam Weinig.
13832
13833        Get the branch working on windows.
13834        https://bugs.webkit.org/show_bug.cgi?id=27391
13835
13836        SunSpider says 0.3% faster.
13837
13838        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
13839        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated
13840        MSVC export lists to fix linker errors.
13841
13842        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed
13843        new / old project files.
13844
13845        * jit/JIT.cpp:
13846        (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell
13847        MSVC that these structures represent actual memory layout, and should not be
13848        automatically aligned. Changed the return value load to load a 64bit quantity
13849        into the canonical registers.
13850
13851        * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because
13852        it's needed by more than just the JIT, and it supplements a standard library
13853        macro (offsetof).
13854
13855        * jit/JITCall.cpp:
13856        (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed
13857        cast to resolve an MSVC warning.
13858
13859        * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures
13860        represent actual memory layout, and should not be automatically aligned.
13861
13862        * runtime/JSArray.cpp:
13863        (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since
13864        memset_pattern8 is not portable. (I verified that this version of the loop
13865        gives the best performance / generated code in GCC.)
13866
13867        * runtime/JSObject.h:
13868        (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET --
13869        OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a
13870        definition in winnt.h.)
13871
13872        * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds.
13873
13874        * runtime/JSValue.h:
13875        (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values.
13876        (GCC doesn't seem to care one way or the other.)
13877
13878        * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a
13879        while ago to resolve a conflict with winnt.h. I can't remember if it's truly
13880        still needed, but what the heck.
13881
13882        * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here.
13883
138842009-07-06  Geoffrey Garen  <ggaren@apple.com>
13885
13886        Reviewed by Sam Weinig (?).
13887
13888        Fixed an assertion seen during the stress test.
13889
13890        Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly,
13891        not all constants get folded.
13892
13893        * jit/JITArithmetic.cpp:
13894        (JSC::JIT::emit_op_jnless):
13895        (JSC::JIT::emitSlow_op_jnless):
13896        (JSC::JIT::emit_op_jnlesseq):
13897        (JSC::JIT::emitSlow_op_jnlesseq):
13898
138992009-07-06  Geoffrey Garen  <ggaren@apple.com>
13900
13901        Reviewed by Sam Weinig.
13902
13903        Include op_convert_this in result caching.
13904
13905        No change on SunSpider or v8.
13906
13907        * jit/JITOpcodes.cpp:
13908        (JSC::JIT::emit_op_convert_this):
13909
13910        * jit/JITStubs.cpp:
13911        (JSC::DEFINE_STUB_FUNCTION):
13912        * jit/JITStubs.h:
13913        (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so
13914        to maintain the result caching contract that { tag, payload } can be
13915        found in { regT1, regT0 }.
13916
139172009-07-06  Geoffrey Garen  <ggaren@apple.com>
13918
13919        Reviewed by Sam Weinig.
13920
13921        Implemented result chaining.
13922
13923        1% faster on SunSpider. 4%-5% faster on v8.
13924
13925        * assembler/MacroAssemblerX86Common.h:
13926        (JSC::MacroAssemblerX86Common::move):
13927        * assembler/X86Assembler.h:
13928        (JSC::X86Assembler::movl_rr): Added an optimization to eliminate
13929        no-op mov instructions, to simplify chaining.
13930
13931        * jit/JIT.cpp:
13932        (JSC::JIT::JIT):
13933        * jit/JIT.h: Added data members and helper functions for recording
13934        chained results. We record both a mapping from virtual to machine register
13935        and the opcode for which the mapping is valid, to help ensure that the
13936        mapping isn't used after the mapped register has been stomped by other
13937        instructions.
13938
13939        * jit/JITCall.cpp:
13940        (JSC::JIT::compileOpCallVarargs):
13941        (JSC::JIT::compileOpCallVarargsSlowCase):
13942        (JSC::JIT::emit_op_ret):
13943        (JSC::JIT::emit_op_construct_verify):
13944        (JSC::JIT::compileOpCall):
13945        (JSC::JIT::compileOpCallSlowCase): Chain function call results.
13946
13947        * jit/JITInlineMethods.h:
13948        (JSC::JIT::emitLoadTag):
13949        (JSC::JIT::emitLoadPayload):
13950        (JSC::JIT::emitLoad):
13951        (JSC::JIT::emitLoad2):
13952        (JSC::JIT::isLabeled):
13953        (JSC::JIT::map):
13954        (JSC::JIT::unmap):
13955        (JSC::JIT::isMapped):
13956        (JSC::JIT::getMappedPayload):
13957        (JSC::JIT::getMappedTag): Use helper functions when loading virtual
13958        registers into machine registers, in case the loads can be eliminated
13959        by chaining.
13960
13961        * jit/JITOpcodes.cpp:
13962        (JSC::JIT::emit_op_mov):
13963        (JSC::JIT::emit_op_end):
13964        (JSC::JIT::emit_op_instanceof):
13965        (JSC::JIT::emit_op_get_global_var):
13966        (JSC::JIT::emit_op_put_global_var):
13967        (JSC::JIT::emit_op_get_scoped_var):
13968        (JSC::JIT::emit_op_put_scoped_var):
13969        (JSC::JIT::emit_op_to_primitive):
13970        (JSC::JIT::emit_op_resolve_global):
13971        (JSC::JIT::emit_op_jneq_ptr):
13972        (JSC::JIT::emit_op_next_pname):
13973        (JSC::JIT::emit_op_to_jsnumber):
13974        (JSC::JIT::emit_op_catch): Chain results from these opcodes.
13975
13976        (JSC::JIT::emit_op_profile_will_call):
13977        (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to
13978        avoid stomping a chained result.
13979
13980        * jit/JITPropertyAccess.cpp:
13981        (JSC::JIT::emit_op_method_check):
13982        (JSC::JIT::emit_op_get_by_val):
13983        (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes.
13984
13985        * jit/JITStubCall.h:
13986        (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate
13987        chaining.
13988
13989        (JSC::JITStubCall::call): Unmap all mapped registers, since our callee
13990        stub might stomp them.
13991
139922009-07-01  Sam Weinig  <sam@webkit.org>
13993
13994        Reviewed by Gavin Barraclough.
13995
13996        Don't reload values in emitBinaryDoubleOp.
13997
13998        SunSpider reports a 0.6% progression.
13999
14000        * jit/JIT.h:
14001        * jit/JITArithmetic.cpp:
14002        (JSC::JIT::emit_op_jnless):
14003        (JSC::JIT::emit_op_jnlesseq):
14004        (JSC::JIT::emitBinaryDoubleOp):
14005
140062009-07-01  Sam Weinig  <sam@webkit.org>
14007
14008        Reviewed by Geoffrey Garen.
14009
14010        Convert op_div to load op1 and op2 up front.
14011
14012        * jit/JITArithmetic.cpp:
14013        (JSC::JIT::emit_op_div):
14014
140152009-07-01  Sam Weinig  <sam@webkit.org>
14016
14017        Reviewed by Geoffrey Garen.
14018
14019        Don't emit code in emitBinaryDoubleOp if code is unreachable, observable
14020        via an empty (unlinked) jumplist passed in.  This only effects op_jnless
14021        and op_jnlesseq at present.
14022
14023        * jit/JITArithmetic.cpp:
14024        (JSC::JIT::emitSlow_op_jnless):
14025        (JSC::JIT::emitSlow_op_jnlesseq):
14026        (JSC::JIT::emitBinaryDoubleOp):
14027
140282009-07-01  Geoffrey Garen  <ggaren@apple.com>
14029
14030        Reviewed by Sam Weinig.
14031
14032        Converted op_mod to put { tag, payload } in { regT1, regT0 }, and
14033        tidied up its constant case.
14034
14035        SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod
14036        shows a 12% speedup, and the SunSpider test that uses op_mod most should
14037        benefit a lot from result caching in the end, since it almost always
14038        performs (expression) % constant.
14039
14040        * jit/JITArithmetic.cpp:
14041        (JSC::JIT::emit_op_mod):
14042        (JSC::JIT::emitSlow_op_mod):
14043
140442009-06-30  Sam Weinig  <sam@webkit.org>
14045
14046        Reviewed by Geoffrey Garen.
14047
14048        Converted some more arithmetic ops to put { tag, payload } in
14049        { regT1, regT0 }.
14050
14051        * jit/JITArithmetic.cpp:
14052        (JSC::JIT::emit_op_mul):
14053        (JSC::JIT::emitSlow_op_mul):
14054
140552009-06-30  Geoffrey Garen  <ggaren@apple.com>
14056
14057        Reviewed by Sam Weinig.
14058
14059        Converted some more arithmetic ops to put { tag, payload } in
14060        { regT1, regT0 }, and added a case for subtract constant.
14061
14062        SunSpider says no change. v8 says 0.3% slower.
14063
14064        * jit/JIT.h:
14065        * jit/JITArithmetic.cpp:
14066        (JSC::JIT::emit_op_add):
14067        (JSC::JIT::emitAdd32Constant):
14068        (JSC::JIT::emitSlow_op_add):
14069        (JSC::JIT::emit_op_sub):
14070        (JSC::JIT::emitSub32Constant):
14071        (JSC::JIT::emitSlow_op_sub):
14072
140732009-06-30  Gavin Barraclough  <barraclough@apple.com>
14074
14075        Reviewed by Sam Weinig.
14076
14077        Remove more uses of addressFor(), load double constants directly from
14078        the constantpool in the CodeBlock, rather than from the register file.
14079
14080        * jit/JITArithmetic.cpp:
14081        (JSC::JIT::emitAdd32Constant):
14082        (JSC::JIT::emitBinaryDoubleOp):
14083
140842009-06-30  Geoffrey Garen  <ggaren@apple.com>
14085
14086        Reviewed by Sam Weinig.
14087
14088        Fixed a bug in postfix ops, where we would treat x = x++ and x = x--
14089        as a no-op, even if x were not an int, and the ++/-- could have side-effects.
14090
14091        * jit/JITArithmetic.cpp:
14092        (JSC::JIT::emit_op_post_inc):
14093        (JSC::JIT::emitSlow_op_post_inc):
14094        (JSC::JIT::emit_op_post_dec):
14095        (JSC::JIT::emitSlow_op_post_dec):
14096
140972009-06-30  Geoffrey Garen  <ggaren@apple.com>
14098
14099        Reviewed by Sam Weinig.
14100
14101        Converted some arithmetic ops to put { tag, payload } in
14102        { regT1, regT0 }.
14103
14104        SunSpider says 0.7% faster. v8 says no change.
14105
14106        * jit/JIT.h:
14107        * jit/JITArithmetic.cpp:
14108        (JSC::JIT::emit_op_jnless):
14109        (JSC::JIT::emit_op_jnlesseq):
14110        (JSC::JIT::emit_op_lshift):
14111        (JSC::JIT::emit_op_rshift):
14112        (JSC::JIT::emit_op_bitand):
14113        (JSC::JIT::emit_op_bitor):
14114        (JSC::JIT::emit_op_bitxor):
14115        * jit/JITInlineMethods.h:
14116        (JSC::JIT::isOperandConstantImmediateInt):
14117        (JSC::JIT::getOperandConstantImmediateInt):
14118
141192009-06-30  Gavin Barraclough  <barraclough@apple.com>
14120
14121        Reviewed by Sam Weinig.
14122
14123        Start removing cases of addressFor().
14124
14125        * jit/JIT.h:
14126        * jit/JITArithmetic.cpp:
14127        (JSC::JIT::emitAdd32Constant):
14128        (JSC::JIT::emitBinaryDoubleOp):
14129        (JSC::JIT::emit_op_div):
14130        * jit/JITInlineMethods.h:
14131        (JSC::JIT::emitLoadDouble):
14132        (JSC::JIT::emitLoadInt32ToDouble):
14133        (JSC::JIT::emitStoreDouble):
14134        * jit/JITOpcodes.cpp:
14135        (JSC::JIT::emit_op_jfalse):
14136        (JSC::JIT::emit_op_jtrue):
14137
141382009-06-30  Geoffrey Garen  <ggaren@apple.com>
14139
14140        Rolled back in my last patch with regression fixed.
14141
14142        * jit/JIT.cpp:
14143        (JSC::JIT::privateCompileSlowCases):
14144        * jit/JIT.h:
14145        * jit/JITOpcodes.cpp:
14146        (JSC::JIT::emit_op_loop_if_less):
14147        (JSC::JIT::emit_op_loop_if_lesseq):
14148        (JSC::JIT::emit_op_resolve_global):
14149        (JSC::JIT::emitSlow_op_resolve_global):
14150        (JSC::JIT::emit_op_eq):
14151        (JSC::JIT::emitSlow_op_eq):
14152        (JSC::JIT::emit_op_neq):
14153        (JSC::JIT::emitSlow_op_neq):
14154
141552009-06-30  Geoffrey Garen  <ggaren@apple.com>
14156
14157        Rolled out my last patch because it was a 2% SunSpider regression.
14158
14159        * jit/JIT.cpp:
14160        (JSC::JIT::privateCompileSlowCases):
14161        * jit/JIT.h:
14162        * jit/JITOpcodes.cpp:
14163        (JSC::JIT::emit_op_loop_if_less):
14164        (JSC::JIT::emit_op_loop_if_lesseq):
14165        (JSC::JIT::emit_op_resolve_global):
14166        (JSC::JIT::emit_op_eq):
14167        (JSC::JIT::emitSlow_op_eq):
14168        (JSC::JIT::emit_op_neq):
14169        (JSC::JIT::emitSlow_op_neq):
14170
141712009-06-30  Geoffrey Garen  <ggaren@apple.com>
14172
14173        Reviewed by Gavin "Sam Weinig" Barraclough.
14174
14175        Standardized the rest of our opcodes to put { tag, payload } in
14176        { regT1, regT0 } where possible.
14177
14178        * jit/JIT.cpp:
14179        (JSC::JIT::privateCompileSlowCases):
14180        * jit/JIT.h:
14181        * jit/JITOpcodes.cpp:
14182        (JSC::JIT::emit_op_loop_if_less):
14183        (JSC::JIT::emit_op_loop_if_lesseq):
14184        (JSC::JIT::emit_op_resolve_global):
14185        (JSC::JIT::emitSlow_op_resolve_global):
14186        (JSC::JIT::emit_op_eq):
14187        (JSC::JIT::emitSlow_op_eq):
14188        (JSC::JIT::emit_op_neq):
14189        (JSC::JIT::emitSlow_op_neq):
14190
141912009-06-30  Gavin Barraclough  <barraclough@apple.com>
14192
14193        Reviewed by Geoffrey Garen.
14194
14195        Replace calls to store32(tagFor()) and store32(payloadFor())
14196        with emitStoreInt32(), emitStoreBool(), and emitStoreCell().
14197
14198        * jit/JIT.h:
14199        * jit/JITArithmetic.cpp:
14200        (JSC::JIT::emit_op_negate):
14201        (JSC::JIT::emit_op_lshift):
14202        (JSC::JIT::emit_op_rshift):
14203        (JSC::JIT::emit_op_bitand):
14204        (JSC::JIT::emitBitAnd32Constant):
14205        (JSC::JIT::emit_op_bitor):
14206        (JSC::JIT::emitBitOr32Constant):
14207        (JSC::JIT::emit_op_bitxor):
14208        (JSC::JIT::emitBitXor32Constant):
14209        (JSC::JIT::emit_op_bitnot):
14210        (JSC::JIT::emit_op_post_inc):
14211        (JSC::JIT::emit_op_post_dec):
14212        (JSC::JIT::emit_op_pre_inc):
14213        (JSC::JIT::emit_op_pre_dec):
14214        (JSC::JIT::emit_op_add):
14215        (JSC::JIT::emitAdd32Constant):
14216        (JSC::JIT::emit_op_sub):
14217        (JSC::JIT::emitSub32ConstantLeft):
14218        (JSC::JIT::emitSub32ConstantRight):
14219        (JSC::JIT::emit_op_mul):
14220        (JSC::JIT::emitSlow_op_mul):
14221        (JSC::JIT::emit_op_div):
14222        (JSC::JIT::emit_op_mod):
14223        * jit/JITCall.cpp:
14224        (JSC::JIT::emit_op_load_varargs):
14225        * jit/JITInlineMethods.h:
14226        (JSC::JIT::emitStoreInt32):
14227        (JSC::JIT::emitStoreCell):
14228        (JSC::JIT::emitStoreBool):
14229        (JSC::JIT::emitStore):
14230        * jit/JITOpcodes.cpp:
14231        (JSC::JIT::emit_op_instanceof):
14232        (JSC::JIT::emit_op_not):
14233        (JSC::JIT::emit_op_eq):
14234        (JSC::JIT::emitSlow_op_eq):
14235        (JSC::JIT::emit_op_neq):
14236        (JSC::JIT::emitSlow_op_neq):
14237        (JSC::JIT::compileOpStrictEq):
14238        (JSC::JIT::emit_op_eq_null):
14239        (JSC::JIT::emit_op_neq_null):
14240        * jit/JITStubCall.h:
14241        (JSC::JITStubCall::call):
14242
142432009-06-30  Geoffrey Garen  <ggaren@apple.com>
14244
14245        Reviewed by Sam Weinig.
14246
14247        Standardized the rest of the property access instructions to put { tag,
14248        payload } in { regT1, regT0 }.
14249
14250        Small v8 speedup, 0.2% SunSpider slowdown.
14251
14252        * jit/JIT.h:
14253        * jit/JITInlineMethods.h:
14254        (JSC::JIT::emitLoad):
14255        (JSC::JIT::emitLoad2):
14256        * jit/JITPropertyAccess.cpp:
14257        (JSC::JIT::emit_op_get_by_val):
14258        (JSC::JIT::emitSlow_op_get_by_val):
14259        (JSC::JIT::emit_op_put_by_val):
14260        (JSC::JIT::emitSlow_op_put_by_val):
14261        (JSC::JIT::emit_op_put_by_id):
14262        (JSC::JIT::emitSlow_op_put_by_id):
14263        (JSC::JIT::patchPutByIdReplace):
14264
142652009-06-29  Sam Weinig  <sam@webkit.org>
14266
14267        Reviewed by Gavin Barraclough.
14268
14269        Various cleanups.
14270        - Use fpRegT* instead of X86::xmm*.
14271        - Use a switch statement in emitBinaryDoubleOp instead of a bunch of
14272          if/elses.
14273
14274        * jit/JITArithmetic.cpp:
14275        (JSC::JIT::emitAdd32Constant):
14276        (JSC::JIT::emitBinaryDoubleOp):
14277        (JSC::JIT::emit_op_div):
14278
142792009-06-29  Sam Weinig  <sam@webkit.org>
14280
14281        Reviewed by Geoffrey Garen.
14282
14283        Add inline code dealing with doubles for op_jfalse and op_jtrue.
14284
14285        * assembler/MacroAssemblerX86Common.h:
14286        (JSC::MacroAssemblerX86Common::):
14287        (JSC::MacroAssemblerX86Common::zeroDouble):
14288        * jit/JITOpcodes.cpp:
14289        (JSC::JIT::emit_op_jfalse):
14290        (JSC::JIT::emit_op_jtrue):
14291
142922009-06-28  Geoffrey Garen  <ggaren@apple.com>
14293
14294        Reviewed by Sam Weinig.
14295
14296        Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }.
14297
14298        SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization
14299        this enables will win much more than that back.
14300
14301        * jit/JIT.cpp:
14302        (JSC::JIT::privateCompileCTIMachineTrampolines):
14303        * jit/JIT.h:
14304        * jit/JITPropertyAccess.cpp:
14305        (JSC::JIT::emit_op_method_check):
14306        (JSC::JIT::emit_op_get_by_id):
14307        (JSC::JIT::compileGetByIdHotPath):
14308        (JSC::JIT::compileGetByIdSlowCase):
14309        (JSC::JIT::patchGetByIdSelf):
14310        (JSC::JIT::privateCompilePatchGetArrayLength):
14311        (JSC::JIT::privateCompileGetByIdProto):
14312        (JSC::JIT::privateCompileGetByIdSelfList):
14313        (JSC::JIT::privateCompileGetByIdProtoList):
14314        (JSC::JIT::privateCompileGetByIdChainList):
14315        (JSC::JIT::privateCompileGetByIdChain):
14316
143172009-06-26  Geoffrey Garen  <ggaren@apple.com>
14318
14319        Reviewed by Maciej Stachowiak.
14320
14321        Standardized op_call to put { tag, payload } in { regT1, regT0 }.
14322
14323        SunSpider and v8 report no change.
14324
14325        * jit/JIT.cpp:
14326        (JSC::JIT::privateCompileCTIMachineTrampolines):
14327        * jit/JITCall.cpp:
14328        (JSC::JIT::compileOpCallInitializeCallFrame):
14329        (JSC::JIT::compileOpCallSetupArgs):
14330        (JSC::JIT::compileOpConstructSetupArgs):
14331        (JSC::JIT::compileOpCallVarargsSetupArgs):
14332        (JSC::JIT::compileOpCallVarargs):
14333        (JSC::JIT::compileOpCall):
14334        (JSC::JIT::compileOpCallSlowCase):
14335
143362009-06-26  Sam Weinig  <sam@webkit.org>
14337
14338        Reviewed by Geoffrey Garen.
14339
14340        Handle multiplying by zero a little better by
14341        inlining the case that both operands are non-negative
14342        into the slowpath.
14343
14344        * assembler/MacroAssemblerX86Common.h:
14345        (JSC::MacroAssemblerX86Common::branchOr32):
14346        * jit/JITArithmetic.cpp:
14347        (JSC::JIT::emit_op_mul):
14348        (JSC::JIT::emitSlow_op_mul):
14349
143502009-06-25  Geoffrey Garen  <ggaren@apple.com>
14351
14352        Reviewed by Sam Weinig.
14353
14354        Optimize x++ to ++x inside for loops.
14355
14356        Sadly, no measurable speedup, but this should help with result chaining.
14357
14358        * parser/Nodes.cpp:
14359        (JSC::ForNode::emitBytecode):
14360
143612009-06-25  Geoffrey Garen  <ggaren@apple.com>
14362
14363        Reviewed by Sam Weinig.
14364
14365        Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
14366
14367        * jit/JITArithmetic.cpp:
14368        (JSC::JIT::emitSlow_op_bitnot):
14369        (JSC::JIT::emit_op_post_inc):
14370
143712009-06-25  Geoffrey Garen  <ggaren@apple.com>
14372
14373        Reviewed by Sam Weinig.
14374
14375        Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
14376
14377        * jit/JITArithmetic.cpp:
14378        (JSC::JIT::emit_op_bitnot):
14379        (JSC::JIT::emit_op_post_dec):
14380        (JSC::JIT::emit_op_pre_inc):
14381        (JSC::JIT::emitSlow_op_pre_inc):
14382        (JSC::JIT::emit_op_pre_dec):
14383        (JSC::JIT::emitSlow_op_pre_dec):
14384
143852009-06-25  Geoffrey Garen  <ggaren@apple.com>
14386
14387        Reviewed by Sam Weinig.
14388
14389        Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
14390
14391        * jit/JITArithmetic.cpp:
14392        (JSC::JIT::emit_op_negate):
14393        (JSC::JIT::emitSlow_op_negate):
14394        * jit/JITCall.cpp:
14395        (JSC::JIT::emit_op_construct_verify):
14396        (JSC::JIT::emitSlow_op_construct_verify):
14397
143982009-06-25  Geoffrey Garen  <ggaren@apple.com>
14399
14400        Reviewed by Sam Weinig.
14401
14402        Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
14403
14404        * jit/JITOpcodes.cpp:
14405        (JSC::JIT::emit_op_loop_if_true):
14406        (JSC::JIT::emit_op_jfalse):
14407        (JSC::JIT::emit_op_jtrue):
14408        (JSC::JIT::emit_op_jeq_null):
14409        (JSC::JIT::emit_op_jneq_null):
14410        (JSC::JIT::emit_op_eq_null):
14411        (JSC::JIT::emit_op_neq_null):
14412
144132009-06-25  Geoffrey Garen  <ggaren@apple.com>
14414
14415        Reviewed by Sam Weinig (sort of, maybe).
14416
14417        Fixed some ASSERTs in http/tests/security.
14418
14419        These ASSERTs were introduced by http://trac.webkit.org/changeset/45057,
14420        but the underlying problem was actually older. http://trac.webkit.org/changeset/45057
14421        just exposed the problem by enabling optimization in more cases.
14422
14423        The ASSERTs fired because we tested PropertySlot::slotBase() for validity,
14424        but slotBase() ASSERTs if it's invalid, so we would ASSERT before
14425        the test could happen. Solution: Remove the ASSERT. Maybe it was valid
14426        once, but it clearly goes against a pattern we've deployed of late.
14427
14428        The underlying problem was that WebCore would re-use a PropertySlot in
14429        the case of a forwarding access, and the second use would not completely
14430        overwrite the first use. Solution: Make sure to overwrite m_offset when
14431        setting a value on a PropertySlot. (Other values already get implicitly
14432        overwritten during reuse.)
14433
14434        * runtime/PropertySlot.h:
14435        (JSC::PropertySlot::PropertySlot):
14436        (JSC::PropertySlot::setValueSlot):
14437        (JSC::PropertySlot::setValue):
14438        (JSC::PropertySlot::setRegisterSlot):
14439        (JSC::PropertySlot::setUndefined):
14440        (JSC::PropertySlot::slotBase):
14441        (JSC::PropertySlot::clearOffset):
14442
144432009-06-24  Gavin Barraclough  <barraclough@apple.com>
14444
14445        Reviewed by Geoff Garen.
14446
14447        Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT.
14448
14449        * jit/JIT.h:
14450        * jit/JITPropertyAccess.cpp:
14451        (JSC::JIT::emit_op_method_check):
14452        (JSC::JIT::emitSlow_op_method_check):
14453        (JSC::JIT::emit_op_get_by_id):
14454        (JSC::JIT::compileGetByIdHotPath):
14455        (JSC::JIT::emitSlow_op_get_by_id):
14456        (JSC::JIT::compileGetByIdSlowCase):
14457
144582009-06-23  Geoffrey Garen  <ggaren@apple.com>
14459
14460        Reviewed by Sam Weinig.
14461
14462        Bit off a tiny bit more of standardizing opcode behavior to help with result
14463        caching.
14464
14465        SunSpider reports no change, v8 maybe a tiny speedup.
14466
14467        * jit/JITOpcodes.cpp:
14468        (JSC::JIT::emit_op_to_jsnumber):
14469        (JSC::JIT::emitSlow_op_to_jsnumber):
14470        (JSC::JIT::emit_op_convert_this):
14471        (JSC::JIT::emitSlow_op_convert_this):
14472
144732009-06-23  Geoffrey Garen  <ggaren@apple.com>
14474
14475        Reviewed by Sam Weinig.
14476
14477        Bit off a tiny bit more of standardizing opcode behavior to help with result
14478        caching -- including removing my old enemy, op_resolve_function, because
14479        it was non-standard, and removing it felt better than helping it limp along.
14480
14481        SunSpider reports no change, v8 maybe a tiny speedup.
14482
14483        * bytecode/CodeBlock.cpp:
14484        (JSC::CodeBlock::dump):
14485        * bytecode/Opcode.h:
14486        * bytecompiler/BytecodeGenerator.cpp:
14487        * bytecompiler/BytecodeGenerator.h:
14488        * interpreter/Interpreter.cpp:
14489        (JSC::Interpreter::privateExecute):
14490        * jit/JIT.cpp:
14491        (JSC::JIT::privateCompileMainPass):
14492        * jit/JIT.h:
14493        * jit/JITOpcodes.cpp:
14494        (JSC::JIT::emit_op_get_scoped_var):
14495        (JSC::JIT::emit_op_put_scoped_var):
14496        (JSC::JIT::emit_op_to_primitive):
14497        (JSC::JIT::emitSlow_op_to_primitive):
14498        * jit/JITStubs.cpp:
14499        * jit/JITStubs.h:
14500        * parser/Nodes.cpp:
14501        (JSC::FunctionCallResolveNode::emitBytecode):
14502
145032009-06-23  Geoffrey Garen  <ggaren@apple.com>
14504
14505        Reviewed by Sam Weinig.
14506
14507        Bit off a tiny bit of standardizing opcode behavior to help with result
14508        caching.
14509
14510        0.6% SunSpider speedup. 0.3% v8 speedup.
14511
14512        * jit/JITInlineMethods.h:
14513        (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload
14514        by loading tag before payload, to avoid stomping base/payload.
14515
14516        * jit/JITOpcodes.cpp:
14517        (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in
14518        regT0" semantics.
14519
14520        (JSC::JIT::emit_op_get_global_var):
14521        (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent
14522        loads while I was at it. The global object's "d" pointer never changes
14523        after construction.
14524
145252009-06-23  Gavin Barraclough  <barraclough@apple.com>
14526
14527        Reviewed by Sam Weinig.
14528
14529        Remove 'arguments' field from Register union (again).
14530        This time do so without breaking tests (radical, I know).
14531
14532        * interpreter/CallFrame.h:
14533        (JSC::ExecState::optionalCalleeArguments):
14534        (JSC::ExecState::setArgumentCount):
14535        (JSC::ExecState::init):
14536        * interpreter/Interpreter.cpp:
14537        (JSC::Interpreter::dumpRegisters):
14538        (JSC::Interpreter::unwindCallFrame):
14539        (JSC::Interpreter::privateExecute):
14540        (JSC::Interpreter::retrieveArguments):
14541        * interpreter/Register.h:
14542        (JSC::Register::withInt):
14543        (JSC::Register::):
14544        (JSC::Register::Register):
14545        (JSC::Register::i):
14546        * jit/JITStubs.cpp:
14547        (JSC::JITStubs::cti_op_tear_off_arguments):
14548        * runtime/Arguments.h:
14549        (JSC::JSActivation::copyRegisters):
14550        (JSC::Register::arguments):
14551        * runtime/JSActivation.cpp:
14552        (JSC::JSActivation::argumentsGetter):
14553        * runtime/JSActivation.h:
14554
145552009-06-23  Geoffrey Garen  <ggaren@apple.com>
14556
14557        Reviewed by Sam Weinig.
14558
14559        Removed some result register tracking cruft in preparation for a new
14560        result tracking mechanism.
14561
14562        SunSpider reports no change.
14563
14564        * assembler/AbstractMacroAssembler.h:
14565        * assembler/X86Assembler.h:
14566        (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in
14567        machine code; we already do this in bytecode.
14568
14569        * jit/JIT.cpp:
14570        (JSC::JIT::JIT):
14571        (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result
14572        registers, so an opcode with a timeout check can still benefit from result
14573        register caching.
14574
14575        (JSC::JIT::privateCompileMainPass):
14576        (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister()
14577        in preparation for something new.
14578
14579        * jit/JIT.h:
14580        * jit/JITArithmetic.cpp:
14581        (JSC::JIT::emit_op_jnless):
14582        (JSC::JIT::emit_op_jnlesseq):
14583        * jit/JITInlineMethods.h:
14584        (JSC::JIT::emitGetFromCallFrameHeaderPtr):
14585        (JSC::JIT::emitGetFromCallFrameHeader32):
14586        * jit/JITOpcodes.cpp:
14587        (JSC::JIT::emit_op_jmp):
14588        (JSC::JIT::emit_op_jfalse):
14589        (JSC::JIT::emit_op_jtrue):
14590        (JSC::JIT::emit_op_jeq_null):
14591        (JSC::JIT::emit_op_jneq_null):
14592        (JSC::JIT::emit_op_jneq_ptr):
14593        (JSC::JIT::emit_op_jsr):
14594        (JSC::JIT::emit_op_sret):
14595        (JSC::JIT::emit_op_jmp_scopes): ditto
14596
14597        * jit/JITStubCall.h:
14598        (JSC::JITStubCall::JITStubCall):
14599        (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument
14600        you passed to a JIT stub, for use in emitTimeoutCheck.
14601
146022009-06-23  Sam Weinig  <sam@webkit.org>
14603
14604        Reviewed by Geoffrey Garen.
14605
14606        Remove now-useless inplace variants of binary ops.
14607
14608        * jit/JIT.h:
14609        * jit/JITArithmetic.cpp:
14610        (JSC::JIT::emit_op_bitand):
14611        (JSC::JIT::emit_op_bitor):
14612        (JSC::JIT::emit_op_bitxor):
14613        (JSC::JIT::emit_op_add):
14614        (JSC::JIT::emit_op_sub):
14615        (JSC::JIT::emit_op_mul):
14616
146172009-06-23  Sam Weinig  <sam@webkit.org>
14618
14619        Reviewed by Geoffrey Garen.
14620
14621        Move off memory operands to aid in re-enabling result caching.
14622
14623        - No regression measured.
14624
14625        * jit/JIT.h:
14626        * jit/JITArithmetic.cpp:
14627        (JSC::JIT::emit_op_negate):
14628        (JSC::JIT::emit_op_jnless):
14629        (JSC::JIT::emit_op_jnlesseq):
14630        (JSC::JIT::emit_op_lshift):
14631        (JSC::JIT::emit_op_rshift):
14632        (JSC::JIT::emit_op_bitand):
14633        (JSC::JIT::emitBitAnd32Constant):
14634        (JSC::JIT::emitBitAnd32InPlace):
14635        (JSC::JIT::emit_op_bitor):
14636        (JSC::JIT::emitBitOr32Constant):
14637        (JSC::JIT::emitBitOr32InPlace):
14638        (JSC::JIT::emit_op_bitxor):
14639        (JSC::JIT::emitBitXor32Constant):
14640        (JSC::JIT::emitBitXor32InPlace):
14641        (JSC::JIT::emit_op_bitnot):
14642        (JSC::JIT::emit_op_post_inc):
14643        (JSC::JIT::emit_op_post_dec):
14644        (JSC::JIT::emit_op_pre_inc):
14645        (JSC::JIT::emitSlow_op_pre_inc):
14646        (JSC::JIT::emit_op_pre_dec):
14647        (JSC::JIT::emitSlow_op_pre_dec):
14648        (JSC::JIT::emit_op_add):
14649        (JSC::JIT::emitAdd32Constant):
14650        (JSC::JIT::emitAdd32InPlace):
14651        (JSC::JIT::emitSlow_op_add):
14652        (JSC::JIT::emitSlowAdd32Constant):
14653        (JSC::JIT::emit_op_sub):
14654        (JSC::JIT::emitSlow_op_sub):
14655        (JSC::JIT::emitSub32ConstantLeft):
14656        (JSC::JIT::emitSub32ConstantRight):
14657        (JSC::JIT::emitSub32InPlaceLeft):
14658        (JSC::JIT::emitSub32InPlaceRight):
14659        (JSC::JIT::emitBinaryDoubleOp):
14660        (JSC::JIT::emit_op_mul):
14661        (JSC::JIT::emitMul32InPlace):
14662        (JSC::JIT::emit_op_div):
14663        (JSC::JIT::emit_op_mod):
14664        * jit/JITCall.cpp:
14665        (JSC::JIT::compileOpCallVarargs):
14666        * jit/JITOpcodes.cpp:
14667        (JSC::JIT::emit_op_loop_if_less):
14668        (JSC::JIT::emit_op_loop_if_lesseq):
14669        (JSC::JIT::emit_op_instanceof):
14670        (JSC::JIT::emit_op_to_primitive):
14671        (JSC::JIT::emit_op_not):
14672        (JSC::JIT::emit_op_jneq_ptr):
14673        (JSC::JIT::emit_op_eq):
14674        (JSC::JIT::emit_op_neq):
14675        (JSC::JIT::emit_op_to_jsnumber):
14676        * jit/JITPropertyAccess.cpp:
14677        (JSC::JIT::emit_op_get_by_val):
14678        (JSC::JIT::emit_op_put_by_val):
14679
146802009-06-23  Geoffrey Garen  <ggaren@apple.com>
14681
14682        Reviewed by Sam Weinig.
14683
14684        Fixed some missing and/or misplaced labels in bytecode generation, so
14685        we don't have to work around them in JIT code generation.
14686
14687        * bytecompiler/BytecodeGenerator.cpp:
14688        (JSC::BytecodeGenerator::emitJumpSubroutine):
14689        * parser/Nodes.cpp:
14690        (JSC::TryNode::emitBytecode):
14691
146922009-06-22  Geoffrey Garen  <ggaren@apple.com>
14693
14694        Reviewed by Sam Weinig.
14695
14696        For member function calls, emit "this" directly into the "this" slot
14697        for the function call, instead of moving it there later. This reduces
14698        time spent in op_mov during certain calls, like "a.b.c()".
14699
14700        1%-2% speedup on v8, mostly richards and delta-blue.
14701
14702        * parser/Nodes.cpp:
14703        (JSC::FunctionCallDotNode::emitBytecode):
14704
147052009-06-22  Gavin Barraclough  <barraclough@apple.com>
14706
14707        Reviewed by Sam Weinig.
14708
14709        Remove 'arguments' field from Register union.  Having JSCell derived types in the union is
14710        dangerous since it opens the possibility for the field to be written as a raw pointer but
14711        then read as a JSValue.  This will lead to statle data being read for the tag, which may
14712        be dangerous.  Having removed Arguments* types form Register, all arguments objects must
14713        always explicitly be stored in the register file as JSValues.
14714
14715        * interpreter/CallFrame.h:
14716        (JSC::ExecState::optionalCalleeArguments):
14717        * interpreter/Interpreter.cpp:
14718        (JSC::Interpreter::unwindCallFrame):
14719        (JSC::Interpreter::privateExecute):
14720        (JSC::Interpreter::retrieveArguments):
14721        * interpreter/Register.h:
14722        (JSC::Register::):
14723        * jit/JITStubs.cpp:
14724        (JSC::JITStubs::cti_op_tear_off_arguments):
14725        * runtime/Arguments.h:
14726        (JSC::JSActivation::copyRegisters):
14727        * runtime/JSActivation.cpp:
14728        (JSC::JSActivation::argumentsGetter):
14729        * runtime/JSActivation.h:
14730
147312009-06-03  Sam Weinig  <sam@webkit.org>
14732
14733        Reviewed by Geoffrey Garen.
14734
14735        Add back known this value optimization by abstracting
14736        slow case if not JSCell jumps.
14737
14738        * jit/JIT.h:
14739        * jit/JITCall.cpp:
14740        (JSC::JIT::compileOpCallVarargs):
14741        (JSC::JIT::compileOpCallVarargsSlowCase):
14742        (JSC::JIT::compileOpCall):
14743        (JSC::JIT::compileOpCallSlowCase):
14744        * jit/JITInlineMethods.h:
14745        (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
14746        (JSC::JIT::linkSlowCaseIfNotJSCell):
14747        * jit/JITOpcodes.cpp:
14748        (JSC::JIT::emit_op_instanceof):
14749        (JSC::JIT::emitSlow_op_instanceof):
14750        * jit/JITPropertyAccess.cpp:
14751        (JSC::JIT::emit_op_get_by_val):
14752        (JSC::JIT::emitSlow_op_get_by_val):
14753        (JSC::JIT::emit_op_put_by_val):
14754        (JSC::JIT::emitSlow_op_put_by_val):
14755        (JSC::JIT::emit_op_get_by_id):
14756        (JSC::JIT::emitSlow_op_get_by_id):
14757        (JSC::JIT::emit_op_put_by_id):
14758        (JSC::JIT::emitSlow_op_put_by_id):
14759
147602009-06-01  Geoffrey Garen  <ggaren@apple.com>
14761
14762        Reviewed by Sam Weinig.
14763
14764        Fixed some of the regression in crypto-aes.js. (8.5% speedup in
14765        crypto-aes.js.)
14766
14767        SunSpider reports no change overall.
14768
14769        Division was producing double results, which took the slow path through
14770        array access code.
14771
14772        Strangely, all my attempts at versions of this patch that modified array
14773        access code to accept ints encoded as doubles along the fast or slow paths
14774        were regressions. So I did this instead.
14775
14776        * jit/JITArithmetic.cpp:
14777        (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try
14778        to turn the result into an int. Don't just do int division, though, because
14779        testing shows it to be slower than SSE double division, and the corner
14780        cases are pretty complicated / lengthy on top of that. Also, don't try
14781        to canonicalize division of known tiny numerators into ints, since that's a
14782        waste of time.
14783
147842009-05-26  Geoffrey Garen  <ggaren@apple.com>
14785
14786        Reviewed by Oliver Hunt.
14787
14788        Fixed a regression caused by my recent fix for NaN.
14789
14790        * jit/JITArithmetic.cpp:
14791        (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse
14792        order, like the ChangeLog said we would, bokay?
14793
147942009-05-26  Geoffrey Garen  <ggaren@apple.com>
14795
14796        Reviewed by Sam Weinig and Oliver Hunt.
14797
14798        Fixed two edge cases in %:
14799
14800        - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1,
14801        which will signal a hardware exception due to overflow.
14802
14803        - In the case of a zero remainder, be sure to store negative zero if the
14804        dividend was zero.
14805
14806        SunSpider reports no change.
14807
14808        * jit/JITArithmetic.cpp:
14809        (JSC::JIT::emit_op_mod):
14810        (JSC::JIT::emitSlow_op_mod):
14811
148122009-05-25  Geoffrey Garen  <ggaren@apple.com>
14813
14814        Reviewed by Maciej Stachowiak.
14815
14816        Fixed a regression when comparing to NaN.
14817
14818        * jit/JITArithmetic.cpp:
14819        (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the
14820        comparison in reverse order, and jump if the result is below or
14821        below-or-equal. This ensures that we do jump in the case of NaN.
14822
148232009-05-25  Geoffrey Garen  <ggaren@apple.com>
14824
14825        Reviewed by Oliver Hunt.
14826
14827        SunSpider says no change.
14828
14829        Fixed regressions in fast/js/var-declarations-shadowing.html and
14830        fast/js/equality.html, caused by recent == and != optimizations.
14831
14832        * jit/JITStubs.cpp:
14833        (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always
14834        numeric or string comparison. If the second operand is an object, you
14835        need to ToPrimitive it, and start all over again. Also, I wrote out each
14836        of the possible cases explicitly, to cut down on redundant branching.
14837
148382009-05-25  Sam Weinig  <sam@webkit.org>
14839
14840        Reviewed by Mark Rowe.
14841
14842        Fix bug in fast/js/constant-folding.html where we were not negating
14843        -0 properly.
14844
14845        * jit/JITArithmetic.cpp:
14846        (JSC::JIT::emit_op_negate):
14847
148482009-05-23  Geoffrey Garen  <ggaren@apple.com>
14849
14850        Reviewed by Oliver Hunt.
14851
14852        Refactored new slow case codegen for == and !=.
14853
14854        SunSpider reports no change, maybe a tiny speedup.
14855
14856        * jit/JITOpcodes.cpp:
14857        (JSC::JIT::emitSlow_op_eq):
14858        (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation,
14859        instead of *32, to make it portable to 64bit. Reorganized the string
14860        and generic cases to make their control flow a little clearer.
14861
148622009-05-23  Geoffrey Garen  <ggaren@apple.com>
14863
14864        Reviewed by Maciej Stachowiak.
14865
14866        Optimized == and != for our new value representation -- especially for strings.
14867
14868        14% speedup on date-format-tofte.
14869
14870        * jit/JITOpcodes.cpp:
14871        (JSC::JIT::emit_op_eq):
14872        (JSC::JIT::emitSlow_op_eq):
14873        (JSC::JIT::emit_op_neq):
14874        (JSC::JIT::emitSlow_op_neq):
14875        * jit/JITStubCall.h:
14876        (JSC::JITStubCall::JITStubCall):
14877        * jit/JITStubs.cpp:
14878        (JSC::JITStubs::cti_op_eq):
14879        (JSC::JITStubs::cti_op_eq_strings):
14880        (JSC::JITStubs::cti_op_call_eval):
14881        * jit/JITStubs.h:
14882        (JSC::):
14883        * runtime/JSValue.h:
14884
148852009-05-22  Sam Weinig  <sam@webkit.org>
14886
14887        Reviewed by Gavin Barraclough.
14888
14889        Fix non-SSE enabled builds.
14890
14891        * jit/JITArithmetic.cpp:
14892        (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub.
14893        (JSC::JIT::emitSlow_op_sub): Ditto.
14894
148952009-05-22  Geoffrey Garen  <ggaren@apple.com>
14896
14897        Reviewed by Sam Weinig.
14898
14899        Here's a thought: let's not take a jit stub call just to multiply by 1,
14900        bokay?
14901
14902        imul doesn't set the zero flag, so to test for a zero result, we need
14903        an explicit instruction. (Luckily, it does set the overflow flag, so
14904        we can still use that.)
14905
14906        * jit/JIT.h:
14907        * jit/JITArithmetic.cpp:
14908        (JSC::JIT::emit_op_mul):
14909        (JSC::JIT::emitSlow_op_mul):
14910        (JSC::JIT::emitMul32InPlace):
14911
149122009-05-22  Sam Weinig  <sam@webkit.org>
14913
14914        Reviewed by Geoffrey "Premature Commit" Garen.
14915
14916        Add back constant integer cases for op_add.
14917
14918        * jit/JIT.h:
14919        * jit/JITArithmetic.cpp:
14920        (JSC::JIT::emit_op_add):
14921        (JSC::JIT::emitAdd32Constant):
14922        (JSC::JIT::emitSlow_op_add):
14923        (JSC::JIT::emitSlowAdd32Constant):
14924        * jit/JITInlineMethods.h:
14925        (JSC::JIT::getConstantOperandImmediateDouble):
14926        (JSC::JIT::isOperandConstantImmediateDouble):
14927
149282009-05-22  Geoffrey Garen  <ggaren@apple.com>
14929
14930        Reviewed by Sam Weinig.
14931
14932        Added fast double cases for op_jnless and op_jnlesseq.
14933
14934        * assembler/AbstractMacroAssembler.h:
14935        (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by
14936        addSlowCase.
14937
14938        * assembler/X86Assembler.h:
14939        (JSC::X86Assembler::ucomisd_rm): New method for comparing register to
14940        memory.
14941
14942        * jit/JIT.h:
14943        * jit/JITArithmetic.cpp:
14944        (JSC::JIT::emit_op_jnless):
14945        (JSC::JIT::emitSlow_op_jnless):
14946        (JSC::JIT::emit_op_jnlesseq):
14947        (JSC::JIT::emitSlow_op_jnlesseq):
14948        (JSC::JIT::emit_op_add):
14949        (JSC::JIT::emit_op_sub):
14950        (JSC::JIT::emitBinaryDoubleOp):
14951        (JSC::JIT::emit_op_mul):
14952        (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump
14953        operations in addition to operations with explicit result registers.
14954
14955        * jit/JITInlineMethods.h:
14956        (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients
14957        can track multiple jumps to the same slow case condition together.
14958
149592009-05-21  Sam Weinig  <sam@webkit.org>
14960
14961        Reviewed by Gavin Barraclough.
14962
14963        Implement op_negate inline fast cases.
14964
14965        * assembler/MacroAssemblerX86Common.h:
14966        (JSC::MacroAssemblerX86Common::neg32):
14967        * assembler/X86Assembler.h:
14968        (JSC::X86Assembler::):
14969        (JSC::X86Assembler::negl_m):
14970        (JSC::X86Assembler::xorpd_rr):
14971        * jit/JIT.cpp:
14972        (JSC::JIT::privateCompileMainPass):
14973        (JSC::JIT::privateCompileSlowCases):
14974        * jit/JIT.h:
14975        * jit/JITArithmetic.cpp:
14976        (JSC::JIT::emit_op_negate):
14977        (JSC::JIT::emitSlow_op_negate):
14978
149792009-05-20  Sam Weinig  <sam@webkit.org>
14980
14981        Reviewed by Gavin Barraclough.
14982
14983        Update the patchOffsetGetByIdSlowCaseCall constant for the
14984        case that OPCODE_SAMPLING is enabled.
14985
14986        * jit/JIT.h:
14987
149882009-05-20  Geoffrey Garen  <ggaren@apple.com>
14989
14990        Reviewed by Sam Weinig.
14991
14992        Added support for inline subtraction of doubles.
14993
14994        * jit/JITArithmetic.cpp:
14995        (JSC::JIT::emit_op_sub):
14996        (JSC::JIT::emitSlow_op_sub):
14997        (JSC::JIT::emitSlowSub32InPlaceLeft):
14998        (JSC::JIT::emitBinaryDoubleOp):
14999
150002009-05-20  Sam Weinig  <sam@webkit.org>
15001
15002        Reviewed by Geoffrey Garen.
15003
15004        Added support for inline division.
15005
15006        * assembler/X86Assembler.h:
15007        (JSC::X86Assembler::):
15008        (JSC::X86Assembler::divsd_rr):
15009        (JSC::X86Assembler::divsd_mr):
15010        * bytecode/CodeBlock.cpp:
15011        (JSC::CodeBlock::dump):
15012        * bytecode/Opcode.h:
15013        * bytecompiler/BytecodeGenerator.cpp:
15014        (JSC::BytecodeGenerator::emitBinaryOp):
15015        * interpreter/Interpreter.cpp:
15016        (JSC::Interpreter::privateExecute):
15017        * jit/JIT.cpp:
15018        (JSC::JIT::privateCompileMainPass):
15019        (JSC::JIT::privateCompileSlowCases):
15020        * jit/JIT.h:
15021        * jit/JITArithmetic.cpp:
15022        (JSC::JIT::emitBinaryDoubleOp):
15023        (JSC::JIT::emit_op_div):
15024        (JSC::JIT::emitSlow_op_div):
15025
150262009-05-20  Geoffrey Garen  <ggaren@apple.com>
15027
15028        Reviewed by Sam Weinig.
15029
15030        Added support for inline addition of doubles.
15031
15032        * jit/JITArithmetic.cpp:
15033        (JSC::JIT::emit_op_add):
15034        (JSC::JIT::emitSlow_op_add):
15035        (JSC::JIT::emitSlowAdd32InPlace):
15036        (JSC::JIT::emitBinaryDoubleOp):
15037        (JSC::JIT::emit_op_mul):
15038        (JSC::JIT::emitSlow_op_mul):
15039
150402009-05-20  Geoffrey Garen  <ggaren@apple.com>
15041
15042        Reviewed by Sam Weinig.
15043
15044        Factored inline double operations into a helper function, so that we
15045        can reuse this code for other math operations.
15046
15047        * jit/JIT.h:
15048        * jit/JITArithmetic.cpp:
15049        (JSC::JIT::emitBinaryDoubleOp):
15050        (JSC::JIT::emit_op_mul):
15051        * jit/JITCall.cpp:
15052        (JSC::JIT::compileOpCallInitializeCallFrame):
15053
150542009-05-20  Geoffrey Garen  <ggaren@apple.com>
15055
15056        Reviewed by Sam Weinig.
15057
15058        Added support for inline multiplication of doubles.
15059
15060        * assembler/X86Assembler.h:
15061        (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an
15062        int32 into a double register.
15063
15064        * jit/JITArithmetic.cpp:
15065        (JSC::JIT::emit_op_mul):
15066        (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic.
15067
15068        * jit/JIT.h:
15069        * jit/JITInlineMethods.h:
15070        (JSC::JIT::addressFor): New function, useful for addressing a JSValue's
15071        full 64bits as a double.
15072
150732009-05-19  Sam Weinig  <sam@webkit.org>
15074
15075        Reviewed by Geoffrey Garen.
15076
15077        Implement and enable optimized calls.
15078
15079        * jit/JIT.cpp:
15080        (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards
15081        around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink).
15082        Update the trampolines to account for the new JSValue representation.
15083        (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue.
15084
15085        * jit/JITCall.cpp:
15086        (JSC::JIT::compileOpCall): Update to account for the new JSValue representation
15087        (JSC::JIT::compileOpCallSlowCase): Ditto.
15088
15089        * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard.
15090
15091        * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL.
15092
150932009-05-19  Sam Weinig  <sam@webkit.org>
15094
15095        Reviewed by Geoffrey Garen.
15096
15097        Implement and enable optimized property access.
15098
15099        * assembler/AbstractMacroAssembler.h: Fix comment.
15100        * jit/JIT.cpp:
15101        (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline
15102        and implement the string length trampoline.
15103        * jit/JIT.h: Add new constants for patch offsets.
15104        * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h.
15105        * jit/JITPropertyAccess.cpp:
15106        (JSC::JIT::emit_op_get_by_id):
15107        (JSC::JIT::emitSlow_op_get_by_id):
15108        (JSC::JIT::emit_op_put_by_id):
15109        (JSC::JIT::emitSlow_op_put_by_id):
15110        (JSC::JIT::compilePutDirectOffset):
15111        (JSC::JIT::compileGetDirectOffset):
15112        (JSC::JIT::privateCompilePutByIdTransition):
15113        (JSC::JIT::patchGetByIdSelf):
15114        (JSC::JIT::patchPutByIdReplace):
15115        (JSC::JIT::privateCompilePatchGetArrayLength):
15116        (JSC::JIT::privateCompileGetByIdProto):
15117        (JSC::JIT::privateCompileGetByIdSelfList):
15118        (JSC::JIT::privateCompileGetByIdProtoList):
15119        (JSC::JIT::privateCompileGetByIdChainList):
15120        (JSC::JIT::privateCompileGetByIdChain):
15121        * jit/JITStubCall.h:
15122        (JSC::JITStubCall::addArgument): Add version of addArgument that takes
15123        two registers for the tag and payload.
15124        * jit/JITStubs.cpp:
15125        (JSC::JITStubs::JITStubs): Remove array length trampoline pointer.
15126        (JSC::JITStubs::cti_op_get_by_id_self_fail):
15127        * jit/JITStubs.h:
15128        * runtime/JSObject.h:
15129        (JSC::JSObject::JSObject): Move m_inheritorID below the property storage
15130        to align it to a 16 byte boundary.
15131        * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
15132        * wtf/StdLibExtras.h: Move FIELD_OFFSET here.
15133
151342009-05-17  Sam Weinig  <sam@webkit.org>
15135
15136        Reviewed by Geoffrey Garen.
15137
15138        Remove unneeded ExecState parameter from the number JSValue constructors.
15139
15140        * runtime/JSValue.h:
15141        (JSC::jsNumber):
15142        (JSC::jsNaN):
15143        (JSC::JSValue::JSValue):
15144
151452009-05-15  Sam Weinig  <sam@webkit.org>
15146
15147        Reviewed by Geoffrey Garen.
15148
15149        Implemented fast path for op_put_by_val when putting to arrays.
15150
15151        * jit/JITPropertyAccess.cpp:
15152        (JSC::JIT::emit_op_put_by_val):
15153        (JSC::JIT::emitSlow_op_put_by_val):
15154
151552009-05-15  Geoffrey Garen  <ggaren@apple.com> (Mostly by Sam)
15156
15157        Reviewed by Sam Weinig.
15158
15159        Implemented fast path for op_get_by_val when accessing array.
15160
15161        * jit/JIT.cpp:
15162        * jit/JITPropertyAccess.cpp:
15163        (JSC::JIT::emit_op_get_by_val):
15164        (JSC::JIT::emitSlow_op_get_by_val):
15165
151662009-05-14  Geoffrey Garen  <ggaren@apple.com>
15167
15168        Reviewed by Sam Weinig.
15169
15170        Fixed a failure in fast/js/math-transforms.html caused by failing to
15171        preserve -0 in multiplication.
15172
15173        * assembler/X86Assembler.h:
15174        (JSC::X86Assembler::jz):
15175        * jit/JITArithmetic.cpp:
15176        (JSC::JIT::emit_op_mul):
15177        (JSC::JIT::emitSlow_op_mul):
15178        (JSC::JIT::emitMul32Constant):
15179        (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when
15180        doing multiplication. Use a slow case to get these right.
15181
151822009-05-14  Geoffrey Garen  <ggaren@apple.com>
15183
15184        Reviewed by Sam Weinig.
15185
15186        Fixed a bug in the varargs calling convention.
15187
15188        * jit/JITCall.cpp:
15189        (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1,
15190        since that's where ctiVirtualCall expects it to be.
15191
151922009-05-14  Geoffrey Garen  <ggaren@apple.com>
15193
15194        Reviewed by Sam Weinig.
15195
15196        Fixed a small bug in instanceof's looping code.
15197
15198        * jit/JITOpcodes.cpp:
15199        (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype,
15200        so only loop when *not* equal to NULL.
15201
152022009-05-14  Geoffrey Garen  <ggaren@apple.com>
15203
15204        Reviewed by Sam Weinig.
15205
15206        Fixed a small bug in instanceof's result writing code.
15207
15208        * jit/JITOpcodes.cpp:
15209        (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits
15210        in all cases.
15211
152122009-05-14  Sam Weinig  <sam@webkit.org>
15213
15214        Reviewed by Geoffrey Garen.
15215
15216        Removed an invalid assertion in cti_op_urshift which
15217        depended on a fast path for op_urshift which has
15218        never existed.
15219
15220        * jit/JITStubs.cpp:
15221        (JSC::JITStubs::cti_op_urshift):
15222
152232009-05-14  Geoffrey Garen  <ggaren@apple.com>
15224
15225        Reviewed by Sam Weinig.
15226
15227        Fixed loop_if_true, which had the same reversed test that jtrue had.
15228
15229        * jit/JITOpcodes.cpp:
15230        (JSC::JIT::emit_op_loop_if_true):
15231
152322009-05-14  Sam Weinig  <sam@webkit.org>
15233
15234        Reviewed by Geoffrey Garen.
15235
15236        In op_neq, we apparently want to check that one value
15237        does *not* equal another.  Go figure.
15238
15239        * jit/JITOpcodes.cpp:
15240        (JSC::JIT::emit_op_neq):
15241
152422009-05-14  Sam Weinig  <sam@webkit.org>
15243
15244        Reviewed by Geoffrey Garen.
15245
15246        The slow case of op_mod should call op_mod's jit stub,
15247        not op_mul.  That would be dumb.
15248
15249        * jit/JITArithmetic.cpp:
15250        (JSC::JIT::emitSlow_op_mod):
15251
152522009-05-14  Geoffrey Garen  <ggaren@apple.com>
15253
15254        Reviewed by Sam Weinig.
15255
15256        Fixed problems when using 'arguments' due to a half-initialized register.
15257
15258        * interpreter/CallFrame.h:
15259        (JSC::ExecState::setCalleeArguments):
15260        (JSC::ExecState::init): Require a full JSValue when setting up the
15261        'arguments' virtual register, since this register is accessible from JIT
15262        code and bytecode, and needs to be a true JSValue.
15263
15264        * interpreter/CallFrameClosure.h:
15265        (JSC::CallFrameClosure::resetCallFrame): ditto
15266
15267        * interpreter/Interpreter.cpp:
15268        (JSC::Interpreter::privateExecute): ditto
15269
15270        * interpreter/Register.h: Removed the constructor that allowed assignment
15271        of a JSArguments* to a register. That is not safe. See above.
15272
15273        * jit/JITStubs.cpp:
15274        (JSC::JITStubs::cti_op_create_arguments):
15275        (JSC::JITStubs::cti_op_create_arguments_no_params): ditto
15276
152772009-05-14  Sam Weinig  <sam@webkit.org>
15278
15279        Reviewed by Geoffrey Garen.
15280
15281        We really want to go to the slow case in op_jfalse and
15282        op_jtrue if the value is *not* boolean.
15283
15284        * jit/JITOpcodes.cpp:
15285        (JSC::JIT::emit_op_jfalse):
15286        (JSC::JIT::emit_op_jtrue):
15287
152882009-05-14  Sam Weinig  <sam@webkit.org>
15289
15290        Reviewed by Geoffrey Garen.
15291
15292        Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq
15293        if the first operand is a constant.
15294
15295        * jit/JITOpcodes.cpp:
15296        (JSC::JIT::emit_op_loop_if_less):
15297        (JSC::JIT::emit_op_loop_if_lesseq):
15298
152992009-05-14  Sam Weinig  <sam@webkit.org>
15300
15301        Reviewed by Geoffrey Garen.
15302
15303        Added missing return in op_jnless and op_jnlesseq.
15304
15305        * jit/JITArithmetic.cpp:
15306        (JSC::JIT::emit_op_jnless):
15307        (JSC::JIT::emit_op_jnlesseq):
15308
153092009-05-14  Sam Weinig  <sam@webkit.org>
15310
15311        Reviewed by Geoffrey Garen.
15312
15313        Load constants into the the register file as a temporary measure to
15314        aid bring up.  This allows us to use to treat constants like any
15315        other virtual register.
15316
15317        * jit/JITOpcodes.cpp:
15318        (JSC::JIT::emit_op_enter):
15319        (JSC::JIT::emit_op_enter_with_activation):
15320
153212009-05-14  Geoffrey Garen  <ggaren@apple.com>
15322
15323        Reviewed by Sam Weinig.
15324
15325        Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin.
15326
15327        * assembler/MacroAssemblerX86Common.h:
15328        (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly
15329        faster than set32, and the new value representation usually doesn't
15330        need set32.
15331
15332        * jit/JIT.cpp:
15333        * jit/JIT.h:
15334        * jit/JITInlineMethods.h:
15335        (JSC::JIT::emitLoadTag):
15336        (JSC::JIT::emitLoadPayload): Added helper functions for dealing with
15337        constants. Eventually, we should write special cases for all constants,
15338        but these are helpful in the short term.
15339
15340        * jit/JITOpcodes.cpp:
15341        (JSC::JIT::compileOpStrictEq):
15342        (JSC::JIT::emitSlow_op_stricteq):
15343        (JSC::JIT::emitSlow_op_nstricteq): teh opcodez.
15344
15345        * runtime/JSValue.h:
15346        (JSC::JSValue::):
15347        (JSC::JSValue::isDouble): Added a LowestTag for clarity.
15348
153492009-05-13  Geoffrey Garen  <ggaren@apple.com>
15350
15351        Reviewed by Sam Weinig.
15352
15353        Fixed some bugs in host function calls.
15354
15355        testapi now passes!
15356
15357        * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax,
15358        which is how JSValues are now returned. Also changed the code that
15359        passes thisValue to pass the full 64bits of the value. Also added
15360        an #error compiler directive to other platform builds, since the JSValue
15361        return signature probably won't return in edx:eax on those platforms,
15362        and we'll have to investigate a solution.
15363
153642009-05-13  Geoffrey Garen  <ggaren@apple.com>
15365
15366        Reviewed by Sam Weinig.
15367
15368        Removed parameters from functions that are intended never to use their
15369        parameters.
15370
15371        * jit/JITPropertyAccess.cpp:
15372        (JSC::JIT::emitSlow_op_get_by_val):
15373        (JSC::JIT::emitSlow_op_put_by_val):
15374
153752009-05-13  Geoffrey Garen  <ggaren@apple.com>
15376
15377        Reviewed by Sam Weinig.
15378
15379        Ported op_instance_of from TOT. It's basically the same, but some register
15380        stuff changed to memory stuff.
15381
15382        * jit/JITInlineMethods.h:
15383        (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
15384        (JSC::JIT::emitStore): Changed to use helper functions.
15385
15386        * jit/JITOpcodes.cpp:
15387        (JSC::JIT::emit_op_instanceof):
15388        (JSC::JIT::emitSlow_op_instanceof): Ported from TOT.
15389
153902009-05-13  Geoffrey Garen  <ggaren@apple.com>
15391
15392        Reviewed by Gavin Barraclough.
15393
15394        Added a comment to explain an exception-handling subtelty that we found
15395        hard to remember when reviewing my last patch.
15396
15397        * jit/JITOpcodes.cpp:
15398        (JSC::JIT::emit_op_catch):
15399
154002009-05-13  Geoffrey Garen  <ggaren@apple.com>
15401
15402        Reviewed by Sam Weinig.
15403
15404        Implemented try/catch.
15405
15406        * jit/JITOpcodes.cpp:
15407        (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction.
15408        (JSC::JIT::emit_op_catch): Filled out.
15409
154102009-05-13  Sam Weinig  <sam@webkit.org>
15411
15412        Reviewed by Geoffrey Garen.
15413
15414        Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null
15415
15416        * jit/JITOpcodes.cpp:
15417        (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its
15418        fast brother.
15419
15420        (JSC::JIT::emit_op_loop_if_true): Similar to the old version
15421        in that it tries to do the integer case first and reduce the
15422        number of jumps you might need to take.
15423        (JSC::JIT::emitSlow_op_loop_if_true):
15424
15425        (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only
15426        the inverse and without a timeout check.
15427        (JSC::JIT::emitSlow_op_jfalse):
15428
15429        (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except
15430        without the timeout check.
15431        (JSC::JIT::emitSlow_op_jtrue):
15432
15433        (JSC::JIT::emit_op_jeq_null): Very similar to the implementation
15434        of op_eq, except it takes jumps instead of copying the condition
15435        to a dst.
15436        (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq.
15437
154382009-05-13  Geoffrey Garen  <ggaren@apple.com>
15439
15440        Reviewed by Sam Weinig.
15441
15442        Implemented op_call_varargs.
15443
15444        * jit/JITCall.cpp:
15445        (JSC::JIT::compileOpCallVarargsSetupArgs):
15446        (JSC::JIT::compileOpCallVarargs):
15447        (JSC::JIT::emit_op_call):
15448        (JSC::JIT::emit_op_call_eval):
15449        (JSC::JIT::emit_op_load_varargs):
15450        (JSC::JIT::emit_op_call_varargs):
15451        (JSC::JIT::emit_op_construct):
15452        * jit/JITOpcodes.cpp:
15453        (JSC::JIT::emit_op_jneq_ptr):
15454
154552009-05-13  Geoffrey Garen  <ggaren@apple.com>
15456
15457        Reviewed by Sam Weinig.
15458
15459        Implemented op_call_eval.
15460
15461        * jit/JITCall.cpp:
15462        (JSC::JIT::compileOpCallVarargsSetupArgs):
15463        (JSC::JIT::compileOpCall):
15464        * jit/JITStubCall.h:
15465        (JSC::CallEvalJITStub::CallEvalJITStub):
15466
154672009-05-13  Sam Weinig  <sam@webkit.org>
15468
15469        Reviewed by Gavin Barraclough.
15470
15471        Implemented op_not. (Gavin did most of the work!)
15472
15473        * jit/JITOpcodes.cpp:
15474        (JSC::JIT::emit_op_not):
15475        (JSC::JIT::emitSlow_op_not):
15476
154772009-05-13  Geoffrey Garen  <ggaren@apple.com>
15478
15479        Reviewed by Sam Weinig.
15480
15481        Implemented op_global_resolve.
15482
15483        * jit/JITOpcodes.cpp:
15484        (JSC::JIT::emit_op_loop_if_less):
15485        (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed
15486        early returns.
15487
15488        (JSC::JIT::emit_op_resolve_global):
15489        * jit/JITStubs.cpp:
15490        (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code,
15491        but we need two reads and a TimesEight step in order to account for the
15492        64bit value size.
15493
15494        * jit/JITStubs.h:
15495        (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*,
15496        to avoid having to pass an irrelevant tag pointer to the stub.
15497
154982009-05-13  Sam Weinig  <sam@webkit.org>
15499
15500        Reviewed by Geoffrey Garen.
15501
15502        Implemented op_to_jsnumber.
15503
15504        * jit/JITOpcodes.cpp:
15505        (JSC::JIT::emit_op_to_jsnumber):
15506        (JSC::JIT::emitSlow_op_to_jsnumber):
15507
155082009-05-13  Sam Weinig  <sam@webkit.org>
15509
15510        Reviewed by Geoffrey Garen.
15511
15512        Implemented op_convert_this.
15513
15514        * jit/JITOpcodes.cpp:
15515        (JSC::JIT::emit_op_convert_this):
15516        (JSC::JIT::emitSlow_op_convert_this):
15517
155182009-05-13  Geoffrey Garen  <ggaren@apple.com>
15519
15520        Reviewed by Sam Weinig.
15521
15522        Got basic JS function and constructor calls working.
15523
15524        * jit/JIT.cpp:
15525        (JSC::JIT::privateCompileCTIMachineTrampolines):
15526        * jit/JIT.h:
15527        * jit/JITCall.cpp:
15528        (JSC::JIT::compileOpCallSetupArgs):
15529        (JSC::JIT::compileOpCallVarargsSetupArgs):
15530        (JSC::JIT::compileOpConstructSetupArgs):
15531        (JSC::JIT::emit_op_ret):
15532        (JSC::JIT::emit_op_construct_verify):
15533        (JSC::JIT::emitSlow_op_construct_verify):
15534        (JSC::JIT::emitSlow_op_call):
15535        (JSC::JIT::emitSlow_op_call_eval):
15536        (JSC::JIT::emitSlow_op_call_varargs):
15537        (JSC::JIT::emitSlow_op_construct):
15538        (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out.
15539
15540        * jit/JITInlineMethods.h:
15541        (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
15542        (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions,
15543        since I wanted to avoid the complexity of revamping the API here while
15544        trying to bring it up. Eventually, we should re-remove all of these functions.
15545
15546        (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will
15547        not silence me, Sam Weinig! The world will know that you are a crufty,
15548        crufty, crufty programmer!!!
15549
15550        * jit/JITOpcodes.cpp:
15551        * jit/JITStubs.cpp:
15552        (JSC::):
15553        * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since
15554        and off-by-one error was causing stack misalignment.
15555
155562009-05-13  Sam Weinig  <sam@webkit.org>
15557
15558        Reviewed by Geoffrey Garen.
15559
15560        Implement op_eq_null and op_neq_null.
15561
15562        * assembler/MacroAssemblerX86Common.h:
15563        (JSC::MacroAssemblerX86Common::set8):
15564        (JSC::MacroAssemblerX86Common::setTest8):
15565        * jit/JITOpcodes.cpp:
15566        (JSC::JIT::emit_op_stricteq):
15567        (JSC::JIT::emitSlow_op_stricteq):
15568        (JSC::JIT::emit_op_nstricteq):
15569        (JSC::JIT::emitSlow_op_nstricteq):
15570        (JSC::JIT::emit_op_eq_null):
15571        (JSC::JIT::emit_op_neq_null):
15572        * jsc.cpp:
15573
155742009-05-12  Sam Weinig  <sam@webkit.org>
15575
15576        Reviewed by Geoffrey Garen.
15577
15578        Implement op_new_error.
15579
15580        * jit/JITOpcodes.cpp:
15581        (JSC::JIT::emit_op_new_error):
15582        * jit/JITStubCall.h:
15583        (JSC::JITStubCall::addArgument): Add a version of addArgument
15584        that takes a constant JSValue.
15585
155862009-05-12  Sam Weinig  <sam@webkit.org>
15587
15588        Reviewed by Geoffrey Garen.
15589
15590        Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister.
15591
15592        * jit/JIT.cpp:
15593        * jit/JIT.h:
15594
155952009-05-12  Sam Weinig  <sam@webkit.org>
15596
15597        Reviewed by Geoffrey Garen.
15598
15599        Implement op_to_primitive and op_next_pname.
15600
15601        * jit/JITOpcodes.cpp:
15602        (JSC::JIT::emitSlow_op_construct_verify):
15603        (JSC::JIT::emit_op_to_primitive):
15604        (JSC::JIT::emitSlow_op_to_primitive):
15605        (JSC::JIT::emitSlow_op_loop_if_true):
15606        (JSC::JIT::emit_op_jtrue):
15607        (JSC::JIT::emit_op_next_pname):
15608
156092009-05-12  Sam Weinig  <sam@webkit.org>
15610
15611        Reviewed by Geoffrey Garen.
15612
15613        Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and
15614        op_unexpected_load.
15615
15616        * jit/JIT.h:
15617        * jit/JITInlineMethods.h:
15618        (JSC::JIT::tagFor):
15619        (JSC::JIT::payloadFor):
15620        (JSC::JIT::emitLoad):
15621        (JSC::JIT::emitStore):
15622        (JSC::JIT::emitLoadReturnValue):
15623        * jit/JITOpcodes.cpp:
15624        (JSC::JIT::emit_op_get_global_var):
15625        (JSC::JIT::emit_op_put_global_var):
15626        (JSC::JIT::emit_op_get_scoped_var):
15627        (JSC::JIT::emit_op_put_scoped_var):
15628        (JSC::JIT::emit_op_unexpected_load):
15629
156302009-05-12  Geoffrey Garen  <ggaren@apple.com>
15631
15632        Reviewed by Sam Weinig.
15633
15634        Added overflow handling to op_sub.
15635
15636        * jit/JIT.h:
15637        * jit/JITArithmetic.cpp:
15638        (JSC::JIT::emitSlow_op_sub):
15639        (JSC::JIT::emitSlowSub32InPlaceLeft):
15640
156412009-05-12  Sam Weinig  <sam@webkit.org>
15642
15643        Reviewed by Geoffrey Garen.
15644
15645        Remove a function call by folding op_get_by_id and op_put_by_id into
15646        their respective compile functions.
15647
15648        * jit/JIT.h:
15649        * jit/JITPropertyAccess.cpp:
15650        (JSC::JIT::emit_op_get_by_id):
15651        (JSC::JIT::emitSlow_op_get_by_id):
15652        (JSC::JIT::emit_op_put_by_id):
15653        (JSC::JIT::emitSlow_op_put_by_id):
15654
156552009-05-12  Sam Weinig  <sam@webkit.org>
15656
15657        Reviewed by Geoffrey Garen.
15658
15659        Make JITStubCall work in 64bit by making the stack index
15660        step dependent on the size of void*.
15661
15662        * jit/JITStubCall.h:
15663        (JSC::JITStubCall::JITStubCall):
15664        (JSC::JITStubCall::addArgument):
15665
156662009-05-12  Sam Weinig  <sam@webkit.org>
15667
15668        Reviewed by Geoffrey Garen.
15669
15670        Implement simple version of property access opcodes
15671        which just call a stub functions.
15672
15673        * jit/JITOpcodes.cpp:
15674        * jit/JITPropertyAccess.cpp:
15675        (JSC::JIT::emitSlow_op_put_by_id):
15676        (JSC::JIT::emitSlow_op_get_by_id):
15677        (JSC::JIT::emit_op_get_by_val):
15678        (JSC::JIT::emitSlow_op_get_by_val):
15679        (JSC::JIT::emit_op_put_by_val):
15680        (JSC::JIT::emitSlow_op_put_by_val):
15681        (JSC::JIT::emit_op_put_by_index):
15682        (JSC::JIT::emit_op_put_getter):
15683        (JSC::JIT::emit_op_put_setter):
15684        (JSC::JIT::emit_op_del_by_id):
15685        (JSC::JIT::compileGetByIdHotPath):
15686        (JSC::JIT::compilePutByIdHotPath):
15687        * jit/JITStubCall.h:
15688        (JSC::JITStubCall::addArgument):
15689        * jsc.cpp:
15690
156912009-05-12  Geoffrey Garen  <ggaren@apple.com>
15692
15693        Reviewed by Sam Weinig.
15694
15695        Added work-around for XCode debugging echo problem.
15696
15697        * jsc.cpp:
15698        (runInteractive):
15699
157002009-05-12  Geoffrey Garen  <ggaren@apple.com>
15701
15702        Reviewed by Sam Weinig.
15703
15704        Added overflow handling to op_add.
15705
15706        * jit/JIT.h:
15707        * jit/JITArithmetic.cpp:
15708        (JSC::JIT::emitSlow_op_add):
15709        (JSC::JIT::emitSlowAdd32InPlace):
15710
157112009-05-12  Sam Weinig  <sam@webkit.org>
15712
15713        Reviewed by Geoffrey Garen.
15714
15715        Add slow cases for op_jnless or emit_op_jnlesseq.
15716
15717        * jit/JITArithmetic.cpp:
15718        (JSC::JIT::emitSlow_op_jnless):
15719        (JSC::JIT::emitSlow_op_jnlesseq):
15720
157212009-05-12  Sam Weinig  <sam@webkit.org>
15722
15723        Reviewed by Geoffrey Garen.
15724
15725        Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq.
15726        No slow cases for op_jnless or emit_op_jnlesseq yet.
15727
15728        * jit/JITArithmetic.cpp:
15729        (JSC::JIT::emit_op_jnless):
15730        (JSC::JIT::emitSlow_op_jnless):
15731        (JSC::JIT::emit_op_jnlesseq):
15732        (JSC::JIT::emitSlow_op_jnlesseq):
15733        * jit/JITOpcodes.cpp:
15734        (JSC::JIT::emit_op_loop_if_less):
15735        (JSC::JIT::emitSlow_op_loop_if_less):
15736        (JSC::JIT::emit_op_loop_if_lesseq):
15737        (JSC::JIT::emitSlow_op_loop_if_lesseq):
15738
157392009-05-12  Sam Weinig  <sam@webkit.org>
15740
15741        Reviewed by Geoffrey Garen.
15742
15743        Turn the RECORD_JUMP_TARGET macro into an inline function.
15744
15745        * jit/JIT.h:
15746        * jit/JITInlineMethods.h:
15747        (JSC::JIT::recordJumpTarget):
15748        * jit/JITOpcodes.cpp:
15749        (JSC::JIT::emit_op_jmp):
15750        (JSC::JIT::emit_op_jsr):
15751        (JSC::JIT::emit_op_jmp_scopes):
15752
157532009-05-12  Sam Weinig  <sam@webkit.org>
15754
15755        Add MacroAssemblerX86Common::set8 to fix the build.
15756
15757        * assembler/MacroAssemblerX86Common.h:
15758        (JSC::MacroAssemblerX86Common::set8):
15759
157602009-05-12  Geoffrey Garen  <ggaren@apple.com>
15761
15762        Reviewed by Sam Weinig.
15763
15764        Added overflow recovery for pre_inc and pre_dec.
15765
15766        Turned some short-circuit code into early returns, as is the WebKit style.
15767
15768        * jit/JITArithmetic.cpp:
15769        (JSC::JIT::emit_op_post_inc):
15770        (JSC::JIT::emitSlow_op_post_inc):
15771        (JSC::JIT::emit_op_post_dec):
15772        (JSC::JIT::emitSlow_op_post_dec):
15773        (JSC::JIT::emitSlow_op_pre_inc):
15774        (JSC::JIT::emitSlow_op_pre_dec):
15775
157762009-05-12  Sam Weinig  <sam@webkit.org>
15777
15778        Reviewed by Geoffrey Garen.
15779
15780        Implement op_jmp, op_loop, op_eq and op_neq.
15781
15782        * jit/JITOpcodes.cpp:
15783        (JSC::JIT::emit_op_jmp):
15784        (JSC::JIT::emit_op_loop):
15785        (JSC::JIT::emit_op_eq):
15786        (JSC::JIT::emitSlow_op_eq):
15787        (JSC::JIT::emit_op_neq):
15788        (JSC::JIT::emitSlow_op_neq):
15789        (JSC::JIT::emit_op_enter):
15790        (JSC::JIT::emit_op_enter_with_activation):
15791
157922009-05-12  Sam Weinig  <sam@webkit.org>
15793
15794        Reviewed by Geoffrey Garen.
15795
15796        Implement the slow cases for arithmetic opcodes.
15797
15798        * jit/JITArithmetic.cpp:
15799        (JSC::JIT::emitSlow_op_lshift):
15800        (JSC::JIT::emitSlow_op_rshift):
15801        (JSC::JIT::emitSlow_op_bitand):
15802        (JSC::JIT::emitSlow_op_bitor):
15803        (JSC::JIT::emitSlow_op_bitxor):
15804        (JSC::JIT::emitSlow_op_bitnot):
15805        (JSC::JIT::emitSlow_op_sub):
15806        (JSC::JIT::emitSlow_op_mul):
15807        (JSC::JIT::emitSlow_op_mod):
15808        (JSC::JIT::emit_op_mod):
15809
158102009-05-12  Sam Weinig  <sam@webkit.org>
15811
15812        Reviewed by Geoffrey Garen.
15813
15814        Implement op_bitnot.
15815
15816        * assembler/MacroAssemblerX86Common.h:
15817        (JSC::MacroAssemblerX86Common::not32):
15818        * assembler/X86Assembler.h:
15819        (JSC::X86Assembler::notl_m):
15820        * jit/JITArithmetic.cpp:
15821        (JSC::JIT::emit_op_bitnot):
15822
158232009-05-12  Sam Weinig  <sam@webkit.org>
15824
15825        Reviewed by Geoffrey Garen.
15826
15827        Add arithmetic opcode implementations from the old nitro-extreme branch.
15828
15829        * jit/JIT.h:
15830        * jit/JITArithmetic.cpp:
15831        (JSC::JIT::emit_op_jnless):
15832        (JSC::JIT::emitSlow_op_jnless):
15833        (JSC::JIT::emit_op_jnlesseq):
15834        (JSC::JIT::emitSlow_op_jnlesseq):
15835        (JSC::JIT::emit_op_lshift):
15836        (JSC::JIT::emitSlow_op_lshift):
15837        (JSC::JIT::emit_op_rshift):
15838        (JSC::JIT::emitSlow_op_rshift):
15839        (JSC::JIT::emit_op_bitand):
15840        (JSC::JIT::emitBitAnd32Constant):
15841        (JSC::JIT::emitBitAnd32InPlace):
15842        (JSC::JIT::emit_op_bitor):
15843        (JSC::JIT::emitSlow_op_bitor):
15844        (JSC::JIT::emitBitOr32Constant):
15845        (JSC::JIT::emitBitOr32InPlace):
15846        (JSC::JIT::emit_op_bitxor):
15847        (JSC::JIT::emitSlow_op_bitxor):
15848        (JSC::JIT::emitBitXor32Constant):
15849        (JSC::JIT::emitBitXor32InPlace):
15850        (JSC::JIT::emit_op_bitnot):
15851        (JSC::JIT::emitSlow_op_bitnot):
15852        (JSC::JIT::emit_op_post_inc):
15853        (JSC::JIT::emitSlow_op_post_inc):
15854        (JSC::JIT::emit_op_post_dec):
15855        (JSC::JIT::emitSlow_op_post_dec):
15856        (JSC::JIT::emit_op_pre_inc):
15857        (JSC::JIT::emitSlow_op_pre_inc):
15858        (JSC::JIT::emit_op_pre_dec):
15859        (JSC::JIT::emitSlow_op_pre_dec):
15860        (JSC::JIT::emit_op_add):
15861        (JSC::JIT::emitAdd32Constant):
15862        (JSC::JIT::emitAdd32InPlace):
15863        (JSC::JIT::emitSlow_op_add):
15864        (JSC::JIT::emit_op_sub):
15865        (JSC::JIT::emitSlow_op_sub):
15866        (JSC::JIT::emitSub32ConstantLeft):
15867        (JSC::JIT::emitSub32ConstantRight):
15868        (JSC::JIT::emitSub32InPlaceLeft):
15869        (JSC::JIT::emitSub32InPlaceRight):
15870        (JSC::JIT::emit_op_mul):
15871        (JSC::JIT::emitSlow_op_mul):
15872        (JSC::JIT::emitMul32Constant):
15873        (JSC::JIT::emitMul32InPlace):
15874        (JSC::JIT::emit_op_mod):
15875        (JSC::JIT::emitSlow_op_mod):
15876        * jit/JITOpcodes.cpp:
15877
158782009-05-12  Geoffrey Garen  <ggaren@apple.com>
15879
15880        Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit
15881        value representations.
15882
15883        Added JSAPIValueWrapper to the repository.
15884
15885        * jit/JIT.h:
15886        * jit/JITArithmetic.cpp:
15887        * runtime/JSAPIValueWrapper.cpp: Added.
15888        (JSC::JSAPIValueWrapper::toPrimitive):
15889        (JSC::JSAPIValueWrapper::getPrimitiveNumber):
15890        (JSC::JSAPIValueWrapper::toBoolean):
15891        (JSC::JSAPIValueWrapper::toNumber):
15892        (JSC::JSAPIValueWrapper::toString):
15893        (JSC::JSAPIValueWrapper::toObject):
15894        * runtime/JSAPIValueWrapper.h: Added.
15895        (JSC::JSAPIValueWrapper::value):
15896        (JSC::JSAPIValueWrapper::isAPIValueWrapper):
15897        (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
15898        (JSC::jsAPIValueWrapper):
15899        * wtf/Platform.h:
15900
159012009-05-12  Geoffrey Garen  <ggaren@apple.com>
15902
15903        Turned on the JIT and got it building and running the most trivial of
15904        programs.
15905
15906        All configurable optimizations are turned off, and a few opcodes are ad
15907        hoc #if'd out.
15908
15909        So far, I've only merged op_mov and op_end, but some stub-reliant
15910        opcodes work as-is from TOT.
15911
15912        * bytecode/CodeBlock.cpp:
15913        (JSC::CodeBlock::~CodeBlock):
15914        * bytecode/CodeBlock.h:
15915        * jit/JIT.cpp:
15916        (JSC::JIT::compileOpStrictEq):
15917        * jit/JIT.h:
15918        * jit/JITArithmetic.cpp:
15919        (JSC::JIT::emit_op_lshift):
15920        (JSC::JIT::emitSlow_op_lshift):
15921        (JSC::JIT::emit_op_rshift):
15922        (JSC::JIT::emitSlow_op_rshift):
15923        (JSC::JIT::emit_op_jnless):
15924        (JSC::JIT::emitSlow_op_jnless):
15925        (JSC::JIT::emit_op_jnlesseq):
15926        (JSC::JIT::emitSlow_op_jnlesseq):
15927        (JSC::JIT::emit_op_bitand):
15928        (JSC::JIT::emitSlow_op_bitand):
15929        (JSC::JIT::emit_op_post_inc):
15930        (JSC::JIT::emitSlow_op_post_inc):
15931        (JSC::JIT::emit_op_post_dec):
15932        (JSC::JIT::emitSlow_op_post_dec):
15933        (JSC::JIT::emit_op_pre_inc):
15934        (JSC::JIT::emitSlow_op_pre_inc):
15935        (JSC::JIT::emit_op_pre_dec):
15936        (JSC::JIT::emitSlow_op_pre_dec):
15937        (JSC::JIT::emit_op_mod):
15938        (JSC::JIT::emitSlow_op_mod):
15939        (JSC::JIT::emit_op_add):
15940        (JSC::JIT::emit_op_mul):
15941        (JSC::JIT::emit_op_sub):
15942        (JSC::JIT::compileBinaryArithOpSlowCase):
15943        (JSC::JIT::emitSlow_op_add):
15944        (JSC::JIT::emitSlow_op_mul):
15945        * jit/JITCall.cpp:
15946        (JSC::JIT::compileOpCallInitializeCallFrame):
15947        (JSC::JIT::compileOpConstructSetupArgs):
15948        (JSC::JIT::compileOpCallVarargs):
15949        (JSC::JIT::compileOpCall):
15950        (JSC::JIT::compileOpCallSlowCase):
15951        * jit/JITInlineMethods.h:
15952        (JSC::JIT::getConstantOperandImmediateInt):
15953        (JSC::JIT::isOperandConstantImmediateInt):
15954        (JSC::JIT::emitInitRegister):
15955        (JSC::JIT::addSlowCase):
15956        (JSC::JIT::addJump):
15957        (JSC::JIT::emitJumpSlowToHot):
15958        (JSC::JIT::tagFor):
15959        (JSC::JIT::payloadFor):
15960        (JSC::JIT::emitLoad):
15961        (JSC::JIT::emitLoadReturnValue):
15962        (JSC::JIT::emitStore):
15963        (JSC::JIT::emitStoreReturnValue):
15964        * jit/JITOpcodes.cpp:
15965        (JSC::JIT::emit_op_mov):
15966        (JSC::JIT::emit_op_end):
15967        (JSC::JIT::emit_op_jmp):
15968        (JSC::JIT::emit_op_loop):
15969        (JSC::JIT::emit_op_loop_if_less):
15970        (JSC::JIT::emit_op_loop_if_lesseq):
15971        (JSC::JIT::emit_op_instanceof):
15972        (JSC::JIT::emit_op_get_global_var):
15973        (JSC::JIT::emit_op_put_global_var):
15974        (JSC::JIT::emit_op_get_scoped_var):
15975        (JSC::JIT::emit_op_put_scoped_var):
15976        (JSC::JIT::emit_op_tear_off_activation):
15977        (JSC::JIT::emit_op_ret):
15978        (JSC::JIT::emit_op_construct_verify):
15979        (JSC::JIT::emit_op_to_primitive):
15980        (JSC::JIT::emit_op_loop_if_true):
15981        (JSC::JIT::emit_op_resolve_global):
15982        (JSC::JIT::emit_op_not):
15983        (JSC::JIT::emit_op_jfalse):
15984        (JSC::JIT::emit_op_jeq_null):
15985        (JSC::JIT::emit_op_jneq_null):
15986        (JSC::JIT::emit_op_jneq_ptr):
15987        (JSC::JIT::emit_op_unexpected_load):
15988        (JSC::JIT::emit_op_eq):
15989        (JSC::JIT::emit_op_bitnot):
15990        (JSC::JIT::emit_op_jtrue):
15991        (JSC::JIT::emit_op_neq):
15992        (JSC::JIT::emit_op_bitxor):
15993        (JSC::JIT::emit_op_bitor):
15994        (JSC::JIT::emit_op_throw):
15995        (JSC::JIT::emit_op_next_pname):
15996        (JSC::JIT::emit_op_push_scope):
15997        (JSC::JIT::emit_op_to_jsnumber):
15998        (JSC::JIT::emit_op_push_new_scope):
15999        (JSC::JIT::emit_op_catch):
16000        (JSC::JIT::emit_op_switch_imm):
16001        (JSC::JIT::emit_op_switch_char):
16002        (JSC::JIT::emit_op_switch_string):
16003        (JSC::JIT::emit_op_new_error):
16004        (JSC::JIT::emit_op_eq_null):
16005        (JSC::JIT::emit_op_neq_null):
16006        (JSC::JIT::emit_op_convert_this):
16007        (JSC::JIT::emit_op_profile_will_call):
16008        (JSC::JIT::emit_op_profile_did_call):
16009        (JSC::JIT::emitSlow_op_construct_verify):
16010        (JSC::JIT::emitSlow_op_get_by_val):
16011        (JSC::JIT::emitSlow_op_loop_if_less):
16012        (JSC::JIT::emitSlow_op_loop_if_lesseq):
16013        (JSC::JIT::emitSlow_op_put_by_val):
16014        (JSC::JIT::emitSlow_op_not):
16015        (JSC::JIT::emitSlow_op_instanceof):
16016        * jit/JITPropertyAccess.cpp:
16017        (JSC::JIT::emit_op_get_by_val):
16018        (JSC::JIT::emit_op_put_by_val):
16019        (JSC::JIT::emit_op_put_by_index):
16020        (JSC::JIT::emit_op_put_getter):
16021        (JSC::JIT::emit_op_put_setter):
16022        (JSC::JIT::emit_op_del_by_id):
16023        (JSC::JIT::compileGetByIdHotPath):
16024        (JSC::JIT::compilePutByIdHotPath):
16025        * jit/JITStubCall.h:
16026        (JSC::JITStubCall::JITStubCall):
16027        (JSC::JITStubCall::addArgument):
16028        (JSC::JITStubCall::call):
16029        (JSC::JITStubCall::):
16030        (JSC::CallEvalJITStub::CallEvalJITStub):
16031        * jit/JITStubs.cpp:
16032        (JSC::):
16033        (JSC::JITStubs::cti_op_add):
16034        (JSC::JITStubs::cti_op_pre_inc):
16035        (JSC::JITStubs::cti_op_mul):
16036        (JSC::JITStubs::cti_op_get_by_val):
16037        (JSC::JITStubs::cti_op_get_by_val_string):
16038        (JSC::JITStubs::cti_op_get_by_val_byte_array):
16039        (JSC::JITStubs::cti_op_sub):
16040        (JSC::JITStubs::cti_op_put_by_val):
16041        (JSC::JITStubs::cti_op_put_by_val_array):
16042        (JSC::JITStubs::cti_op_put_by_val_byte_array):
16043        (JSC::JITStubs::cti_op_negate):
16044        (JSC::JITStubs::cti_op_div):
16045        (JSC::JITStubs::cti_op_pre_dec):
16046        (JSC::JITStubs::cti_op_post_inc):
16047        (JSC::JITStubs::cti_op_eq):
16048        (JSC::JITStubs::cti_op_lshift):
16049        (JSC::JITStubs::cti_op_bitand):
16050        (JSC::JITStubs::cti_op_rshift):
16051        (JSC::JITStubs::cti_op_bitnot):
16052        (JSC::JITStubs::cti_op_mod):
16053        (JSC::JITStubs::cti_op_neq):
16054        (JSC::JITStubs::cti_op_post_dec):
16055        (JSC::JITStubs::cti_op_urshift):
16056        (JSC::JITStubs::cti_op_bitxor):
16057        (JSC::JITStubs::cti_op_bitor):
16058        (JSC::JITStubs::cti_op_switch_imm):
16059        * jit/JITStubs.h:
16060        * runtime/JSArray.cpp:
16061        (JSC::JSArray::JSArray):
16062        * runtime/JSFunction.cpp:
16063        (JSC::JSFunction::~JSFunction):
16064        * runtime/JSValue.h:
16065        (JSC::JSValue::payload):
16066        * wtf/Platform.h:
16067
160682009-05-07  Sam Weinig  <sam@webkit.org>
16069
16070        Reviewed by Geoffrey Garen.
16071
16072        Add some new MacroAssembler and assembler functions that will be needed shortly.
16073
16074        * assembler/MacroAssemblerX86Common.h:
16075        (JSC::MacroAssemblerX86Common::add32):
16076        (JSC::MacroAssemblerX86Common::and32):
16077        (JSC::MacroAssemblerX86Common::mul32):
16078        (JSC::MacroAssemblerX86Common::neg32):
16079        (JSC::MacroAssemblerX86Common::or32):
16080        (JSC::MacroAssemblerX86Common::sub32):
16081        (JSC::MacroAssemblerX86Common::xor32):
16082        (JSC::MacroAssemblerX86Common::branchAdd32):
16083        (JSC::MacroAssemblerX86Common::branchMul32):
16084        (JSC::MacroAssemblerX86Common::branchSub32):
16085        * assembler/X86Assembler.h:
16086        (JSC::X86Assembler::):
16087        (JSC::X86Assembler::addl_rm):
16088        (JSC::X86Assembler::andl_mr):
16089        (JSC::X86Assembler::andl_rm):
16090        (JSC::X86Assembler::andl_im):
16091        (JSC::X86Assembler::negl_r):
16092        (JSC::X86Assembler::notl_r):
16093        (JSC::X86Assembler::orl_rm):
16094        (JSC::X86Assembler::orl_im):
16095        (JSC::X86Assembler::subl_rm):
16096        (JSC::X86Assembler::xorl_mr):
16097        (JSC::X86Assembler::xorl_rm):
16098        (JSC::X86Assembler::xorl_im):
16099        (JSC::X86Assembler::imull_mr):
16100
161012009-05-11  Sam Weinig  <sam@webkit.org>
16102
16103        Reviewed by Cameron Zwarich.
16104
16105        Remove the NumberHeap.
16106
16107        * JavaScriptCore.exp:
16108        * runtime/Collector.cpp:
16109        (JSC::Heap::Heap):
16110        (JSC::Heap::destroy):
16111        (JSC::Heap::recordExtraCost):
16112        (JSC::Heap::heapAllocate):
16113        (JSC::Heap::markConservatively):
16114        (JSC::Heap::sweep):
16115        (JSC::Heap::collect):
16116        (JSC::Heap::objectCount):
16117        (JSC::Heap::statistics):
16118        (JSC::typeName):
16119        (JSC::Heap::isBusy):
16120        * runtime/Collector.h:
16121        (JSC::Heap::globalData):
16122        * runtime/JSCell.h:
16123
161242009-05-11  Geoffrey Garen  <ggaren@apple.com>
16125
16126        Reviewed by Sam Weinig.
16127
16128        Land initial commit of new number representation for 32 bit platforms,
16129        with JIT disabled.
16130
16131        * API/APICast.h:
16132        (toJS):
16133        (toRef):
16134        * API/JSCallbackObjectFunctions.h:
16135        (JSC::::hasInstance):
16136        (JSC::::toNumber):
16137        (JSC::::toString):
16138        * API/tests/testapi.c:
16139        (EvilExceptionObject_convertToType):
16140        * AllInOneFile.cpp:
16141        * JavaScriptCore.exp:
16142        * JavaScriptCore.xcodeproj/project.pbxproj:
16143        * bytecode/CodeBlock.cpp:
16144        (JSC::valueToSourceString):
16145        * bytecompiler/BytecodeGenerator.cpp:
16146        (JSC::BytecodeGenerator::emitLoad):
16147        (JSC::BytecodeGenerator::emitUnexpectedLoad):
16148        (JSC::keyForImmediateSwitch):
16149        * bytecompiler/BytecodeGenerator.h:
16150        * interpreter/Interpreter.cpp:
16151        (JSC::Interpreter::dumpRegisters):
16152        (JSC::Interpreter::privateExecute):
16153        * parser/Nodes.cpp:
16154        (JSC::ArrayNode::emitBytecode):
16155        (JSC::processClauseList):
16156        * runtime/ArgList.h:
16157        * runtime/Collector.h:
16158        (JSC::sizeof):
16159        * runtime/DateMath.cpp:
16160        * runtime/ExceptionHelpers.h:
16161        * runtime/InitializeThreading.cpp:
16162        * runtime/JSArray.cpp:
16163        (JSC::JSArray::JSArray):
16164        * runtime/JSCell.cpp:
16165        * runtime/JSCell.h:
16166        (JSC::JSCell::isAPIValueWrapper):
16167        (JSC::JSValue::isString):
16168        (JSC::JSValue::isGetterSetter):
16169        (JSC::JSValue::isObject):
16170        (JSC::JSValue::getString):
16171        (JSC::JSValue::getObject):
16172        (JSC::JSValue::getCallData):
16173        (JSC::JSValue::getConstructData):
16174        (JSC::JSValue::getUInt32):
16175        (JSC::JSValue::marked):
16176        (JSC::JSValue::toPrimitive):
16177        (JSC::JSValue::getPrimitiveNumber):
16178        (JSC::JSValue::toBoolean):
16179        (JSC::JSValue::toNumber):
16180        (JSC::JSValue::toString):
16181        (JSC::JSValue::needsThisConversion):
16182        (JSC::JSValue::toThisString):
16183        (JSC::JSValue::getJSNumber):
16184        (JSC::JSValue::toObject):
16185        (JSC::JSValue::toThisObject):
16186        * runtime/JSGlobalData.cpp:
16187        (JSC::JSGlobalData::JSGlobalData):
16188        * runtime/JSGlobalData.h:
16189        * runtime/JSGlobalObject.h:
16190        (JSC::Structure::prototypeForLookup):
16191        * runtime/JSGlobalObjectFunctions.cpp:
16192        (JSC::globalFuncParseInt):
16193        * runtime/JSImmediate.h:
16194        * runtime/JSNumberCell.cpp: Removed.
16195        * runtime/JSNumberCell.h: Removed.
16196        * runtime/JSObject.h:
16197        (JSC::JSValue::get):
16198        (JSC::JSValue::put):
16199        * runtime/JSString.h:
16200        (JSC::JSValue::toThisJSString):
16201        * runtime/JSValue.cpp:
16202        (JSC::JSValue::toInteger):
16203        (JSC::JSValue::toIntegerPreserveNaN):
16204        (JSC::JSValue::toObjectSlowCase):
16205        (JSC::JSValue::toThisObjectSlowCase):
16206        (JSC::JSValue::synthesizeObject):
16207        (JSC::JSValue::synthesizePrototype):
16208        (JSC::JSValue::description):
16209        (JSC::nonInlineNaN):
16210        * runtime/JSValue.h:
16211        (JSC::JSValue::):
16212        (JSC::EncodedJSValueHashTraits::emptyValue):
16213        (JSC::jsNaN):
16214        (JSC::operator==):
16215        (JSC::operator!=):
16216        (JSC::toInt32):
16217        (JSC::toUInt32):
16218        (JSC::JSValue::encode):
16219        (JSC::JSValue::decode):
16220        (JSC::JSValue::JSValue):
16221        (JSC::JSValue::operator bool):
16222        (JSC::JSValue::operator==):
16223        (JSC::JSValue::operator!=):
16224        (JSC::JSValue::isUndefined):
16225        (JSC::JSValue::isNull):
16226        (JSC::JSValue::isUndefinedOrNull):
16227        (JSC::JSValue::isCell):
16228        (JSC::JSValue::isInt32):
16229        (JSC::JSValue::isUInt32):
16230        (JSC::JSValue::isDouble):
16231        (JSC::JSValue::isTrue):
16232        (JSC::JSValue::isFalse):
16233        (JSC::JSValue::tag):
16234        (JSC::JSValue::asInt32):
16235        (JSC::JSValue::asUInt32):
16236        (JSC::JSValue::asDouble):
16237        (JSC::JSValue::asCell):
16238        (JSC::JSValue::isNumber):
16239        (JSC::JSValue::isBoolean):
16240        (JSC::JSValue::getBoolean):
16241        (JSC::JSValue::uncheckedGetNumber):
16242        (JSC::JSValue::toJSNumber):
16243        (JSC::JSValue::getNumber):
16244        (JSC::JSValue::toInt32):
16245        (JSC::JSValue::toUInt32):
16246        * runtime/Operations.h:
16247        (JSC::JSValue::equal):
16248        (JSC::JSValue::equalSlowCaseInline):
16249        (JSC::JSValue::strictEqual):
16250        (JSC::JSValue::strictEqualSlowCaseInline):
16251        (JSC::jsLess):
16252        (JSC::jsLessEq):
16253        (JSC::jsAdd):
16254        * runtime/PropertySlot.h:
16255        * runtime/StringPrototype.cpp:
16256        (JSC::stringProtoFuncCharAt):
16257        (JSC::stringProtoFuncCharCodeAt):
16258        (JSC::stringProtoFuncIndexOf):
16259        * wtf/Platform.h:
16260
16261=== Start merge of nitro-extreme branch 2009-07-30 ===
16262
162632009-07-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
16264
16265        Reviewed by George Staikos.
16266
16267        Resolve class/struct mixup in forward declarations
16268        https://bugs.webkit.org/show_bug.cgi?id=27708
16269
16270        * API/JSClassRef.h:
16271        * bytecode/SamplingTool.h:
16272        * interpreter/Interpreter.h:
16273        * jit/JIT.h:
16274        * profiler/ProfileGenerator.h:
16275        * profiler/Profiler.h:
16276        * runtime/ClassInfo.h:
16277        * runtime/ExceptionHelpers.h:
16278        * runtime/JSByteArray.h:
16279        * runtime/JSCell.h:
16280        * runtime/JSFunction.h:
16281        * runtime/JSGlobalData.h:
16282        * runtime/JSObject.h:
16283        * runtime/JSString.h:
16284
162852009-07-28  Ada Chan  <adachan@apple.com>
16286
16287        Reviewed by Darin Adler.
16288
16289        https://bugs.webkit.org/show_bug.cgi?id=27236
16290        - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows.
16291        - Use a background thread to periodically scavenge memory to release back to the system.
16292
16293        * wtf/FastMalloc.cpp:
16294        (WTF::TCMalloc_PageHeap::init):
16295        (WTF::TCMalloc_PageHeap::runScavengerThread):
16296        (WTF::TCMalloc_PageHeap::scavenge):
16297        (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
16298        (WTF::TCMalloc_PageHeap::New):
16299        (WTF::TCMalloc_PageHeap::AllocLarge):
16300        (WTF::TCMalloc_PageHeap::Delete):
16301        (WTF::TCMalloc_PageHeap::GrowHeap):
16302        (WTF::sleep):
16303        (WTF::TCMalloc_PageHeap::scavengerThread):
16304        * wtf/TCSystemAlloc.cpp:
16305        (TCMalloc_SystemRelease):
16306        (TCMalloc_SystemCommit):
16307        * wtf/TCSystemAlloc.h:
16308
163092009-07-28  Xan Lopez  <xlopez@igalia.com>
16310
16311        Add new files, fixes distcheck.
16312
16313        * GNUmakefile.am:
16314
163152009-07-28  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
16316
16317        Reviewed by Simon Hausmann.
16318
16319        [Qt] Determining whether to use JIT or interpreter
16320        moved from JavaScriptCore.pri to Platform.h
16321
16322        * JavaScriptCore.pri:
16323        * wtf/Platform.h:
16324
163252009-07-27  Brian Weinstein  <bweinstein@apple.com>
16326
16327        Fix of misuse of sort command.
16328
16329        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16330        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
16331
163322009-07-27  Brian Weinstein  <bweinstein@apple.com>
16333
16334        Build fix for Windows.
16335
16336        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16337        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
16338
163392009-07-27  Gavin Barraclough  <barraclough@apple.com>
16340
16341        Rubber stamped by Oliver Hunt.
16342
16343        Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall.
16344
16345        * jit/JIT.cpp:
16346        (JSC::JIT::privateCompile):
16347        (JSC::JIT::privateCompileCTIMachineTrampolines):
16348        * jit/JIT.h:
16349        * jit/JITInlineMethods.h:
16350        (JSC::JIT::preserveReturnAddressAfterCall):
16351        * jit/JITPropertyAccess.cpp:
16352        (JSC::JIT::privateCompilePutByIdTransition):
16353
163542009-07-27  Alexey Proskuryakov  <ap@webkit.org>
16355
16356        Gtk build fix.
16357
16358        * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case.
16359
163602009-07-27  Alexey Proskuryakov  <ap@webkit.org>
16361
16362        Release build fix.
16363
16364        * runtime/JSLock.h: (JSC::JSLock::~JSLock):
16365
163662009-07-27  Alexey Proskuryakov  <ap@webkit.org>
16367
16368        Reviewed by Darin Adler.
16369
16370        https://bugs.webkit.org/show_bug.cgi?id=27735
16371        Give a helpful name to JSLock constructor argument
16372
16373        * API/JSBase.cpp:
16374        (JSGarbageCollect):
16375        * API/JSContextRef.cpp:
16376        * API/JSObjectRef.cpp:
16377        (JSPropertyNameArrayRelease):
16378        (JSPropertyNameAccumulatorAddName):
16379        * JavaScriptCore.exp:
16380        * jsc.cpp:
16381        (functionGC):
16382        (cleanupGlobalData):
16383        (jscmain):
16384        * runtime/Collector.cpp:
16385        (JSC::Heap::destroy):
16386        * runtime/JSLock.cpp:
16387        (JSC::JSLock::JSLock):
16388        (JSC::JSLock::lock):
16389        (JSC::JSLock::unlock):
16390        (JSC::JSLock::DropAllLocks::DropAllLocks):
16391        (JSC::JSLock::DropAllLocks::~DropAllLocks):
16392        * runtime/JSLock.h:
16393        (JSC::):
16394        (JSC::JSLock::JSLock):
16395        (JSC::JSLock::~JSLock):
16396
163972009-07-25  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
16398
16399        Reviewed by Eric Seidel.
16400
16401        Allow custom memory allocation control for OpaqueJSPropertyNameArray struct
16402        https://bugs.webkit.org/show_bug.cgi?id=27342
16403
16404        Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been
16405        instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473.
16406
16407        * API/JSObjectRef.cpp:
16408
164092009-07-24  Ada Chan  <adachan@apple.com>
16410
16411        In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236:
16412        Remove TCMALLOC_TRACK_DECOMMITED_SPANS.  We'll always track decommitted spans.
16413        We have tested this and show it has little impact on performance.
16414
16415        Reviewed by Mark Rowe.
16416
16417        * wtf/FastMalloc.cpp:
16418        (WTF::TCMalloc_PageHeap::New):
16419        (WTF::TCMalloc_PageHeap::AllocLarge):
16420        (WTF::propagateDecommittedState):
16421        (WTF::mergeDecommittedStates):
16422        (WTF::TCMalloc_PageHeap::Delete):
16423        (WTF::TCMalloc_PageHeap::IncrementalScavenge):
16424
164252009-07-24  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
16426
16427        Reviewed by Darin Adler and Adam Barth.
16428
16429        Build fix for x86 platforms.
16430        https://bugs.webkit.org/show_bug.cgi?id=27602
16431
16432        * jit/JIT.cpp:
16433
164342009-07-23  Kevin Ollivier  <kevino@theolliviers.com>
16435
16436        wx build fix, adding missing header.
16437
16438        * jit/JIT.cpp:
16439
164402009-07-22  Yong Li  <yong.li@torchmobile.com>
16441
16442        Reviewed by George Staikos.
16443
16444        Add wince specific memory files into wtf/wince
16445        https://bugs.webkit.org/show_bug.cgi?id=27550
16446
16447        * wtf/wince/FastMallocWince.h: Added.
16448        * wtf/wince/MemoryManager.cpp: Added.
16449        * wtf/wince/MemoryManager.h: Added.
16450
164512009-07-23  Norbert Leser  <norbert.leser@nokia.com>
16452
16453        Reviewed by Simon Hausmann.
16454
16455        Fix for missing mmap features in Symbian
16456        https://bugs.webkit.org/show_bug.cgi?id=24540
16457
16458        Fix, conditionally for PLATFORM(SYMBIAN), as an alternative
16459        to missing support for the MAP_ANON property flag in mmap.
16460        It utilizes Symbian specific memory allocation features.
16461
16462        * runtime/Collector.cpp
16463
164642009-07-22  Gavin Barraclough  <barraclough@apple.com>
16465
16466        Reviewed by Sam Weinig.
16467
16468        With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event.
16469        ( https://bugs.webkit.org/show_bug.cgi?id=27564 )
16470
16471        Currently we change permissions forwards and backwards for each instruction modified,
16472        instead we should only change permissions once per complete repatching event.
16473
16474        2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled,
16475        which recoups 1/3 of the penalty of running with this mode enabled.
16476
16477        * assembler/ARMAssembler.cpp:
16478        (JSC::ARMAssembler::linkBranch):
16479            - Replace usage of MakeWritable with cacheFlush.
16480
16481        * assembler/ARMAssembler.h:
16482        (JSC::ARMAssembler::patchPointerInternal):
16483        (JSC::ARMAssembler::repatchLoadPtrToLEA):
16484            - Replace usage of MakeWritable with cacheFlush.
16485
16486        * assembler/ARMv7Assembler.h:
16487        (JSC::ARMv7Assembler::relinkJump):
16488        (JSC::ARMv7Assembler::relinkCall):
16489        (JSC::ARMv7Assembler::repatchInt32):
16490        (JSC::ARMv7Assembler::repatchPointer):
16491        (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
16492        (JSC::ARMv7Assembler::setInt32):
16493            - Replace usage of MakeWritable with cacheFlush.
16494
16495        * assembler/LinkBuffer.h:
16496        (JSC::LinkBuffer::performFinalization):
16497            - Make explicit call to cacheFlush.
16498
16499        * assembler/MacroAssemblerCodeRef.h:
16500        (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
16501            - Make size always available.
16502
16503        * assembler/RepatchBuffer.h:
16504        (JSC::RepatchBuffer::RepatchBuffer):
16505        (JSC::RepatchBuffer::~RepatchBuffer):
16506            - Add calls to MakeWritable & makeExecutable.
16507
16508        * assembler/X86Assembler.h:
16509        (JSC::X86Assembler::relinkJump):
16510        (JSC::X86Assembler::relinkCall):
16511        (JSC::X86Assembler::repatchInt32):
16512        (JSC::X86Assembler::repatchPointer):
16513        (JSC::X86Assembler::repatchLoadPtrToLEA):
16514            - Remove usage of MakeWritable.
16515
16516        * bytecode/CodeBlock.h:
16517        (JSC::CodeBlock::getJITCode):
16518            - Provide access to CodeBlock's JITCode.
16519
16520        * jit/ExecutableAllocator.h:
16521        (JSC::ExecutableAllocator::makeExecutable):
16522        (JSC::ExecutableAllocator::cacheFlush):
16523            - Remove MakeWritable, make cacheFlush public.
16524
16525        * jit/JIT.cpp:
16526        (JSC::ctiPatchNearCallByReturnAddress):
16527        (JSC::ctiPatchCallByReturnAddress):
16528        (JSC::JIT::privateCompile):
16529        (JSC::JIT::unlinkCall):
16530        (JSC::JIT::linkCall):
16531            - Add CodeBlock argument to RepatchBuffer.
16532
16533        * jit/JIT.h:
16534            - Pass CodeBlock argument for use by RepatchBuffer.
16535
16536        * jit/JITCode.h:
16537        (JSC::JITCode::start):
16538        (JSC::JITCode::size):
16539            - Provide access to code start & size.
16540
16541        * jit/JITPropertyAccess.cpp:
16542        (JSC::JIT::privateCompilePutByIdTransition):
16543        (JSC::JIT::patchGetByIdSelf):
16544        (JSC::JIT::patchMethodCallProto):
16545        (JSC::JIT::patchPutByIdReplace):
16546        (JSC::JIT::privateCompilePatchGetArrayLength):
16547        (JSC::JIT::privateCompileGetByIdProto):
16548        (JSC::JIT::privateCompileGetByIdSelfList):
16549        (JSC::JIT::privateCompileGetByIdProtoList):
16550        (JSC::JIT::privateCompileGetByIdChainList):
16551        (JSC::JIT::privateCompileGetByIdChain):
16552            - Add CodeBlock argument to RepatchBuffer.
16553
16554        * jit/JITStubs.cpp:
16555        (JSC::JITThunks::tryCachePutByID):
16556        (JSC::JITThunks::tryCacheGetByID):
16557        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
16558            - Pass CodeBlock argument for use by RepatchBuffer.
16559
165602009-07-21  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
16561
16562        Reviewed by Gavin Barraclough.
16563
16564        Cache not only the structure of the method, but the
16565        structure of its prototype as well.
16566        https://bugs.webkit.org/show_bug.cgi?id=27077
16567
16568        * bytecode/CodeBlock.cpp:
16569        (JSC::CodeBlock::~CodeBlock):
16570        * bytecode/CodeBlock.h:
16571        (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
16572        * jit/JITPropertyAccess.cpp:
16573        (JSC::JIT::patchMethodCallProto):
16574
165752009-07-21  Gavin Barraclough  <barraclough@apple.com>
16576
16577        Reviewed by Sam Weinig.
16578
16579        Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes.
16580        ( https://bugs.webkit.org/show_bug.cgi?id=27527 )
16581
16582        This allows the implementation to be defined per architecture.  Specifically this addresses the
16583        fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call
16584        to register.  Patching the call actually requires the pointer load to be patched, rather than
16585        the call to be patched.  This is implementation detail specific to MacroAssemblerX86_64, and as
16586        such is best handled there.
16587
16588        * assembler/AbstractMacroAssembler.h:
16589        * assembler/MacroAssemblerARM.h:
16590        (JSC::MacroAssemblerARM::linkCall):
16591        (JSC::MacroAssemblerARM::repatchCall):
16592        * assembler/MacroAssemblerARMv7.h:
16593        (JSC::MacroAssemblerARMv7::linkCall):
16594        (JSC::MacroAssemblerARMv7::repatchCall):
16595        * assembler/MacroAssemblerX86.h:
16596        (JSC::MacroAssemblerX86::linkCall):
16597        (JSC::MacroAssemblerX86::repatchCall):
16598        * assembler/MacroAssemblerX86_64.h:
16599        (JSC::MacroAssemblerX86_64::linkCall):
16600        (JSC::MacroAssemblerX86_64::repatchCall):
16601
166022009-07-21  Adam Treat  <adam.treat@torchmobile.com>
16603
16604        Reviewed by George Staikos.
16605
16606        Every wtf file includes other wtf files with <> style includes
16607        except this one.  Fix the exception.
16608
16609        * wtf/ByteArray.h:
16610
166112009-07-21  Gavin Barraclough  <barraclough@apple.com>
16612
16613        Reviewed by Oliver Hunt.
16614
16615        Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler.
16616        ( https://bugs.webkit.org/show_bug.cgi?id=27485 )
16617
16618        This change is the first step in a process to move code that should be in
16619        the architecture-specific MacroAssembler classes up out of Assmbler and
16620        AbstractMacroAssembler.
16621
16622        * JavaScriptCore.xcodeproj/project.pbxproj:
16623            - added new files
16624
16625        * assembler/ARMAssembler.h:
16626        (JSC::ARMAssembler::linkPointer):
16627            - rename patchPointer to bring it in line with the current link/repatch naming scheme
16628
16629        * assembler/ARMv7Assembler.h:
16630        (JSC::ARMv7Assembler::linkCall):
16631        (JSC::ARMv7Assembler::linkPointer):
16632        (JSC::ARMv7Assembler::relinkCall):
16633        (JSC::ARMv7Assembler::repatchInt32):
16634        (JSC::ARMv7Assembler::repatchPointer):
16635        (JSC::ARMv7Assembler::setInt32):
16636        (JSC::ARMv7Assembler::setPointer):
16637            - rename patchPointer to bring it in line with the current link/repatch naming scheme
16638
16639        * assembler/AbstractMacroAssembler.h:
16640        (JSC::AbstractMacroAssembler::linkJump):
16641        (JSC::AbstractMacroAssembler::linkCall):
16642        (JSC::AbstractMacroAssembler::linkPointer):
16643        (JSC::AbstractMacroAssembler::getLinkerAddress):
16644        (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset):
16645        (JSC::AbstractMacroAssembler::repatchJump):
16646        (JSC::AbstractMacroAssembler::repatchCall):
16647        (JSC::AbstractMacroAssembler::repatchNearCall):
16648        (JSC::AbstractMacroAssembler::repatchInt32):
16649        (JSC::AbstractMacroAssembler::repatchPointer):
16650        (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA):
16651            - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler
16652
16653        * assembler/LinkBuffer.h: Added.
16654        (JSC::LinkBuffer::LinkBuffer):
16655        (JSC::LinkBuffer::~LinkBuffer):
16656        (JSC::LinkBuffer::link):
16657        (JSC::LinkBuffer::patch):
16658        (JSC::LinkBuffer::locationOf):
16659        (JSC::LinkBuffer::locationOfNearCall):
16660        (JSC::LinkBuffer::returnAddressOffset):
16661        (JSC::LinkBuffer::finalizeCode):
16662        (JSC::LinkBuffer::finalizeCodeAddendum):
16663        (JSC::LinkBuffer::code):
16664        (JSC::LinkBuffer::performFinalization):
16665            - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler
16666
16667        * assembler/RepatchBuffer.h: Added.
16668        (JSC::RepatchBuffer::RepatchBuffer):
16669        (JSC::RepatchBuffer::relink):
16670        (JSC::RepatchBuffer::repatch):
16671        (JSC::RepatchBuffer::repatchLoadPtrToLEA):
16672        (JSC::RepatchBuffer::relinkCallerToTrampoline):
16673        (JSC::RepatchBuffer::relinkCallerToFunction):
16674        (JSC::RepatchBuffer::relinkNearCallerToTrampoline):
16675            - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler
16676
16677        * assembler/X86Assembler.h:
16678        (JSC::X86Assembler::linkJump):
16679        (JSC::X86Assembler::linkCall):
16680        (JSC::X86Assembler::linkPointerForCall):
16681        (JSC::X86Assembler::linkPointer):
16682        (JSC::X86Assembler::relinkJump):
16683        (JSC::X86Assembler::relinkCall):
16684        (JSC::X86Assembler::repatchInt32):
16685        (JSC::X86Assembler::repatchPointer):
16686        (JSC::X86Assembler::setPointer):
16687        (JSC::X86Assembler::setInt32):
16688        (JSC::X86Assembler::setRel32):
16689            - rename patchPointer to bring it in line with the current link/repatch naming scheme
16690
16691        * jit/JIT.cpp:
16692        (JSC::ctiPatchNearCallByReturnAddress):
16693        (JSC::ctiPatchCallByReturnAddress):
16694            - include new headers
16695            - remove MacroAssembler:: specification from RepatchBuffer usage
16696
16697        * jit/JITPropertyAccess.cpp:
16698        * yarr/RegexJIT.cpp:
16699            - include new headers
16700
167012009-07-21  Robert Agoston  <Agoston.Robert@stud.u-szeged.hu>
16702
16703        Reviewed by David Levin.
16704
16705        Fixed #undef typo.
16706        https://bugs.webkit.org/show_bug.cgi?id=27506
16707
16708        * bytecode/Opcode.h:
16709
167102009-07-21  Adam Roben  <aroben@apple.com>
16711
16712        Roll out r46153, r46154, and r46155
16713
16714        These changes were causing build failures and assertion failures on
16715        Windows.
16716
16717        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16718        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
16719        * JavaScriptCore.xcodeproj/project.pbxproj:
16720        * runtime/JSArray.cpp:
16721        * runtime/StringPrototype.cpp:
16722        * runtime/UString.cpp:
16723        * runtime/UString.h:
16724        * wtf/FastMalloc.cpp:
16725        * wtf/FastMalloc.h:
16726        * wtf/Platform.h:
16727        * wtf/PossiblyNull.h: Removed.
16728
167292009-07-21  Roland Steiner  <rolandsteiner@google.com>
16730
16731        Reviewed by David Levin.
16732
16733        Add ENABLE_RUBY to list of build options
16734        https://bugs.webkit.org/show_bug.cgi?id=27324
16735
16736        * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY.
16737
167382009-07-20  Oliver Hunt  <oliver@apple.com>
16739
16740        Build fix attempt #2
16741
16742        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16743        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
16744
167452009-07-20  Oliver Hunt  <oliver@apple.com>
16746
16747        Build fix attempt #1
16748
16749        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16750        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
16751
167522009-07-20  Oliver Hunt  <oliver@apple.com>
16753
16754        Reviewed by Gavin Barraclough.
16755
16756        Make it harder to misuse try* allocation routines
16757        https://bugs.webkit.org/show_bug.cgi?id=27469
16758
16759        Jump through a few hoops to make it much harder to accidentally
16760        miss null-checking of values returned by the try-* allocation
16761        routines.
16762
16763        * JavaScriptCore.xcodeproj/project.pbxproj:
16764        * runtime/JSArray.cpp:
16765        (JSC::JSArray::putSlowCase):
16766        (JSC::JSArray::increaseVectorLength):
16767        * runtime/StringPrototype.cpp:
16768        (JSC::stringProtoFuncFontsize):
16769        (JSC::stringProtoFuncLink):
16770        * runtime/UString.cpp:
16771        (JSC::allocChars):
16772        (JSC::reallocChars):
16773        (JSC::expandCapacity):
16774        (JSC::UString::Rep::reserveCapacity):
16775        (JSC::UString::expandPreCapacity):
16776        (JSC::createRep):
16777        (JSC::concatenate):
16778        (JSC::UString::spliceSubstringsWithSeparators):
16779        (JSC::UString::replaceRange):
16780        (JSC::UString::append):
16781        (JSC::UString::operator=):
16782        * runtime/UString.h:
16783        (JSC::UString::Rep::createEmptyBuffer):
16784        * wtf/FastMalloc.cpp:
16785        (WTF::tryFastZeroedMalloc):
16786        (WTF::tryFastMalloc):
16787        (WTF::tryFastCalloc):
16788        (WTF::tryFastRealloc):
16789        (WTF::TCMallocStats::tryFastMalloc):
16790        (WTF::TCMallocStats::tryFastCalloc):
16791        (WTF::TCMallocStats::tryFastRealloc):
16792        * wtf/FastMalloc.h:
16793        (WTF::TryMallocReturnValue::TryMallocReturnValue):
16794        (WTF::TryMallocReturnValue::~TryMallocReturnValue):
16795        (WTF::TryMallocReturnValue::operator Maybe<T>):
16796        (WTF::TryMallocReturnValue::getValue):
16797        * wtf/PossiblyNull.h:
16798        (WTF::PossiblyNull::PossiblyNull):
16799        (WTF::PossiblyNull::~PossiblyNull):
16800        (WTF::PossiblyNull::getValue):
16801        * wtf/Platform.h:
16802
168032009-07-20  Gavin Barraclough  <barraclough@apple.com>
16804
16805        RS Oliver Hunt.
16806
16807        Add ARM assembler files to xcodeproj, for convenience editing.
16808
16809        * JavaScriptCore.xcodeproj/project.pbxproj:
16810
168112009-07-20  Jessie Berlin  <jberlin@apple.com>
16812
16813        Reviewed by David Levin.
16814
16815        Fix an incorrect assertion in Vector::remove.
16816
16817        https://bugs.webkit.org/show_bug.cgi?id=27477
16818
16819        * wtf/Vector.h:
16820        (WTF::::remove):
16821        Assert that the position at which to start removing elements + the
16822        length (the number of elements to remove) is less than or equal to the
16823        size of the entire Vector.
16824
168252009-07-20  Peter Kasting  <pkasting@google.com>
16826
16827        Reviewed by Mark Rowe.
16828
16829        https://bugs.webkit.org/show_bug.cgi?id=27468
16830        Back out r46060, which caused problems for some Apple developers.
16831
16832        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
16833        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
16834        * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
16835        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
16836        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
16837
168382009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
16839
16840        Reviewed by Oliver Hunt.
16841
16842        Allow custom memory allocation control in NewThreadContext
16843        https://bugs.webkit.org/show_bug.cgi?id=27338
16844
16845        Inherits NewThreadContext struct from FastAllocBase because it
16846        has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76.
16847
16848        * wtf/Threading.cpp:
16849
168502009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
16851
16852        Reviewed by Oliver Hunt.
16853
16854        Allow custom memory allocation control in JavaScriptCore's JSClassRef.h
16855        https://bugs.webkit.org/show_bug.cgi?id=27340
16856
16857        Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these
16858        have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153
16859        and in JavaScriptCore/API/JSClassRef.cpp:166.
16860
16861        * API/JSClassRef.h:
16862
168632009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
16864
16865        Reviewed by Darin Adler.
16866
16867        Allow custom memory allocation control in JavaScriptCore's RegexPattern.h
16868        https://bugs.webkit.org/show_bug.cgi?id=27343
16869
16870        Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase:
16871
16872        CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144)
16873        PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221)
16874        PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446)
16875
16876        * yarr/RegexPattern.h:
16877
168782009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
16879
16880        Reviewed by Darin Adler.
16881
16882        Allow custom memory allocation control for JavaScriptCore's MatchFrame struct
16883        https://bugs.webkit.org/show_bug.cgi?id=27344
16884
16885        Inherits MatchFrame struct from FastAllocBase because it has
16886        been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359.
16887
16888        * pcre/pcre_exec.cpp:
16889
168902009-07-20  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
16891
16892        Reviewed by Holger Freyther.
16893
16894        Remove some outdated S60 platform specific code
16895        https://bugs.webkit.org/show_bug.cgi?id=27423
16896
16897        * wtf/Platform.h:
16898
168992009-07-20  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
16900
16901        Reviewed by Simon Hausmann.
16902
16903        Qt build fix with MSVC and MinGW.
16904
16905        * jsc.pro: Make sure jsc is a console application, and turn off
16906        exceptions and stl support to fix the build.
16907
169082009-07-20  Xan Lopez  <xlopez@igalia.com>
16909
16910        Reviewed by Gustavo Noronha.
16911
16912        Do not use C++-style comments in preprocessor directives.
16913
16914        GCC does not like this in some configurations, using C-style
16915        comments is safer.
16916
16917        * wtf/Platform.h:
16918
169192009-07-17  Peter Kasting  <pkasting@google.com>
16920
16921        Reviewed by Steve Falkenburg.
16922
16923        https://bugs.webkit.org/show_bug.cgi?id=27323
16924        Only add Cygwin to the path when it isn't already there.  This avoids
16925        causing problems for people who purposefully have non-Cygwin versions of
16926        executables like svn in front of the Cygwin ones in their paths.
16927
16928        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
16929        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
16930        * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
16931        * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
16932        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
16933
169342009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
16935
16936        Reviewed by Gavin Barraclough.
16937
16938        Add YARR support for generic ARM platforms (disabled by default).
16939        https://bugs.webkit.org/show_bug.cgi?id=24986
16940
16941        Add generic ARM port for MacroAssembler. It supports the whole
16942        MacroAssembler functionality except floating point.
16943
16944        The class JmpSrc is extended with a flag which enables to patch
16945        the jump destination offset during execution. This feature is
16946        required for generic ARM port.
16947
16948        Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
16949        Signed off by Gabor Loki <loki@inf.u-szeged.hu>
16950
16951        * JavaScriptCore.pri:
16952        * assembler/ARMAssembler.cpp: Added.
16953        (JSC::ARMAssembler::getLdrImmAddress):
16954        (JSC::ARMAssembler::linkBranch):
16955        (JSC::ARMAssembler::patchConstantPoolLoad):
16956        (JSC::ARMAssembler::getOp2):
16957        (JSC::ARMAssembler::genInt):
16958        (JSC::ARMAssembler::getImm):
16959        (JSC::ARMAssembler::moveImm):
16960        (JSC::ARMAssembler::dataTransfer32):
16961        (JSC::ARMAssembler::baseIndexTransfer32):
16962        (JSC::ARMAssembler::executableCopy):
16963        * assembler/ARMAssembler.h: Added.
16964        (JSC::ARM::):
16965        (JSC::ARMAssembler::ARMAssembler):
16966        (JSC::ARMAssembler::):
16967        (JSC::ARMAssembler::JmpSrc::JmpSrc):
16968        (JSC::ARMAssembler::JmpSrc::enableLatePatch):
16969        (JSC::ARMAssembler::JmpDst::JmpDst):
16970        (JSC::ARMAssembler::JmpDst::isUsed):
16971        (JSC::ARMAssembler::JmpDst::used):
16972        (JSC::ARMAssembler::emitInst):
16973        (JSC::ARMAssembler::and_r):
16974        (JSC::ARMAssembler::ands_r):
16975        (JSC::ARMAssembler::eor_r):
16976        (JSC::ARMAssembler::eors_r):
16977        (JSC::ARMAssembler::sub_r):
16978        (JSC::ARMAssembler::subs_r):
16979        (JSC::ARMAssembler::rsb_r):
16980        (JSC::ARMAssembler::rsbs_r):
16981        (JSC::ARMAssembler::add_r):
16982        (JSC::ARMAssembler::adds_r):
16983        (JSC::ARMAssembler::adc_r):
16984        (JSC::ARMAssembler::adcs_r):
16985        (JSC::ARMAssembler::sbc_r):
16986        (JSC::ARMAssembler::sbcs_r):
16987        (JSC::ARMAssembler::rsc_r):
16988        (JSC::ARMAssembler::rscs_r):
16989        (JSC::ARMAssembler::tst_r):
16990        (JSC::ARMAssembler::teq_r):
16991        (JSC::ARMAssembler::cmp_r):
16992        (JSC::ARMAssembler::orr_r):
16993        (JSC::ARMAssembler::orrs_r):
16994        (JSC::ARMAssembler::mov_r):
16995        (JSC::ARMAssembler::movs_r):
16996        (JSC::ARMAssembler::bic_r):
16997        (JSC::ARMAssembler::bics_r):
16998        (JSC::ARMAssembler::mvn_r):
16999        (JSC::ARMAssembler::mvns_r):
17000        (JSC::ARMAssembler::mul_r):
17001        (JSC::ARMAssembler::muls_r):
17002        (JSC::ARMAssembler::mull_r):
17003        (JSC::ARMAssembler::ldr_imm):
17004        (JSC::ARMAssembler::ldr_un_imm):
17005        (JSC::ARMAssembler::dtr_u):
17006        (JSC::ARMAssembler::dtr_ur):
17007        (JSC::ARMAssembler::dtr_d):
17008        (JSC::ARMAssembler::dtr_dr):
17009        (JSC::ARMAssembler::ldrh_r):
17010        (JSC::ARMAssembler::ldrh_d):
17011        (JSC::ARMAssembler::ldrh_u):
17012        (JSC::ARMAssembler::strh_r):
17013        (JSC::ARMAssembler::push_r):
17014        (JSC::ARMAssembler::pop_r):
17015        (JSC::ARMAssembler::poke_r):
17016        (JSC::ARMAssembler::peek_r):
17017        (JSC::ARMAssembler::clz_r):
17018        (JSC::ARMAssembler::bkpt):
17019        (JSC::ARMAssembler::lsl):
17020        (JSC::ARMAssembler::lsr):
17021        (JSC::ARMAssembler::asr):
17022        (JSC::ARMAssembler::lsl_r):
17023        (JSC::ARMAssembler::lsr_r):
17024        (JSC::ARMAssembler::asr_r):
17025        (JSC::ARMAssembler::size):
17026        (JSC::ARMAssembler::ensureSpace):
17027        (JSC::ARMAssembler::label):
17028        (JSC::ARMAssembler::align):
17029        (JSC::ARMAssembler::jmp):
17030        (JSC::ARMAssembler::patchPointerInternal):
17031        (JSC::ARMAssembler::patchConstantPoolLoad):
17032        (JSC::ARMAssembler::patchPointer):
17033        (JSC::ARMAssembler::repatchInt32):
17034        (JSC::ARMAssembler::repatchPointer):
17035        (JSC::ARMAssembler::repatchLoadPtrToLEA):
17036        (JSC::ARMAssembler::linkJump):
17037        (JSC::ARMAssembler::relinkJump):
17038        (JSC::ARMAssembler::linkCall):
17039        (JSC::ARMAssembler::relinkCall):
17040        (JSC::ARMAssembler::getRelocatedAddress):
17041        (JSC::ARMAssembler::getDifferenceBetweenLabels):
17042        (JSC::ARMAssembler::getCallReturnOffset):
17043        (JSC::ARMAssembler::getOp2Byte):
17044        (JSC::ARMAssembler::placeConstantPoolBarrier):
17045        (JSC::ARMAssembler::RM):
17046        (JSC::ARMAssembler::RS):
17047        (JSC::ARMAssembler::RD):
17048        (JSC::ARMAssembler::RN):
17049        (JSC::ARMAssembler::getConditionalField):
17050        * assembler/ARMv7Assembler.h:
17051        (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
17052        * assembler/AbstractMacroAssembler.h:
17053        (JSC::AbstractMacroAssembler::Call::enableLatePatch):
17054        (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
17055        * assembler/MacroAssembler.h:
17056        * assembler/MacroAssemblerARM.h: Added.
17057        (JSC::MacroAssemblerARM::):
17058        (JSC::MacroAssemblerARM::add32):
17059        (JSC::MacroAssemblerARM::and32):
17060        (JSC::MacroAssemblerARM::lshift32):
17061        (JSC::MacroAssemblerARM::mul32):
17062        (JSC::MacroAssemblerARM::not32):
17063        (JSC::MacroAssemblerARM::or32):
17064        (JSC::MacroAssemblerARM::rshift32):
17065        (JSC::MacroAssemblerARM::sub32):
17066        (JSC::MacroAssemblerARM::xor32):
17067        (JSC::MacroAssemblerARM::load32):
17068        (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
17069        (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA):
17070        (JSC::MacroAssemblerARM::load16):
17071        (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
17072        (JSC::MacroAssemblerARM::store32):
17073        (JSC::MacroAssemblerARM::pop):
17074        (JSC::MacroAssemblerARM::push):
17075        (JSC::MacroAssemblerARM::move):
17076        (JSC::MacroAssemblerARM::swap):
17077        (JSC::MacroAssemblerARM::signExtend32ToPtr):
17078        (JSC::MacroAssemblerARM::zeroExtend32ToPtr):
17079        (JSC::MacroAssemblerARM::branch32):
17080        (JSC::MacroAssemblerARM::branch16):
17081        (JSC::MacroAssemblerARM::branchTest32):
17082        (JSC::MacroAssemblerARM::jump):
17083        (JSC::MacroAssemblerARM::branchAdd32):
17084        (JSC::MacroAssemblerARM::mull32):
17085        (JSC::MacroAssemblerARM::branchMul32):
17086        (JSC::MacroAssemblerARM::branchSub32):
17087        (JSC::MacroAssemblerARM::breakpoint):
17088        (JSC::MacroAssemblerARM::nearCall):
17089        (JSC::MacroAssemblerARM::call):
17090        (JSC::MacroAssemblerARM::ret):
17091        (JSC::MacroAssemblerARM::set32):
17092        (JSC::MacroAssemblerARM::setTest32):
17093        (JSC::MacroAssemblerARM::tailRecursiveCall):
17094        (JSC::MacroAssemblerARM::makeTailRecursiveCall):
17095        (JSC::MacroAssemblerARM::moveWithPatch):
17096        (JSC::MacroAssemblerARM::branchPtrWithPatch):
17097        (JSC::MacroAssemblerARM::storePtrWithPatch):
17098        (JSC::MacroAssemblerARM::supportsFloatingPoint):
17099        (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
17100        (JSC::MacroAssemblerARM::loadDouble):
17101        (JSC::MacroAssemblerARM::storeDouble):
17102        (JSC::MacroAssemblerARM::addDouble):
17103        (JSC::MacroAssemblerARM::subDouble):
17104        (JSC::MacroAssemblerARM::mulDouble):
17105        (JSC::MacroAssemblerARM::convertInt32ToDouble):
17106        (JSC::MacroAssemblerARM::branchDouble):
17107        (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
17108        (JSC::MacroAssemblerARM::ARMCondition):
17109        (JSC::MacroAssemblerARM::prepareCall):
17110        (JSC::MacroAssemblerARM::call32):
17111        * assembler/X86Assembler.h:
17112        (JSC::X86Assembler::JmpSrc::enableLatePatch):
17113        * jit/ExecutableAllocator.h:
17114        (JSC::ExecutableAllocator::cacheFlush):
17115        * wtf/Platform.h:
17116        * yarr/RegexJIT.cpp:
17117        (JSC::Yarr::RegexGenerator::generateEnter):
17118        (JSC::Yarr::RegexGenerator::generateReturn):
17119
171202009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
17121
17122        Reviewed by Gavin Barraclough.
17123
17124        Extend AssemblerBuffer with constant pool handling mechanism.
17125        https://bugs.webkit.org/show_bug.cgi?id=24986
17126
17127        Add a platform independed constant pool framework.
17128        This pool can store 32 or 64 bits values which is enough to hold
17129        any integer, pointer or double constant.
17130
17131        * assembler/AssemblerBuffer.h:
17132        (JSC::AssemblerBuffer::putIntUnchecked):
17133        (JSC::AssemblerBuffer::putInt64Unchecked):
17134        (JSC::AssemblerBuffer::append):
17135        (JSC::AssemblerBuffer::grow):
17136        * assembler/AssemblerBufferWithConstantPool.h: Added.
17137        (JSC::):
17138
171392009-07-17  Eric Roman  <eroman@chromium.org>
17140
17141        Reviewed by Darin Adler.
17142
17143        Build fix for non-Darwin.
17144        Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h
17145
17146        https://bugs.webkit.org/show_bug.cgi?id=27382
17147
17148        * wtf/unicode/icu/CollatorICU.cpp:
17149
171502009-07-17  Alexey Proskuryakov  <ap@webkit.org>
17151
17152        Reviewed by John Sullivan.
17153
17154        Get user default collation order via a CFLocale API when available.
17155
17156        * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault):
17157
171582009-07-17  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
17159
17160        Reviewed by Simon Hausmann.
17161
17162        [Qt] Fix the include path for the Symbian port
17163        https://bugs.webkit.org/show_bug.cgi?id=27358
17164
17165        * JavaScriptCore.pri:
17166
171672009-07-17  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
17168
17169        Reviewed by David Levin.
17170
17171        Build fix on platforms don't have MMAP.
17172        https://bugs.webkit.org/show_bug.cgi?id=27365
17173
17174        * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP)
17175
171762009-07-16  Fumitoshi Ukai  <ukai@chromium.org>
17177
17178        Reviewed by David Levin.
17179
17180        Add --web-sockets flag and ENABLE_WEB_SOCKETS define.
17181        https://bugs.webkit.org/show_bug.cgi?id=27206
17182
17183        Add ENABLE_WEB_SOCKETS
17184
17185        * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS
17186
171872009-07-16  Maxime Simon  <simon.maxime@gmail.com>
17188
17189        Reviewed by Eric Seidel.
17190
17191        Added Haiku-specific files for JavaScriptCore.
17192        https://bugs.webkit.org/show_bug.cgi?id=26620
17193
17194        * wtf/haiku/MainThreadHaiku.cpp: Added.
17195        (WTF::initializeMainThreadPlatform):
17196        (WTF::scheduleDispatchFunctionsOnMainThread):
17197
171982009-07-16  Gavin Barraclough  <barraclough@apple.com>
17199
17200        RS by Oliver Hunt.
17201
17202        Revert r45969, this fix does not appear to be valid.
17203        https://bugs.webkit.org/show_bug.cgi?id=27077
17204
17205        * bytecode/CodeBlock.cpp:
17206        (JSC::CodeBlock::~CodeBlock):
17207        (JSC::CodeBlock::unlinkCallers):
17208        * jit/JIT.cpp:
17209        * jit/JIT.h:
17210
172112009-07-16  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17212
17213        Reviewed by Oliver Hunt.
17214
17215        Allow custom memory allocation control in ExceptionInfo and RareData struct
17216        https://bugs.webkit.org/show_bug.cgi?id=27336
17217
17218        Inherits ExceptionInfo and RareData struct from FastAllocBase because these
17219        have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and
17220        in JavaScriptCore/bytecode/CodeBlock.h:453.
17221
17222        Remove unnecessary WTF:: namespace from CodeBlock inheritance.
17223
17224        * bytecode/CodeBlock.h:
17225
172262009-07-16  Mark Rowe  <mrowe@apple.com>
17227
17228        Rubber-stamped by Geoff Garen.
17229
17230        Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world.
17231
17232        * Configurations/FeatureDefines.xcconfig:
17233
172342009-07-16  Yong Li  <yong.li@torchmobile.com>
17235
17236         Reviewed by George Staikos.
17237
17238         https://bugs.webkit.org/show_bug.cgi?id=27320
17239         _countof is only included in CE6; for CE5 we need to define it ourself
17240
17241         * wtf/Platform.h:
17242
172432009-07-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
17244
17245        Reviewed by Oliver Hunt.
17246
17247        Workers + garbage collector: weird crashes
17248        https://bugs.webkit.org/show_bug.cgi?id=27077
17249
17250        We need to unlink cached method call sites when a function is destroyed.
17251
17252        * JavaScriptCore.xcodeproj/project.pbxproj:
17253        * bytecode/CodeBlock.cpp:
17254        (JSC::CodeBlock::~CodeBlock):
17255        (JSC::CodeBlock::unlinkCallers):
17256        * jit/JIT.cpp:
17257        (JSC::JIT::unlinkMethodCall):
17258        * jit/JIT.h:
17259
172602009-07-15  Steve Falkenburg  <sfalken@apple.com>
17261
17262        Windows Build fix.
17263
17264        Visual Studio reset our intermediate directory on us.
17265        This sets it back.
17266
17267        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17268        * JavaScriptCore.vcproj/testapi/testapi.vcproj:
17269
172702009-07-15  Kwang Yul Seo  <skyul@company100.net>
17271
17272        Reviewed by Eric Seidel.
17273
17274        https://bugs.webkit.org/show_bug.cgi?id=26794
17275        Make Yacc-generated parsers to use fastMalloc/fastFree.
17276
17277        Define YYMALLOC and YYFREE to fastMalloc and fastFree
17278        respectively.
17279
17280        * parser/Grammar.y:
17281
172822009-07-15  Darin Adler  <darin@apple.com>
17283
17284        Fix a build for a particular Apple configuration.
17285
17286        * wtf/FastAllocBase.h: Change include to use "" style for
17287        including another wtf header. This is the style we use for
17288        including other public headers in the same directory.
17289
172902009-07-15  George Staikos  <george.staikos@torchmobile.com>
17291
17292        Reviewed by Adam Treat.
17293
17294        https://bugs.webkit.org/show_bug.cgi?id=27303
17295        Implement createThreadInternal for WinCE.
17296        Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
17297
17298        * wtf/ThreadingWin.cpp:
17299        (WTF::createThreadInternal):
17300
173012009-07-15  Joe Mason  <joe.mason@torchmobile.com>
17302
17303         Reviewed by George Staikos.
17304
17305         https://bugs.webkit.org/show_bug.cgi?id=27298
17306         Platform defines for WINCE.
17307         Contains changes by Yong Li <yong.li@torchmobile.com>,
17308         George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
17309
17310         * wtf/Platform.h:
17311
173122009-07-15  Yong Li  <yong.li@torchmobile.com>
17313
17314         Reviewed by Adam Treat.
17315
17316         https://bugs.webkit.org/show_bug.cgi?id=27306
17317         Use RegisterClass instead of RegisterClassEx on WinCE.
17318
17319         * wtf/win/MainThreadWin.cpp:
17320         (WTF::initializeMainThreadPlatform):
17321
173222009-07-15  Yong Li  <yong.li@torchmobile.com>
17323
17324         Reviewed by George Staikos.
17325
17326         https://bugs.webkit.org/show_bug.cgi?id=27301
17327         Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported
17328         Originally written by Yong Li <yong.li@torchmobile.com> and refactored by
17329         Joe Mason <joe.mason@torchmobile.com>
17330
17331         * wtf/Assertions.cpp: vprintf_stderr_common
17332
173332009-07-15  Yong Li  <yong.li@torchmobile.com>
17334
17335         Reviewed by George Staikos.
17336
17337         https://bugs.webkit.org/show_bug.cgi?id=27020
17338         msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false
17339
17340         * wtf/DateMath.cpp:
17341         (WTF::gregorianDateTimeToMS):
17342
173432009-07-15  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
17344
17345        Reviewed by Simon Hausmann.
17346
17347        [Qt] Cleanup - Remove obsolete code from the make system
17348        https://bugs.webkit.org/show_bug.cgi?id=27299
17349
17350        * JavaScriptCore.pro:
17351        * jsc.pro:
17352
173532009-07-07  Norbert Leser  <norbert.leser@nokia.com>
17354
17355        Reviewed by Simon Hausmann.
17356
17357        https://bugs.webkit.org/show_bug.cgi?id=27056
17358
17359        Alternate bool operator for codewarrior compiler (WINSCW).
17360        Compiler (latest b482) reports error for UnspecifiedBoolType construct:
17361        "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'"
17362
17363        Same fix as in r38391.
17364
17365        * JavaScriptCore/wtf/OwnArrayPtr.h:
17366
173672009-07-15  Norbert Leser  <norbert.leser@nokia.com>
17368
17369        Reviewed by Darin Adler.
17370
17371        Qualify include path with wtf to fix compilation
17372        on Symbian.
17373        https://bugs.webkit.org/show_bug.cgi?id=27055
17374
17375        * interpreter/Interpreter.h:
17376
173772009-07-15  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
17378
17379        Reviewed by Dave Kilzer.
17380
17381        Turn off non-portable date manipulations for SYMBIAN
17382        https://bugs.webkit.org/show_bug.cgi?id=27064
17383
17384        Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards
17385        and place the rules for controlling the guards in Platform.h.
17386        Turn off these newly introduced guards for SYMBIAN.
17387
17388        * wtf/DateMath.cpp:
17389        (WTF::calculateUTCOffset):
17390        * wtf/DateMath.h:
17391        (WTF::GregorianDateTime::GregorianDateTime):
17392        (WTF::GregorianDateTime::operator tm):
17393        * wtf/Platform.h:
17394
173952009-07-15  Norbert Leser  <norbert.leser@nokia.com>
17396
17397        Reviewed by Simon Hausmann.
17398
17399        Undef ASSERT on Symbian, to avoid excessive warnings
17400        https://bugs.webkit.org/show_bug.cgi?id=27052
17401
17402        * wtf/Assertions.h:
17403
174042009-07-15  Oliver Hunt  <oliver@apple.com>
17405
17406        Reviewed by Simon Hausmann.
17407
17408        REGRESSION: fast/js/postfix-syntax.html fails with interpreter
17409        https://bugs.webkit.org/show_bug.cgi?id=27294
17410
17411        When postfix operators operating on locals assign to the same local
17412        the order of operations has to be to store the incremented value, then
17413        store the unmodified number.  Rather than implementing this subtle
17414        semantic in the interpreter I've just made the logic explicit in the
17415        bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a
17416        local var x).
17417
17418        * parser/Nodes.cpp:
17419        (JSC::emitPostIncOrDec):
17420
174212009-07-15  Oliver Hunt  <oliver@apple.com>
17422
17423        Reviewed by Simon Hausmann.
17424
17425        REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter
17426        https://bugs.webkit.org/show_bug.cgi?id=27259
17427
17428        The interpreter was incorrectly basing its need to create the arguments object
17429        based on the presence of the callframe's argument reference rather than the local
17430        arguments reference.  Based on this it then overrode the local variable reference.
17431
17432        * interpreter/Interpreter.cpp:
17433        (JSC::Interpreter::privateExecute):
17434
174352009-07-14  Steve Falkenburg  <sfalken@apple.com>
17436
17437        Reorganize JavaScriptCore headers into:
17438        API: include/JavaScriptCore/
17439        Private: include/private/JavaScriptCore/
17440
17441        Reviewed by Darin Adler.
17442
17443        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17444        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
17445        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
17446        * JavaScriptCore.vcproj/testapi/testapi.vcproj:
17447        * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
17448
174492009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17450
17451        Reviewed by Darin Adler.
17452
17453        Change JSCell's superclass to NoncopyableCustomAllocated
17454        https://bugs.webkit.org/show_bug.cgi?id=27248
17455
17456        JSCell class customizes operator new, since Noncopyable will be
17457        inherited from FastAllocBase, NoncopyableCustomAllocated has
17458        to be used.
17459
17460        * runtime/JSCell.h:
17461
174622009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17463
17464        Reviewed by Darin Adler.
17465
17466        Change all Noncopyable inheriting visibility to public.
17467        https://bugs.webkit.org/show_bug.cgi?id=27225
17468
17469        Change all Noncopyable inheriting visibility to public because
17470        it is needed to the custom allocation framework (bug #20422).
17471
17472        * bytecode/SamplingTool.h:
17473        * bytecompiler/RegisterID.h:
17474        * interpreter/CachedCall.h:
17475        * interpreter/RegisterFile.h:
17476        * parser/Lexer.h:
17477        * parser/Parser.h:
17478        * runtime/ArgList.h:
17479        * runtime/BatchedTransitionOptimizer.h:
17480        * runtime/Collector.h:
17481        * runtime/CommonIdentifiers.h:
17482        * runtime/JSCell.h:
17483        * runtime/JSGlobalObject.h:
17484        * runtime/JSLock.h:
17485        * runtime/JSONObject.cpp:
17486        * runtime/SmallStrings.cpp:
17487        * runtime/SmallStrings.h:
17488        * wtf/CrossThreadRefCounted.h:
17489        * wtf/GOwnPtr.h:
17490        * wtf/Locker.h:
17491        * wtf/MessageQueue.h:
17492        * wtf/OwnArrayPtr.h:
17493        * wtf/OwnFastMallocPtr.h:
17494        * wtf/OwnPtr.h:
17495        * wtf/RefCounted.h:
17496        * wtf/ThreadSpecific.h:
17497        * wtf/Threading.h:
17498        * wtf/Vector.h:
17499        * wtf/unicode/Collator.h:
17500
175012009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17502
17503        Reviewed by Darin Adler.
17504
17505        Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated
17506        https://bugs.webkit.org/show_bug.cgi?id=27249
17507
17508        ParserArenaDeletable customizes operator new, to avoid double inheritance
17509        ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated.
17510
17511        * parser/Nodes.h:
17512
175132009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17514
17515        Reviewed by Darin Adler.
17516
17517        Add RefCountedCustomAllocated to RefCounted.h
17518        https://bugs.webkit.org/show_bug.cgi?id=27232
17519
17520        Some class which are inherited from RefCounted customize
17521        operator new, but RefCounted is inherited from Noncopyable
17522        which will be inherited from FastAllocBase. To avoid
17523        conflicts Noncopyable inheriting was moved down to RefCounted
17524        and to avoid double inheritance this class has been added.
17525
17526        * wtf/RefCounted.h:
17527        (WTF::RefCountedCustomAllocated::deref):
17528        (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):
17529
175302009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17531
17532        Reviewed by Darin Adler.
17533
17534        Add NoncopyableCustomAllocated to Noncopyable.h.
17535        https://bugs.webkit.org/show_bug.cgi?id=27228
17536
17537        Some classes which inherited from Noncopyable overrides operator new
17538        since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h
17539        needs to be extended with this new class to support the overriding.
17540
17541        * wtf/Noncopyable.h:
17542        (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated):
17543        (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated):
17544
175452009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17546
17547        Reviewed by Darin Adler.
17548
17549        Allow custom memory allocation control for JavaScriptCore's IdentifierTable class
17550        https://bugs.webkit.org/show_bug.cgi?id=27260
17551
17552        Inherits IdentifierTable class from FastAllocBase because it has been
17553        instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70.
17554
17555        * runtime/Identifier.cpp:
17556
175572009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
17558
17559        Reviewed by Darin Adler.
17560
17561        Allow custom memory allocation control for JavaScriptCore's Profiler class
17562        https://bugs.webkit.org/show_bug.cgi?id=27253
17563
17564        Inherits Profiler class from FastAllocBase because it has been instantiated by
17565        'new' in JavaScriptCore/profiler/Profiler.cpp:56.
17566
17567        * profiler/Profiler.h:
17568
175692009-07-06  George Staikos  <george.staikos@torchmobile.com>
17570
17571        Reviewed by Adam Treat.
17572
17573        Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura
17574
17575        https://bugs.webkit.org/show_bug.cgi?id=27030
17576        Implement custom RNG for WinCE using Mersenne Twister
17577
17578        * wtf/RandomNumber.cpp:
17579        (WTF::randomNumber):
17580        * wtf/RandomNumberSeed.h:
17581        (WTF::initializeRandomNumberGenerator):
17582        * wtf/wince/mt19937ar.c: Added.
17583        (init_genrand):
17584        (init_by_array):
17585        (genrand_int32):
17586        (genrand_int31):
17587        (genrand_real1):
17588        (genrand_real2):
17589        (genrand_real3):
17590        (genrand_res53):
17591
175922009-07-13  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
17593
17594        Unreviewed make dist build fix.
17595
17596        * GNUmakefile.am:
17597
175982009-07-13  Drew Wilson  <atwilson@google.com>
17599
17600        Reviewed by David Levin.
17601
17602        Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs
17603        https://bugs.webkit.org/show_bug.cgi?id=26932
17604
17605        Added ENABLE(SHARED_WORKERS) flag (off by default).
17606
17607        * Configurations/FeatureDefines.xcconfig:
17608
176092009-07-07  Norbert Leser  <norbert.leser@nokia.com>
17610
17611        Reviewed by Maciej Stachoviak.
17612
17613        https://bugs.webkit.org/show_bug.cgi?id=27058
17614
17615        Removed superfluous parenthesis around single expression.
17616        Compilers on Symbian platform fail to properly parse and compile.
17617
17618        * JavaScriptCore/wtf/Platform.h:
17619
176202009-07-13  Norbert Leser  <norbert.leser@nokia.com>
17621
17622        Reviewed by Maciej Stachoviak.
17623
17624        https://bugs.webkit.org/show_bug.cgi?id=27054
17625
17626        Renamed Translator to HashTranslator
17627
17628        Codewarrior compiler (WINSCW) latest b482 cannot resolve typename
17629        mismatch between template declaration and definition
17630        (HashTranslator / Translator)
17631
17632        * wtf/HashSet.h:
17633
176342009-07-13  Norbert Leser  <norbert.leser@nokia.com>
17635
17636        Reviewed by Eric Seidel.
17637
17638        https://bugs.webkit.org/show_bug.cgi?id=27053
17639
17640        Ambiguity in LabelScope initialization
17641
17642        Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve
17643        type of "0" unambiguously. Set expression explicitly to
17644        PassRefPtr<Label>::PassRefPtr()
17645
17646        * bytecompiler/BytecodeGenerator.cpp
17647
176482009-07-11  Simon Fraser  <simon.fraser@apple.com>
17649
17650        Enable support for accelerated compositing and 3d transforms on Leopard.
17651        <https://bugs.webkit.org/show_bug.cgi?id=20166>
17652        <rdar://problem/6120614>
17653
17654        Reviewed by Oliver Hunt.
17655
17656        * Configurations/FeatureDefines.xcconfig:
17657        * wtf/Platform.h:
17658
176592009-07-10  Mark Rowe  <mrowe@apple.com>
17660
17661        Second part of the "make Windows happier" dance.
17662
17663        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
17664        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
17665
176662009-07-10  Mark Rowe  <mrowe@apple.com>
17667
17668        Try and make the Windows build happy.
17669
17670        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
17671        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
17672
176732009-07-10  Kevin McCullough  <kmccullough@apple.com>
17674
17675        Reviewed by Geoffrey Garen.
17676
17677        * debugger/Debugger.h: Made this function virtual for use in WebCore's
17678        WebInspector.
17679
176802009-07-10  Kwang Yul Seo  <skyul@company100.net>
17681
17682        Reviewed by Darin Adler.
17683
17684        ParserArenaDeletable should override delete
17685        https://bugs.webkit.org/show_bug.cgi?id=26790
17686
17687        ParserArenaDeletable overrides new, but it does not override delete.
17688        ParserArenaDeletable must be freed by fastFree
17689        because it is allocated by fastMalloc.
17690
17691        * parser/NodeConstructors.h:
17692        (JSC::ParserArenaDeletable::operator delete):
17693        * parser/Nodes.h:
17694
176952009-07-10  Adam Roben  <aroben@apple.com>
17696
17697        Sort all our Xcode projects
17698
17699        Accomplished using sort-Xcode-project-file.
17700
17701        Requested by Dave Kilzer.
17702
17703        * JavaScriptCore.xcodeproj/project.pbxproj:
17704
177052009-07-09  Maciej Stachowiak  <mjs@apple.com>
17706
17707        Not reviewed, build fix.
17708
17709        Windows build fix for the last change.
17710
17711        * wtf/dtoa.cpp: Forgot to include Vector.h
17712
177132009-07-09  Maciej Stachowiak  <mjs@apple.com>
17714
17715        Reviewed by Darin Adler.
17716
17717        REGRESSION: crash in edge cases of floating point parsing.
17718        https://bugs.webkit.org/show_bug.cgi?id=27110
17719        <rdar://problem/7044458>
17720
17721        Tests: fast/css/number-parsing-crash.html
17722               fast/css/number-parsing-crash.html
17723               fast/js/number-parsing-crash.html
17724
17725        * wtf/dtoa.cpp:
17726        (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector
17727        with inline capacity
17728
17729        (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts.
17730        Added an assertion to verify that invariants are maintained.
17731
17732        All other functions are adapted fairly mechanically to the above changes.
17733        (WTF::BigInt::clear):
17734        (WTF::BigInt::size):
17735        (WTF::BigInt::resize):
17736        (WTF::BigInt::words):
17737        (WTF::BigInt::append):
17738        (WTF::multadd):
17739        (WTF::s2b):
17740        (WTF::i2b):
17741        (WTF::mult):
17742        (WTF::cmp):
17743        (WTF::diff):
17744        (WTF::b2d):
17745        (WTF::d2b):
17746        (WTF::ratio):
17747        (WTF::strtod):
17748        (WTF::quorem):
17749        (WTF::dtoa):
17750
177512009-07-09  Drew Wilson  <atwilson@google.com>
17752
17753        Reviewed by Alexey Proskuryakov.
17754
17755        Turned on CHANNEL_MESSAGING by default because the MessageChannel API
17756        can now be implemented for Web Workers and is reasonably stable.
17757
17758        * Configurations/FeatureDefines.xcconfig:
17759
177602009-07-09  Oliver Hunt  <oliver@apple.com>
17761
17762        * interpreter/Interpreter.cpp:
17763        (JSC::Interpreter::privateExecute):
17764
177652009-07-09  Oliver Hunt  <oliver@apple.com>
17766
17767        Reviewed by Darin Adler.
17768
17769        Bug 27016 - Interpreter crashes due to invalid array indexes
17770        <https://bugs.webkit.org/show_bug.cgi?id=27016>
17771
17772        Unsigned vs signed conversions results in incorrect behaviour in
17773        64bit interpreter builds.
17774
17775        * interpreter/Interpreter.cpp:
17776        (JSC::Interpreter::privateExecute):
17777
177782009-07-09  Dimitri Glazkov  <dglazkov@chromium.org>
17779
17780        Reviewed by Darin Fisher.
17781
17782        [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build.
17783        https://bugs.webkit.org/show_bug.cgi?id=27135
17784
17785        * JavaScriptCore.gypi: Added.
17786
177872009-07-09  Joe Mason  <joe.mason@torchmobile.com>
17788
17789        Reviewed by George Staikos.
17790
17791        Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
17792
17793        https://bugs.webkit.org/show_bug.cgi?id=27031
17794        Add an override for deleteOwnedPtr(HDC) on Windows
17795
17796        * wtf/OwnPtrCommon.h:
17797        * wtf/OwnPtrWin.cpp:
17798        (WTF::deleteOwnedPtr):
17799
178002009-07-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
17801
17802        Reviewed by Darin Adler.
17803
17804        Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc
17805        on SYMBIAN.
17806
17807        https://bugs.webkit.org/show_bug.cgi?id=27026
17808
17809        Based on Norbert Leser's work.
17810
17811        * jsc.cpp:
17812        (printUsageStatement):
17813        (parseArguments):
17814        * wtf/Platform.h:
17815
178162009-07-07  Gavin Barraclough  <barraclough@apple.com>
17817
17818        Reviewed by Sam Weinig.
17819
17820        Stop loading constants into the register file.
17821
17822        Instead, use high register values (highest bit bar the sign bit set) to indicate
17823        constants in the instruction stream, and when we encounter such a value load it
17824        directly from the CodeBlock.
17825
17826        Since constants are no longer copied into the register file, this patch renders
17827        the 'unexpected constant' mechanism redundant, and removes it.
17828
17829        2% improvement, thanks to Sam Weinig.
17830
17831        * bytecode/CodeBlock.cpp:
17832        (JSC::CodeBlock::dump):
17833        (JSC::CodeBlock::CodeBlock):
17834        (JSC::CodeBlock::mark):
17835        (JSC::CodeBlock::shrinkToFit):
17836        * bytecode/CodeBlock.h:
17837        (JSC::CodeBlock::isTemporaryRegisterIndex):
17838        (JSC::CodeBlock::constantRegister):
17839        (JSC::CodeBlock::isConstantRegisterIndex):
17840        (JSC::CodeBlock::getConstant):
17841        (JSC::ExecState::r):
17842        * bytecode/Opcode.h:
17843        * bytecompiler/BytecodeGenerator.cpp:
17844        (JSC::BytecodeGenerator::preserveLastVar):
17845        (JSC::BytecodeGenerator::BytecodeGenerator):
17846        (JSC::BytecodeGenerator::addConstantValue):
17847        (JSC::BytecodeGenerator::emitEqualityOp):
17848        (JSC::BytecodeGenerator::emitLoad):
17849        (JSC::BytecodeGenerator::emitResolveBase):
17850        (JSC::BytecodeGenerator::emitResolveWithBase):
17851        (JSC::BytecodeGenerator::emitNewError):
17852        * bytecompiler/BytecodeGenerator.h:
17853        (JSC::BytecodeGenerator::emitNode):
17854        * interpreter/CallFrame.h:
17855        (JSC::ExecState::noCaller):
17856        (JSC::ExecState::hasHostCallFrameFlag):
17857        (JSC::ExecState::addHostCallFrameFlag):
17858        (JSC::ExecState::removeHostCallFrameFlag):
17859        * interpreter/Interpreter.cpp:
17860        (JSC::Interpreter::resolve):
17861        (JSC::Interpreter::resolveSkip):
17862        (JSC::Interpreter::resolveGlobal):
17863        (JSC::Interpreter::resolveBase):
17864        (JSC::Interpreter::resolveBaseAndProperty):
17865        (JSC::Interpreter::resolveBaseAndFunc):
17866        (JSC::Interpreter::dumpRegisters):
17867        (JSC::Interpreter::throwException):
17868        (JSC::Interpreter::createExceptionScope):
17869        (JSC::Interpreter::privateExecute):
17870        (JSC::Interpreter::retrieveArguments):
17871        * jit/JIT.cpp:
17872        (JSC::JIT::privateCompileMainPass):
17873        * jit/JITInlineMethods.h:
17874        (JSC::JIT::emitLoadDouble):
17875        (JSC::JIT::emitLoadInt32ToDouble):
17876        * jit/JITOpcodes.cpp:
17877        (JSC::JIT::emit_op_new_error):
17878        (JSC::JIT::emit_op_enter):
17879        (JSC::JIT::emit_op_enter_with_activation):
17880        * parser/Nodes.cpp:
17881        (JSC::DeleteResolveNode::emitBytecode):
17882        (JSC::DeleteValueNode::emitBytecode):
17883        (JSC::PrefixResolveNode::emitBytecode):
17884        * runtime/JSActivation.cpp:
17885        (JSC::JSActivation::JSActivation):
17886        * wtf/Platform.h:
17887
178882009-07-07  Mark Rowe  <mrowe@apple.com>
17889
17890        Reviewed by Darin Adler.
17891
17892        Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>.
17893        Bug 27025: Crashes and regression test failures related to regexps in 64-bit
17894
17895        For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but
17896        neglects to save and restore it.  The change in handling of the output vector in r45545
17897        altered code generation so that the RegExp::match was now storing important data in rbx,
17898        which caused crashes and bogus results when it was clobbered.
17899
17900        * yarr/RegexJIT.cpp:
17901        (JSC::Yarr::RegexGenerator::generateEnter): Save rbx.
17902        (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx.
17903
179042009-07-06  Ada Chan  <adachan@apple.com>
17905
17906        Reviewed by Darin Adler and Mark Rowe.
17907
17908        Decommitted spans are added to the list of normal spans rather than
17909        the returned spans in TCMalloc_PageHeap::Delete().
17910        https://bugs.webkit.org/show_bug.cgi?id=26998
17911
17912        In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in
17913        the process of merging with neighboring spans that are also decommitted.
17914        The merged span needs to be placed in the list of returned spans (spans
17915        whose memory has been returned to the system).  Right now it's always added
17916        to the list of the normal spans which can theoretically cause thrashing.
17917
17918        * wtf/FastMalloc.cpp:
17919        (WTF::TCMalloc_PageHeap::Delete):
17920
179212009-07-05  Lars Knoll  <lars.knoll@nokia.com>
17922
17923        Reviewed by Maciej Stachowiak.
17924
17925        https://bugs.webkit.org/show_bug.cgi?id=26843
17926
17927        Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian.
17928
17929        The Metrowerks compiler on the Symbian platform moves the globally
17930        defined Hashtables into read-only memory, despite one of the members
17931        being mutable. This causes crashes at run-time due to write access to
17932        read-only memory.
17933
17934        Avoid the use of const with this compiler by introducing the
17935        JSC_CONST_HASHTABLE macro.
17936
17937        Based on idea by Norbert Leser.
17938
17939        * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW.
17940        * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables.
17941        * runtime/JSGlobalData.cpp: Import various global hashtables via the macro.
17942
179432009-07-04  Dan Bernstein  <mitz@apple.com>
17944
17945        - debug build fix
17946
17947        * runtime/RegExpConstructor.cpp:
17948        (JSC::RegExpConstructor::getLastParen):
17949
179502009-07-03  Yong Li  <yong.li@torchmobile.com>
17951
17952        Reviewed by Maciej Stachowiak (and revised slightly)
17953
17954        RegExp::match to be optimized
17955        https://bugs.webkit.org/show_bug.cgi?id=26957
17956
17957        Allow regexp matching to use Vectors with inline capacity instead of
17958        allocating a new ovector buffer every time.
17959
17960        ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall.
17961
17962        * runtime/RegExp.cpp:
17963        (JSC::RegExp::match):
17964        * runtime/RegExp.h:
17965        * runtime/RegExpConstructor.cpp:
17966        (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
17967        (JSC::RegExpConstructorPrivate::lastOvector):
17968        (JSC::RegExpConstructorPrivate::tempOvector):
17969        (JSC::RegExpConstructorPrivate::changeLastOvector):
17970        (JSC::RegExpConstructor::performMatch):
17971        (JSC::RegExpMatchesArray::RegExpMatchesArray):
17972        (JSC::RegExpMatchesArray::fillArrayInstance):
17973        (JSC::RegExpConstructor::getBackref):
17974        (JSC::RegExpConstructor::getLastParen):
17975        (JSC::RegExpConstructor::getLeftContext):
17976        (JSC::RegExpConstructor::getRightContext):
17977        * runtime/StringPrototype.cpp:
17978        (JSC::stringProtoFuncSplit):
17979
179802009-06-30  Kwang Yul Seo  <skyul@company100.net>
17981
17982        Reviewed by Eric Seidel.
17983
17984        Override operator new/delete with const std::nothrow_t& as the second
17985        argument.
17986        https://bugs.webkit.org/show_bug.cgi?id=26792
17987
17988        On Windows CE, operator new/delete, new[]/delete[] with const
17989        std::nothrow_t& must be overrided because some standard template
17990        libraries use these operators.
17991
17992        The problem occurs when memory allocated by new(size_t s, const
17993        std::nothrow_t&) is freed by delete(void* p). This causes the umatched
17994        malloc/free problem.
17995
17996        The patch overrides all new, delete, new[] and delete[] to use
17997        fastMaloc and fastFree consistently.
17998
17999        * wtf/FastMalloc.h:
18000        (throw):
18001
180022009-06-30  Gabor Loki  <loki@inf.u-szeged.hu>
18003
18004        Reviewed by Sam Weinig.
18005
18006        <https://bugs.webkit.org/show_bug.cgi?id=24986>
18007
18008        Remove unnecessary references to AssemblerBuffer.
18009
18010        * interpreter/Interpreter.cpp:
18011        * interpreter/Interpreter.h:
18012
180132009-06-29  David Levin  <levin@chromium.org>
18014
18015        Reviewed by Oliver Hunt.
18016
18017        Still seeing occasional leaks from UString::sharedBuffer code
18018        https://bugs.webkit.org/show_bug.cgi?id=26420
18019
18020        The problem is that the pointer to the memory allocation isn't visible
18021        by "leaks" due to the lower bits being used as flags.  The fix is to
18022        make the pointer visible in memory (in debug only). The downside of
18023        this fix that the memory allocated by sharedBuffer will still look like
18024        a leak in non-debug builds when any flags are set.
18025
18026        * wtf/PtrAndFlags.h:
18027        (WTF::PtrAndFlags::set):
18028
180292009-06-29  Sam Weinig  <sam@webkit.org>
18030
18031        Reviewed by Mark Rowe.
18032
18033        Remove more unused scons support.
18034
18035        * SConstruct: Removed.
18036
180372009-06-29  Oliver Hunt  <oliver@apple.com>
18038
18039        Reviewed by Gavin Barraclough.
18040
18041        <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters
18042        <https://bugs.webkit.org/show_bug.cgi?id=26802>
18043
18044        In the original JSON.parse patch unicode was handled correctly, however in some last
18045        minute "clean up" I oversimplified isSafeStringCharacter.  This patch corrects this bug.
18046
18047        * runtime/LiteralParser.cpp:
18048        (JSC::isSafeStringCharacter):
18049        (JSC::LiteralParser::Lexer::lexString):
18050
180512009-06-26  Oliver Hunt  <oliver@apple.com>
18052
18053        Reviewed by Dan Bernstein.
18054
18055        <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746)
18056        <https://bugs.webkit.org/show_bug.cgi?id=26746>
18057
18058        Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id.  Clearly this
18059        is less than correct.  This patch corrects that error.
18060
18061        * interpreter/Interpreter.cpp:
18062        (JSC::Interpreter::tryCacheGetByID):
18063
180642009-06-26  Eric Seidel  <eric@webkit.org>
18065
18066        No review, only rolling out r45259.
18067
18068        Roll out r45259 after crash appeared on the bots:
18069        plugins/undefined-property-crash.html
18070        ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize
18071        (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278
18072        void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap])
18073
18074        * runtime/DateInstance.cpp:
18075        * runtime/Identifier.cpp:
18076        * runtime/Lookup.h:
18077        * runtime/RegExpConstructor.cpp:
18078        * runtime/RegExpObject.h:
18079        * runtime/ScopeChain.h:
18080        * runtime/UString.h:
18081
180822009-06-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
18083
18084        Reviewed by Simon Hausmann.
18085
18086        Add support for QDataStream operators to Vector.
18087
18088        * wtf/Vector.h:
18089        (WTF::operator<<):
18090        (WTF::operator>>):
18091
180922009-06-24  Sam Weinig  <sam@webkit.org>
18093
18094        Reviewed by Gavin Barraclough.
18095
18096        Make the opcode sampler work once again.
18097
18098        * jit/JIT.h:
18099        (JSC::JIT::compileGetByIdProto):
18100        (JSC::JIT::compileGetByIdSelfList):
18101        (JSC::JIT::compileGetByIdProtoList):
18102        (JSC::JIT::compileGetByIdChainList):
18103        (JSC::JIT::compileGetByIdChain):
18104        (JSC::JIT::compilePutByIdTransition):
18105        (JSC::JIT::compileCTIMachineTrampolines):
18106        (JSC::JIT::compilePatchGetArrayLength):
18107        * jit/JITStubCall.h:
18108        (JSC::JITStubCall::call):
18109
181102009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18111
18112        Reviewed by Maciej Stachowiak.
18113
18114        Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid
18115        unnecessary WTF:: usings.
18116        Remove existing unnecessary WTF:: usings.
18117
18118        * interpreter/Interpreter.h:
18119        * profiler/CallIdentifier.h:
18120        * runtime/ScopeChain.h:
18121        * wtf/FastAllocBase.h:
18122
181232009-06-24  David Levin  <levin@chromium.org>
18124
18125        Fix all builds.
18126
18127        * bytecode/CodeBlock.h:
18128        * bytecompiler/BytecodeGenerator.h:
18129        * interpreter/Register.h:
18130
181312009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18132
18133        Reviewed by Maciej Stachowiak.
18134
18135        https://bugs.webkit.org/show_bug.cgi?id=26677
18136
18137        Inherits CodeBlock class from FastAllocBase because it
18138        has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217.
18139
18140        * bytecode/CodeBlock.h:
18141
181422009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18143
18144        Reviewed by Maciej Stachowiak.
18145
18146        https://bugs.webkit.org/show_bug.cgi?id=26676
18147
18148        Inherits BytecodeGenerator class from FastAllocBase because it has been
18149        instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892.
18150
18151        * bytecompiler/BytecodeGenerator.h:
18152
181532009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18154
18155        Reviewed by Maciej Stachowiak.
18156
18157        https://bugs.webkit.org/show_bug.cgi?id=26675
18158
18159        Inherits Register class from FastAllocBase because it has been
18160        instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149.
18161
18162        * interpreter/Register.h:
18163
181642009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18165
18166        Reviewed by Darin Adler.
18167
18168        https://bugs.webkit.org/show_bug.cgi?id=26674
18169
18170        Inherits HashMap class from FastAllocBase because it has been
18171        instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458.
18172
18173        * wtf/HashMap.h:
18174
181752009-06-24  Oliver Hunt  <oliver@apple.com>
18176
18177        Reviewed by Darin Adler.
18178
18179        <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research'
18180
18181        The problem was caused by the page returned with a function using a
18182        var declaration list containing around ~3000 variables.  The solution
18183        to this is to flatten the comma expression representation and make
18184        codegen comma expressions and initializer lists iterative rather than
18185        recursive.
18186
18187        * parser/Grammar.y:
18188        * parser/NodeConstructors.h:
18189        (JSC::CommaNode::CommaNode):
18190        * parser/Nodes.cpp:
18191        (JSC::CommaNode::emitBytecode):
18192        * parser/Nodes.h:
18193        (JSC::ExpressionNode::isCommaNode):
18194        (JSC::CommaNode::isCommaNode):
18195        (JSC::CommaNode::append):
18196
181972009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18198
18199        Reviewed by Maciej Stachowiak.
18200
18201        https://bugs.webkit.org/show_bug.cgi?id=26645
18202
18203        Inherits ScopeChainNode class from FastAllocBase because it has been
18204        instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95.
18205
18206        * wtf/RefPtr.h:
18207
182082009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18209
18210        Reviewed by Darin Adler.
18211
18212        https://bugs.webkit.org/show_bug.cgi?id=26648
18213
18214        Inherits Deque class from FastAllocBase because it has been
18215        instantiated by 'new' with DEFINE_STATIC_LOCAL macro in
18216        JavaScriptCore/wtf/MainThread.cpp:62.
18217
18218        * wtf/Deque.h:
18219
182202009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18221
18222        Reviewed by Darin Adler.
18223
18224        https://bugs.webkit.org/show_bug.cgi?id=26644
18225
18226        Inherits RefPtr class from FastAllocBase because it has been
18227        instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41.
18228
18229        * wtf/RefPtr.h:
18230
182312009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18232
18233        Reviewed by Darin Adler.
18234
18235        Inherits HashSet class from FastAllocBase, because it has been
18236        instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116.
18237
18238        * wtf/HashSet.h:
18239
182402009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18241
18242        Reviewed by Darin Adler.
18243
18244        Inherits Vector class from FastAllocBase because it has been
18245        instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633.
18246
18247        * wtf/Vector.h:
18248
182492009-06-24  Norbert Leser  <norbert.leser@nokia.com>
18250
18251        Reviewed by Maciej Stachoviak.
18252
18253        The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance
18254        (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.).
18255        Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode),
18256        the stack overflows immediately on Symbian hardware (max. 80 kB).
18257        Proposed change allocates generator objects on heap.
18258        Performance impact (if any) should be negligible and change is proposed as general fix,
18259        rather than ifdef'd for SYMBIAN.
18260
18261        * parser/Nodes.cpp:
18262        (JSC::ProgramNode::generateBytecode):
18263        (JSC::EvalNode::generateBytecode):
18264        (JSC::EvalNode::bytecodeForExceptionInfoReparse):
18265        (JSC::FunctionBodyNode::generateBytecode):
18266        (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
18267
182682009-06-23  Oliver Hunt  <oliver@apple.com>
18269
18270        Reviewed by Gavin Barraclough.
18271
18272        <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593)
18273        <https://bugs.webkit.org/show_bug.cgi?id=26593>
18274
18275        Do not attempt to cache structure chains if they contain a dictionary at any level.
18276
18277        * interpreter/Interpreter.cpp:
18278        (JSC::Interpreter::tryCachePutByID):
18279        (JSC::Interpreter::tryCacheGetByID):
18280        * jit/JITStubs.cpp:
18281        (JSC::JITThunks::tryCachePutByID):
18282        * runtime/Structure.cpp:
18283        (JSC::Structure::getEnumerablePropertyNames):
18284        (JSC::Structure::addPropertyTransition):
18285        * runtime/StructureChain.cpp:
18286        (JSC::StructureChain::isCacheable):
18287        * runtime/StructureChain.h:
18288
182892009-06-23  Yong Li  <yong.li@torchmobile.com>
18290
18291        Reviewed by George Staikos.
18292
18293        https://bugs.webkit.org/show_bug.cgi?id=26654
18294        Add the proper export define for the JavaScriptCore API when building for WINCE.
18295
18296        * API/JSBase.h:
18297
182982009-06-23  Joe Mason  <joe.mason@torchmobile.com>
18299
18300        Reviewed by Adam Treat.
18301
18302        Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
18303
18304        https://bugs.webkit.org/show_bug.cgi?id=26611
18305        Implement currentThreadStackBase on WINCE by adding a global,
18306        g_stackBase, which must be set to the address of a local variable
18307        by the caller before calling any WebKit function that invokes JSC.
18308
18309        * runtime/Collector.cpp:
18310        (JSC::isPageWritable):
18311        (JSC::getStackBase):
18312          Starts at the top of the stack and returns the entire range of
18313          consecutive writable pages as an estimate of the actual stack.
18314          This will be much bigger than the actual stack range, so some
18315          dead objects can't be collected, but it guarantees live objects
18316          aren't collected prematurely.
18317
18318        (JSC::currentThreadStackBase):
18319          On WinCE, returns g_stackBase if set or call getStackBase as a
18320          fallback if not.
18321
183222009-06-23  Oliver Hunt  <oliver@apple.com>
18323
18324        Reviewed by Alexey Proskuryakov.
18325
18326        Fix stupid performance problem in the LiteralParser
18327
18328        The LiteralParser was making a new UString in order to use
18329        toDouble, however UString's toDouble allows a much wider range
18330        of numberic strings than the LiteralParser accepts, and requires
18331        an additional heap allocation or two for the construciton of the
18332        UString.  To rectify this we just call WTF::dtoa directly using
18333        a stack allocated buffer to hold the validated numeric literal.
18334
18335        * runtime/LiteralParser.cpp:
18336        (JSC::LiteralParser::Lexer::lexNumber):
18337        (JSC::LiteralParser::parse):
18338        * runtime/LiteralParser.h:
18339
183402009-06-22  Oliver Hunt  <oliver@apple.com>
18341
18342        Reviewed by Alexey Proskuryakov.
18343
18344        Bug 26640: JSON.stringify needs to special case Boolean objects
18345        <https://bugs.webkit.org/show_bug.cgi?id=26640>
18346
18347        Add special case handling of the Boolean object so we match current
18348        ES5 errata.
18349
18350        * runtime/JSONObject.cpp:
18351        (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString
18352        (JSC::gap):
18353        (JSC::Stringifier::appendStringifiedValue):
18354
183552009-06-22  Oliver Hunt  <oliver@apple.com>
18356
18357        Reviewed by Darin Adler.
18358
18359        Bug 26591: Support revivers in JSON.parse
18360        <https://bugs.webkit.org/show_bug.cgi?id=26591>
18361
18362        Add reviver support to JSON.parse.  This completes the JSON object.
18363
18364        * runtime/JSONObject.cpp:
18365        (JSC::Walker::Walker):
18366        (JSC::Walker::callReviver):
18367        (JSC::Walker::walk):
18368        (JSC::JSONProtoFuncParse):
18369
183702009-06-21  Oliver Hunt  <oliver@apple.com>
18371
18372        Reviewed by Darin Adler.
18373
18374        Bug 26592: Support standard toJSON functions
18375        <https://bugs.webkit.org/show_bug.cgi?id=26592>
18376
18377        Add support for the standard Date.toJSON function.
18378
18379        * runtime/DatePrototype.cpp:
18380        (JSC::dateProtoFuncToJSON):
18381
183822009-06-21  Oliver Hunt  <oliver@apple.com>
18383
18384        Reviewed by Sam Weinig.
18385
18386        Bug 26594: JSC needs to support Date.toISOString
18387        <https://bugs.webkit.org/show_bug.cgi?id=26594>
18388
18389        Add support for Date.toISOString.
18390
18391        * runtime/DatePrototype.cpp:
18392        (JSC::dateProtoFuncToISOString):
18393
183942009-06-21  Oliver Hunt  <oliver@apple.com>
18395
18396        Remove dead code.
18397
18398        * runtime/LiteralParser.cpp:
18399        (JSC::LiteralParser::parse):
18400
184012009-06-21  Oliver Hunt  <oliver@apple.com>
18402
18403        Reviewed by Darin Adler and Cameron Zwarich.
18404
18405        Bug 26587: Support JSON.parse
18406        <https://bugs.webkit.org/show_bug.cgi?id=26587>
18407
18408        Extend the LiteralParser to support the full strict JSON
18409        grammar, fix a few places where the grammar was incorrectly
18410        lenient.   Doesn't yet support the JSON.parse reviver function
18411        but that does not block the JSON.parse functionality itself.
18412
18413        * interpreter/Interpreter.cpp:
18414        (JSC::Interpreter::callEval):
18415        * runtime/JSGlobalObjectFunctions.cpp:
18416        (JSC::globalFuncEval):
18417        * runtime/JSONObject.cpp:
18418        (JSC::JSONProtoFuncParse):
18419        * runtime/LiteralParser.cpp:
18420        (JSC::LiteralParser::Lexer::lex):
18421        (JSC::isSafeStringCharacter):
18422        (JSC::LiteralParser::Lexer::lexString):
18423        (JSC::LiteralParser::parse):
18424        * runtime/LiteralParser.h:
18425        (JSC::LiteralParser::LiteralParser):
18426        (JSC::LiteralParser::tryJSONParse):
18427        (JSC::LiteralParser::):
18428        (JSC::LiteralParser::Lexer::Lexer):
18429
184302009-06-21  David Levin  <levin@chromium.org>
18431
18432        Reviewed by NOBODY (speculative build fix for windows).
18433
18434        Simply removed some whitespace form this file to make windows build wtf and
18435        hopefully copy the new MessageQueque.h so that WebCore picks it up.
18436
18437        * wtf/Assertions.cpp:
18438
184392009-06-21  Drew Wilson  <atwilson@google.com>
18440
18441        Reviewed by David Levin.
18442
18443        <https://bugs.webkit.org/show_bug.cgi?id=25043>
18444        Added support for multi-threaded MessagePorts.
18445
18446        * wtf/MessageQueue.h:
18447        (WTF::::appendAndCheckEmpty):
18448            Added API to test whether the queue was empty before adding an element.
18449
184502009-06-20  David D. Kilzer  <ddkilzer@webkit.org>
18451
18452        Fix namespace comment in SegmentedVector.h
18453
18454        * wtf/SegmentedVector.h: Updated namespace comment to reflect
18455        new namespace after r44897.
18456
184572009-06-20  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
18458
18459        Bug 24986: ARM JIT port
18460        <https://bugs.webkit.org/show_bug.cgi?id=24986>
18461
18462        Reviewed by Oliver Hunt.
18463
18464        An Iterator added for SegmentedVector. Currently
18465        only the pre ++ operator is supported.
18466
18467        * wtf/SegmentedVector.h:
18468        (WTF::SegmentedVectorIterator::~SegmentedVectorIterator):
18469        (WTF::SegmentedVectorIterator::operator*):
18470        (WTF::SegmentedVectorIterator::operator->):
18471        (WTF::SegmentedVectorIterator::operator++):
18472        (WTF::SegmentedVectorIterator::operator==):
18473        (WTF::SegmentedVectorIterator::operator!=):
18474        (WTF::SegmentedVectorIterator::operator=):
18475        (WTF::SegmentedVectorIterator::SegmentedVectorIterator):
18476        (WTF::SegmentedVector::alloc):
18477        (WTF::SegmentedVector::begin):
18478        (WTF::SegmentedVector::end):
18479
184802009-06-20  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
18481
18482        Bug 24986: ARM JIT port
18483        <https://bugs.webkit.org/show_bug.cgi?id=24986>
18484
18485        Reviewed by Oliver Hunt.
18486
18487        Move SegmentedVector to /wtf subdirectory
18488        and change "namespace JSC" to "namespace WTF"
18489
18490        Additional build file updates by David Kilzer.
18491
18492        * GNUmakefile.am: Updated path to SegmentedVector.h.
18493        * JavaScriptCore.order: Updated SegmentedVector namespace from
18494        JSC to WTF in mangled C++ method name.
18495        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
18496        Removed reference to bytecompiler\SegmentedVector.h.
18497        * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to
18498        wtf\SegmentedVector.h.
18499        * JavaScriptCore.xcodeproj/project.pbxproj: Moved
18500        SegmentedVector.h definition from bytecompiler subdirectory to
18501        wtf subdirectory.
18502        * bytecompiler/BytecodeGenerator.h: Updated #include path to
18503        SegmentedVector.h and prepended WTF:: namespace to its use.
18504        * parser/Lexer.h: Ditto.
18505        * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h.
18506        (WTF::SegmentedVector::SegmentedVector):
18507        (WTF::SegmentedVector::~SegmentedVector):
18508        (WTF::SegmentedVector::size):
18509        (WTF::SegmentedVector::at):
18510        (WTF::SegmentedVector::operator[]):
18511        (WTF::SegmentedVector::last):
18512        (WTF::SegmentedVector::append):
18513        (WTF::SegmentedVector::removeLast):
18514        (WTF::SegmentedVector::grow):
18515        (WTF::SegmentedVector::clear):
18516        (WTF::SegmentedVector::deleteAllSegments):
18517        (WTF::SegmentedVector::segmentExistsFor):
18518        (WTF::SegmentedVector::segmentFor):
18519        (WTF::SegmentedVector::subscriptFor):
18520        (WTF::SegmentedVector::ensureSegmentsFor):
18521        (WTF::SegmentedVector::ensureSegment):
18522
185232009-06-19  Gavin Barraclough  <barraclough@apple.com>
18524
18525        Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h).
18526
18527        * jit/JIT.cpp:
18528        (JSC::JIT::privateCompile):
18529        (JSC::JIT::privateCompileCTIMachineTrampolines):
18530        (JSC::JIT::emitGetVariableObjectRegister):
18531        (JSC::JIT::emitPutVariableObjectRegister):
18532        * jit/JIT.h:
18533        * jit/JITArithmetic.cpp:
18534        (JSC::JIT::emit_op_rshift):
18535        (JSC::JIT::emitSlow_op_jnless):
18536        (JSC::JIT::emitSlow_op_jnlesseq):
18537        (JSC::JIT::compileBinaryArithOp):
18538        * jit/JITCall.cpp:
18539        (JSC::JIT::compileOpCallInitializeCallFrame):
18540        (JSC::JIT::compileOpCall):
18541        * jit/JITInlineMethods.h:
18542        (JSC::JIT::restoreArgumentReference):
18543        (JSC::JIT::checkStructure):
18544        * jit/JITOpcodes.cpp:
18545        (JSC::JIT::emit_op_instanceof):
18546        (JSC::JIT::emit_op_get_scoped_var):
18547        (JSC::JIT::emit_op_put_scoped_var):
18548        (JSC::JIT::emit_op_construct_verify):
18549        (JSC::JIT::emit_op_resolve_global):
18550        (JSC::JIT::emit_op_jeq_null):
18551        (JSC::JIT::emit_op_jneq_null):
18552        (JSC::JIT::emit_op_to_jsnumber):
18553        (JSC::JIT::emit_op_catch):
18554        (JSC::JIT::emit_op_eq_null):
18555        (JSC::JIT::emit_op_neq_null):
18556        (JSC::JIT::emit_op_convert_this):
18557        (JSC::JIT::emit_op_profile_will_call):
18558        (JSC::JIT::emit_op_profile_did_call):
18559        (JSC::JIT::emitSlow_op_get_by_val):
18560        * jit/JITPropertyAccess.cpp:
18561        (JSC::JIT::emit_op_get_by_val):
18562        (JSC::JIT::emit_op_put_by_val):
18563        (JSC::JIT::emit_op_method_check):
18564        (JSC::JIT::compileGetByIdHotPath):
18565        (JSC::JIT::emit_op_put_by_id):
18566        (JSC::JIT::compilePutDirectOffset):
18567        (JSC::JIT::compileGetDirectOffset):
18568        (JSC::JIT::privateCompilePutByIdTransition):
18569        (JSC::JIT::privateCompilePatchGetArrayLength):
18570        * jit/JITStubs.cpp:
18571        (JSC::JITThunks::JITThunks):
18572
185732009-06-19  Gavin Barraclough  <barraclough@apple.com>
18574
18575        Reviewed by NOBODY (Windows build fix).
18576
18577        * jit/JIT.h:
18578        * jit/JITInlineMethods.h:
18579
185802009-06-19  Gabor Loki  <loki@inf.u-szeged.hu>
18581
18582        Reviewed by Gavin Barraclough.
18583
18584        Reorganize ARM architecture specific macros.
18585        Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7).
18586
18587        Bug 24986: ARM JIT port
18588        <https://bugs.webkit.org/show_bug.cgi?id=24986>
18589
18590        * assembler/ARMv7Assembler.h:
18591        * assembler/AbstractMacroAssembler.h:
18592        (JSC::AbstractMacroAssembler::Imm32::Imm32):
18593        * assembler/MacroAssembler.h:
18594        * assembler/MacroAssemblerCodeRef.h:
18595        (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
18596        * jit/ExecutableAllocator.h:
18597        (JSC::ExecutableAllocator::cacheFlush):
18598        * jit/JIT.h:
18599        * jit/JITInlineMethods.h:
18600        (JSC::JIT::restoreArgumentReferenceForTrampoline):
18601        * jit/JITStubs.cpp:
18602        * jit/JITStubs.h:
18603        * wtf/Platform.h:
18604        * yarr/RegexJIT.cpp:
18605        (JSC::Yarr::RegexGenerator::generateEnter):
18606        (JSC::Yarr::RegexGenerator::generateReturn):
18607
186082009-06-19  Gavin Barraclough  <barraclough@apple.com>
18609
18610        Reviewed by Oliver Hunt.
18611
18612        Fix armv7 JIT build issues.
18613
18614        Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types),
18615        and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros.
18616
18617        * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects).
18618        * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor.
18619
18620        * jit/JIT.cpp:
18621        * jit/JIT.h:
18622        * jit/JITInlineMethods.h:
18623        (JSC::JIT::restoreArgumentReference):
18624        * jit/JITOpcodes.cpp:
18625        (JSC::JIT::emit_op_catch):
18626        * jit/JITStubs.cpp:
18627        (JSC::JITThunks::JITThunks):
18628
186292009-06-19  Adam Treat  <adam.treat@torchmobile.com>
18630
18631        Blind attempt at build fix.
18632
18633        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18634        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
18635
186362009-06-19  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18637
18638        Reviewed by Oliver Hunt.
18639
18640        Inherits CallIdentifier struct from FastAllocBase because it has been
18641        instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86.
18642
18643        * wtf/HashCountedSet.h:
18644
186452009-06-19  Adam Treat  <adam.treat@torchmobile.com>
18646
18647        Reviewed by Oliver Hunt.
18648
18649        https://bugs.webkit.org/show_bug.cgi?id=26540
18650        Modify the test shell to add a new function 'checkSyntax' that will
18651        only parse the source instead of executing it. In this way we can test
18652        pure parsing performance against some of the larger scripts in the wild.
18653
18654        * jsc.cpp:
18655        (GlobalObject::GlobalObject):
18656        (functionCheckSyntax):
18657
186582009-06-19  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
18659
18660        Reviewed by Darin Adler.
18661
18662        Inherits HashCountedSet class from FastAllocBase because it has been
18663        instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095.
18664
18665        * wtf/HashCountedSet.h:
18666
186672009-06-19  Yong Li  <yong.li@torchmobile.com>
18668
18669        Reviewed by George Staikos.
18670
18671        https://bugs.webkit.org/show_bug.cgi?id=26558
18672        Declare these symbols extern for WINCE as they are provided by libce.
18673
18674        * runtime/DateConstructor.cpp:
18675        * runtime/DatePrototype.cpp:
18676        (JSC::formatLocaleDate):
18677
186782009-06-19  Oliver Hunt  <oliver@apple.com>
18679
18680        Reviewed by Maciej Stachowiak.
18681
18682        <rdar://problem/6988973> ScopeChain leak in interpreter builds
18683
18684        Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT)
18685        path.
18686
18687        * runtime/JSFunction.cpp:
18688        (JSC::JSFunction::~JSFunction):
18689        * wtf/Platform.h:
18690
186912009-06-19  Yong Li  <yong.li@torchmobile.com>
18692
18693        Reviewed by George Staikos.
18694
18695        https://bugs.webkit.org/show_bug.cgi?id=26543
18696        Windows CE uses 'GetLastError' instead of 'errno.'
18697
18698        * interpreter/RegisterFile.h:
18699        (JSC::RegisterFile::RegisterFile):
18700        (JSC::RegisterFile::grow):
18701
187022009-06-19  David Levin  <levin@chromium.org>
18703
18704        Reviewed by NOBODY (Windows build fix).
18705
18706        Add export for Windows corresponding to OSX export done in r44844.
18707        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18708        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
18709
187102009-06-18  Oliver Hunt  <oliver@apple.com>
18711
18712        Reviewed by Gavin "Viceroy of Venezuela" Barraclough.
18713
18714        Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected
18715        <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385>
18716
18717        We need to make sure that each native function instance correctly unlinks any references to it
18718        when it is collected.  Allowing this to happen required a few changes:
18719            * Every native function needs a codeblock to track the link information
18720            * To have this codeblock, every function now also needs its own functionbodynode
18721              so we no longer get to have a single shared instance.
18722            * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode
18723
18724        * JavaScriptCore.exp:
18725        * bytecode/CodeBlock.cpp:
18726        (JSC::CodeBlock::CodeBlock):
18727           Constructor for NativeCode CodeBlock
18728        (JSC::CodeBlock::derefStructures):
18729        (JSC::CodeBlock::refStructures):
18730        (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
18731        (JSC::CodeBlock::handlerForBytecodeOffset):
18732        (JSC::CodeBlock::lineNumberForBytecodeOffset):
18733        (JSC::CodeBlock::expressionRangeForBytecodeOffset):
18734        (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
18735        (JSC::CodeBlock::functionRegisterForBytecodeOffset):
18736        (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
18737        (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
18738        (JSC::CodeBlock::setJITCode):
18739           Add assertions to ensure we don't try and use NativeCode CodeBlocks as
18740           a normal codeblock.
18741
18742        * bytecode/CodeBlock.h:
18743        (JSC::):
18744        (JSC::CodeBlock::source):
18745        (JSC::CodeBlock::sourceOffset):
18746        (JSC::CodeBlock::evalCodeCache):
18747        (JSC::CodeBlock::createRareDataIfNecessary):
18748          More assertions.
18749
18750        * jit/JIT.cpp:
18751        (JSC::JIT::privateCompileCTIMachineTrampolines):
18752        (JSC::JIT::linkCall):
18753          Update logic to allow native function caching
18754
18755        * jit/JITStubs.cpp:
18756        * parser/Nodes.cpp:
18757        (JSC::FunctionBodyNode::createNativeThunk):
18758        (JSC::FunctionBodyNode::isHostFunction):
18759        * parser/Nodes.h:
18760        * runtime/JSFunction.cpp:
18761        (JSC::JSFunction::JSFunction):
18762        (JSC::JSFunction::~JSFunction):
18763        (JSC::JSFunction::mark):
18764        * runtime/JSGlobalData.cpp:
18765        (JSC::JSGlobalData::~JSGlobalData):
18766        * runtime/JSGlobalData.h:
18767
187682009-06-18  Gavin Barraclough  <barraclough@apple.com>
18769
18770        Reviewed by NOBODY (Windows build fix).
18771
18772        * wtf/DateMath.cpp:
18773        (WTF::calculateUTCOffset):
18774
187752009-06-18  Gavin Barraclough  <barraclough@apple.com>
18776
18777        Reviewed by Geoff Garen.
18778
18779        Timezone calculation incorrect in Venezuela.
18780
18781        https://bugs.webkit.org/show_bug.cgi?id=26531
18782        <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3
18783
18784        The problem is that we're calculating the timezone relative to 01/01/2000,
18785        but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007.
18786        According to the spec, section 15.9.1.9 states "the time since the beginning
18787        of the year", presumably meaning the *current* year.  Change the calculation
18788        to be based on whatever the current year is, rather than a canned date.
18789
18790        No performance impact.
18791
18792        * wtf/DateMath.cpp:
18793        (WTF::calculateUTCOffset):
18794
187952009-06-18  Gavin Barraclough  <barraclough@apple.com>
18796
18797        Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig).
18798
18799        (Reintroducing patch added in r44492, and reverted in r44796.)
18800
18801        Change the implementation of op_throw so the stub function always modifies its
18802        return address - if it doesn't find a 'catch' it will switch to a trampoline
18803        to force a return from JIT execution.  This saves memory, by avoiding the need
18804        for a unique return for every op_throw.
18805
18806        * jit/JITOpcodes.cpp:
18807        (JSC::JIT::emit_op_throw):
18808            JITStubs::cti_op_throw now always changes its return address,
18809            remove return code generated after the stub call (this is now
18810            handled by ctiOpThrowNotCaught).
18811        * jit/JITStubs.cpp:
18812        (JSC::):
18813            Add ctiOpThrowNotCaught definitions.
18814        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
18815            Change cti_op_throw to always change its return address.
18816        * jit/JITStubs.h:
18817            Add ctiOpThrowNotCaught declaration.
18818
188192009-06-18  Kevin McCullough  <kmccullough@apple.com>
18820
18821        Reviewed by Oliver Hunt.
18822
18823        <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit
18824
18825        - Exposed functions now needed by WebCore.
18826
18827        * JavaScriptCore.exp:
18828
188292009-06-17  Darin Adler  <darin@apple.com>
18830
18831        Reviewed by Oliver Hunt.
18832
18833        Bug 26429: Make JSON.stringify non-recursive so it can handle objects
18834        of arbitrary complexity
18835        https://bugs.webkit.org/show_bug.cgi?id=26429
18836
18837        For marking I decided not to use gcProtect, because this is inside the engine
18838        so it's easy enough to just do marking. And that darned gcProtect does locking!
18839        Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor
18840        for that class says "FIXME: Remove all clients of this API, then remove this API."
18841
18842        * runtime/Collector.cpp:
18843        (JSC::Heap::collect): Add a call to JSONObject::markStringifiers.
18844
18845        * runtime/CommonIdentifiers.cpp:
18846        (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier.
18847        * runtime/CommonIdentifiers.h: Ditto.
18848
18849        * runtime/JSGlobalData.cpp:
18850        (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0.
18851        * runtime/JSGlobalData.h: Added firstStringifierToMark.
18852
18853        * runtime/JSONObject.cpp: Cut down the includes to the needed ones only.
18854        (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string
18855        objects to get their number and string values.
18856        (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used
18857        to wrap an identifier or integer so we don't have to do any work unless we
18858        actually call a replacer.
18859        (JSC::ReplacerPropertyName::value): Added.
18860        (JSC::gap): Added. Helper function for the Stringifier constructor.
18861        (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added.
18862        The class is used to wrap an identifier or integer so we don't have to
18863        allocate a number or string until we actually call toJSON or a replacer.
18864        (JSC::PropertyNameForFunctionCall::asJSValue): Added.
18865        (JSC::Stringifier::Stringifier): Updated and moved out of the class
18866        definition. Added code to hook this into a singly linked list for marking.
18867        (JSC::Stringifier::~Stringifier): Remove from the singly linked list.
18868        (JSC::Stringifier::mark): Mark all the objects in the holder stacks.
18869        (JSC::Stringifier::stringify): Updated.
18870        (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit.
18871        (JSC::Stringifier::toJSON): Renamed from toJSONValue.
18872        (JSC::Stringifier::appendStringifiedValue): Renamed from stringify.
18873        Added code to use the m_holderStack to do non-recursive stringify of
18874        objects and arrays. This code also uses the timeout checker since in
18875        pathological cases it could be slow even without calling into the
18876        JavaScript virtual machine.
18877        (JSC::Stringifier::willIndent): Added.
18878        (JSC::Stringifier::indent): Added.
18879        (JSC::Stringifier::unindent): Added.
18880        (JSC::Stringifier::startNewLine): Added.
18881        (JSC::Stringifier::Holder::Holder): Added.
18882        (JSC::Stringifier::Holder::appendNextProperty): Added. This is the
18883        function that handles the format of arrays and objects.
18884        (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom
18885        of the file so the JSONObject class is not interleaved with the
18886        Stringifier class.
18887        (JSC::JSONObject::markStringifiers): Added. Calls mark.
18888        (JSC::JSONProtoFuncStringify): Streamlined the code here. The code
18889        to compute the gap string is now a separate function.
18890
18891        * runtime/JSONObject.h: Made everything private. Added markStringifiers.
18892
188932009-06-17  Oliver Hunt  <oliver@apple.com>
18894
18895        Reviewed by Gavin Barraclough.
18896
18897        <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com
18898
18899        Roll out r43849 as it appears that we cannot rely on the address of
18900        an objects property storage being constant even if the structure is
18901        unchanged.
18902
18903        * jit/JIT.h:
18904        * jit/JITPropertyAccess.cpp:
18905        (JSC::JIT::compileGetDirectOffset):
18906        (JSC::JIT::privateCompileGetByIdProto):
18907        (JSC::JIT::privateCompileGetByIdProtoList):
18908        (JSC::JIT::privateCompileGetByIdChainList):
18909        (JSC::JIT::privateCompileGetByIdChain):
18910
189112009-06-17  Gavin Barraclough  <barraclough@apple.com>
18912
18913        Rubber Stamped by Mark Rowe.
18914
18915        Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>.
18916
18917        * jit/JITOpcodes.cpp:
18918        (JSC::JIT::emit_op_throw):
18919        * jit/JITStubs.cpp:
18920        (JSC::):
18921        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
18922        * jit/JITStubs.h:
18923
189242009-06-17  Gavin Barraclough  <barraclough@apple.com>
18925
18926        Reviewed by Mark Rowe.
18927
18928        <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit
18929
18930        On 64-bit, NaN-encoded values must be detagged before they can be used in rshift.
18931
18932        No performance impact.
18933
18934        * jit/JITArithmetic.cpp:
18935        (JSC::JIT::emit_op_rshift):
18936
189372009-06-17  Adam Treat  <adam.treat@torchmobile.com>
18938
18939        Reviewed by George Staikos.
18940
18941        https://bugs.webkit.org/show_bug.cgi?id=23155
18942        Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
18943
18944        * jsc.cpp:
18945        (main):
18946
189472009-06-17  George Staikos  <george.staikos@torchmobile.com>
18948
18949        Reviewed by Adam Treat.
18950
18951        https://bugs.webkit.org/show_bug.cgi?id=23155
18952        Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
18953
18954        * config.h:
18955        * jsc.cpp:
18956        * wtf/Assertions.cpp:
18957        * wtf/Assertions.h:
18958        * wtf/CurrentTime.cpp:
18959        (WTF::lowResUTCTime):
18960        * wtf/DateMath.cpp:
18961        (WTF::getLocalTime):
18962        * wtf/MathExtras.h:
18963        * wtf/Platform.h:
18964        * wtf/StringExtras.h:
18965        * wtf/Threading.h:
18966        * wtf/win/MainThreadWin.cpp:
18967
189682009-06-17  Gavin Barraclough  <barraclough@apple.com>
18969
18970        Reviewed by Oliver Hunt.
18971
18972        <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com
18973
18974        Remove PropertySlot::putValue - PropertySlots should only be used for getting,
18975        not putting.  Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite,
18976        which is what it really was being used to ask, and remove some other getOwnPropertySlot
18977        & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion.
18978
18979        * runtime/JSGlobalObject.h:
18980        (JSC::JSGlobalObject::hasOwnPropertyForWrite):
18981        * runtime/JSObject.h:
18982        * runtime/JSStaticScopeObject.cpp:
18983        * runtime/JSStaticScopeObject.h:
18984        * runtime/PropertySlot.h:
18985
189862009-06-16  Gavin Barraclough  <barraclough@apple.com>
18987
18988        Reviewed by Oliver hunt.
18989
18990        Temporarily partially disable r44492, since this is causing some problems on internal builds.
18991
18992        * jit/JITOpcodes.cpp:
18993        (JSC::JIT::emit_op_throw):
18994        * jit/JITStubs.cpp:
18995        (JSC::JITStubs::DEFINE_STUB_FUNCTION):
18996
189972009-06-16  Sam Weinig  <sam@webkit.org>
18998
18999        Fix windows build.
19000
19001        * jit/JIT.cpp:
19002        (JSC::JIT::JIT):
19003
190042009-06-16  Sam Weinig  <sam@webkit.org>
19005
19006        Reviewed by Oliver Hunt.
19007
19008        Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize
19009        it for each type of stub using the return address to find the correct
19010        offset.
19011
19012        * jit/JIT.cpp:
19013        (JSC::JIT::JIT):
19014        * jit/JIT.h:
19015        (JSC::JIT::compileGetByIdProto):
19016        (JSC::JIT::compileGetByIdSelfList):
19017        (JSC::JIT::compileGetByIdProtoList):
19018        (JSC::JIT::compileGetByIdChainList):
19019        (JSC::JIT::compileGetByIdChain):
19020        (JSC::JIT::compilePutByIdTransition):
19021        (JSC::JIT::compileCTIMachineTrampolines):
19022        (JSC::JIT::compilePatchGetArrayLength):
19023        * jit/JITStubCall.h:
19024        (JSC::JITStubCall::call):
19025
19026== Rolled over to ChangeLog-2009-06-16 ==
19027