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