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