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