660aa13930dc804327b469cbddb5b9de4b3207e6
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-01-07  Zoltan Horvath  <zoltan@webkit.org>
2
3         Reviewed by Holger Freyther.
4
5         [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
6         https://bugs.webkit.org/show_bug.cgi?id=33312
7
8         Remove pByte (committed in r42344 from #20422), because pByte doesn't
9         exist and it is unnecessary.
10
11         * wtf/FastMalloc.cpp:
12         (WTF::TCMallocStats::realloc):
13
14 2010-01-06  Gavin Barraclough  <barraclough@apple.com>
15
16         QT build fix.
17
18         * runtime/Identifier.cpp:
19         (JSC::createIdentifierTableSpecific):
20
21 2010-01-06  Gavin Barraclough  <barraclough@apple.com>
22
23         Windows build fix part I.
24
25         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
26
27 2010-01-06  Dan Bernstein  <mitz@apple.com>
28
29         Build fix
30
31         * runtime/Identifier.cpp:
32         (JSC::createIdentifierTableSpecificCallback):
33
34 2010-01-05  Gavin Barraclough  <barraclough@apple.com>
35
36         Reviewed by Sam Weinig.
37
38         https://bugs.webkit.org/show_bug.cgi?id=33236
39         Remove m_identifierTable pointer from UString
40
41         Currently every string holds a pointer so that during destruction,
42         if a string has been used as an identifier, it can remove itself
43         from the table.  By instead accessing the identifierTable via a
44         thread specific tracking the table associated with the current
45         globaldata, we can save the memory cost of this pointer.
46
47         * API/APIShims.h:
48         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
49         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
50         (JSC::APICallbackShim::APICallbackShim):
51         (JSC::APICallbackShim::~APICallbackShim):
52
53             - change the API shims to track the identifierTable of the current JSGlobalData.
54
55         * API/JSContextRef.cpp:
56         (JSContextGroupCreate):
57
58             - update creation of JSGlobalData for API usage to use new create method.
59             - fix shim instanciation bug in JSGlobalContextCreateInGroup.
60
61         * JavaScriptCore.exp:
62         * runtime/Completion.cpp:
63         (JSC::checkSyntax):
64         (JSC::evaluate):
65
66             - add asserts to check the identifierTable is being tracked correctly.
67
68         * runtime/Identifier.cpp:
69         (JSC::IdentifierTable::~IdentifierTable):
70         (JSC::IdentifierTable::add):
71         (JSC::Identifier::remove):
72         (JSC::Identifier::checkSameIdentifierTable):
73         (JSC::createIdentifierTableSpecificCallback):
74         (JSC::createIdentifierTableSpecific):
75         (JSC::createDefaultDataSpecific):
76
77             - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable.
78             - Define methods to access the thread specific identifier tables.
79
80         * runtime/Identifier.h:
81         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
82         (JSC::defaultIdentifierTable):
83         (JSC::setDefaultIdentifierTable):
84         (JSC::currentIdentifierTable):
85         (JSC::setCurrentIdentifierTable):
86         (JSC::resetCurrentIdentifierTable):
87
88             - Declare methods to access the thread specific identifier tables.
89
90         * runtime/JSGlobalData.cpp:
91         (JSC::JSGlobalData::createNonDefault):
92         (JSC::JSGlobalData::create):
93         (JSC::JSGlobalData::sharedInstance):
94
95             - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread.
96
97         * runtime/JSGlobalData.h:
98         * runtime/UStringImpl.cpp:
99         (JSC::UStringImpl::destroy):
100
101             - destroy() method should be using isIdentifier().
102
103         * runtime/UStringImpl.h:
104         (JSC::UStringImpl::isIdentifier):
105         (JSC::UStringImpl::setIsIdentifier):
106         (JSC::UStringImpl::checkConsistency):
107         (JSC::UStringImpl::UStringImpl):
108
109             - replace m_identifierTable with a single m_isIdentifier bit.
110
111         * wtf/StringHashFunctions.h:
112         (WTF::stringHash):
113
114             - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier.
115
116 2009-12-25 Patrick Gansterer <paroga@paroga.com>
117  
118         Reviewed by Eric Seidel.
119
120         Buildfix for WinCE + style fixes.
121         https://bugs.webkit.org/show_bug.cgi?id=32939
122
123         * jsc.cpp:
124         (functionPrint):
125         (functionQuit):
126         (parseArguments):
127         (fillBufferWithContentsOfFile):
128  
129 2010-01-05  Patrick Gansterer  <paroga@paroga.com>
130
131         Reviewed by Eric Seidel.
132
133         WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)).
134         https://bugs.webkit.org/show_bug.cgi?id=33205
135
136         * jit/ExecutableAllocator.h:
137
138 2010-01-05  Patrick Gansterer  <paroga@paroga.com>
139
140         Reviewed by Darin Adler.
141
142         Added compiler error for unsupported platforms.
143         https://bugs.webkit.org/show_bug.cgi?id=33112
144
145         * jit/JITStubs.cpp:
146
147 2010-01-05  Gabor Loki  <loki@webkit.org>
148
149         Reviewed by Maciej Stachowiak.
150
151         Follow r52729 in ARMAssembler.
152         https://bugs.webkit.org/show_bug.cgi?id=33208
153
154         Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION
155
156         * assembler/ARMAssembler.cpp:
157         (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7
158         * assembler/ARMAssembler.h:
159         (JSC::ARMAssembler::):
160         (JSC::ARMAssembler::bkpt):
161
162 2010-01-05  Maciej Stachowiak  <mjs@apple.com>
163
164         Unreviewed build fix for Gtk+
165
166         Don't use // comments in Platform.h, at least some of them seem to make the version of GCC
167         used on the Gtk buildbot unhappy.
168
169         * wtf/Platform.h:
170
171 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
172
173         Reviewed by Darin Fisher.
174
175         Reorganize, document and rename OS() platform macros.
176         https://bugs.webkit.org/show_bug.cgi?id=33198
177
178         * wtf/Platform.h: Rename, reorganize and document OS() macros.
179
180         Adapt to name changes. Also fixed a few incorrect OS checks.
181
182         * API/JSContextRef.cpp:
183         * assembler/MacroAssemblerARM.cpp:
184         (JSC::isVFPPresent):
185         * assembler/MacroAssemblerX86Common.h:
186         * bytecode/SamplingTool.cpp:
187         * config.h:
188         * interpreter/RegisterFile.cpp:
189         (JSC::RegisterFile::~RegisterFile):
190         * interpreter/RegisterFile.h:
191         (JSC::RegisterFile::RegisterFile):
192         (JSC::RegisterFile::grow):
193         * jit/ExecutableAllocator.h:
194         * jit/ExecutableAllocatorFixedVMPool.cpp:
195         * jit/ExecutableAllocatorPosix.cpp:
196         * jit/ExecutableAllocatorSymbian.cpp:
197         * jit/ExecutableAllocatorWin.cpp:
198         * jit/JITOpcodes.cpp:
199         (JSC::JIT::privateCompileCTIMachineTrampolines):
200         * jit/JITStubs.cpp:
201         * jsc.cpp:
202         (main):
203         * parser/Grammar.y:
204         * profiler/ProfileNode.cpp:
205         (JSC::getCount):
206         * runtime/Collector.cpp:
207         (JSC::Heap::Heap):
208         (JSC::Heap::allocateBlock):
209         (JSC::Heap::freeBlockPtr):
210         (JSC::currentThreadStackBase):
211         (JSC::getCurrentPlatformThread):
212         (JSC::suspendThread):
213         (JSC::resumeThread):
214         (JSC::getPlatformThreadRegisters):
215         (JSC::otherThreadStackPointer):
216         * runtime/Collector.h:
217         * runtime/DateConstructor.cpp:
218         * runtime/DatePrototype.cpp:
219         (JSC::formatLocaleDate):
220         * runtime/InitializeThreading.cpp:
221         (JSC::initializeThreading):
222         * runtime/MarkStack.h:
223         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
224         * runtime/MarkStackPosix.cpp:
225         * runtime/MarkStackSymbian.cpp:
226         * runtime/MarkStackWin.cpp:
227         * runtime/StringPrototype.cpp:
228         (JSC::stringProtoFuncLastIndexOf):
229         * runtime/TimeoutChecker.cpp:
230         (JSC::getCPUTime):
231         * runtime/UString.cpp:
232         (JSC::UString::from):
233         * wtf/Assertions.cpp:
234         * wtf/Assertions.h:
235         * wtf/CurrentTime.cpp:
236         (WTF::lowResUTCTime):
237         * wtf/CurrentTime.h:
238         (WTF::getLocalTime):
239         * wtf/DateMath.cpp:
240         * wtf/FastMalloc.cpp:
241         (WTF::TCMalloc_ThreadCache::InitModule):
242         (WTF::TCMallocStats::):
243         * wtf/FastMalloc.h:
244         * wtf/MathExtras.h:
245         * wtf/RandomNumber.cpp:
246         (WTF::randomNumber):
247         * wtf/RandomNumberSeed.h:
248         (WTF::initializeRandomNumberGenerator):
249         * wtf/StringExtras.h:
250         * wtf/TCSpinLock.h:
251         (TCMalloc_SpinLock::Unlock):
252         (TCMalloc_SlowLock):
253         * wtf/TCSystemAlloc.cpp:
254         * wtf/ThreadSpecific.h:
255         (WTF::::destroy):
256         * wtf/Threading.h:
257         * wtf/ThreadingPthreads.cpp:
258         (WTF::initializeThreading):
259         (WTF::isMainThread):
260         * wtf/ThreadingWin.cpp:
261         (WTF::wtfThreadEntryPoint):
262         (WTF::createThreadInternal):
263         * wtf/VMTags.h:
264         * wtf/unicode/icu/CollatorICU.cpp:
265         (WTF::Collator::userDefault):
266         * wtf/win/MainThreadWin.cpp:
267         (WTF::initializeMainThreadPlatform):
268
269 2010-01-04  Gustavo Noronha Silva  <gns@gnome.org>
270
271         Add missing files to the build system - make distcheck build fix.
272
273         * GNUmakefile.am:
274
275 2010-01-04  Gavin Barraclough <barraclough@apple.com>
276
277         Reviewed by Sam Weinig, additional coding by Mark Rowe.
278
279         https://bugs.webkit.org/show_bug.cgi?id=33163
280         Add string hashing functions to WTF.
281         Use WTF's string hashing functions from UStringImpl.
282
283         * GNUmakefile.am:
284         * JavaScriptCore.exp:
285         * JavaScriptCore.gypi:
286         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
287         * JavaScriptCore.xcodeproj/project.pbxproj:
288         * runtime/UStringImpl.cpp:
289         * runtime/UStringImpl.h:
290         (JSC::UStringImpl::computeHash):
291         * wtf/HashFunctions.h:
292         * wtf/StringHashFunctions.h: Added.
293         (WTF::stringHash):
294
295 2010-01-04  Dmitry Titov  <dimich@chromium.org>
296
297         Not reviewed, attempt to fix ARM bulid.
298
299         * wtf/Platform.h:
300
301 2010-01-04  Gavin Barraclough  <barraclough@apple.com>
302
303         Rubber stamped by Geoff Garen.
304
305         Add an 'isIdentifier' to UStringImpl, use this where appropriate
306         (where previously 'identifierTable' was being tested).
307
308         * API/JSClassRef.cpp:
309         (OpaqueJSClass::~OpaqueJSClass):
310         (OpaqueJSClassContextData::OpaqueJSClassContextData):
311         * runtime/Identifier.cpp:
312         (JSC::Identifier::addSlowCase):
313         * runtime/Identifier.h:
314         (JSC::Identifier::add):
315         * runtime/PropertyNameArray.cpp:
316         (JSC::PropertyNameArray::add):
317         * runtime/UStringImpl.h:
318         (JSC::UStringImpl::isIdentifier):
319
320 2010-01-04  Gavin Barraclough  <barraclough@apple.com>
321
322         Reviewed by Sam "Shimmey Shimmey" Weinig.
323
324         https://bugs.webkit.org/show_bug.cgi?id=33158
325         Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
326         Make it easier to change set of actions taken when passing across the API boundary.
327
328         * API/APIShims.h: Added.
329         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
330         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
331         (JSC::APIEntryShim::APIEntryShim):
332         (JSC::APICallbackShim::APICallbackShim):
333         (JSC::APICallbackShim::~APICallbackShim):
334         * API/JSBase.cpp:
335         (JSEvaluateScript):
336         (JSCheckScriptSyntax):
337         (JSGarbageCollect):
338         (JSReportExtraMemoryCost):
339         * API/JSCallbackConstructor.cpp:
340         (JSC::constructJSCallback):
341         * API/JSCallbackFunction.cpp:
342         (JSC::JSCallbackFunction::call):
343         * API/JSCallbackObjectFunctions.h:
344         (JSC::::init):
345         (JSC::::getOwnPropertySlot):
346         (JSC::::put):
347         (JSC::::deleteProperty):
348         (JSC::::construct):
349         (JSC::::hasInstance):
350         (JSC::::call):
351         (JSC::::getOwnPropertyNames):
352         (JSC::::toNumber):
353         (JSC::::toString):
354         (JSC::::staticValueGetter):
355         (JSC::::callbackGetter):
356         * API/JSContextRef.cpp:
357         * API/JSObjectRef.cpp:
358         (JSObjectMake):
359         (JSObjectMakeFunctionWithCallback):
360         (JSObjectMakeConstructor):
361         (JSObjectMakeFunction):
362         (JSObjectMakeArray):
363         (JSObjectMakeDate):
364         (JSObjectMakeError):
365         (JSObjectMakeRegExp):
366         (JSObjectGetPrototype):
367         (JSObjectSetPrototype):
368         (JSObjectHasProperty):
369         (JSObjectGetProperty):
370         (JSObjectSetProperty):
371         (JSObjectGetPropertyAtIndex):
372         (JSObjectSetPropertyAtIndex):
373         (JSObjectDeleteProperty):
374         (JSObjectCallAsFunction):
375         (JSObjectCallAsConstructor):
376         (JSObjectCopyPropertyNames):
377         (JSPropertyNameArrayRelease):
378         (JSPropertyNameAccumulatorAddName):
379         * API/JSValueRef.cpp:
380         (JSValueGetType):
381         (JSValueIsUndefined):
382         (JSValueIsNull):
383         (JSValueIsBoolean):
384         (JSValueIsNumber):
385         (JSValueIsString):
386         (JSValueIsObject):
387         (JSValueIsObjectOfClass):
388         (JSValueIsEqual):
389         (JSValueIsStrictEqual):
390         (JSValueIsInstanceOfConstructor):
391         (JSValueMakeUndefined):
392         (JSValueMakeNull):
393         (JSValueMakeBoolean):
394         (JSValueMakeNumber):
395         (JSValueMakeString):
396         (JSValueToBoolean):
397         (JSValueToNumber):
398         (JSValueToStringCopy):
399         (JSValueToObject):
400         (JSValueProtect):
401         (JSValueUnprotect):
402         * JavaScriptCore.xcodeproj/project.pbxproj:
403
404 2010-01-04  Dan Bernstein  <mitz@apple.com>
405
406         Reviewed by Ada Chan and Mark Rowe.
407
408         Updated copyright string
409
410         * Info.plist:
411         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist:
412         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
413
414 2010-01-04  Adam Roben  <aroben@apple.com>
415
416         No review, rolling out r52741.
417         http://trac.webkit.org/changeset/52741
418         https://bugs.webkit.org/show_bug.cgi?id=33056
419
420         * wtf/AlwaysInline.h:
421
422 2010-01-04  Patrick Gansterer  <paroga@paroga.com>
423
424         Reviewed by Darin Adler.
425
426         Add cacheFlush support for WinCE
427         https://bugs.webkit.org/show_bug.cgi?id=33110
428
429         * jit/ExecutableAllocator.h:
430         (JSC::ExecutableAllocator::cacheFlush):
431
432 2010-01-04  Patrick Gansterer  <paroga@paroga.com>
433
434         Reviewed by Adam Roben.
435
436         Implement NO_RETURN for COMPILER(MSVC).
437         https://bugs.webkit.org/show_bug.cgi?id=33056
438
439         * wtf/AlwaysInline.h:
440
441 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
442
443         Reviewed by Simon Hausmann.
444
445         Fix some PLATFORM(*_ENDIAN) uses to CPU()
446         https://bugs.webkit.org/show_bug.cgi?id=33148
447
448         * runtime/JSCell.cpp:
449         (JSC::):
450         * runtime/JSValue.h:
451         (JSC::JSValue::):
452
453 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
454
455         Reviewed by Adam Barth.
456
457         Document CPU() macros in comments.
458         https://bugs.webkit.org/show_bug.cgi?id=33147
459
460         * wtf/Platform.h:
461
462 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
463
464         Reviewed by Adam Barth.
465
466         Reorganize, document and rename CPU() platform macros.
467         https://bugs.webkit.org/show_bug.cgi?id=33145
468         ExecutableAllocatorSymbian appears to have buggy ARM version check
469         https://bugs.webkit.org/show_bug.cgi?id=33138
470         
471         * wtf/Platform.h:
472         Rename all macros related to detection of particular CPUs or
473         classes of CPUs to CPU(), reorganize and document them.
474
475         All remaining changes are adapting to the renames, plus fixing the
476         second bug cited above.
477         
478         * assembler/ARMAssembler.cpp:
479         * assembler/ARMAssembler.h:
480         * assembler/ARMv7Assembler.h:
481         * assembler/AbstractMacroAssembler.h:
482         (JSC::AbstractMacroAssembler::Imm32::Imm32):
483         * assembler/MacroAssembler.h:
484         * assembler/MacroAssemblerARM.cpp:
485         * assembler/MacroAssemblerARM.h:
486         * assembler/MacroAssemblerCodeRef.h:
487         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
488         * assembler/MacroAssemblerX86.h:
489         * assembler/MacroAssemblerX86Common.h:
490         * assembler/MacroAssemblerX86_64.h:
491         * assembler/X86Assembler.h:
492         (JSC::X86Registers::):
493         (JSC::X86Assembler::):
494         (JSC::X86Assembler::movl_mEAX):
495         (JSC::X86Assembler::movl_EAXm):
496         (JSC::X86Assembler::repatchLoadPtrToLEA):
497         (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
498         * jit/ExecutableAllocator.h:
499         * jit/ExecutableAllocatorFixedVMPool.cpp:
500         * jit/ExecutableAllocatorPosix.cpp:
501         * jit/ExecutableAllocatorSymbian.cpp:
502         (JSC::ExecutableAllocator::intializePageSize):
503         * jit/JIT.cpp:
504         * jit/JIT.h:
505         * jit/JITArithmetic.cpp:
506         * jit/JITInlineMethods.h:
507         (JSC::JIT::beginUninterruptedSequence):
508         (JSC::JIT::restoreArgumentReferenceForTrampoline):
509         (JSC::JIT::emitCount):
510         * jit/JITOpcodes.cpp:
511         (JSC::JIT::privateCompileCTIMachineTrampolines):
512         * jit/JITPropertyAccess.cpp:
513         (JSC::JIT::privateCompileGetByIdProto):
514         (JSC::JIT::privateCompileGetByIdProtoList):
515         (JSC::JIT::privateCompileGetByIdChainList):
516         (JSC::JIT::privateCompileGetByIdChain):
517         * jit/JITStubs.cpp:
518         (JSC::JITThunks::JITThunks):
519         * jit/JITStubs.h:
520         * runtime/Collector.cpp:
521         (JSC::currentThreadStackBase):
522         (JSC::getPlatformThreadRegisters):
523         (JSC::otherThreadStackPointer):
524         * wrec/WREC.h:
525         * wrec/WRECGenerator.cpp:
526         (JSC::WREC::Generator::generateEnter):
527         (JSC::WREC::Generator::generateReturnSuccess):
528         (JSC::WREC::Generator::generateReturnFailure):
529         * wrec/WRECGenerator.h:
530         * wtf/FastMalloc.cpp:
531         * wtf/TCSpinLock.h:
532         (TCMalloc_SpinLock::Lock):
533         (TCMalloc_SpinLock::Unlock):
534         (TCMalloc_SlowLock):
535         * wtf/Threading.h:
536         * wtf/dtoa.cpp:
537         * yarr/RegexJIT.cpp:
538         (JSC::Yarr::RegexGenerator::generateEnter):
539         (JSC::Yarr::RegexGenerator::generateReturn):
540         * yarr/RegexJIT.h:
541
542 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
543
544         Reviewed by Adam Barth.
545
546         Clean up COMPILER macros and remove unused ones.
547         https://bugs.webkit.org/show_bug.cgi?id=33132
548         
549         Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were
550         not used anywhere.
551
552         * wtf/Platform.h:
553
554 2010-01-03  Maciej Stachowiak  <mjs@apple.com>
555
556         Reviewed by Eric Seidel.
557
558         Update wtf/Platform.h to document the new system for porting macros.
559         https://bugs.webkit.org/show_bug.cgi?id=33130
560
561         * wtf/Platform.h:
562
563 2009-12-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
564
565         Reviewed by Maciej Stachowiak.
566
567         PLATFORM(CAIRO) should be defined by WIN_CAIRO define
568         https://bugs.webkit.org/show_bug.cgi?id=22250
569
570         * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only
571         For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h
572
573 2009-12-28  Shu Chang  <Chang.Shu@nokia.com>
574
575         Reviewed by Laszlo Gombos.
576
577         [Qt] Delete ThreadPrivate instance after it is finished.
578         https://bugs.webkit.org/show_bug.cgi?id=32614
579
580         * wtf/qt/ThreadingQt.cpp:
581         (WTF::ThreadMonitor::instance):
582         (WTF::ThreadMonitor::threadFinished):
583         (WTF::createThreadInternal):
584         (WTF::detachThread):
585
586 2009-12-28  Patrick Gansterer  <paroga@paroga.com>
587
588         Reviewed by Maciej Stachowiak.
589
590         Cleanup of #define JS_EXPORT.
591
592         * API/JSBase.h:
593
594 2009-12-27  Patrick Gansterer  <paroga@paroga.com>
595
596         Reviewed by Adam Barth.
597
598         WinCE buildfix (HWND_MESSAGE isn't supported there)
599
600         * wtf/win/MainThreadWin.cpp:
601         (WTF::initializeMainThreadPlatform):
602
603 2009-12-27  Patrick Gansterer  <paroga@paroga.com>
604
605         Reviewed by Adam Barth.
606
607         Added a file with WinMain function to link agains in WinCE.
608
609         * os-win32/WinMain.cpp: Added.
610         (convertToUtf8):
611         (WinMain):
612
613 2009-12-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
614
615         Unreviewed; revert of r52550.
616
617         The change regressed the following LayoutTests for QtWebKit.
618
619         fast/workers/worker-call.html -> crashed
620         fast/workers/worker-close.html -> crashed
621
622         * wtf/qt/ThreadingQt.cpp:
623         (WTF::waitForThreadCompletion):
624         (WTF::detachThread):
625
626 2009-12-24  Shu Chang  <Chang.Shu@nokia.com>
627
628         Reviewed by Laszlo Gombos.
629
630         [Qt] Fix memory leak by deleting instance of ThreadPrivate
631         in function waitForThreadCompletion(), synchronously, or in
632         detachThread(), asynchronously.
633         https://bugs.webkit.org/show_bug.cgi?id=32614 
634
635         * wtf/qt/ThreadingQt.cpp:
636         (WTF::waitForThreadCompletion):
637         (WTF::detachThread):
638
639 2009-12-23  Kwang Yul Seo  <skyul@company100.net>
640
641         Reviewed by Laszlo Gombos.
642
643         Include stddef.h for ptrdiff_t
644         https://bugs.webkit.org/show_bug.cgi?id=32891
645
646         ptrdiff_t is typedef-ed in stddef.h.
647         Include stddef.h in jit/ExecutableAllocator.h.
648
649         * jit/ExecutableAllocator.h:
650
651 2009-12-23  Patrick Gansterer  <paroga@paroga.com>
652
653         Reviewed by Eric Seidel.
654
655         Buildfix after r47092.
656
657         * wtf/wince/MemoryManager.cpp:
658         (WTF::tryFastMalloc):
659         (WTF::tryFastZeroedMalloc):
660         (WTF::tryFastCalloc):
661         (WTF::tryFastRealloc):
662
663 2009-12-23  Kent Tamura  <tkent@chromium.org>
664
665         Reviewed by Darin Adler.
666
667         HTMLInputElement::valueAsDate getter support.
668         https://bugs.webkit.org/show_bug.cgi?id=32876
669
670         Expose dateToDaysFrom1970().
671
672         * JavaScriptCore.exp:
673         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
674         * wtf/DateMath.cpp:
675         (WTF::dateToDaysFrom1970):
676         * wtf/DateMath.h:
677
678 2009-12-22  Darin Adler  <darin@apple.com>
679
680         Reviewed by Mark Rowe.
681
682         Turn off datagrid by default, at least for all platforms Apple ships.
683         The datagrid implementation isn't ready for general web use yet.
684
685         * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default.
686
687 2009-12-22  Steve Block  <steveblock@google.com>
688
689         Reviewed by David Levin.
690
691         Updates Android's scheduleDispatchFunctionsOnMainThread() to use new
692         AndroidThreading class, rather than using JavaSharedClient directly.
693         This fixes the current layering violation.
694         https://bugs.webkit.org/show_bug.cgi?id=32651
695
696         The pattern is copied from Chromium, which uses the ChromiumThreading
697         class. This patch also fixes the style in ChromiumThreading.h.
698
699         * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading.
700         * wtf/android/MainThreadAndroid.cpp: Modified
701         (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading.
702         * wtf/chromium/ChromiumThreading.h: Modified. Fixes style.
703
704 2009-12-22  Gavin Barraclough  <barraclough@apple.com>
705
706         Reviewed by Sam Weinig.
707
708         Fix a couple of problems with UntypedPtrAndBitfield.
709
710         Add a m_leaksPtr to reduce false positives from leaks in debug builds
711         (this isn't perfect because we'd like a solution for release builds,
712         but this is now at least as good as a PtrAndFlags would be).
713
714         Switch SmallStringsto use a regular string for the base, rather than
715         a static one.  UntypedPtrAndBitfield assumes all strings are at least
716         8 byte aligned; this migt not be true of static strings.  Shared buffers
717         are heap allocated, as are all UStringImpls other than static strings.
718         Static strings cannot end up being the owner string of substrings,
719         since the only static strings are length 0.
720
721         * runtime/SmallStrings.cpp:
722         (JSC::SmallStringsStorage::SmallStringsStorage):
723         * runtime/UStringImpl.h:
724         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
725         (JSC::UStringImpl::UStringImpl):
726
727 2009-12-22  Kwang Yul Seo  <skyul@company100.net>
728
729         Reviewed by Darin Adler.
730
731         RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp
732         https://bugs.webkit.org/show_bug.cgi?id=32857
733
734         Add implementation of strcasecmp and strncasecmp for RVCT < 4.0
735         because earlier versions of RVCT 4.0 does not provide these functions.
736
737         * wtf/StringExtras.cpp: Added.
738         (strcasecmp):
739         (strncasecmp):
740         * wtf/StringExtras.h:
741
742 2009-12-22  Kwang Yul Seo  <skyul@company100.net>
743
744         Reviewed by Darin Adler.
745
746         Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT
747         https://bugs.webkit.org/show_bug.cgi?id=32853
748
749         Use __forceinline forces RVCT to compile a C or C++ function
750         inline. The compiler attempts to inline the function, regardless of
751         the characteristics of the function.
752
753         * wtf/AlwaysInline.h:
754         * wtf/FastMalloc.h:
755
756 2009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
757
758         Prospective GTK build fix: Add UStringImpl.cpp/h to the build.
759
760         * GNUmakefile.am:
761
762 2009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
763
764         Fix the Qt build, add UStringImpl.cpp to the build.
765
766         * JavaScriptCore.pri:
767
768 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
769
770         Windows Build fix part 5.
771         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
772
773 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
774
775         Reviewed by NOBODY (build fix).
776         Fix breakage of world introduced in build fix to r52463.
777
778         * runtime/UStringImpl.h:
779
780 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
781
782         Reviewed by Darin Adler.
783
784         https://bugs.webkit.org/show_bug.cgi?id=32831
785         Replace UString::Rep implementation, following introduction of ropes to JSC.
786
787             * Remove redundant overcapacity mechanisms.
788             * Reduce memory cost of Rep's.
789             * Add an inline storage mechanism akin to that in WebCore's StringImpl.
790
791         ~1% Sunspider progression.
792
793         * JavaScriptCore.exp:
794         * JavaScriptCore.xcodeproj/project.pbxproj:
795         * runtime/JSString.cpp:
796         (JSC::JSString::resolveRope):
797         * runtime/SmallStrings.cpp:
798         (JSC::SmallStringsStorage::SmallStringsStorage):
799         * runtime/UString.cpp:
800         (JSC::initializeUString):
801         (JSC::createRep):
802         (JSC::UString::createFromUTF8):
803         (JSC::UString::createUninitialized):
804         (JSC::UString::spliceSubstringsWithSeparators):
805         (JSC::UString::replaceRange):
806         (JSC::UString::ascii):
807         (JSC::UString::operator=):
808         (JSC::UString::toStrictUInt32):
809         (JSC::equal):
810         * runtime/UString.h:
811         (JSC::UString::isEmpty):
812         (JSC::UString::cost):
813         (JSC::makeString):
814         * runtime/UStringImpl.cpp: Added.
815         (JSC::UStringImpl::baseSharedBuffer):
816         (JSC::UStringImpl::sharedBuffer):
817         (JSC::UStringImpl::destroy):
818         (JSC::UStringImpl::computeHash):
819         * runtime/UStringImpl.h: Added.
820         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
821         (JSC::UntypedPtrAndBitfield::asPtr):
822         (JSC::UntypedPtrAndBitfield::operator&=):
823         (JSC::UntypedPtrAndBitfield::operator|=):
824         (JSC::UntypedPtrAndBitfield::operator&):
825         (JSC::UStringImpl::create):
826         (JSC::UStringImpl::createCopying):
827         (JSC::UStringImpl::createUninitialized):
828         (JSC::UStringImpl::data):
829         (JSC::UStringImpl::size):
830         (JSC::UStringImpl::cost):
831         (JSC::UStringImpl::hash):
832         (JSC::UStringImpl::computedHash):
833         (JSC::UStringImpl::setHash):
834         (JSC::UStringImpl::identifierTable):
835         (JSC::UStringImpl::setIdentifierTable):
836         (JSC::UStringImpl::ref):
837         (JSC::UStringImpl::deref):
838         (JSC::UStringImpl::allocChars):
839         (JSC::UStringImpl::copyChars):
840         (JSC::UStringImpl::computeHash):
841         (JSC::UStringImpl::null):
842         (JSC::UStringImpl::empty):
843         (JSC::UStringImpl::checkConsistency):
844         (JSC::UStringImpl::):
845         (JSC::UStringImpl::UStringImpl):
846         (JSC::UStringImpl::operator new):
847         (JSC::UStringImpl::bufferOwnerString):
848         (JSC::UStringImpl::bufferOwnership):
849         (JSC::UStringImpl::isStatic):
850
851 2009-12-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
852
853         Reviewed by Kenneth Rohde Christiansen.
854
855         Move some build decisions from Qt build system into source files
856         https://bugs.webkit.org/show_bug.cgi?id=31956
857
858         * JavaScriptCore.pri: Compile files unconditionally
859         * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
860         * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS)
861         * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
862         * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN)
863         * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS)
864         * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port
865         * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED)
866         * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED)
867
868 2009-12-18  Gavin Barraclough  <barraclough@apple.com>
869
870         Reviewed by Sam Weinig.
871
872         Add createNonCopying method to UString to make replace constructor passed bool,
873         to make behaviour more explicit.  Add createFromUTF8 to UString (wrapping method
874         on UString::Rep), since other cases of transliteration (e.g.  from ascii) are
875         performed in UString constructors.  Add/use setHash & size() accessors on Rep,
876         rather than accessing _hash/len directly.
877
878         * API/JSClassRef.cpp:
879         (OpaqueJSClass::OpaqueJSClass):
880         * API/OpaqueJSString.cpp:
881         (OpaqueJSString::ustring):
882         * JavaScriptCore.exp:
883         * runtime/ArrayPrototype.cpp:
884         (JSC::arrayProtoFuncToString):
885         * runtime/Identifier.cpp:
886         (JSC::Identifier::equal):
887         (JSC::CStringTranslator::translate):
888         (JSC::UCharBufferTranslator::translate):
889         (JSC::Identifier::addSlowCase):
890         * runtime/JSString.cpp:
891         (JSC::JSString::resolveRope):
892         * runtime/JSString.h:
893         (JSC::JSString::Rope::Fiber::refAndGetLength):
894         (JSC::JSString::Rope::append):
895         * runtime/StringBuilder.h:
896         (JSC::StringBuilder::release):
897         * runtime/StringConstructor.cpp:
898         (JSC::stringFromCharCodeSlowCase):
899         * runtime/StringPrototype.cpp:
900         (JSC::substituteBackreferencesSlow):
901         (JSC::stringProtoFuncToLowerCase):
902         (JSC::stringProtoFuncToUpperCase):
903         (JSC::stringProtoFuncFontsize):
904         (JSC::stringProtoFuncLink):
905         * runtime/UString.cpp:
906         (JSC::UString::UString):
907         (JSC::UString::createNonCopying):
908         (JSC::UString::createFromUTF8):
909         * runtime/UString.h:
910         (JSC::UString::Rep::setHash):
911         (JSC::UString::~UString):
912         (JSC::makeString):
913
914 2009-12-18  Geoffrey Garen  <ggaren@apple.com>
915
916         Reviewed by Cameron Zwarich and Gavin Barraclough.
917         
918         Changed Register constructors to assignment operators, to streamline
919         moving values into registers. (In theory, there's no difference between
920         the two, since the constructor should just inline away, but there seems
921         to be a big difference in the addled mind of the GCC optimizer.)
922
923         In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K
924         reduction in stack usage per privateExecute stack frame.
925
926         * interpreter/CallFrame.h:
927         (JSC::ExecState::setCalleeArguments):
928         (JSC::ExecState::setCallerFrame):
929         (JSC::ExecState::setScopeChain):
930         (JSC::ExecState::init):
931         (JSC::ExecState::setArgumentCount):
932         (JSC::ExecState::setCallee):
933         (JSC::ExecState::setCodeBlock): Added a little bit of casting so these
934         functions could use the new Register assignment operators.
935
936         * interpreter/Register.h:
937         (JSC::Register::withInt):
938         (JSC::Register::Register):
939         (JSC::Register::operator=): Swapped in assignment operators for constructors.
940
941 2009-12-18  Yongjun Zhang  <yongjun.zhang@nokia.com>
942
943         Reviewed by Simon Hausmann.
944
945         https://bugs.webkit.org/show_bug.cgi?id=32713
946         [Qt] make wtf/Assertions.h compile in winscw compiler.
947
948         Add string arg before ellipsis to help winscw compiler resolve variadic
949         macro definitions in wtf/Assertions.h. 
950
951         * wtf/Assertions.h:
952
953 2009-12-18  Geoffrey Garen  <ggaren@apple.com>
954
955         Reviewed by Adam Roben.
956
957         Fixed intermittent failure seen on Windows buildbot, and in other JSC
958         API clients.
959         
960         Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
961         use it, to avoid vending a stale object as a prototype.
962
963         * API/JSClassRef.cpp:
964         (OpaqueJSClassContextData::OpaqueJSClassContextData):
965         (OpaqueJSClass::prototype):
966         * API/JSClassRef.h: Use WeakGCPtr.
967
968         * JavaScriptCore.xcodeproj/project.pbxproj:
969         * runtime/WeakGCPtr.h: Added.
970         (JSC::WeakGCPtr::WeakGCPtr):
971         (JSC::WeakGCPtr::get):
972         (JSC::WeakGCPtr::clear):
973         (JSC::WeakGCPtr::operator*):
974         (JSC::WeakGCPtr::operator->):
975         (JSC::WeakGCPtr::operator!):
976         (JSC::WeakGCPtr::operator bool):
977         (JSC::WeakGCPtr::operator UnspecifiedBoolType):
978         (JSC::WeakGCPtr::assign):
979         (JSC::::operator):
980         (JSC::operator==):
981         (JSC::operator!=):
982         (JSC::static_pointer_cast):
983         (JSC::const_pointer_cast):
984         (JSC::getPtr): Added WeakGCPtr to the project.
985
986 2009-12-18  Gavin Barraclough  <barraclough@apple.com>
987
988         Reviewed by Sam Weinig.
989
990         https://bugs.webkit.org/show_bug.cgi?id=32720
991
992         * JavaScriptCore.exp:
993             - Remove exports for UString::append
994         * JavaScriptCore.xcodeproj/project.pbxproj:
995             - Make StringBuilder a private header (was project).
996
997 2009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
998
999         Reviewed by Gustavo Noronha Silva.
1000
1001         [GTK] GRefPtr does not take a reference when assigned a raw pointer
1002         https://bugs.webkit.org/show_bug.cgi?id=32709
1003
1004         Ensure that when assigning a raw pointer to a GRefPtr, the reference
1005         count is incremented. Also remove the GRefPtr conversion overload as
1006         GRefPtr types have necessarily incompatible reference counting.
1007
1008         * wtf/gtk/GRefPtr.h:
1009         (WTF::GRefPtr::operator=):
1010
1011 2009-12-18  Simon Hausmann  <simon.hausmann@nokia.com>
1012
1013         Reviewed by Tor Arne Vestbø.
1014
1015         [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds
1016
1017         https://bugs.webkit.org/show_bug.cgi?id=32716
1018
1019         * pcre/pcre.pri: Use standalone_package instead of QTDIR_build
1020
1021 2009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
1022
1023         Reviewed by Gustavo Noronha Silva.
1024
1025         [GTK] Compile warning from line 29 of GRefPtr.cpp
1026         https://bugs.webkit.org/show_bug.cgi?id=32703
1027
1028         Fix memory leak and compiler warning in GRefPtr GHashTable template
1029         specialization.
1030
1031         * wtf/gtk/GRefPtr.cpp:
1032         (WTF::refGPtr):
1033
1034 2009-12-17  Sam Weinig  <sam@webkit.org>
1035
1036         Reviewed by Mark Rowe.
1037
1038         Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines.
1039
1040         * wtf/Platform.h:
1041
1042 2009-12-17  Adam Roben  <aroben@apple.com>
1043
1044         Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the
1045         source tree
1046
1047         Fixes <http://webkit.org/b/32665>.
1048
1049         Reviewed by Ada Chan.
1050
1051         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved
1052         around files and filters so that the structure matches
1053         JavaScriptCore.xcodeproj and the source tree. A few headers that were
1054         previously omitted have been added, as well as JSZombie.{cpp,h}.
1055
1056 2009-12-17  Adam Roben  <aroben@apple.com>
1057
1058         Remove HeavyProfile and TreeProfile completely
1059
1060         These were mostly removed in r42808, but the empty files were left in
1061         place.
1062
1063         Fixes <http://webkit.org/b/32664>.
1064
1065         Reviewed by John Sullivan.
1066
1067         * Android.mk:
1068         * GNUmakefile.am:
1069         * JavaScriptCore.gypi:
1070         * JavaScriptCore.pri:
1071         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1072         * JavaScriptCoreSources.bkl:
1073         Removed HeavyProfile/TreeProfile source files.
1074
1075         * profiler/HeavyProfile.cpp: Removed.
1076         * profiler/HeavyProfile.h: Removed.
1077         * profiler/TreeProfile.cpp: Removed.
1078         * profiler/TreeProfile.h: Removed.
1079
1080 2009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
1081
1082         Reviewed by Gustavo Noronha Silva.
1083
1084         [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
1085         https://bugs.webkit.org/show_bug.cgi?id=21599
1086
1087         Implement GRefPtr, a smart pointer for reference counted GObject types.
1088
1089         * GNUmakefile.am:
1090         * wtf/gtk/GOwnPtr.cpp:
1091         (WTF::GDir):
1092         * wtf/gtk/GRefPtr.h: Added.
1093         (WTF::):
1094         (WTF::GRefPtr::GRefPtr):
1095         (WTF::GRefPtr::~GRefPtr):
1096         (WTF::GRefPtr::clear):
1097         (WTF::GRefPtr::get):
1098         (WTF::GRefPtr::operator*):
1099         (WTF::GRefPtr::operator->):
1100         (WTF::GRefPtr::operator!):
1101         (WTF::GRefPtr::operator UnspecifiedBoolType):
1102         (WTF::GRefPtr::hashTableDeletedValue):
1103         (WTF::::operator):
1104         (WTF::::swap):
1105         (WTF::swap):
1106         (WTF::operator==):
1107         (WTF::operator!=):
1108         (WTF::static_pointer_cast):
1109         (WTF::const_pointer_cast):
1110         (WTF::getPtr):
1111         (WTF::adoptGRef):
1112         (WTF::refGPtr):
1113         (WTF::derefGPtr):
1114
1115 2009-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
1116
1117         Unreviewed. Build fixes for make distcheck.
1118
1119         * GNUmakefile.am:
1120
1121 2009-12-16  Geoffrey Garen  <ggaren@apple.com>
1122
1123         Reviewed by Oliver Hunt.
1124
1125         Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates
1126         bloated code
1127         
1128         This patch cuts Interpreter stack use by about a third.
1129
1130         * bytecode/Opcode.h: Changed Opcode to const void* to work with the
1131         const static initiliazation we want to do in Interpreter::privateExecute.
1132
1133         * interpreter/Interpreter.cpp:
1134         (JSC::Interpreter::Interpreter): Moved hashtable initialization here to
1135         avoid polluting Interpreter::privateExecute's stack, and changed it from a
1136         series of add() calls to one add() call in a loop, to cut down on code size.
1137
1138         (JSC::Interpreter::privateExecute): Changed a series of label computations
1139         to a copy of a compile-time constant array to cut down on code size.
1140
1141 2009-12-16  Mark Rowe  <mrowe@apple.com>
1142
1143         Build fix.  Disable debug variants of WebKit frameworks.
1144
1145         * JavaScriptCore.xcodeproj/project.pbxproj:
1146
1147 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
1148
1149         Reviewed by Sam "r=me" Weinig.
1150
1151         https://bugs.webkit.org/show_bug.cgi?id=32498
1152         <rdar://problem/7471495>
1153         REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer
1154         works
1155         
1156         Fixed a tyop.
1157
1158         * runtime/Operations.h:
1159         (JSC::jsAdd): Use the '&&' operator, not the ',' operator.
1160
1161 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
1162
1163         Try to fix the windows build: don't export this inlined function.
1164
1165         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1166
1167 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
1168
1169         Reviewed by Beth Dakin.
1170
1171         Inlined JSCell's operator new.
1172         
1173         3.7% speedup on bench-allocate-nonretained.js.
1174
1175         * JavaScriptCore.exp:
1176         * runtime/JSCell.cpp:
1177         * runtime/JSCell.h:
1178         (JSC::JSCell::operator new):
1179
1180 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
1181
1182         Reviewed by Oliver Hunt.
1183
1184         Removed the number heap, replacing it with a one-item free list for
1185         numbers, taking advantage of the fact that two number cells fit inside
1186         the space for one regular cell, and number cells don't require destruction.
1187         
1188         SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
1189         heap-allocates numbers).
1190         
1191         SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
1192         in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
1193         speedup on bench-alloc-retained.js.
1194         
1195         There's a lot of formulaic change in this patch, but not much substance.
1196
1197         * JavaScriptCore.exp:
1198         * debugger/Debugger.cpp:
1199         (JSC::Debugger::recompileAllJSFunctions):
1200         * runtime/Collector.cpp:
1201         (JSC::Heap::Heap):
1202         (JSC::Heap::destroy):
1203         (JSC::Heap::allocateBlock):
1204         (JSC::Heap::freeBlock):
1205         (JSC::Heap::freeBlockPtr):
1206         (JSC::Heap::freeBlocks):
1207         (JSC::Heap::recordExtraCost):
1208         (JSC::Heap::allocate):
1209         (JSC::Heap::resizeBlocks):
1210         (JSC::Heap::growBlocks):
1211         (JSC::Heap::shrinkBlocks):
1212         (JSC::Heap::markConservatively):
1213         (JSC::Heap::clearMarkBits):
1214         (JSC::Heap::markedCells):
1215         (JSC::Heap::sweep):
1216         (JSC::Heap::markRoots):
1217         (JSC::Heap::objectCount):
1218         (JSC::Heap::addToStatistics):
1219         (JSC::Heap::statistics):
1220         (JSC::Heap::isBusy):
1221         (JSC::Heap::reset):
1222         (JSC::Heap::collectAllGarbage):
1223         (JSC::Heap::primaryHeapBegin):
1224         (JSC::Heap::primaryHeapEnd):
1225         * runtime/Collector.h:
1226         (JSC::): Removed all code pertaining to the number heap, and changed all
1227         heap template functions and classes to non-template functions and classes.
1228
1229         (JSC::Heap::allocateNumber): A new optimization to replace the number
1230         heap: allocate half-sized number cells in pairs, returning the first
1231         cell and caching the second cell for the next allocation.
1232
1233         * runtime/CollectorHeapIterator.h:
1234         (JSC::LiveObjectIterator::LiveObjectIterator):
1235         (JSC::LiveObjectIterator::operator++):
1236         (JSC::DeadObjectIterator::DeadObjectIterator):
1237         (JSC::DeadObjectIterator::operator++):
1238         (JSC::ObjectIterator::ObjectIterator):
1239         (JSC::ObjectIterator::operator++):
1240         * runtime/JSCell.h:
1241         (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
1242         and changed all heap template functions and classes to non-template functions
1243         and classes.
1244
1245 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
1246
1247         Reviewed by Darin Adler.
1248
1249         Allow custom memory allocation control for WeakGCMap class
1250         https://bugs.webkit.org/show_bug.cgi?id=32547
1251
1252         Inherits WeakGCMap from FastAllocBase because it is instantiated by
1253         'new' at: WebCore/dom/Document.cpp:512.
1254
1255         * runtime/WeakGCMap.h:
1256
1257 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
1258
1259         Reviewed by Darin Adler.
1260
1261         Allow custom memory allocation control for dtoa's P5Node struct
1262         https://bugs.webkit.org/show_bug.cgi?id=32544
1263
1264         Inherits P5Node struct from Noncopyable because it is instantiated by
1265         'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
1266
1267         * wtf/dtoa.cpp:
1268
1269 2009-12-14  Geoffrey Garen  <ggaren@apple.com>
1270
1271         Reviewed by Simon Fraser.
1272
1273         https://bugs.webkit.org/show_bug.cgi?id=32524
1274         REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
1275
1276         * wtf/StdLibExtras.h:
1277         (WTF::bitCount): The original patch put the parentheses in the wrong
1278         place, completely changing the calculation and making it almost always
1279         wrong. Moved the parentheses around the '+' operation, like the original
1280         compiler warning suggested.
1281
1282 2009-12-14  Gabor Loki  <loki@inf.u-szeged.hu>
1283
1284         Unreviewed trivial buildfix.
1285
1286         Fix crosses initialization of usedPrimaryBlocks for JSValue32
1287
1288         * runtime/Collector.cpp:
1289         (JSC::Heap::markConservatively):
1290
1291 2009-12-14  Csaba Osztrogonác  <ossy@webkit.org>
1292
1293         Reviewed by Simon Hausmann.
1294
1295         GCC 4.3.x warning fixed. Suggested parantheses added.
1296         warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
1297
1298         * wtf/StdLibExtras.h:
1299         (WTF::bitCount):
1300
1301 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
1302
1303         Reviewed by Sam Weinig.
1304         
1305         Changed GC from mark-sweep to mark-allocate.
1306         
1307         Added WeakGCMap to keep WebCore blissfully ignorant about objects that
1308         have become garbage but haven't run their destructors yet.
1309         
1310         1% SunSpider speedup.
1311         7.6% v8 speedup (37% splay speedup).
1312         17% speedup on bench-alloc-nonretained.js.
1313         18% speedup on bench-alloc-retained.js.
1314
1315         * API/JSBase.cpp:
1316         (JSGarbageCollect):
1317         * API/JSContextRef.cpp:
1318         * JavaScriptCore.exp:
1319         * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
1320         files.
1321
1322         * debugger/Debugger.cpp:
1323         (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
1324         iterator abstraction.
1325
1326         * jsc.cpp:
1327         (functionGC): Updated for rename.
1328
1329         * runtime/Collector.cpp: Slightly reduced the number of allocations per
1330         collection, so that small workloads only allocate on collector block,
1331         rather than two.
1332
1333         (JSC::Heap::Heap): Updated to use the new allocateBlock function.
1334
1335         (JSC::Heap::destroy): Updated to use the new freeBlocks function.
1336
1337         (JSC::Heap::allocateBlock): New function to initialize a block when
1338         allocating it.
1339
1340         (JSC::Heap::freeBlock): Consolidated the responsibility for running
1341         destructors into this function.
1342
1343         (JSC::Heap::freeBlocks): Updated to use freeBlock.
1344
1345         (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
1346         so that allocation, which is more common, doesn't have to check extraCost.
1347
1348         (JSC::Heap::heapAllocate): Run destructors right before recycling a
1349         garbage cell. This has better cache utilization than a separate sweep phase.
1350
1351         (JSC::Heap::resizeBlocks):
1352         (JSC::Heap::growBlocks):
1353         (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
1354         the heap, now that the heap doesn't maintain any information about its
1355         size.
1356
1357         (JSC::isPointerAligned):
1358         (JSC::isHalfCellAligned):
1359         (JSC::isPossibleCell):
1360         (JSC::isCellAligned):
1361         (JSC::Heap::markConservatively): Cleaned up this code a bit.
1362
1363         (JSC::Heap::clearMarkBits):
1364         (JSC::Heap::markedCells): Some helper functions for examining the the mark
1365         bitmap.
1366
1367         (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
1368
1369         (JSC::Heap::markRoots): Reordered some operations for clarity.
1370
1371         (JSC::Heap::objectCount):
1372         (JSC::Heap::addToStatistics):
1373         (JSC::Heap::statistics): Rewrote these functions to calculate an object
1374         count on demand, since the heap doesn't maintain this information by 
1375         itself.
1376
1377         (JSC::Heap::reset): New function for resetting the heap once we've
1378         exhausted heap space.
1379
1380         (JSC::Heap::collectAllGarbage): This function matches the old collect()
1381         behavior, but it's now an uncommon function used only by API.
1382
1383         * runtime/Collector.h:
1384         (JSC::CollectorBitmap::count):
1385         (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
1386         the collector mark bitmap.
1387
1388         (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
1389         to bytes, so it's easier to understand.
1390         
1391         * runtime/CollectorHeapIterator.h:
1392         (JSC::CollectorHeapIterator::CollectorHeapIterator):
1393         (JSC::CollectorHeapIterator::operator!=):
1394         (JSC::CollectorHeapIterator::operator*):
1395         (JSC::CollectorHeapIterator::advance):
1396         (JSC::::LiveObjectIterator):
1397         (JSC::::operator):
1398         (JSC::::DeadObjectIterator):
1399         (JSC::::ObjectIterator): New iterators for encapsulating details about
1400         heap layout, and what's live and dead on the heap.
1401
1402         * runtime/JSArray.cpp:
1403         (JSC::JSArray::putSlowCase):
1404         (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
1405         we're fully constructed, so the heap mark phase won't visit us in an
1406         invalid state.
1407
1408         * runtime/JSCell.h:
1409         (JSC::JSCell::):
1410         (JSC::JSCell::createDummyStructure):
1411         (JSC::JSCell::JSCell):
1412         * runtime/JSGlobalData.cpp:
1413         (JSC::JSGlobalData::JSGlobalData):
1414         * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
1415
1416         * runtime/JSString.h:
1417         (JSC::jsSubstring): Don't report extra cost for substrings, since they
1418         share a buffer that's already reported extra cost.
1419
1420         * runtime/Tracing.d:
1421         * runtime/Tracing.h: Changed these dtrace hooks not to report object
1422         counts, since they're no longer cheap to compute.
1423
1424         * runtime/UString.h: Updated for renames.
1425
1426         * runtime/WeakGCMap.h: Added.
1427         (JSC::WeakGCMap::isEmpty):
1428         (JSC::WeakGCMap::uncheckedGet):
1429         (JSC::WeakGCMap::uncheckedBegin):
1430         (JSC::WeakGCMap::uncheckedEnd):
1431         (JSC::::get):
1432         (JSC::::take):
1433         (JSC::::set):
1434         (JSC::::uncheckedRemove): Mentioned above.
1435
1436         * wtf/StdLibExtras.h:
1437         (WTF::bitCount): Added a bit population count function, so the heap can
1438         count live objects to fulfill statistics questions.
1439
1440 The very last cell in the block is not allocated -- should not be marked.
1441
1442 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
1443
1444         Windows build fix: Export some new symbols.
1445
1446         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1447
1448 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
1449
1450         Windows build fix: Removed some old exports.
1451
1452         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1453
1454 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
1455
1456         Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
1457
1458         * wtf/StdLibExtras.h:
1459         (WTF::bitCount):
1460
1461 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
1462
1463         Reviewed by NOBODY (speculative Windows build fix).
1464
1465         * runtime/JSGlobalObjectFunctions.cpp:
1466
1467 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
1468
1469         Reviewed by Sam Weinig.
1470
1471         https://bugs.webkit.org/show_bug.cgi?id=32496
1472         Switch remaining cases of string construction to use StringBuilder.
1473         Builds strings using a vector rather than using string append / addition.
1474
1475         * JavaScriptCore.exp:
1476         * JavaScriptCore.xcodeproj/project.pbxproj:
1477         * runtime/Executable.cpp:
1478         (JSC::FunctionExecutable::paramString):
1479         * runtime/FunctionConstructor.cpp:
1480         (JSC::constructFunction):
1481         * runtime/JSGlobalObjectFunctions.cpp:
1482         (JSC::encode):
1483         (JSC::decode):
1484         (JSC::globalFuncEscape):
1485         (JSC::globalFuncUnescape):
1486         * runtime/JSONObject.cpp:
1487         (JSC::Stringifier::stringify):
1488         (JSC::Stringifier::indent):
1489         * runtime/JSString.h:
1490         * runtime/LiteralParser.cpp:
1491         (JSC::LiteralParser::Lexer::lexString):
1492         * runtime/NumberPrototype.cpp:
1493         (JSC::integerPartNoExp):
1494         (JSC::numberProtoFuncToFixed):
1495         (JSC::numberProtoFuncToPrecision):
1496         * runtime/Operations.h:
1497         (JSC::jsString):
1498         * runtime/StringPrototype.cpp:
1499         (JSC::substituteBackreferencesSlow):
1500         (JSC::substituteBackreferences):
1501         (JSC::stringProtoFuncConcat):
1502
1503 2009-12-08  Jeremy Moskovich  <jeremy@chromium.org>
1504
1505         Reviewed by Eric Seidel.
1506
1507         Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
1508         https://bugs.webkit.org/show_bug.cgi?id=31802
1509
1510         The goal here is to allow for a zero runtime hit for ports that decide to select
1511         the API at compile time.
1512         When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
1513         at runtime.  Core Text is used for OS Versions >= 10.6.
1514
1515         * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
1516
1517 2009-12-11  Maciej Stachowiak  <mjs@apple.com>
1518
1519         Reviewed by Oliver Hunt.
1520
1521         Unify codegen for forward and backward variants of branches
1522         https://bugs.webkit.org/show_bug.cgi?id=32463
1523
1524         * jit/JIT.h:
1525         (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
1526         (JSC::JIT::emit_op_loop_if_true): ditto
1527         (JSC::JIT::emitSlow_op_loop_if_true): ditto
1528         (JSC::JIT::emit_op_loop_if_false): ditto
1529         (JSC::JIT::emitSlow_op_loop_if_false): ditto
1530         (JSC::JIT::emit_op_loop_if_less): ditto
1531         (JSC::JIT::emitSlow_op_loop_if_less): ditto
1532         * jit/JITOpcodes.cpp:
1533
1534 2009-12-11  Sam Weinig  <sam@webkit.org>
1535
1536         Reviewed by Anders Carlsson.
1537
1538         Allow WTFs concept of the main thread to differ from pthreads when necessary.
1539
1540         * wtf/ThreadingPthreads.cpp:
1541         (WTF::initializeThreading):
1542         (WTF::isMainThread):
1543         * wtf/mac/MainThreadMac.mm:
1544         (WTF::initializeMainThreadPlatform):
1545         (WTF::scheduleDispatchFunctionsOnMainThread):
1546
1547 2009-12-11  Gavin Barraclough  <barraclough@apple.com>
1548
1549         Reviewed by Oliver Hunt.
1550
1551         https://bugs.webkit.org/show_bug.cgi?id=32454
1552         Refactor construction of simple strings to avoid string concatenation.
1553
1554         Building strings through concatenation has a memory and performance cost -
1555         a memory cost since we must over-allocate the buffer to leave space to append
1556         into, and performance in that the string may still require reallocation (and
1557         thus copying during construction).  Instead move the full construction to
1558         within a single function call (makeString), so that the arguments' lengths
1559         can be calculated and an appropriate sized buffer allocated before copying
1560         any characters.
1561
1562         ~No performance change (~2% progression on date tests).
1563
1564         * bytecode/CodeBlock.cpp:
1565         (JSC::escapeQuotes):
1566         (JSC::valueToSourceString):
1567         (JSC::constantName):
1568         (JSC::idName):
1569         (JSC::CodeBlock::registerName):
1570         (JSC::regexpToSourceString):
1571         (JSC::regexpName):
1572         * bytecompiler/NodesCodegen.cpp:
1573         (JSC::substitute):
1574         * profiler/Profiler.cpp:
1575         (JSC::Profiler::createCallIdentifier):
1576         * runtime/DateConstructor.cpp:
1577         (JSC::callDate):
1578         * runtime/DateConversion.cpp:
1579         (JSC::formatDate):
1580         (JSC::formatDateUTCVariant):
1581         (JSC::formatTime):
1582         (JSC::formatTimeUTC):
1583         * runtime/DateConversion.h:
1584         (JSC::):
1585         * runtime/DatePrototype.cpp:
1586         (JSC::dateProtoFuncToString):
1587         (JSC::dateProtoFuncToUTCString):
1588         (JSC::dateProtoFuncToDateString):
1589         (JSC::dateProtoFuncToTimeString):
1590         (JSC::dateProtoFuncToGMTString):
1591         * runtime/ErrorPrototype.cpp:
1592         (JSC::errorProtoFuncToString):
1593         * runtime/ExceptionHelpers.cpp:
1594         (JSC::createUndefinedVariableError):
1595         (JSC::createErrorMessage):
1596         (JSC::createInvalidParamError):
1597         * runtime/FunctionPrototype.cpp:
1598         (JSC::insertSemicolonIfNeeded):
1599         (JSC::functionProtoFuncToString):
1600         * runtime/ObjectPrototype.cpp:
1601         (JSC::objectProtoFuncToString):
1602         * runtime/RegExpConstructor.cpp:
1603         (JSC::constructRegExp):
1604         * runtime/RegExpObject.cpp:
1605         (JSC::RegExpObject::match):
1606         * runtime/RegExpPrototype.cpp:
1607         (JSC::regExpProtoFuncCompile):
1608         (JSC::regExpProtoFuncToString):
1609         * runtime/StringPrototype.cpp:
1610         (JSC::stringProtoFuncBig):
1611         (JSC::stringProtoFuncSmall):
1612         (JSC::stringProtoFuncBlink):
1613         (JSC::stringProtoFuncBold):
1614         (JSC::stringProtoFuncFixed):
1615         (JSC::stringProtoFuncItalics):
1616         (JSC::stringProtoFuncStrike):
1617         (JSC::stringProtoFuncSub):
1618         (JSC::stringProtoFuncSup):
1619         (JSC::stringProtoFuncFontcolor):
1620         (JSC::stringProtoFuncFontsize):
1621         (JSC::stringProtoFuncAnchor):
1622         * runtime/UString.h:
1623         (JSC::):
1624         (JSC::makeString):
1625
1626 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
1627
1628         Reviewed by Oliver Hunt.
1629
1630         https://bugs.webkit.org/show_bug.cgi?id=32400
1631         Switch remaining cases of string addition to use ropes.
1632
1633         Re-landing r51975 - added toPrimitiveString method,
1634         performs toPrimitive then subsequent toString operations.
1635
1636         ~1% progression on Sunspidey.
1637
1638         * jit/JITStubs.cpp:
1639         (JSC::DEFINE_STUB_FUNCTION):
1640         * runtime/JSString.h:
1641         (JSC::JSString::JSString):
1642         (JSC::JSString::appendStringInConstruct):
1643         * runtime/Operations.cpp:
1644         (JSC::jsAddSlowCase):
1645         * runtime/Operations.h:
1646         (JSC::jsString):
1647         (JSC::jsAdd):
1648
1649 2009-12-11  Adam Roben  <aroben@apple.com>
1650
1651         Windows build fix
1652
1653         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
1654         $(WebKitOutputDir)/include/private to the include path.
1655
1656 2009-12-11  Adam Roben  <aroben@apple.com>
1657
1658         Move QuartzCorePresent.h to include/private
1659
1660         This fixes other projects that use wtf/Platform.h
1661
1662         Rubber-stamped by Steve Falkenburg.
1663
1664         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
1665         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
1666         QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
1667
1668         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1669         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
1670         Added $(WebKitOutputDir)/include/private to the include path.
1671
1672 2009-12-11  Adam Roben  <aroben@apple.com>
1673
1674         Fix clean builds and everything rebuilding on every build
1675
1676         Reviewed by Sam Weinig.
1677
1678         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
1679         write out QuartzCorePresent.h if it exists but is older than
1680         QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
1681         into first.
1682
1683 2009-12-11  Adam Roben  <aroben@apple.com>
1684
1685         Windows build fix for systems with spaces in their paths
1686
1687         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
1688
1689 2009-12-11  Chris Marrin  <cmarrin@apple.com>
1690
1691         Reviewed by Adam Roben.
1692
1693         Add check for presence of QuartzCore headers
1694         https://bugs.webkit.org/show_bug.cgi?id=31856
1695         
1696         The script now checks for the presence of QuartzCore.h. If present
1697         it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
1698         HW compositing on Windows. The script writes QuartzCorePresent.h to
1699         the build directory which has a define telling whether QuartzCore is 
1700         present.
1701
1702         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
1703         * wtf/Platform.h:
1704
1705 2009-12-11  Kent Tamura  <tkent@chromium.org>
1706
1707         Reviewed by Darin Adler.
1708
1709         Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
1710         value for a huge year value.
1711         https://bugs.webkit.org/show_bug.cgi?id=32304
1712
1713         * wtf/DateMath.cpp:
1714         (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
1715         (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
1716         (WTF::timeClip): Use maxECMAScriptTime.
1717         (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
1718
1719 2009-12-10  Adam Barth  <abarth@webkit.org>
1720
1721         No review, rolling out r51975.
1722         http://trac.webkit.org/changeset/51975
1723
1724         * jit/JITStubs.cpp:
1725         (JSC::DEFINE_STUB_FUNCTION):
1726         * runtime/JSString.h:
1727         (JSC::JSString::JSString):
1728         (JSC::JSString::appendStringInConstruct):
1729         * runtime/Operations.cpp:
1730         (JSC::jsAddSlowCase):
1731         * runtime/Operations.h:
1732         (JSC::jsString):
1733         (JSC::jsAdd):
1734
1735 2009-12-10  Oliver Hunt  <oliver@apple.com>
1736
1737         Reviewed by Gavin Barraclough.
1738
1739         Incorrect caching of prototype lookup with dictionary base
1740         https://bugs.webkit.org/show_bug.cgi?id=32402
1741
1742         Make sure we don't add cached prototype lookup to the proto_list
1743         lookup chain if the top level object is a dictionary.
1744
1745         * jit/JITStubs.cpp:
1746         (JSC::JITThunks::tryCacheGetByID):
1747
1748 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
1749
1750         Reviewed by Oliver Hunt.
1751
1752         https://bugs.webkit.org/show_bug.cgi?id=32400
1753         Switch remaining cases of string addition to use ropes.
1754
1755         ~1% progression on Sunspidey.
1756
1757         * jit/JITStubs.cpp:
1758         (JSC::DEFINE_STUB_FUNCTION):
1759         * runtime/JSString.h:
1760         (JSC::JSString::JSString):
1761         (JSC::JSString::appendStringInConstruct):
1762         * runtime/Operations.cpp:
1763         (JSC::jsAddSlowCase):
1764         * runtime/Operations.h:
1765         (JSC::jsString):
1766         (JSC::jsAdd):
1767
1768 2009-12-10  Kent Hansen  <kent.hansen@nokia.com>
1769
1770         Reviewed by Geoffrey Garen.
1771
1772         Remove JSObject::getPropertyAttributes() and all usage of it.
1773         https://bugs.webkit.org/show_bug.cgi?id=31933
1774
1775         getOwnPropertyDescriptor() should be used instead.
1776
1777         * JavaScriptCore.exp:
1778         * JavaScriptCore.order:
1779         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1780         * debugger/DebuggerActivation.cpp:
1781         (JSC::DebuggerActivation::getOwnPropertyDescriptor):
1782         * debugger/DebuggerActivation.h:
1783         * runtime/JSObject.cpp:
1784         (JSC::JSObject::propertyIsEnumerable):
1785         * runtime/JSObject.h:
1786         * runtime/JSVariableObject.cpp:
1787         * runtime/JSVariableObject.h:
1788
1789 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
1790
1791         Reviewed by Oliver Hunt & Mark Rowe.
1792
1793         https://bugs.webkit.org/show_bug.cgi?id=32367
1794         Add support for short Ropes (up to 3 entries) inline within JSString.
1795         (rather than externally allocating an object to hold the rope).
1796         Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
1797
1798         ~1% progression on Sunspidey.
1799
1800         * interpreter/Interpreter.cpp:
1801         (JSC::Interpreter::privateExecute):
1802         * jit/JITOpcodes.cpp:
1803         (JSC::JIT::privateCompileCTIMachineTrampolines):
1804         * jit/JITStubs.cpp:
1805         (JSC::DEFINE_STUB_FUNCTION):
1806         * runtime/JSString.cpp:
1807         (JSC::JSString::resolveRope):
1808         (JSC::JSString::toBoolean):
1809         (JSC::JSString::getStringPropertyDescriptor):
1810         * runtime/JSString.h:
1811         (JSC::JSString::Rope::Fiber::deref):
1812         (JSC::JSString::Rope::Fiber::ref):
1813         (JSC::JSString::Rope::Fiber::refAndGetLength):
1814         (JSC::JSString::Rope::append):
1815         (JSC::JSString::JSString):
1816         (JSC::JSString::~JSString):
1817         (JSC::JSString::value):
1818         (JSC::JSString::tryGetValue):
1819         (JSC::JSString::length):
1820         (JSC::JSString::canGetIndex):
1821         (JSC::JSString::appendStringInConstruct):
1822         (JSC::JSString::appendValueInConstructAndIncrementLength):
1823         (JSC::JSString::isRope):
1824         (JSC::JSString::string):
1825         (JSC::JSString::ropeLength):
1826         (JSC::JSString::getStringPropertySlot):
1827         * runtime/Operations.h:
1828         (JSC::jsString):
1829         (JSC::jsAdd):
1830         (JSC::resolveBase):
1831
1832 2009-12-09  Anders Carlsson  <andersca@apple.com>
1833
1834         Reviewed by Geoffrey Garen.
1835
1836         Fix three more things found by compiling with clang++.
1837         
1838         * runtime/Structure.h:
1839         (JSC::StructureTransitionTable::reifySingleTransition):
1840         Add the 'std' qualifier to the call to make_pair.
1841
1842         * wtf/DateMath.cpp:
1843         (WTF::initializeDates):
1844         Incrementing a bool is deprecated according to the C++ specification.
1845         
1846         * wtf/PtrAndFlags.h:
1847         (WTF::PtrAndFlags::PtrAndFlags):
1848         Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
1849
1850 2009-12-09  Maciej Stachowiak  <mjs@apple.com>
1851
1852         Reviewed by Oliver Hunt.
1853
1854         Google reader gets stuck in the "Loading..." state and does not complete
1855         https://bugs.webkit.org/show_bug.cgi?id=32256
1856         <rdar://problem/7456388>
1857
1858         * jit/JITArithmetic.cpp:
1859         (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
1860
1861 2009-12-09  Gavin Barraclough  <barraclough@apple.com>
1862
1863         Reviewed by Oliver Hunt.
1864
1865         https://bugs.webkit.org/show_bug.cgi?id=32228
1866         Make destruction of ropes non-recursive to prevent stack exhaustion.
1867         Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
1868         since the Rep is not being ref counted this could result in usage of a
1869         Rep with refcount zero (where the Rep comes from a temporary UString
1870         returned from a function).
1871
1872         * runtime/JSString.cpp:
1873         (JSC::JSString::Rope::destructNonRecursive):
1874         (JSC::JSString::Rope::~Rope):
1875         * runtime/JSString.h:
1876         (JSC::JSString::Rope::initializeFiber):
1877         * runtime/Operations.h:
1878         (JSC::concatenateStrings):
1879
1880 2009-12-09  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
1881
1882         Reviewed by Eric Seidel.
1883
1884         https://bugs.webkit.org/show_bug.cgi?id=31930
1885
1886         Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
1887         The speedup is 25%.
1888
1889         * runtime/JSGlobalData.cpp:
1890         (JSC::VPtrSet::VPtrSet):
1891
1892 2009-12-09  Steve Block  <steveblock@google.com>
1893
1894         Reviewed by Adam Barth.
1895
1896         Updates Android Makefiles with latest additions.
1897         https://bugs.webkit.org/show_bug.cgi?id=32278
1898
1899         * Android.mk: Modified.
1900         * Android.v8.wtf.mk: Modified.
1901
1902 2009-12-09  Sam Weinig  <sam@webkit.org>
1903
1904         Reviewed by Gavin Barraclough.
1905
1906         Fix a bug found while trying to compile JavaScriptCore with clang++.
1907
1908         * yarr/RegexPattern.h:
1909         (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here.  Use false instead.
1910
1911 2009-12-09  Anders Carlsson  <andersca@apple.com>
1912
1913         Reviewed by Sam Weinig.
1914
1915         Attempt to fix the Windows build.
1916         
1917         * wtf/FastMalloc.h:
1918
1919 2009-12-09  Anders Carlsson  <andersca@apple.com>
1920
1921         Reviewed by Sam Weinig.
1922
1923         Fix some things found while trying to compile JavaScriptCore with clang++.
1924
1925         * wtf/FastMalloc.h:
1926         Add correct exception specifications for the allocation/deallocation operators.
1927         
1928         * wtf/Vector.h:
1929         * wtf/VectorTraits.h:
1930         Fix a bunch of struct/class mismatches.
1931
1932 2009-12-08  Maciej Stachowiak  <mjs@apple.com>
1933
1934         Reviewed by Darin Adler.
1935
1936         move code generation portions of Nodes.cpp to bytecompiler directory
1937         https://bugs.webkit.org/show_bug.cgi?id=32284
1938
1939         * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
1940         are not about codegen.
1941         * parser/Nodes.cpp: Removed everything that is about codegen.
1942
1943         Update build systems:
1944         
1945         * Android.mk:
1946         * GNUmakefile.am:
1947         * JavaScriptCore.gypi:
1948         * JavaScriptCore.pri:
1949         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1950         * JavaScriptCore.xcodeproj/project.pbxproj:
1951         * JavaScriptCoreSources.bkl:
1952
1953 2009-12-08  Kevin Watters  <kevinwatters@gmail.com>
1954
1955         Reviewed by Kevin Ollivier.
1956
1957         [wx] Mac plugins support.
1958         
1959         https://bugs.webkit.org/show_bug.cgi?id=32236
1960
1961         * wtf/Platform.h:
1962
1963 2009-12-08  Dmitry Titov  <dimich@chromium.org>
1964
1965         Rubber-stamped by David Levin.
1966
1967         Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
1968         It may have caused massive increase of reported leaks on the bots.
1969         https://bugs.webkit.org/show_bug.cgi?id=31639
1970
1971         * GNUmakefile.am:
1972         * JavaScriptCore.gypi:
1973         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1974         * JavaScriptCore.xcodeproj/project.pbxproj:
1975         * runtime/Structure.cpp:
1976         (JSC::Structure::Structure):
1977         * wtf/RefCounted.h:
1978         (WTF::RefCountedBase::ref):
1979         (WTF::RefCountedBase::hasOneRef):
1980         (WTF::RefCountedBase::refCount):
1981         (WTF::RefCountedBase::derefBase):
1982         * wtf/ThreadVerifier.h: Removed.
1983
1984 2009-12-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
1985
1986         Reviewed by Darin Adler.
1987
1988         Make WebKit build correctly on FreeBSD, IA64, and Alpha.
1989         Based on work by Petr Salinger <Petr.Salinger@seznam.cz>,
1990         and Colin Watson <cjwatson@ubuntu.com>.
1991
1992         * wtf/Platform.h:
1993
1994 2009-12-08  Dmitry Titov  <dimich@chromium.org>
1995
1996         Reviewed by Darin Adler.
1997
1998         Add asserts to RefCounted to make sure ref/deref happens on the right thread.
1999         https://bugs.webkit.org/show_bug.cgi?id=31639
2000
2001         * runtime/Structure.cpp:
2002         (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
2003         * wtf/RefCounted.h:
2004         (WTF::RefCountedBase::ref): Add ASSERT.
2005         (WTF::RefCountedBase::hasOneRef): Ditto.
2006         (WTF::RefCountedBase::refCount): Ditto.
2007         (WTF::RefCountedBase::derefBase): Ditto.
2008         (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
2009         * wtf/ThreadVerifier.h: Added.
2010         (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
2011         (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
2012         (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
2013         (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
2014         (WTF::ThreadVerifier::verifyThread):
2015         * GNUmakefile.am: Add ThreadVerifier.h to the build file.
2016         * JavaScriptCore.gypi: Ditto.
2017         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
2018         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
2019
2020 2009-12-08  Steve Block  <steveblock@google.com>
2021
2022         Reviewed by Adam Barth.
2023
2024         [Android] Adds Makefiles for Android port.
2025         https://bugs.webkit.org/show_bug.cgi?id=31325
2026
2027         * Android.mk: Added.
2028         * Android.v8.wtf.mk: Added.
2029
2030 2009-12-07  Dmitry Titov  <dimich@chromium.org>
2031
2032         Rubber-stamped by Darin Adler.
2033
2034         Remove ENABLE_SHARED_SCRIPT flags
2035         https://bugs.webkit.org/show_bug.cgi?id=32245
2036         This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
2037
2038         * Configurations/FeatureDefines.xcconfig:
2039         * wtf/Platform.h:
2040
2041 2009-12-07  Gavin Barraclough  <barraclough@apple.com>
2042
2043         Reviewed by NOBODY (Windows build fixage part I).
2044
2045         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2046
2047 2009-12-05  Gavin Barraclough  <barraclough@apple.com>
2048
2049         Reviewed by Oliver Hunt.
2050
2051         https://bugs.webkit.org/show_bug.cgi?id=32184
2052         Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
2053         Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
2054
2055         * API/JSCallbackObjectFunctions.h:
2056         (JSC::::toString):
2057         * API/JSValueRef.cpp:
2058         (JSValueIsStrictEqual):
2059         * JavaScriptCore.exp:
2060         * bytecompiler/BytecodeGenerator.cpp:
2061         (JSC::BytecodeGenerator::emitEqualityOp):
2062         * debugger/DebuggerCallFrame.cpp:
2063         (JSC::DebuggerCallFrame::functionName):
2064         (JSC::DebuggerCallFrame::calculatedFunctionName):
2065         * interpreter/Interpreter.cpp:
2066         (JSC::Interpreter::callEval):
2067         (JSC::Interpreter::privateExecute):
2068         * jit/JITStubs.cpp:
2069         (JSC::DEFINE_STUB_FUNCTION):
2070         * profiler/ProfileGenerator.cpp:
2071         (JSC::ProfileGenerator::addParentForConsoleStart):
2072         * profiler/Profiler.cpp:
2073         (JSC::Profiler::willExecute):
2074         (JSC::Profiler::didExecute):
2075         (JSC::Profiler::createCallIdentifier):
2076         (JSC::createCallIdentifierFromFunctionImp):
2077         * profiler/Profiler.h:
2078         * runtime/ArrayPrototype.cpp:
2079         (JSC::arrayProtoFuncIndexOf):
2080         (JSC::arrayProtoFuncLastIndexOf):
2081         * runtime/DateConstructor.cpp:
2082         (JSC::constructDate):
2083         * runtime/FunctionPrototype.cpp:
2084         (JSC::functionProtoFuncToString):
2085         * runtime/InternalFunction.cpp:
2086         (JSC::InternalFunction::name):
2087         (JSC::InternalFunction::displayName):
2088         (JSC::InternalFunction::calculatedDisplayName):
2089         * runtime/InternalFunction.h:
2090         * runtime/JSCell.cpp:
2091         (JSC::JSCell::getString):
2092         * runtime/JSCell.h:
2093         (JSC::JSValue::getString):
2094         * runtime/JSONObject.cpp:
2095         (JSC::gap):
2096         (JSC::Stringifier::Stringifier):
2097         (JSC::Stringifier::appendStringifiedValue):
2098         * runtime/JSObject.cpp:
2099         (JSC::JSObject::putDirectFunction):
2100         (JSC::JSObject::putDirectFunctionWithoutTransition):
2101         (JSC::JSObject::defineOwnProperty):
2102         * runtime/JSObject.h:
2103         * runtime/JSPropertyNameIterator.cpp:
2104         (JSC::JSPropertyNameIterator::get):
2105         * runtime/JSString.cpp:
2106         (JSC::JSString::Rope::~Rope):
2107         (JSC::JSString::resolveRope):
2108         (JSC::JSString::getPrimitiveNumber):
2109         (JSC::JSString::toNumber):
2110         (JSC::JSString::toString):
2111         (JSC::JSString::toThisString):
2112         (JSC::JSString::getStringPropertyDescriptor):
2113         * runtime/JSString.h:
2114         (JSC::JSString::Rope::createOrNull):
2115         (JSC::JSString::Rope::operator new):
2116         (JSC::JSString::value):
2117         (JSC::JSString::tryGetValue):
2118         (JSC::JSString::getIndex):
2119         (JSC::JSString::getStringPropertySlot):
2120         (JSC::JSValue::toString):
2121         * runtime/JSValue.h:
2122         * runtime/NativeErrorConstructor.cpp:
2123         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2124         * runtime/Operations.cpp:
2125         (JSC::JSValue::strictEqualSlowCase):
2126         * runtime/Operations.h:
2127         (JSC::JSValue::equalSlowCaseInline):
2128         (JSC::JSValue::strictEqualSlowCaseInline):
2129         (JSC::JSValue::strictEqual):
2130         (JSC::jsLess):
2131         (JSC::jsLessEq):
2132         (JSC::jsAdd):
2133         (JSC::concatenateStrings):
2134         * runtime/PropertyDescriptor.cpp:
2135         (JSC::PropertyDescriptor::equalTo):
2136         * runtime/PropertyDescriptor.h:
2137         * runtime/StringPrototype.cpp:
2138         (JSC::stringProtoFuncReplace):
2139         (JSC::stringProtoFuncToLowerCase):
2140         (JSC::stringProtoFuncToUpperCase):
2141
2142 2009-12-07  Nikolas Zimmermann  <nzimmermann@rim.com>
2143
2144         Reviewed by Holger Freyther.
2145
2146         Turn on (SVG) Filters support, by default.
2147         https://bugs.webkit.org/show_bug.cgi?id=32224
2148
2149         * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
2150
2151 2009-12-07  Steve Falkenburg  <sfalken@apple.com>
2152
2153         Build fix. Be flexible about which version of ICU is used on Windows.
2154
2155         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
2156
2157 2009-12-07  Maciej Stachowiak  <mjs@apple.com>
2158
2159         Reviewed by Oliver Hunt.
2160
2161         op_loop_if_less JIT codegen is broken for 64-bit
2162         https://bugs.webkit.org/show_bug.cgi?id=32221
2163
2164         * jit/JITOpcodes.cpp:
2165         (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
2166
2167 2009-12-07  Oliver Hunt  <oliver@apple.com>
2168
2169         Reviewed by Maciej Stachowiak.
2170
2171         Object.create fails if properties on the descriptor are getters
2172         https://bugs.webkit.org/show_bug.cgi?id=32219
2173
2174         Correctly initialise the PropertySlots with the descriptor object.
2175
2176         * runtime/ObjectConstructor.cpp:
2177         (JSC::toPropertyDescriptor):
2178
2179 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
2180
2181         Not reviewed, build fix.
2182
2183         Actually tested 64-bit *and* 32-bit build this time.
2184
2185         * jit/JITOpcodes.cpp:
2186         (JSC::JIT::emit_op_loop_if_false):
2187
2188 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
2189
2190         Not reviewed, build fix.
2191
2192         Really really fix 64-bit build for prior patch (actually tested this time).
2193
2194         * jit/JITOpcodes.cpp:
2195         (JSC::JIT::emit_op_loop_if_false):
2196         (JSC::JIT::emitSlow_op_loop_if_false):
2197
2198 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
2199
2200         Not reviewed, build fix.
2201
2202         Really fix 64-bit build for prior patch.
2203
2204         * jit/JITArithmetic.cpp:
2205         (JSC::JIT::emitSlow_op_jless):
2206
2207 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
2208
2209         Not reviewed, build fix.
2210
2211         Fix 64-bit build for prior patch.
2212
2213         * jit/JITOpcodes.cpp:
2214         (JSC::JIT::emitSlow_op_loop_if_less):
2215
2216 2009-12-05  Maciej Stachowiak  <mjs@apple.com>
2217
2218         Reviewed by Oliver Hunt.
2219
2220         conway benchmark spends half it's time in op_less (jump fusion fails)
2221         https://bugs.webkit.org/show_bug.cgi?id=32190
2222
2223         <1% speedup on SunSpider and V8
2224         2x speedup on "conway" benchmark
2225         
2226         Two optimizations:
2227         1) Improve codegen for logical operators &&, || and ! in a condition context
2228         
2229         When generating code for combinations of &&, || and !, in a
2230         condition context (i.e. in an if statement or loop condition), we
2231         used to produce a value, and then separately jump based on its
2232         truthiness. Now we pass the false and true targets in, and let the
2233         logical operators generate jumps directly. This helps in four
2234         ways:
2235
2236         a) Individual clauses of a short-circuit logical operator can now
2237         jump directly to the then or else clause of an if statement (or to
2238         the top or exit of a loop) instead of jumping to a jump.
2239         
2240         b) It used to be that jump fusion with the condition of the first
2241         clause of a logical operator was inhibited, because the register
2242         was ref'd to be used later, in the actual condition jump; this no
2243         longer happens since a jump straight to the final target is
2244         generated directly.
2245
2246         c) It used to be that jump fusion with the condition of the second
2247         clause of a logical operator was inhibited, because there was a
2248         jump target right after the second clause and before the actual
2249         condition jump. But now it's no longer necessary for the first
2250         clause to jump there so jump fusion is not blocked.
2251
2252         d) We avoid generating excess mov statements in some cases.
2253         
2254         As a concrete example this source:
2255         
2256         if (!((x < q && y < q) || (t < q && z < q))) {
2257             // ...
2258         }
2259         
2260         Used to generate this bytecode:
2261         
2262         [  34] less              r1, r-15, r-19
2263         [  38] jfalse            r1, 7(->45)
2264         [  41] less              r1, r-16, r-19
2265         [  45] jtrue             r1, 14(->59)
2266         [  48] less              r1, r-17, r-19
2267         [  52] jfalse            r1, 7(->59)
2268         [  55] less              r1, r-18, r-19
2269         [  59] jtrue             r1, 17(->76)
2270         
2271         And now generates this bytecode (also taking advantage of the second optimization below):
2272         
2273         [  34] jnless            r-15, r-19, 8(->42)
2274         [  38] jless             r-16, r-19, 26(->64)
2275         [  42] jnless            r-17, r-19, 8(->50)
2276         [  46] jless             r-18, r-19, 18(->64)
2277         
2278         Note the jump fusion and the fact that there's less jump
2279         indirection - three of the four jumps go straight to the target
2280         clause instead of indirecting through another jump.
2281         
2282         2) Implement jless opcode to take advantage of the above, since we'll now often generate
2283         a less followed by a jtrue where fusion is not forbidden.
2284        
2285         * parser/Nodes.h:
2286         (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
2287         whether a node supports special conditional codegen. Return false as this is the default.
2288         (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
2289         defined for nodes that do have conditional codegen.
2290         (JSC::UnaryOpNode::expr): Add const version.
2291         (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
2292         supports it.
2293         (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
2294         * parser/Nodes.cpp:
2295         (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
2296         the true and false targets for the child node.
2297         (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
2298         directly, improving codegen quality. Also handles further nested conditional codegen.
2299         (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
2300         (JSC::IfNode::emitBytecode): ditto
2301         (JSC::IfElseNode::emitBytecode): ditto
2302         (JSC::DoWhileNode::emitBytecode): ditto
2303         (JSC::WhileNode::emitBytecode): ditto
2304         (JSC::ForNode::emitBytecode): ditto
2305
2306         * bytecode/Opcode.h: 
2307         - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
2308         - Added jless opcode to take advantage of new fusion opportunities.
2309         * bytecode/CodeBlock.cpp:
2310         (JSC::CodeBlock::dump): Handle above.
2311         * bytecompiler/BytecodeGenerator.cpp:
2312         (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
2313         (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
2314         * bytecompiler/BytecodeGenerator.h:
2315         (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
2316         overly deep expressions etc.
2317         * interpreter/Interpreter.cpp:
2318         (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
2319         * jit/JIT.cpp:
2320         (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
2321         (JSC::JIT::privateCompileSlowCases): ditto
2322         * jit/JIT.h:
2323         * jit/JITArithmetic.cpp:
2324         (JSC::JIT::emit_op_jless):
2325         (JSC::JIT::emitSlow_op_jless): ditto
2326         (JSC::JIT::emitBinaryDoubleOp): ditto
2327         * jit/JITOpcodes.cpp:
2328         (JSC::JIT::emitSlow_op_loop_if_less): ditto
2329         (JSC::JIT::emit_op_loop_if_false): ditto
2330         (JSC::JIT::emitSlow_op_loop_if_false): ditto
2331         * jit/JITStubs.cpp:
2332         * jit/JITStubs.h:
2333         (JSC::):
2334
2335 2009-12-04  Kent Hansen  <kent.hansen@nokia.com>
2336
2337         Reviewed by Darin Adler.
2338
2339         JavaScript delete operator should return false for string properties
2340         https://bugs.webkit.org/show_bug.cgi?id=32012
2341
2342         * runtime/StringObject.cpp:
2343         (JSC::StringObject::deleteProperty):
2344
2345 2009-12-03  Drew Wilson  <atwilson@chromium.org>
2346
2347         Rolled back r51633 because it causes a perf regression in Chromium.
2348
2349         * wtf/Platform.h:
2350
2351 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
2352
2353         Try and fix the Windows build.
2354
2355         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
2356
2357 2009-12-03  Mark Rowe  <mrowe@apple.com>
2358
2359         Try and fix the Mac build.
2360
2361         * JavaScriptCore.exp:  Export a symbol that should be exported.
2362
2363 2009-12-03  Oliver Hunt  <oliver@apple.com>
2364
2365         Reviewed by Gavin Barraclough.
2366
2367         REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
2368         https://bugs.webkit.org/show_bug.cgi?id=32133
2369
2370         Work around odd GCC-ism and correct the scopechain for use by
2371         calls made while a cachedcall is active on the callstack.
2372
2373         * interpreter/CachedCall.h:
2374         (JSC::CachedCall::newCallFrame):
2375         * runtime/JSArray.cpp:
2376         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
2377         * runtime/StringPrototype.cpp:
2378         (JSC::stringProtoFuncReplace):
2379
2380 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
2381
2382         Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
2383
2384         https://bugs.webkit.org/show_bug.cgi?id=32136
2385         Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
2386         Instead, allow the result of a string concatenation to be represented in a tree form - with a
2387         variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
2388
2389         Strings must still currently be resolved down to a flat UString representation before being used,
2390         but by holding the string in a rope representation during construction we can avoid copying data
2391         until we know the final size of the string.
2392
2393         ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
2394
2395         * JavaScriptCore.exp:
2396
2397             - Update exports.
2398
2399         * interpreter/Interpreter.cpp:
2400         (JSC::Interpreter::privateExecute):
2401
2402             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
2403
2404         * jit/JITOpcodes.cpp:
2405         (JSC::JIT::privateCompileCTIMachineTrampolines):
2406
2407             - Switch the string length trampoline to read the length directly from JSString::m_length,
2408               rather than from the JSString's UString::Rep's 'len' property.
2409
2410         * jit/JITStubs.cpp:
2411         (JSC::DEFINE_STUB_FUNCTION):
2412
2413             - Modify op_add such that addition of two strings, where either or both strings are already
2414               in rope representation, produces a rope as a result.
2415
2416         * runtime/JSString.cpp:
2417         (JSC::JSString::Rope::~Rope):
2418         (JSC::copyChars):
2419         (JSC::JSString::resolveRope):
2420         (JSC::JSString::getPrimitiveNumber):
2421         (JSC::JSString::toBoolean):
2422         (JSC::JSString::toNumber):
2423         (JSC::JSString::toString):
2424         (JSC::JSString::toThisString):
2425         (JSC::JSString::getStringPropertyDescriptor):
2426         * runtime/JSString.h:
2427         (JSC::JSString::Rope::Fiber::Fiber):
2428         (JSC::JSString::Rope::Fiber::destroy):
2429         (JSC::JSString::Rope::Fiber::isRope):
2430         (JSC::JSString::Rope::Fiber::rope):
2431         (JSC::JSString::Rope::Fiber::string):
2432         (JSC::JSString::Rope::create):
2433         (JSC::JSString::Rope::initializeFiber):
2434         (JSC::JSString::Rope::ropeLength):
2435         (JSC::JSString::Rope::stringLength):
2436         (JSC::JSString::Rope::fibers):
2437         (JSC::JSString::Rope::Rope):
2438         (JSC::JSString::Rope::operator new):
2439         (JSC::JSString::JSString):
2440         (JSC::JSString::value):
2441         (JSC::JSString::length):
2442         (JSC::JSString::isRope):
2443         (JSC::JSString::rope):
2444         (JSC::JSString::string):
2445         (JSC::JSString::canGetIndex):
2446         (JSC::jsSingleCharacterSubstring):
2447         (JSC::JSString::getIndex):
2448         (JSC::jsSubstring):
2449         (JSC::JSString::getStringPropertySlot):
2450
2451             - Add rope form.
2452
2453         * runtime/Operations.h:
2454         (JSC::jsAdd):
2455         (JSC::concatenateStrings):
2456
2457             - Update string concatenation, and addition of ropes, to produce ropes.
2458
2459         * runtime/StringObject.cpp:
2460         (JSC::StringObject::getOwnPropertyNames):
2461
2462             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
2463
2464 2009-11-23  Jeremy Moskovich  <jeremy@chromium.org>
2465
2466         Reviewed by Eric Seidel.
2467
2468         Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
2469         https://bugs.webkit.org/show_bug.cgi?id=31802
2470
2471         No test since this is already covered by existing pixel tests.
2472
2473         * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
2474
2475 2009-12-02  Oliver Hunt  <oliver@apple.com>
2476
2477         Reviewed by Gavin Barraclough.
2478
2479         Add files missed in prior patch.
2480
2481         * runtime/JSZombie.cpp:
2482         (JSC::):
2483         (JSC::JSZombie::leakedZombieStructure):
2484         * runtime/JSZombie.h: Added.
2485         (JSC::JSZombie::JSZombie):
2486         (JSC::JSZombie::isZombie):
2487         (JSC::JSZombie::classInfo):
2488         (JSC::JSZombie::isGetterSetter):
2489         (JSC::JSZombie::isAPIValueWrapper):
2490         (JSC::JSZombie::isPropertyNameIterator):
2491         (JSC::JSZombie::getCallData):
2492         (JSC::JSZombie::getConstructData):
2493         (JSC::JSZombie::getUInt32):
2494         (JSC::JSZombie::toPrimitive):
2495         (JSC::JSZombie::getPrimitiveNumber):
2496         (JSC::JSZombie::toBoolean):
2497         (JSC::JSZombie::toNumber):
2498         (JSC::JSZombie::toString):
2499         (JSC::JSZombie::toObject):
2500         (JSC::JSZombie::markChildren):
2501         (JSC::JSZombie::put):
2502         (JSC::JSZombie::deleteProperty):
2503         (JSC::JSZombie::toThisObject):
2504         (JSC::JSZombie::toThisString):
2505         (JSC::JSZombie::toThisJSString):
2506         (JSC::JSZombie::getJSNumber):
2507         (JSC::JSZombie::getOwnPropertySlot):
2508
2509 2009-12-02  Oliver Hunt  <oliver@apple.com>
2510
2511         Reviewed by Gavin Barraclough.
2512
2513         Add zombies to JSC
2514         https://bugs.webkit.org/show_bug.cgi?id=32103
2515
2516         Add a compile time flag to make the JSC collector replace "unreachable"
2517         objects with zombie objects.  The zombie object is a JSCell subclass that
2518         ASSERTs on any attempt to use the JSCell methods.  In addition there are
2519         a number of additional assertions in bottleneck code to catch zombie usage
2520         as quickly as possible.
2521
2522         Grrr. Argh. Brains.
2523
2524         * JavaScriptCore.xcodeproj/project.pbxproj:
2525         * interpreter/Register.h:
2526         (JSC::Register::Register):
2527         * runtime/ArgList.h:
2528         (JSC::MarkedArgumentBuffer::append):
2529         (JSC::ArgList::ArgList):
2530         * runtime/Collector.cpp:
2531         (JSC::Heap::destroy):
2532         (JSC::Heap::sweep):
2533         * runtime/Collector.h:
2534         * runtime/JSCell.h:
2535         (JSC::JSCell::isZombie):
2536         (JSC::JSValue::isZombie):
2537         * runtime/JSValue.h:
2538         (JSC::JSValue::decode):
2539         (JSC::JSValue::JSValue):
2540         * wtf/Platform.h:
2541
2542 2009-12-01  Jens Alfke  <snej@chromium.org>
2543
2544         Reviewed by Darin Adler.
2545
2546         Added variants of find/contains/add that allow a foreign key type to be used.
2547         This will allow AtomicString-keyed maps to be queried by C string without
2548         having to create a temporary AtomicString (see HTTPHeaderMap.)
2549         The code for this is adapted from the equivalent in HashSet.h.
2550
2551         * wtf/HashMap.h:
2552         (WTF::HashMap::find):
2553         (WTF::HashMap::contains):
2554         (WTF::HashMap::add):
2555         * wtf/HashSet.h: Changed "method" to "function member" in a comment.
2556
2557 2009-12-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
2558
2559         Revert 51551 because it broke GTK+.
2560
2561         * wtf/Platform.h:
2562
2563 2009-11-30  Gavin Barraclough  <barraclough@apple.com>
2564
2565         Windows Build fix.  Reviewed by NOBODY.
2566
2567         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2568
2569 2009-11-24  Gavin Barraclough  <barraclough@apple.com>
2570
2571         Reviewed by Geoff Garen.
2572
2573         Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
2574
2575         WebCore presently has to explicitly specify the world before entering into JSC,
2576         which is a little fragile (particularly since property access via a
2577         getter/setter might invoke execution). Instead derive the current world from
2578         the lexical global object.
2579         
2580         Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
2581
2582         * API/JSBase.cpp:
2583         (JSEvaluateScript):
2584         * API/JSObjectRef.cpp:
2585         (JSObjectCallAsFunction):
2586         * JavaScriptCore.exp:
2587         * runtime/JSGlobalData.cpp:
2588         * runtime/JSGlobalData.h:
2589
2590 2009-11-30  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2591
2592         Reviewed by Kenneth Rohde Christiansen.
2593
2594         [Qt] Remove obsolete PLATFORM(KDE) code
2595         https://bugs.webkit.org/show_bug.cgi?id=31958
2596
2597         KDE is now using unpatched QtWebKit.
2598
2599         * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
2600         * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 
2601         section that is guarded with it.
2602
2603 2009-11-30  Jan-Arve Sæther  <jan-arve.saether@nokia.com>
2604
2605         Reviewed by Simon Hausmann.
2606
2607         [Qt] Fix compilation with win32-icc
2608
2609         The Intel compiler does not support the __has_trivial_constructor type
2610         trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
2611         reason for that is that the Intel Compiler depends on the Microsoft
2612         Platform SDK, and in order to try to be "fully" MS compatible it will
2613         "pretend" to be the same MS compiler as was shipped with the MS PSDK.
2614         (Thus, compiling with win32-icc with VC8 SDK will make the source code
2615         "think" the compiler at hand supports this type trait).
2616
2617         * wtf/TypeTraits.h:
2618
2619 2009-11-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2620
2621         Reviewed by Eric Seidel.
2622
2623         [Qt] Mac build has JIT disabled
2624         https://bugs.webkit.org/show_bug.cgi?id=31828
2625
2626         * wtf/Platform.h: Enable JIT for Qt Mac builds
2627
2628 2009-11-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2629
2630         Reviewed by Eric Seidel.
2631
2632         Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
2633         https://bugs.webkit.org/show_bug.cgi?id=31943
2634
2635         * runtime/MarkStack.h:
2636         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
2637
2638 2009-11-28  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
2639
2640         Reviewed by Gavin Barraclough.
2641
2642         https://bugs.webkit.org/show_bug.cgi?id=31930
2643
2644         Seems a typo. We don't need ~270k memory to determine the vptrs.
2645
2646         * runtime/JSGlobalData.cpp:
2647         (JSC::VPtrSet::VPtrSet):
2648
2649 2009-11-27  Shinichiro Hamaji  <hamaji@chromium.org>
2650
2651         Unreviewed. 
2652
2653         Move GOwnPtr* from wtf to wtf/gtk
2654         https://bugs.webkit.org/show_bug.cgi?id=31793
2655
2656         Build fix for chromium after r51423.
2657         Exclude gtk directory from chromium build.
2658
2659         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2660
2661 2009-11-25  Oliver Hunt  <oliver@apple.com>
2662
2663         Reviewed by Gavin Barraclough.
2664
2665         Incorrect behaviour of jneq_null in the interpreter
2666         https://bugs.webkit.org/show_bug.cgi?id=31901
2667
2668         Correct the logic of jneq_null.  This is already covered by existing tests.
2669
2670         * interpreter/Interpreter.cpp:
2671         (JSC::Interpreter::privateExecute):
2672
2673 2009-11-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2674
2675         Reviewed by Oliver Hunt.
2676
2677         Move GOwnPtr* from wtf to wtf/gtk
2678         https://bugs.webkit.org/show_bug.cgi?id=31793
2679
2680         * GNUmakefile.am: Change the path for GOwnPtr.*.
2681         * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
2682           GOwnPtr.cpp from the exclude list.
2683         * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
2684         * wscript: Remove GOwnPtr.cpp from the exclude list.
2685         * wtf/GOwnPtr.cpp: Removed.
2686         * wtf/GOwnPtr.h: Removed.
2687         * wtf/Threading.h: Change the path for GOwnPtr.h.
2688         * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
2689         * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
2690         * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
2691
2692 2009-11-24  Dmitry Titov  <dimich@chromium.org>
2693
2694         Reviewed by Eric Seidel.
2695
2696         Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
2697         https://bugs.webkit.org/show_bug.cgi?id=31444
2698
2699         * Configurations/FeatureDefines.xcconfig:
2700         * wtf/Platform.h:
2701
2702 2009-11-24  Chris Marrin  <cmarrin@apple.com>
2703
2704         Reviewed by Simon Fraser.
2705
2706         Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
2707         https://bugs.webkit.org/show_bug.cgi?id=27314
2708
2709         * wtf/Platform.h:
2710
2711 2009-11-24  Jason Smith  <dark.panda@gmail.com>
2712
2713         Reviewed by Alexey Proskuryakov.
2714
2715         RegExp#exec's returned Array-like object behaves differently from
2716         regular Arrays
2717         https://bugs.webkit.org/show_bug.cgi?id=31689
2718
2719         * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
2720         values are added to the returned RegExpMatchesArray
2721
2722 2009-11-24  Oliver Hunt  <oliver@apple.com>
2723
2724         Reviewed by Alexey Proskuryakov.
2725
2726         JSON.stringify performance on undefined is very poor
2727         https://bugs.webkit.org/show_bug.cgi?id=31839
2728
2729         Switch from a UString to a Vector<UChar> when building
2730         the JSON string, allowing us to safely remove the substr-copy
2731         we otherwise did when unwinding an undefined property.
2732
2733         Also turns out to be a ~5% speedup on stringification.
2734
2735         * runtime/JSONObject.cpp:
2736         (JSC::Stringifier::StringBuilder::append):
2737         (JSC::Stringifier::stringify):
2738         (JSC::Stringifier::Holder::appendNextProperty):
2739
2740 2009-11-24  Mark Rowe  <mrowe@apple.com>
2741
2742         Fix production builds where the source tree may be read-only.
2743
2744         * JavaScriptCore.xcodeproj/project.pbxproj:
2745
2746 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2747
2748         Reviewed by Kenneth Rohde Christiansen.
2749
2750         Include "config.h" to meet Coding Style Guidelines
2751         https://bugs.webkit.org/show_bug.cgi?id=31792
2752
2753         * wtf/unicode/UTF8.cpp:
2754         * wtf/unicode/glib/UnicodeGLib.cpp:
2755         * wtf/unicode/wince/UnicodeWince.cpp:
2756
2757 2009-11-23  Geoffrey Garen  <ggaren@apple.com>
2758
2759         Reviewed by Oliver Hunt.
2760
2761         Streamlined some Math functions where we expect or know the result not
2762         to be representable as an int.
2763         
2764         SunSpider says 0.6% faster.
2765
2766         * runtime/JSNumberCell.h:
2767         (JSC::JSValue::JSValue):
2768         * runtime/JSValue.h:
2769         (JSC::JSValue::):
2770         (JSC::jsDoubleNumber):
2771         (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
2772         and skipping the "can I encode this as an int?" check, avoiding the
2773         overhead of int <-> double roundtripping and double <-> double comparison
2774         and branching.
2775
2776         * runtime/MathObject.cpp:
2777         (JSC::mathProtoFuncACos):
2778         (JSC::mathProtoFuncASin):
2779         (JSC::mathProtoFuncATan):
2780         (JSC::mathProtoFuncATan2):
2781         (JSC::mathProtoFuncCos):
2782         (JSC::mathProtoFuncExp):
2783         (JSC::mathProtoFuncLog):
2784         (JSC::mathProtoFuncRandom):
2785         (JSC::mathProtoFuncSin):
2786         (JSC::mathProtoFuncSqrt):
2787         (JSC::mathProtoFuncTan): For these functions, which we expect or know
2788         to produce results not representable as ints, call jsDoubleNumber instead
2789         of jsNumber.
2790
2791 2009-11-23  Mark Rowe  <mrowe@apple.com>
2792
2793         Unreviewed. Unbreak the regression tests after r51329.
2794
2795         * API/JSBase.cpp:
2796         (JSEvaluateScript): Null-check clientData before dereferencing it.
2797         * API/JSObjectRef.cpp:
2798         (JSObjectCallAsFunction): Ditto.
2799
2800 2009-11-23  Gavin Barraclough  <barraclough@apple.com>
2801
2802         Reviewed by Geoff Garen.
2803
2804         Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
2805
2806         Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
2807         and for this to automagically cause execution to take place in the world associated with the
2808         global object associated with the ExecState (JSContextRef) passed.  However this is not how
2809         things work - the world must be explicitly set within WebCore.
2810
2811         Making this work just for API calls to evaluate & call will be a far from perfect solution,
2812         since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
2813         A better solution would be to make this all work automagically all throughout WebCore, but this
2814         will require more refactoring.
2815
2816         Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
2817         to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
2818         tape, and should be removed once the current world no longer needs to be explicitly tracked.
2819
2820         * API/JSBase.cpp:
2821         (JSEvaluateScript):
2822         * API/JSObjectRef.cpp:
2823         (JSObjectCallAsFunction):
2824         * JavaScriptCore.exp:
2825         * runtime/JSGlobalData.cpp:
2826         (JSC::JSGlobalData::ClientData::beginningExecution):
2827         (JSC::JSGlobalData::ClientData::completedExecution):
2828         * runtime/JSGlobalData.h:
2829
2830 2009-11-23  Steve Block  <steveblock@google.com>
2831
2832         Reviewed by Dmitry Titov.
2833
2834         Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
2835         https://bugs.webkit.org/show_bug.cgi?id=31807
2836
2837         * wtf/android: Added.
2838         * wtf/android/MainThreadAndroid.cpp: Added.
2839         (WTF::timeoutFired):
2840         (WTF::initializeMainThreadPlatform):
2841         (WTF::scheduleDispatchFunctionsOnMainThread):
2842
2843 2009-11-23  Alexey Proskuryakov  <ap@apple.com>
2844
2845         Reviewed by Brady Eidson.
2846
2847         https://bugs.webkit.org/show_bug.cgi?id=31748
2848         Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
2849
2850         * JavaScriptCore.exp: Export callOnMainThreadAndWait.
2851
2852 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2853
2854         Reviewed by Kenneth Rohde Christiansen.
2855
2856         [Symbian] Fix lastIndexOf() for Symbian
2857         https://bugs.webkit.org/show_bug.cgi?id=31773
2858
2859         Symbian soft floating point library has problems with operators
2860         comparing NaN to numbers. Without a workaround lastIndexOf() 
2861         function does not work.
2862
2863         Patch developed by David Leong.
2864
2865         * runtime/StringPrototype.cpp:
2866         (JSC::stringProtoFuncLastIndexOf):Add an extra test 
2867         to check for NaN for Symbian.
2868
2869 2009-11-23  Steve Block  <steveblock@google.com>
2870
2871         Reviewed by Eric Seidel.
2872
2873         Android port lacks implementation of atomicIncrement and atomicDecrement.
2874         https://bugs.webkit.org/show_bug.cgi?id=31715
2875
2876         * wtf/Threading.h: Modified.
2877         (WTF::atomicIncrement): Added Android implementation.
2878         (WTF::atomicDecrement): Added Android implementation.
2879
2880 2009-11-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2881
2882         Unreviewed.
2883
2884         [Qt] Sort source lists and remove obsolete comments 
2885         from the build system.
2886
2887         * JavaScriptCore.pri:
2888
2889 2009-11-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2890
2891         Reviewed by Eric Seidel.
2892
2893         [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
2894         https://bugs.webkit.org/show_bug.cgi?id=31753
2895
2896         * wtf/Platform.h:
2897
2898 2009-11-19  Steve Block  <steveblock@google.com>
2899
2900         Android port lacks configuration in Platform.h and config.h.
2901         https://bugs.webkit.org/show_bug.cgi?id=31671
2902
2903         * wtf/Platform.h: Modified. Added Android-specific configuration.
2904
2905 2009-11-19  Alexey Proskuryakov  <ap@apple.com>
2906
2907         Reviewed by Darin Adler.
2908
2909         https://bugs.webkit.org/show_bug.cgi?id=31690
2910         Make SocketStreamHandleCFNet work on Windows
2911
2912         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2913         * wtf/MainThread.cpp:
2914         (WTF::FunctionWithContext::FunctionWithContext):
2915         (WTF::dispatchFunctionsFromMainThread):
2916         (WTF::callOnMainThreadAndWait):
2917         * wtf/MainThread.h:
2918         Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
2919
2920 2009-11-19  Dmitry Titov  <dimich@chromium.org>
2921
2922         Reviewed by David Levin.
2923
2924         isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
2925         https://bugs.webkit.org/show_bug.cgi?id=31693
2926
2927         * wtf/ThreadingPthreads.cpp:
2928         (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
2929         (WTF::isMainThread): Ditto.
2930
2931 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2932
2933         Reviewed by Darin Adler.
2934
2935         Remove HAVE(STRING_H) guard from JavaScriptCore
2936         https://bugs.webkit.org/show_bug.cgi?id=31668
2937
2938         * config.h:
2939         * runtime/UString.cpp:
2940
2941 2009-11-19  Dumitru Daniliuc  <dumi@chromium.org>
2942
2943         Reviewed by Dmitry Titov.
2944
2945         Fixing a bug in MessageQueue::removeIf() that leads to an
2946         assertion failure.
2947
2948         https://bugs.webkit.org/show_bug.cgi?id=31657
2949
2950         * wtf/MessageQueue.h:
2951         (WTF::MessageQueue::removeIf):
2952
2953 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2954
2955         Reviewed by Darin Adler.
2956
2957         Remove HAVE(FLOAT_H) guard
2958         https://bugs.webkit.org/show_bug.cgi?id=31661
2959
2960         JavaScriptCore has a dependency on float.h, there is
2961         no need to guard float.h.
2962
2963         * runtime/DatePrototype.cpp: Remove include directive 
2964         for float.h as it is included in MathExtras.h already.
2965         * runtime/Operations.cpp: Ditto.
2966         * runtime/UString.cpp: Ditto.
2967         * wtf/dtoa.cpp: Ditto.
2968         * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
2969         * wtf/Platform.h: Ditto.
2970
2971 2009-11-19  Thiago Macieira <thiago.macieira@nokia.com>
2972
2973         Reviewed by Simon Hausmann.
2974
2975         Build fix for 32-bit Sparc machines: these machines are big-endian.
2976
2977         * wtf/Platform.h:
2978
2979 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2980
2981         Reviewed by Kenneth Rohde Christiansen.
2982
2983         [Qt] Remove support for Qt v4.3 or older versions
2984         https://bugs.webkit.org/show_bug.cgi?id=29469
2985
2986         * JavaScriptCore.pro:
2987         * jsc.pro:
2988         * wtf/unicode/qt4/UnicodeQt4.h:
2989
2990 2009-11-18  Kent Tamura  <tkent@chromium.org>
2991
2992         Reviewed by Darin Adler.
2993
2994         Move UString::from(double) implementation to new
2995         WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
2996         code will use it.
2997         https://bugs.webkit.org/show_bug.cgi?id=31330
2998
2999         - Introduce new function createRep(const char*, unsigned) and
3000           UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
3001         - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
3002           or Infinity.
3003
3004         No new tests because this doesn't change the behavior.
3005
3006         * JavaScriptCore.exp:
3007         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3008         * runtime/UString.cpp:
3009         (JSC::createRep):
3010         (JSC::UString::UString):
3011         (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
3012         * runtime/UString.h:
3013         * wtf/dtoa.cpp:
3014         (WTF::dtoa): Fix a bug about rve.
3015         (WTF::append): A helper for doubleToStringInJavaScriptFormat().
3016         (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
3017         * wtf/dtoa.h:
3018
3019 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3020
3021         Reviewed by Kenneth Rohde Christiansen.
3022
3023         [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
3024         https://bugs.webkit.org/show_bug.cgi?id=31643
3025
3026         * JavaScriptCore.pro:
3027
3028 2009-11-18  Nate Chapin  <japhet@chromium.org>
3029
3030         Reviewed by Darin Fisher.
3031
3032         Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
3033
3034         https://bugs.webkit.org/show_bug.cgi?id=31648
3035
3036         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3037
3038 2009-11-18  Thiago Macieira <thiago.macieira@nokia.com>
3039
3040         Reviewed by Gavin Barraclough.
3041
3042         [Qt] Implement symbol hiding for JSC's JIT functions.
3043
3044         These functions are implemented directly in assembly, so they need the
3045         proper directives to enable/disable visibility. On ELF systems, it's
3046         .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
3047         Windows, it's not necessary since you have to explicitly export. I
3048         also implemented the AIX idiom, though it's unlikely anyone will
3049         implement AIX/POWER JIT.
3050         https://bugs.webkit.org/show_bug.cgi?id=30864
3051
3052         * jit/JITStubs.cpp:
3053
3054 2009-11-18  Oliver Hunt  <oliver@apple.com>
3055
3056         Reviewed by Alexey Proskuryakov.
3057
3058         Interpreter may do an out of range access when throwing an exception in the profiler.
3059         https://bugs.webkit.org/show_bug.cgi?id=31635
3060
3061         Add bounds check.
3062
3063         * interpreter/Interpreter.cpp:
3064         (JSC::Interpreter::throwException):
3065
3066 2009-11-18  Gabor Loki  <loki@inf.u-szeged.hu>
3067
3068         Reviewed by Darin Adler.
3069
3070         Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
3071         https://bugs.webkit.org/show_bug.cgi?id=31631
3072
3073         * jit/ExecutableAllocator.h:
3074         (JSC::ExecutableAllocator::cacheFlush):
3075
3076 2009-11-18  Harald Fernengel  <harald.fernengel@nokia.com>
3077
3078         Reviewed by Simon Hausmann.
3079
3080         [Qt] Fix detection of linux-g++
3081
3082         Never use "linux-g++*" to check for linux-g++, since this will break embedded
3083         builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
3084         g++ on linux mkspec.
3085
3086         * JavaScriptCore.pri:
3087
3088 2009-11-17  Jon Honeycutt  <jhoneycutt@apple.com>
3089
3090         Add JSContextRefPrivate.h to list of copied files.
3091
3092         Reviewed by Mark Rowe.
3093
3094         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
3095
3096 2009-11-17  Martin Robinson  <martin.james.robinson@gmail.com>
3097
3098         Reviewed by Adam Barth.
3099
3100         [GTK] Style cleanup for GOwnPtr
3101         https://bugs.webkit.org/show_bug.cgi?id=31506
3102
3103         Remove forward declaration in GOwnPtr and do some style cleanup.
3104
3105         * wtf/GOwnPtr.cpp:
3106         * wtf/GOwnPtr.h:
3107         (WTF::GOwnPtr::GOwnPtr):
3108         (WTF::GOwnPtr::~GOwnPtr):
3109         (WTF::GOwnPtr::get):
3110         (WTF::GOwnPtr::release):
3111         (WTF::GOwnPtr::outPtr):
3112         (WTF::GOwnPtr::set):
3113         (WTF::GOwnPtr::clear):
3114         (WTF::GOwnPtr::operator*):
3115         (WTF::GOwnPtr::operator->):
3116         (WTF::GOwnPtr::operator!):
3117         (WTF::GOwnPtr::operator UnspecifiedBoolType):
3118         (WTF::GOwnPtr::swap):
3119         (WTF::swap):
3120         (WTF::operator==):
3121         (WTF::operator!=):
3122         (WTF::getPtr):
3123         (WTF::freeOwnedGPtr):
3124
3125 2009-11-17  Oliver Hunt  <oliver@apple.com>
3126
3127         Reviewed by Maciej Stachowiak.
3128
3129         Incorrect use of JavaScriptCore API in DumpRenderTree
3130         https://bugs.webkit.org/show_bug.cgi?id=31577
3131
3132         Add assertions to the 'toJS' functions to catch mistakes like
3133         this early.  Restructure existing code which blindly passed potentially
3134         null values to toJS when forwarding exceptions so that a null check is
3135         performed first.
3136
3137         * API/APICast.h:
3138         (toJS):
3139         (toJSForGC):
3140         * API/JSCallbackObjectFunctions.h:
3141         (JSC::::getOwnPropertySlot):
3142         (JSC::::put):
3143         (JSC::::deleteProperty):
3144         (JSC::::construct):
3145         (JSC::::hasInstance):
3146         (JSC::::call):
3147         (JSC::::toNumber):
3148         (JSC::::toString):
3149         (JSC::::staticValueGetter):
3150         (JSC::::callbackGetter):
3151         * API/tests/testapi.c: Fix errors in the API tester.
3152         (MyObject_getProperty):
3153         (MyObject_convertToType):
3154         (EvilExceptionObject_convertToType):
3155
3156 2009-11-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3157
3158         Reviewed by Gavin Barraclough.
3159
3160         https://bugs.webkit.org/show_bug.cgi?id=31050
3161
3162         Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
3163         failed on a CortexA8 CPU, but not on a simulator; and
3164         JITCall.cpp modifications was somehow not committed to mainline.
3165
3166         * assembler/ARMAssembler.h:
3167         (JSC::ARMAssembler::fmrs_r):
3168         * assembler/MacroAssemblerARM.h:
3169         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
3170         * jit/JITCall.cpp:
3171         (JSC::JIT::compileOpCall):
3172
3173 2009-11-16  Joerg Bornemann  <joerg.bornemann@trolltech.com>
3174
3175         Reviewed by Simon Hausmann.
3176
3177         Fix Qt build on Windows CE 6.
3178
3179         * JavaScriptCore.pri: Add missing include path.
3180         * wtf/Platform.h: Include ce_time.h for Windows CE 6.
3181
3182 2009-11-13  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3183
3184         Reviewed by Gavin Barraclough.
3185
3186         https://bugs.webkit.org/show_bug.cgi?id=31050
3187
3188         Adding optimization support for mode JSVALUE32_64
3189         on ARM systems.
3190
3191         * jit/JIT.h:
3192         * jit/JITCall.cpp:
3193         (JSC::JIT::compileOpCall):
3194         * jit/JITPropertyAccess.cpp:
3195         (JSC::JIT::emit_op_method_check):
3196         (JSC::JIT::compileGetByIdHotPath):
3197         (JSC::JIT::compileGetByIdSlowCase):
3198         (JSC::JIT::emit_op_put_by_id):
3199
3200 2009-11-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3201
3202         Reviewed by Gavin Barraclough.
3203
3204         https://bugs.webkit.org/show_bug.cgi?id=31050
3205
3206         Adding JSVALUE32_64 support for ARM (but not turning it
3207         on by default). All optimizations must be disabled, since
3208         this patch is only the first of a series of patches.
3209
3210         During the work, a lot of x86 specific code revealed and
3211         made platform independent.
3212         See revisions: 50531 50541 50593 50594 50595
3213
3214         * assembler/ARMAssembler.h:
3215         (JSC::ARMAssembler::):
3216         (JSC::ARMAssembler::fdivd_r):
3217         * assembler/MacroAssemblerARM.h:
3218         (JSC::MacroAssemblerARM::lshift32):
3219         (JSC::MacroAssemblerARM::neg32):
3220         (JSC::MacroAssemblerARM::rshift32):
3221         (JSC::MacroAssemblerARM::branchOr32):
3222         (JSC::MacroAssemblerARM::set8):
3223         (JSC::MacroAssemblerARM::setTest8):
3224         (JSC::MacroAssemblerARM::loadDouble):
3225         (JSC::MacroAssemblerARM::divDouble):
3226         (JSC::MacroAssemblerARM::convertInt32ToDouble):
3227         (JSC::MacroAssemblerARM::zeroDouble):
3228         * jit/JIT.cpp:
3229         * jit/JIT.h:
3230         * jit/JITOpcodes.cpp:
3231         (JSC::JIT::privateCompileCTIMachineTrampolines):
3232         * jit/JITStubs.cpp:
3233         * wtf/StdLibExtras.h:
3234
3235 2009-11-13  Dominik Röttsches  <dominik.roettsches@access-company.com>
3236
3237         Reviewed by Eric Seidel.
3238
3239         Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
3240         https://bugs.webkit.org/show_bug.cgi?id=31468
3241
3242         Adding isAlphanumeric abstraction, required
3243         by TextBoundaries.cpp.
3244
3245         * wtf/unicode/glib/UnicodeGLib.h:
3246         (WTF::Unicode::isAlphanumeric):
3247         * wtf/unicode/icu/UnicodeIcu.h:
3248         (WTF::Unicode::isAlphanumeric):
3249
3250 2009-11-13  Norbert Leser  <norbert.leser&nokia.com>
3251
3252         Reviewed by Eric Seidel.
3253
3254         Added macros for USERINCLUDE paths within symbian blocks
3255         to guarantee inclusion of respective header files from local path
3256         first (to avoid clashes with same names of header files in system include path).
3257
3258         * JavaScriptCore.pri:
3259
3260 2009-11-13  Oliver Hunt  <oliver@apple.com>
3261
3262         Reviewed by Geoff Garen.
3263
3264         JSValueProtect and JSValueUnprotect don't protect API wrapper values
3265         https://bugs.webkit.org/show_bug.cgi?id=31485
3266
3267         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
3268         does not attempt to to strip out API wrapper objects.
3269
3270         * API/APICast.h:
3271         (toJSForGC):
3272         * API/JSValueRef.cpp:
3273         (JSValueProtect):
3274         (JSValueUnprotect):
3275         * API/tests/testapi.c:
3276         (makeGlobalNumberValue):
3277         (main):
3278
3279 2009-11-13  İsmail Dönmez  <ismail@namtrac.org>
3280
3281         Reviewed by Antti Koivisto.
3282
3283         Fix typo, ce_time.cpp should be ce_time.c
3284
3285         * JavaScriptCore.pri:
3286
3287 2009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
3288
3289         Reviewed by Adam Barth.
3290
3291         Calculate the time offset only if we were able to parse
3292         the date string. This saves an IPC in Chromium for
3293         invalid date strings.
3294         https://bugs.webkit.org/show_bug.cgi?id=31416
3295
3296         * wtf/DateMath.cpp:
3297         (WTF::parseDateFromNullTerminatedCharacters):
3298         (JSC::parseDateFromNullTerminatedCharacters):
3299
3300 2009-11-12  Oliver Hunt  <oliver@apple.com>
3301
3302         Rollout r50896 until i can work out why it causes failures.
3303
3304         * bytecompiler/BytecodeGenerator.cpp:
3305         (JSC::BytecodeGenerator::emitReturn):
3306         * interpreter/Interpreter.cpp:
3307         (JSC::Interpreter::execute):
3308         * parser/Nodes.cpp:
3309         (JSC::EvalNode::emitBytecode):
3310
3311 2009-11-12  Steve Falkenburg  <sfalken@apple.com>
3312
3313         Reviewed by Stephanie Lewis.
3314
3315         Remove LIBRARY directive from def file to fix Debug_All target.
3316
3317         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3318
3319 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3320
3321         Rubber-stamped by Holger Freyther.
3322
3323         Revert r50204, since it makes DRT crash on 32 bits release builds
3324         for GTK+.
3325
3326         * wtf/FastMalloc.h:
3327
3328 2009-11-12  Oliver Hunt  <oliver@apple.com>
3329
3330         Reviewed by Gavin Barraclough.
3331
3332         Start unifying entry logic for function and eval code.
3333
3334         Eval now uses a ret instruction to end execution, and sets up
3335         a callframe more in line with what we do for function entry.
3336
3337         * bytecompiler/BytecodeGenerator.cpp:
3338         (JSC::BytecodeGenerator::emitReturn):
3339         * interpreter/Interpreter.cpp:
3340         (JSC::Interpreter::execute):
3341         * parser/Nodes.cpp:
3342         (JSC::EvalNode::emitBytecode):
3343
3344 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
3345
3346         Reviewed by Kenneth Rohde Christiansen.
3347
3348         [Qt] Disable pthread_setname_np.
3349
3350         This allows Qt builds on Mac from 10.6 to run on earlier version
3351         where this symbol is not present.
3352         https://bugs.webkit.org/show_bug.cgi?id=31403
3353
3354         * wtf/Platform.h:
3355
3356 2009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
3357
3358         Reviewed by Kenneth Rohde Christiansen.
3359
3360         [Qt] Fix linking on Linux 32-bit.
3361
3362         It was missing the ".text" directive at the top of the file,
3363         indicating that code would follow. Without it, the assembler created
3364         "NOTYPE" symbols, which would result in linker errors.
3365         https://bugs.webkit.org/show_bug.cgi?id=30863
3366
3367         * jit/JITStubs.cpp:
3368
3369 2009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3370
3371         Reviewed by Alexey Proskuryakov.
3372
3373         Refactor multiple JavaScriptCore threads
3374         https://bugs.webkit.org/show_bug.cgi?id=31328
3375
3376         Remove the id field from the PlatformThread structure 
3377         as it is not used.
3378
3379         * runtime/Collector.cpp:
3380         (JSC::getCurrentPlatformThread):
3381         (JSC::suspendThread):
3382         (JSC::resumeThread):
3383         (JSC::getPlatformThreadRegisters):
3384
3385 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
3386
3387         Linux build fix: Added an #include for UINT_MAX.
3388
3389         * runtime/WeakRandom.h:
3390
3391 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
3392
3393         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
3394
3395         * JavaScriptCore.xcodeproj/project.pbxproj:
3396
3397 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
3398
3399         Reviewed by Gavin "avGni arBalroguch" Barraclough.
3400
3401         Faster Math.random, based on GameRand.
3402         
3403         SunSpider says 1.4% faster.
3404
3405         * GNUmakefile.am:
3406         * JavaScriptCore.gypi:
3407         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3408         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
3409
3410         * runtime/JSGlobalData.cpp:
3411         (JSC::JSGlobalData::JSGlobalData):
3412         * runtime/JSGlobalData.h: Use an object to track random number generation
3413         state, initialized to the current time.
3414
3415         * runtime/MathObject.cpp:
3416         (JSC::MathObject::MathObject):
3417         (JSC::mathProtoFuncRandom): Use the new hotness.
3418
3419         * runtime/WeakRandom.h: Added.
3420         (JSC::WeakRandom::WeakRandom):
3421         (JSC::WeakRandom::get):
3422         (JSC::WeakRandom::advance): The new hotness.
3423
3424 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
3425
3426         Reviewed by Oliver Hunt.
3427
3428         Imported the v8 DST cache.
3429         
3430         SunSpider says 1.5% faster.
3431
3432         * runtime/JSGlobalData.cpp:
3433         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
3434         other date data.
3435
3436         * runtime/JSGlobalData.h:
3437         (JSC::DSTOffsetCache::DSTOffsetCache):
3438         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
3439
3440         * wtf/DateMath.cpp:
3441         (WTF::calculateDSTOffsetSimple):
3442         (WTF::calculateDSTOffset):
3443         (WTF::parseDateFromNullTerminatedCharacters):
3444         (JSC::getDSTOffset):
3445         (JSC::gregorianDateTimeToMS):
3446         (JSC::msToGregorianDateTime):
3447         (JSC::parseDateFromNullTerminatedCharacters):
3448         * wtf/DateMath.h: The imported code for probing and updating the cache.
3449
3450 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
3451
3452         Reviewed by Oliver Hunt.
3453
3454         Fixed an edge case that could cause the engine not to notice a timezone
3455         change.
3456         
3457         No test because this case would require manual intervention to change
3458         the timezone during the test.
3459         
3460         SunSpider reports no change.
3461
3462         * runtime/DateInstanceCache.h:
3463         (JSC::DateInstanceCache::DateInstanceCache):
3464         (JSC::DateInstanceCache::reset): Added a helper function for resetting
3465         this cache. Also, shrank the cache, since we'll be resetting it often.
3466
3467         * runtime/JSGlobalData.cpp:
3468         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
3469         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
3470         timezone update check.)
3471
3472 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
3473
3474         Reviewed by Sam Weinig.
3475
3476         Some manual inlining and constant propogation in Date code.
3477         
3478         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
3479         says some previously evident stalls are now gone.
3480
3481         * runtime/DateConstructor.cpp:
3482         (JSC::callDate):
3483         * runtime/DateConversion.cpp:
3484         (JSC::formatTime):
3485         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
3486
3487         * runtime/DateConversion.h:
3488         * runtime/DateInstance.cpp:
3489         (JSC::DateInstance::calculateGregorianDateTime):
3490         (JSC::DateInstance::calculateGregorianDateTimeUTC):
3491         * runtime/DateInstance.h:
3492         (JSC::DateInstance::gregorianDateTime):
3493         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
3494         a UTC and non-UTC variant, and split each variant into a fast inline
3495         case and a slow out-of-line case.
3496
3497         * runtime/DatePrototype.cpp:
3498         (JSC::formatLocaleDate):
3499         (JSC::dateProtoFuncToString):
3500         (JSC::dateProtoFuncToUTCString):
3501         (JSC::dateProtoFuncToISOString):
3502         (JSC::dateProtoFuncToDateString):
3503         (JSC::dateProtoFuncToTimeString):
3504         (JSC::dateProtoFuncGetFullYear):
3505         (JSC::dateProtoFuncGetUTCFullYear):
3506         (JSC::dateProtoFuncToGMTString):
3507         (JSC::dateProtoFuncGetMonth):
3508         (JSC::dateProtoFuncGetUTCMonth):
3509         (JSC::dateProtoFuncGetDate):
3510         (JSC::dateProtoFuncGetUTCDate):
3511         (JSC::dateProtoFuncGetDay):
3512         (JSC::dateProtoFuncGetUTCDay):
3513         (JSC::dateProtoFuncGetHours):
3514         (JSC::dateProtoFuncGetUTCHours):
3515         (JSC::dateProtoFuncGetMinutes):
3516         (JSC::dateProtoFuncGetUTCMinutes):
3517         (JSC::dateProtoFuncGetSeconds):
3518         (JSC::dateProtoFuncGetUTCSeconds):
3519         (JSC::dateProtoFuncGetTimezoneOffset):
3520         (JSC::setNewValueFromTimeArgs):
3521         (JSC::setNewValueFromDateArgs):
3522         (JSC::dateProtoFuncSetYear):
3523         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
3524
3525 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
3526
3527         Build fix: export a new symbol.
3528
3529         * JavaScriptCore.exp:
3530         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3531
3532 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
3533
3534         Reviewed by Sam "Home Wrecker" Weinig.
3535
3536         Added a tiny cache for Date parsing.
3537         
3538         SunSpider says 1.2% faster.
3539
3540         * runtime/DateConversion.cpp:
3541         (JSC::parseDate): Try to reuse the last parsed Date, if present.
3542
3543         * runtime/JSGlobalData.cpp:
3544         (JSC::JSGlobalData::resetDateCache):
3545         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
3546         this code to make resetting the date cache easier.
3547
3548         * runtime/JSGlobalObject.h:
3549         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
3550         refactoring.
3551
3552         * wtf/DateMath.cpp:
3553         (JSC::parseDateFromNullTerminatedCharacters):
3554         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
3555
3556 2009-11-09  Oliver Hunt  <oliver@apple.com>
3557
3558         Reviewed by Gavin Barraclough.
3559
3560         Can cache prototype lookups on uncacheable dictionaries.
3561         https://bugs.webkit.org/show_bug.cgi?id=31198
3562
3563         Replace fromDictionaryTransition with flattenDictionaryObject and
3564         flattenDictionaryStructure.  This change is necessary as we need to
3565         guarantee that our attempt to convert away from a dictionary structure
3566         will definitely succeed, and in some cases this requires mutating the
3567         object storage itself.
3568
3569         * interpreter/Interpreter.cpp:
3570         (JSC::Interpreter::tryCacheGetByID):
3571         * jit/JITStubs.cpp:
3572         (JSC::JITThunks::tryCacheGetByID):
3573         (JSC::DEFINE_STUB_FUNCTION):
3574         * runtime/BatchedTransitionOptimizer.h:
3575         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3576         * runtime/JSObject.h:
3577         (JSC::JSObject::flattenDictionaryObject):
3578         * runtime/Operations.h:
3579         (JSC::normalizePrototypeChain):
3580         * runtime/Structure.cpp:
3581         (JSC::Structure::flattenDictionaryStructure):
3582         (JSC::comparePropertyMapEntryIndices):
3583         * runtime/Structure.h:
3584
3585 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3586
3587         Not reviewed, build fix.
3588
3589         Remove extra character from r50701.
3590
3591         * JavaScriptCore.pri:
3592
3593 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3594
3595         Not reviewed, build fix.
3596
3597         Revert r50695 because it broke QtWebKit (clean builds).
3598
3599         * JavaScriptCore.pri:
3600
3601 2009-11-09  Norbert Leser  <norbert.leser@nokia.com>
3602
3603         Reviewed by Kenneth Rohde Christiansen.
3604
3605         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
3606         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
3607         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
3608
3609         * JavaScriptCore.pri:
3610
3611 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3612
3613         Reviewed by Kenneth Rohde Christiansen.
3614
3615         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
3616         https://bugs.webkit.org/show_bug.cgi?id=31040
3617
3618         * interpreter/Interpreter.cpp:
3619         (JSC::Interpreter::privateExecute):
3620
3621 2009-11-08  David Levin  <levin@chromium.org>
3622
3623         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
3624
3625         * wtf/DateMath.cpp:
3626         (WTF::parseDateFromNullTerminatedCharacters):
3627         (JSC::gregorianDateTimeToMS):
3628         (JSC::msToGregorianDateTime):
3629         (JSC::parseDateFromNullTerminatedCharacters):
3630         * wtf/DateMath.h:
3631         (JSC::GregorianDateTime::GregorianDateTime):
3632
3633 2009-11-08  David Levin  <levin@chromium.org>
3634
3635         Reviewed by NOBODY (chromium build fix).
3636         
3637         Hopefully, the last build fix.
3638
3639         Create better separation in DateMath about the JSC
3640         and non-JSC portions. Also, only expose the non-JSC
3641         version in the exports.
3642
3643         * JavaScriptCore.exp:
3644         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3645         * wtf/DateMath.cpp:
3646         (WTF::parseDateFromNullTerminatedCharacters):
3647         (JSC::getUTCOffset):
3648         (JSC::gregorianDateTimeToMS):
3649         (JSC::msToGregorianDateTime):
3650         (JSC::parseDateFromNullTerminatedCharacters):
3651         * wtf/DateMath.h:
3652         (JSC::gmtoffset):
3653
3654 2009-11-08  David Levin  <levin@chromium.org>
3655
3656         Reviewed by NOBODY (chromium build fix).
3657
3658         For the change in DateMath.
3659
3660         * config.h:
3661         * wtf/DateMath.cpp:
3662
3663 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
3664
3665         Windows build fix: export some symbols.
3666
3667         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3668
3669 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
3670
3671         Build fix: updated export file.
3672
3673         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3674
3675 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
3676
3677         Build fix: added some #includes.
3678
3679         * wtf/CurrentTime.h:
3680         * wtf/DateMath.h:
3681
3682 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
3683
3684         Reviewed by Oliver Hunt.
3685         
3686         https://bugs.webkit.org/show_bug.cgi?id=31197
3687         Implemented a timezone cache not based on Mac OS X's notify_check API.
3688         
3689         If the VM calculates the local timezone offset from UTC, it caches the
3690         result until the end of the current VM invocation. (We don't want to cache
3691         forever, because the user's timezone may change over time.)
3692         
3693         This removes notify_* overhead on Mac, and, more significantly, removes
3694         OS time and date call overhead on non-Mac platforms.
3695
3696         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
3697         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
3698
3699         * JavaScriptCore.exp:
3700
3701         * interpreter/CachedCall.h:
3702         (JSC::CachedCall::CachedCall):
3703         * interpreter/Interpreter.cpp:
3704         (JSC::Interpreter::execute):
3705         * runtime/JSGlobalObject.h:
3706         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
3707         DynamicGlobalObjectScope constructor responsible for checking whether a
3708         dynamicGlobalObject has already been set. This eliminated some duplicate
3709         client code, and allowed me to avoid adding even more duplicate client
3710         code. Made DynamicGlobalObjectScope responsible for resetting the
3711         local timezone cache upon first entry to the VM.
3712
3713         * runtime/DateConstructor.cpp:
3714         (JSC::constructDate):
3715         (JSC::callDate):
3716         (JSC::dateParse):
3717         (JSC::dateUTC):
3718         * runtime/DateConversion.cpp:
3719         (JSC::parseDate):
3720         * runtime/DateConversion.h:
3721         * runtime/DateInstance.cpp:
3722         (JSC::DateInstance::gregorianDateTime):
3723         * runtime/DateInstance.h:
3724         * runtime/DateInstanceCache.h:
3725         * runtime/DatePrototype.cpp:
3726         (JSC::setNewValueFromTimeArgs):
3727         (JSC::setNewValueFromDateArgs):
3728         (JSC::dateProtoFuncSetYear):
3729         * runtime/InitializeThreading.cpp:
3730         (JSC::initializeThreadingOnce):
3731         * runtime/JSGlobalData.cpp:
3732         (JSC::JSGlobalData::JSGlobalData):
3733         * runtime/JSGlobalData.h:
3734         * wtf/DateMath.cpp:
3735         (WTF::getCurrentUTCTime):
3736         (WTF::getCurrentUTCTimeWithMicroseconds):
3737         (WTF::getLocalTime):
3738         (JSC::getUTCOffset): Use the new cache. Also, see below.
3739         (JSC::gregorianDateTimeToMS):
3740         (JSC::msToGregorianDateTime):
3741         (JSC::initializeDates):
3742         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
3743         accounts for the local timezone offset, to accomodate our new caching API,
3744         and a (possibly misguided) caller in WebCore. Also, see below.
3745         * wtf/DateMath.h:
3746         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
3747         DateMath.* into the JSC namespace. The code needed to move so it could
3748         naturally interact with ExecState and JSGlobalData to support caching.
3749         Logically, it seemed right to move it, too, since this code is not really
3750         as low-level as the WTF namespace might imply -- it implements a set of
3751         date parsing and conversion quirks that are finely tuned to the JavaScript
3752         language. Also removed the Mac OS X notify_* infrastructure.
3753         
3754         * wtf/CurrentTime.h:
3755         (WTF::currentTimeMS):
3756         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
3757         it to make it consistent with WTF's currentTime function.
3758
3759 2009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
3760
3761         Unreviewed trivial buildfix after r50595.
3762
3763         Rename the remaining rshiftPtr calls to rshift32
3764
3765         * jit/JITArithmetic.cpp:
3766         (JSC::JIT::emit_op_rshift):
3767         * jit/JITInlineMethods.h:
3768         (JSC::JIT::emitFastArithImmToInt):
3769
3770 2009-11-06  Gavin Barraclough  <barraclough@apple.com>
3771
3772         Reviewed by Oliver Hunt.
3773
3774         Tidy up the shift methods on the macro-assembler interface.
3775
3776         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
3777         Instead defined that all shifts are masked to this range.  This makes a lot of
3778         practical sense, both since having undefined behaviour is not particularly
3779         desirable, and because this behaviour is commonly required (particularly since
3780         it is required bt ECMA-262 for shifts).
3781
3782         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
3783         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
3784         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
3785         on x86-64, which uses JSVALUE64!)
3786
3787         * assembler/MacroAssembler.h:
3788         * assembler/MacroAssemblerARM.h:
3789         (JSC::MacroAssemblerARM::lshift32):
3790         (JSC::MacroAssemblerARM::rshift32):
3791         * assembler/MacroAssemblerARMv7.h:
3792         (JSC::MacroAssemblerARMv7::lshift32):
3793         (JSC::MacroAssemblerARMv7::rshift32):
3794         * assembler/MacroAssemblerX86_64.h:
3795         * jit/JITArithmetic.cpp:
3796         (JSC::JIT::emit_op_lshift):
3797         (JSC::JIT::emit_op_rshift):
3798
3799 2009-11-05  Gavin Barraclough  <barraclough@apple.com>
3800
3801         Rubber Stamped by Oliver Hunt.
3802
3803         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
3804
3805         * jit/JITInlineMethods.h:
3806         (JSC::JIT::emitPutJITStubArg):
3807         (JSC::JIT::emitPutJITStubArgConstant):
3808         (JSC::JIT::emitGetJITStubArg):
3809         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
3810         * jit/JITStubCall.h:
3811         (JSC::JITStubCall::JITStubCall):
3812         (JSC::JITStubCall::getArgument):
3813         * jit/JITStubs.h:
3814
3815 2009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3816
3817         Reviewed by Gavin Barraclough.
3818
3819         https://bugs.webkit.org/show_bug.cgi?id=31159
3820         Fix branchDouble behaviour on ARM THUMB2 JIT.
3821
3822         The x86 branchDouble behaviour is reworked, and all JIT
3823         ports should follow the x86 port. See bug 31104 and 31151
3824
3825         This patch contains a fix for the traditional ARM port
3826
3827         * assembler/ARMAssembler.h:
3828         (JSC::ARMAssembler::):
3829         (JSC::ARMAssembler::fmrs_r):
3830         (JSC::ARMAssembler::ftosid_r):
3831         * assembler/MacroAssemblerARM.h:
3832         (JSC::MacroAssemblerARM::):
3833         (JSC::MacroAssemblerARM::branchDouble):
3834         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
3835
3836 2009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
3837
3838         Reviewed by Eric Seidel.
3839
3840         Removed the "this is part of the KDE project" comments from 
3841         all *.h, *.cpp, *.idl, and *.pm files.
3842         
3843         https://bugs.webkit.org/show_bug.cgi?id=31167
3844         
3845         The maintenance and architecture page in the project wiki lists
3846         this as a task.
3847         
3848         This change includes no changes or additions to test cases 
3849         since the change affects only comments.
3850         
3851         * wtf/wince/FastMallocWince.h:
3852
3853 2009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
3854
3855         Reviewed by Gavin Barraclough.
3856
3857         Use ARMv7 specific encoding for immediate constants on ARMv7 target
3858         https://bugs.webkit.org/show_bug.cgi?id=31060
3859
3860         * assembler/ARMAssembler.cpp:
3861         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
3862         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
3863         (JSC::ARMAssembler::moveImm): Ditto.
3864         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
3865         instructions or a PC relative load.
3866         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
3867         encoded as an immediate constant.
3868         (JSC::ARMAssembler::):
3869         (JSC::ARMAssembler::movw_r): 16-bit immediate load
3870         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
3871         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
3872         movw_r and mowt_r
3873
3874 2009-11-04  Mark Mentovai  <mark@chromium.org>
3875
3876         Reviewed by Mark Rowe.
3877
3878         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
3879         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
3880         consider the deployment target; the BUILDING_ON_ macros consider the
3881         headers being built against.
3882
3883         * wtf/Platform.h:
3884
3885 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
3886
3887         Reviewed by Oliver Hunt.
3888
3889         https://bugs.webkit.org/show_bug.cgi?id=31151
3890         Fix branchDouble behaviour on ARM THUMB2 JIT.
3891
3892         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
3893         for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
3894         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
3895         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
3896         ARMv7Assembler::ConditionLS, whereas they should be using
3897         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
3898
3899         Fix these, and fill out the missing DoubleConditions.
3900
3901         * assembler/MacroAssemblerARMv7.h:
3902         (JSC::MacroAssemblerARMv7::):
3903         (JSC::MacroAssemblerARMv7::branchDouble):
3904
3905 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
3906
3907         Rubber Stamped by Oliver Hunt.
3908
3909         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
3910         implementation was generic, worked perfectly, just needed turning on).
3911
3912         * jit/JITOpcodes.cpp:
3913         * wtf/Platform.h:
3914
3915 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
3916
3917         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
3918
3919         Add a missing assert to the ARMv7 JIT.
3920
3921         * assembler/ARMv7Assembler.h:
3922         (JSC::ARMThumbImmediate::ARMThumbImmediate):
3923
3924 2009-11-04  Mark Rowe  <mrowe@apple.com>
3925
3926         Rubber-stamped by Oliver Hunt.
3927
3928         Remove bogus op_ prefix on dumped version of three opcodes.
3929
3930         * bytecode/CodeBlock.cpp:
3931         (JSC::CodeBlock::dump):
3932
3933 2009-11-04  Mark Rowe  <mrowe@apple.com>
3934
3935         Reviewed by Sam Weinig.
3936
3937         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
3938
3939         We do this by having the registerName function return information about the constant if the register
3940         number corresponds to a constant.  This requires that registerName, and several functions that call it,
3941         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
3942         ExecState also needs to be threaded down through these functions so that it can be passed on to
3943         constantName when needed.
3944
3945         * bytecode/CodeBlock.cpp:
3946         (JSC::constantName):
3947         (JSC::CodeBlock::registerName):
3948         (JSC::CodeBlock::printUnaryOp):
3949         (JSC::CodeBlock::printBinaryOp):
3950         (JSC::CodeBlock::printConditionalJump):
3951         (JSC::CodeBlock::printGetByIdOp):
3952         (JSC::CodeBlock::printPutByIdOp):
3953         (JSC::CodeBlock::dump):
3954         * bytecode/CodeBlock.h:
3955         (JSC::CodeBlock::isConstantRegisterIndex):
3956
3957 2009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
3958
3959         Reviewed by Alexey Proskuryakov.
3960
3961         https://bugs.webkit.org/show_bug.cgi?id=30647
3962         Solaris build failure due to strnstr.
3963
3964         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
3965
3966 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
3967
3968         Reviewed by Oliver Hunt.
3969
3970         https://bugs.webkit.org/show_bug.cgi?id=31104
3971         Refactor x86-specific behaviour out of the JIT.
3972
3973         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
3974         - Refactor double to int conversion out into the MacroAssembler.
3975         - 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.
3976         - 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.
3977
3978         * assembler/MacroAssemblerARM.h:
3979         (JSC::MacroAssemblerARM::):
3980         * assembler/MacroAssemblerARMv7.h:
3981         (JSC::MacroAssemblerARMv7::):
3982         * assembler/MacroAssemblerX86Common.h:
3983         (JSC::MacroAssemblerX86Common::):
3984         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
3985         (JSC::MacroAssemblerX86Common::branchDouble):
3986         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
3987         * jit/JITArithmetic.cpp:
3988         (JSC::JIT::emitBinaryDoubleOp):
3989         (JSC::JIT::emit_op_div):
3990         (JSC::JIT::emitSlow_op_jnless):
3991         (JSC::JIT::emitSlow_op_jnlesseq):
3992         * jit/JITOpcodes.cpp:
3993         (JSC::JIT::emit_op_jfalse):
3994
3995 2009-11-04  Mark Mentovai  <mark@chromium.org>
3996
3997         Reviewed by Eric Seidel.
3998
3999         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
4000         to be set as needed only in wtf/Platform.h.
4001
4002         * JavaScriptCore.gyp/JavaScriptCore.gyp:
4003
4004 2009-11-02  Oliver Hunt  <oliver@apple.com>
4005
4006         Reviewed by Gavin Barraclough.
4007
4008         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
4009         https://bugs.webkit.org/show_bug.cgi?id=31045
4010
4011         Add guards to prevent caching of prototype chain lookups with dictionaries at the
4012         head of the chain.  Also add a few tighter assertions to cached prototype lookups
4013         to catch this in future.
4014
4015         * interpreter/Interpreter.cpp:
4016         (JSC::Interpreter::tryCacheGetByID):
4017         (JSC::Interpreter::privateExecute):
4018         * jit/JITStubs.cpp:
4019         (JSC::JITThunks::tryCacheGetByID):
4020
4021 2009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
4022
4023         Reviewed by Darin Adler.
4024
4025         PLATFORM(CF) should be set when building for Qt on Darwin
4026         https://bugs.webkit.org/show_bug.cgi?id=23671
4027
4028         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
4029         platforms are defined.
4030
4031 2009-11-02  Dmitry Titov  <dimich@chromium.org>
4032
4033         Reviewed by David Levin.
4034
4035         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
4036         https://bugs.webkit.org/show_bug.cgi?id=30612
4037
4038         * wtf/MessageQueue.h:
4039         (WTF::MessageQueue::alwaysTruePredicate):
4040         (WTF::MessageQueue::~MessageQueue):
4041         (WTF::MessageQueue::append):
4042         (WTF::MessageQueue::appendAndCheckEmpty):
4043         (WTF::MessageQueue::prepend):
4044         (WTF::MessageQueue::waitForMessage):
4045         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
4046         (WTF::MessageQueue::tryGetMessage):
4047         (WTF::MessageQueue::removeIf):
4048         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
4049         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
4050         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
4051
4052         * wtf/Threading.cpp:
4053         (WTF::createThread):
4054         Superficial change to trigger rebuild of JSC project on Windows,
4055         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
4056
4057 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
4058
4059         Reviewed by Oliver Hunt.
4060
4061         Fixed failing layout test: restore a special case I accidentally deleted.
4062
4063         * runtime/DatePrototype.cpp:
4064         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
4065         that is NaN, reset the date to 0 *and* then apply the change; don't just
4066         reset the date to 0.
4067
4068 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
4069
4070         Windows build fix: update for object-to-pointer change.
4071
4072         * runtime/DatePrototype.cpp:
4073         (JSC::formatLocaleDate):
4074
4075 2009-10-29  Geoffrey Garen  <ggaren@apple.com>
4076
4077         Reviewed by Darin Adler.
4078
4079         https://bugs.webkit.org/show_bug.cgi?id=30942
4080         Use pointers instead of copies to pass GregorianDateTime objects around.
4081         
4082         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
4083         speedup on date-format-tofte.
4084
4085         * runtime/DateInstance.cpp:
4086         (JSC::DateInstance::gregorianDateTime):
4087         * runtime/DateInstance.h:
4088         * runtime/DatePrototype.cpp:
4089         (JSC::formatLocaleDate):
4090         (JSC::dateProtoFuncToString):
4091         (JSC::dateProtoFuncToUTCString):
4092         (JSC::dateProtoFuncToISOString):
4093         (JSC::dateProtoFuncToDateString):
4094         (JSC::dateProtoFuncToTimeString):
4095         (JSC::dateProtoFuncGetFullYear):
4096         (JSC::dateProtoFuncGetUTCFullYear):
4097         (JSC::dateProtoFuncToGMTString):
4098         (JSC::dateProtoFuncGetMonth):
4099         (JSC::dateProtoFuncGetUTCMonth):
4100         (JSC::dateProtoFuncGetDate):
4101         (JSC::dateProtoFuncGetUTCDate):
4102         (JSC::dateProtoFuncGetDay):
4103         (JSC::dateProtoFuncGetUTCDay):
4104         (JSC::dateProtoFuncGetHours):
4105         (JSC::dateProtoFuncGetUTCHours):
4106         (JSC::dateProtoFuncGetMinutes):
4107         (JSC::dateProtoFuncGetUTCMinutes):
4108         (JSC::dateProtoFuncGetSeconds):
4109         (JSC::dateProtoFuncGetUTCSeconds):
4110         (JSC::dateProtoFuncGetTimezoneOffset):
4111         (JSC::setNewValueFromTimeArgs):
4112         (JSC::setNewValueFromDateArgs):
4113         (JSC::dateProtoFuncSetYear):
4114         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
4115         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
4116
4117 2009-10-30  Zoltan Horvath  <zoltan@webkit.org>
4118
4119         Reviewed by Darin Adler.
4120
4121         Allow custom memory allocation control for JavaScriptCore's ListHashSet
4122         https://bugs.webkit.org/show_bug.cgi?id=30853
4123
4124         Inherits ListHashSet class from FastAllocBase because it is
4125         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
4126
4127         * wtf/ListHashSet.h:
4128
4129 2009-10-30  Oliver Hunt  <oliver@apple.com>
4130
4131         Reviewed by Gavin Barraclough.
4132
4133         Regression: crash enumerating properties of an object with getters or setters
4134         https://bugs.webkit.org/show_bug.cgi?id=30948
4135
4136         Add a guard to prevent us trying to cache property enumeration on
4137         objects with getters or setters.
4138
4139         * runtime/JSPropertyNameIterator.cpp:
4140         (JSC::JSPropertyNameIterator::create):
4141
4142 2009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
4143
4144         Reviewed by Eric Seidel.
4145
4146         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
4147
4148         Bug 28420 -  Implement HTML5 <ruby> rendering
4149         (https://bugs.webkit.org/show_bug.cgi?id=28420)
4150  
4151         No new tests (no functional change).
4152
4153         * Configurations/FeatureDefines.xcconfig:
4154
4155 2009-10-29  Oliver Hunt  <oliver@apple.com>
4156
4157         Reviewed by Maciej Stachowiak.
4158
4159         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
4160         https://bugs.webkit.org/show_bug.cgi?id=30947
4161         <rdar://problem/7348833>
4162
4163         The logic for flagging that a structure has non-enumerable properties
4164         was in addPropertyWithoutTransition, rather than in the core Structure::put
4165         method.  Despite this I was unable to produce a testcase that caused
4166         the failure that etrade was experiencing, but the new assertion in
4167         getEnumerablePropertyNames triggers on numerous layout tests without
4168         the fix, so in effecti all for..in enumeration in any test ends up
4169         doing the required consistency check.
4170
4171         * runtime/Structure.cpp:
4172         (JSC::Structure::addPropertyWithoutTransition):
4173         (JSC::Structure::put):
4174         (JSC::Structure::getEnumerablePropertyNames):
4175         (JSC::Structure::checkConsistency):
4176
4177 2009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
4178
4179         Reviewed by Gavin Barraclough.
4180
4181         Add cacheFlush support for Thumb-2 on Linux
4182         https://bugs.webkit.org/show_bug.cgi?id=30865
4183
4184         * jit/ExecutableAllocator.h:
4185         (JSC::ExecutableAllocator::cacheFlush):
4186
4187 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
4188
4189         Reviewed by Oliver Hunt.
4190
4191         JSC JIT on ARMv7 cannot link jumps >16Mb range
4192         https://bugs.webkit.org/show_bug.cgi?id=30891
4193
4194         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
4195         In the cases where the jump would fall within a relative jump range, use a relative jump.
4196
4197         * JavaScriptCore.xcodeproj/project.pbxproj:
4198         * assembler/ARMv7Assembler.h:
4199         (JSC::ARMv7Assembler::~ARMv7Assembler):
4200         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
4201         (JSC::ARMv7Assembler::):
4202         (JSC::ARMv7Assembler::executableCopy):
4203         (JSC::ARMv7Assembler::linkJump):
4204         (JSC::ARMv7Assembler::relinkJump):
4205         (JSC::ARMv7Assembler::setInt32):
4206         (JSC::ARMv7Assembler::isB):
4207         (JSC::ARMv7Assembler::isBX):
4208         (JSC::ARMv7Assembler::isMOV_imm_T3):
4209         (JSC::ARMv7Assembler::isMOVT):
4210         (JSC::ARMv7Assembler::isNOP_T1):
4211         (JSC::ARMv7Assembler::isNOP_T2):
4212         (JSC::ARMv7Assembler::linkJumpAbsolute):
4213         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
4214         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
4215         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
4216         * assembler/MacroAssemblerARMv7.h:
4217         (JSC::MacroAssemblerARMv7::makeJump):
4218         (JSC::MacroAssemblerARMv7::makeBranch):
4219         * jit/JIT.h:
4220         * wtf/Platform.h:
4221
4222 2009-10-28  Oliver Hunt  <oliver@apple.com>
4223
4224         Reviewed by Geoff Garen.
4225
4226         Improve for..in enumeration performance
4227         https://bugs.webkit.org/show_bug.cgi?id=30887
4228
4229         Improve indexing of an object with a for..in iterator by
4230         identifying cases where get_by_val is being used with a iterator
4231         as the subscript and replace it with a new get_by_pname
4232         bytecode.  get_by_pname then optimizes lookups that directly access
4233         the base object.
4234
4235         * bytecode/CodeBlock.cpp:
4236         (JSC::CodeBlock::dump):
4237         * bytecode/Opcode.h:
4238         * bytecompiler/BytecodeGenerator.cpp:
4239         (JSC::BytecodeGenerator::emitGetByVal):
4240         * bytecompiler/BytecodeGenerator.h:
4241         (JSC::BytecodeGenerator::pushOptimisedForIn):
4242         (JSC::BytecodeGenerator::popOptimisedForIn):
4243         * interpreter/Interpreter.cpp:
4244         (JSC::Interpreter::privateExecute):
4245         * jit/JIT.cpp:
4246         (JSC::JIT::privateCompileMainPass):
4247         (JSC::JIT::privateCompileSlowCases):
4248         * jit/JIT.h: