Reviewed by Darin.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Darin.
4         
5         - fix test failures / crashes on PPC
6
7         * kjs/property_map.h: Make the bool fields explicitly 8-bit bitfields, since bool is a full
8         word there otherwise :-(
9
10 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
11
12         Reviewed by Darin.
13         
14         - fix more test case failures
15
16         * bindings/runtime_array.cpp:
17         (RuntimeArray::RuntimeArray): inherit from JSObject instead of ArrayInstance; it turns
18         out that this class only needs the prototype and classInfo from ArrayInstance, not the
19         actual class itself, and it was too big otherwise.
20         (RuntimeArray::getOwnPropertySlot):
21         * bindings/runtime_array.h:
22
23 2007-04-23  Maciej Stachowiak  <mjs@apple.com>
24
25         Reviewed by Darin.
26         
27         - fix some test failures
28
29         * bindings/runtime_method.cpp:
30         (RuntimeMethod::RuntimeMethod): inherit from InternalFunctionImp instead of FunctionImpl,
31         otherwise this is too big
32         (RuntimeMethod::getOwnPropertySlot):
33         * bindings/runtime_method.h:
34
35 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
36
37         Reviewed by Darin.
38         
39         - discard the arguments List for an ActivationImp when the corresponding Context is destroyed (1.7% speedup)
40         http://bugs.webkit.org/show_bug.cgi?id=13385
41
42         Based an idea by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>. His patch to do 
43         this also had many other List changes and I found this much simpler subset of the changes
44         was actually a hair faster.
45         
46         This optimization is valid because the arguments list is only kept around to
47         lazily make the arguments object. If it's not made by the time the function
48         exits, it never will be, since any function that captures the continuation will
49         have its own local arguments variable in scope.
50         
51         Besides the 1.7% speed improvement, it shrinks List by 4 bytes
52         (which in turn shrinks ActivationImp by 4 bytes).
53         
54         * kjs/Context.cpp:
55         (KJS::Context::~Context): Clear the activation's arguments list.
56         * kjs/function.cpp:
57         (KJS::ActivationImp::ActivationImp): Adjusted for list changes.
58         (KJS::ActivationImp::mark): No need to mark, lists are always protected (this doesn't
59         cause a ref-cycle for reasons stated above).
60         (KJS::ActivationImp::createArgumentsObject): Clear arguments list.
61         * kjs/function.h:
62         * kjs/list.cpp:
63         (KJS::List::List): No more needsMarking boolean
64         (KJS::List::operator=): ditto
65         * kjs/list.h:
66         (KJS::List::List): ditto
67         (KJS::List::reset): ditto
68         (KJS::List::deref): ditto
69
70 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
71
72         Reviewed by Darin.
73         
74         - shrink PropertyMap by 8 bytes and therefore shrink CELL_SIZE to 40 (for 32-bit; 
75         similar shrinkage for 64-bit)
76         http://bugs.webkit.org/show_bug.cgi?id=13384
77
78         Inspired by similar changes by Christopher E. Hyde <C.Hyde@parableuk.force9.co.uk>
79         done in the kjs-tweaks branch of KDE's kjs. However, this version is somewhat 
80         cleaner style-wise and avoids some of the negative speed impact (at least on gcc/x86) 
81         of his version.
82         
83         This is nearly a wash performance-wise, maybe a slight slowdown, but worth doing
84         to eventually reach cell size 32.
85         
86         * kjs/collector.cpp:
87         (KJS::):
88         * kjs/property_map.cpp:
89         (KJS::PropertyMap::~PropertyMap):
90         (KJS::PropertyMap::clear):
91         (KJS::PropertyMap::get):
92         (KJS::PropertyMap::getLocation):
93         (KJS::PropertyMap::put):
94         (KJS::PropertyMap::insert):
95         (KJS::PropertyMap::expand):
96         (KJS::PropertyMap::rehash):
97         (KJS::PropertyMap::remove):
98         (KJS::PropertyMap::mark):
99         (KJS::PropertyMap::containsGettersOrSetters):
100         (KJS::PropertyMap::getEnumerablePropertyNames):
101         (KJS::PropertyMap::getSparseArrayPropertyNames):
102         (KJS::PropertyMap::save):
103         (KJS::PropertyMap::checkConsistency):
104         * kjs/property_map.h:
105         (KJS::PropertyMap::hasGetterSetterProperties):
106         (KJS::PropertyMap::setHasGetterSetterProperties):
107         (KJS::PropertyMap::):
108         (KJS::PropertyMap::PropertyMap):
109
110 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
111
112         Reviewed by Darin.
113         
114         - change blocks to 64k in size, and use various platform-specific calls to allocate at 64k-aligned addresses
115         http://bugs.webkit.org/show_bug.cgi?id=13383
116         
117         * kjs/collector.cpp:
118         (KJS::allocateBlock): New function to allocate 64k of 64k-aligned memory
119         (KJS::freeBlock): Corresponding free
120         (KJS::Collector::allocate):
121         (KJS::Collector::collect):
122
123 2007-04-22  Maciej Stachowiak  <mjs@apple.com>
124
125         Reviewed by Darin and Geoff.
126         
127         - remove the concept of oversize objects, now that there aren't any (for now
128         only enforced with an assert).
129         http://bugs.webkit.org/show_bug.cgi?id=13382
130
131         This change is a .66% speedup on JS iBench for 32-bit platforms, probably much more
132         for 64-bit since it finally gives a reasonable cell size, but I did not test that.
133         
134         * kjs/collector.cpp:
135         (KJS::): Use different cell size for 32-bit and 64-bit, now that there is no
136         oversize allocation.
137         (KJS::Collector::allocate): Remove oversize allocator.
138         (KJS::Collector::markStackObjectsConservatively): Don't check oversize objects.
139         (KJS::Collector::markMainThreadOnlyObjects): Ditto.
140         (KJS::Collector::collect): Ditto.
141
142 2007-04-21  Mitz Pettel  <mitz@webkit.org>
143
144         Reviewed by Adam.
145
146         - fix http://bugs.webkit.org/show_bug.cgi?id=13428
147           REGRESSION (r20973-r20976): Failing ecma/Array/15.4.4.5-3.js
148
149         - fix http://bugs.webkit.org/show_bug.cgi?id=13429
150           REGRESSION (r20973-r20976): Crashing in fast/dom/plugin-attributes-enumeration.html
151
152         * kjs/array_object.cpp:
153         (ArrayInstance::sort): Free the old storage, not the new one.
154
155 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
156
157         Not reviewed, build fix.
158
159         - fix build problem with last change - -O3 complains more about uninitialized variables
160         
161         * pcre/pcre_compile.c:
162         (compile_branch):
163         (pcre_compile2):
164
165 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
166
167         Reviewed by Darin.
168         
169         - <rdar://problem/5149915> use mergesort when possible, since it leads to fewer compares (2% JS iBench speedup)
170
171         * kjs/array_object.cpp:
172         (ArrayInstance::sort): Use mergesort(3) on platforms that have it, since it tends
173         to do fewer compares than qsort; but avoid it very on large arrays since it uses extra
174         memory. Also added comments identifying possibly even better sorting algorithms
175         for sort by string value and sort by compare function.
176         * kjs/config.h:
177
178 2007-04-20  Maciej Stachowiak  <mjs@apple.com>
179
180         Reviewed by Darin.
181         
182         - bump optimization flags up to -O3 for 1% JS iBench speed improvement 
183
184         * Configurations/Base.xcconfig:
185
186 2007-04-20  Mark Rowe  <mrowe@apple.com>
187
188         Reviewed by Maciej.
189
190         Fix bogus optimisation in the generic pthread code path.
191
192         * kjs/collector.cpp:
193         (KJS::currentThreadStackBase):
194
195 2007-04-20  Mark Rowe  <mrowe@apple.com>
196
197         Reviewed by Anders.
198
199         Improve FreeBSD compatibility, as suggested by Alexander Botero-Lowry.
200
201         * kjs/collector.cpp:
202         (KJS::currentThreadStackBase): FreeBSD requires that pthread_attr_t's are
203         initialized via pthread_attr_init before being used in any context.
204
205 2007-04-19  Mark Rowe  <mrowe@apple.com>
206
207         Reviewed by Darin.
208
209         Fix http://bugs.webkit.org/show_bug.cgi?id=13401
210         Bug 13401: Reproducible crash calling myArray.sort(compareFn) from within
211         a sort comparison function
212
213         * kjs/array_object.cpp:
214         (ArrayInstance::sort): Save/restore the static variables around calls to qsort
215         to ensure nested calls to ArrayInstance::sort behave correctly.
216
217 2007-04-12  Deneb Meketa  <dmeketa@adobe.com>
218
219         Reviewed by Darin Adler.
220
221         http://bugs.webkit.org/show_bug.cgi?id=13029
222         rdar://problem/4994849
223         Bug 13029: Permit NPAPI plug-ins to see HTTP response headers.
224         This doesn't actually change JavaScriptCore, but that's where npapi.h is.
225
226         * bindings/npapi.h:
227         Add headers member to NPStream struct.  Also increase NP_VERSION_MINOR to 18.
228         Increasing to >= 17 allows plug-ins to safely detect whether to look for
229         NPStream::headers.  Increasing from 17 to 18 reflects presence of NPObject
230         enumeration, which was added in a prior patch, and which has been agreed to
231         constitute version 18 by the plugin-futures list.  Also add other missing
232         bits of npapi.h to catch up from 14 to 18.  This includes features that are
233         not implemented in WebKit, but those are safely stubbed.
234
235 2007-04-10  Geoffrey Garen  <ggaren@apple.com>
236
237         Reviewed by Mark Rowe.
238         
239         Fixed last check-in to print in release builds, too.
240
241         * kjs/collector.cpp:
242         (KJS::getPlatformThreadRegisters):
243
244 2007-04-10  Geoffrey Garen  <ggaren@apple.com>
245
246         Reviewed by John Sullivan, Darin Adler.
247         
248         Fixed <rdar://problem/5121899> JavaScript garbage collection leads to 
249         later crash under Rosetta (should abort or leak instead?)
250         
251         Log an error message and crash if the kernel reports failure during GC.
252         We decided to do this instead of just leaking because we don't want people
253         to get the mistaken impression that running in Rosetta is a supported
254         configurtion.
255         
256         The CRASH macro will also hook into CrashReporter, which will tell us if 
257         many (any?) users run into this issue.
258
259         * kjs/collector.cpp:
260         (KJS::getPlatformThreadRegisters):
261
262 2007-04-06  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
263
264         Reviewed by darin.
265
266         Coverity fix. Coverity says:
267         "Event var_deref_model: Variable "sourceRanges" tracked as NULL was passed to a
268         function that dereferences it"
269
270         * kjs/string_object.cpp:
271         (KJS::replace):
272
273 2007-04-06  Geoffrey Garen  <ggaren@apple.com>
274
275         Rubber stamped by Adele Peterson.
276
277         * kjs/ExecState.h: Removed obsolete forward/friend declaration of 
278         RuntimeMethodImp.
279
280 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
281
282         Reviewed by darin.
283
284         Coverity fix. Coverity says:
285         "Event check_after_deref: Pointer "dateString" dereferenced before NULL check"
286
287         * kjs/date_object.cpp:
288         (KJS::parseDate):
289
290 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
291
292         Reviewed by darin.
293
294         Coverity fix. Coverity says:
295         "Event check_after_deref: Pointer "re" dereferenced before NULL check"
296
297         * pcre/pcre_study.c:
298         (pcre_study):
299
300 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
301
302         Reviewed by darin.
303
304         Coverity fixes. Coverity says:
305         "Event leaked_storage: Returned without freeing storage "buffer""
306         and:
307         "Event leaked_storage: Returned without freeing storage "script""
308
309         * kjs/testkjs.cpp:
310         (doIt):
311         (createStringWithContentsOfFile):
312
313 2007-04-05  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
314
315         Reviewed by darin.
316
317         Coverity fix: in single-threaded case currentThreadIsMainThread is always true
318         so the code in if (!currentThreadIsMainThread) cannot possibly be reached
319         and Coverity complains about dead code.
320
321         * kjs/collector.cpp:
322         (KJS::Collector::collect):
323
324 === Safari-5522.6 ===
325
326 2007-04-03  Kevin McCullough  <kmccullough@apple.com>
327
328         Reviewed by Adam.
329
330         - Testing a post-commit hook.
331
332         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
333
334 2007-04-03  Anders Carlsson  <andersca@apple.com>
335
336         Reviewed by Adam.
337
338         <rdar://problem/5107534>
339         http://bugs.webkit.org/show_bug.cgi?id=13265
340         REGRESSION: Crash in KJS::Bindings::convertValueToNPVariant
341         
342         * bindings/NP_jsobject.cpp:
343         (_NPN_InvokeDefault):
344         Return false if the object isn't a function. Set the return value to undefined by default
345         (to match Firefox).
346         
347 2007-03-30  Anders Carlsson <andersca@apple.com>
348
349         Build fix.
350         
351         * bindings/NP_jsobject.cpp:
352         (_NPN_Enumerate):
353
354 2007-03-30  Anders Carlsson  <andersca@apple.com>
355
356         Reviewed by Geoff.
357
358         Implement _NPN_Enumerate support.
359         
360         * JavaScriptCore.exp:
361         * bindings/NP_jsobject.cpp:
362         (_NPN_Enumerate):
363         * bindings/c/c_instance.cpp:
364         (KJS::Bindings::CInstance::getPropertyNames):
365         * bindings/c/c_instance.h:
366         * bindings/npapi.h:
367         * bindings/npruntime.h:
368         * bindings/npruntime_impl.h:
369         * bindings/runtime.h:
370         (KJS::Bindings::Instance::getPropertyNames):
371         * bindings/runtime_object.cpp:
372         (RuntimeObjectImp::getPropertyNames):
373         * bindings/runtime_object.h:
374         (KJS::RuntimeObjectImp::getInternalInstance):
375
376 2007-03-28  Jeff Walden  <jwalden+code@mit.edu>
377
378         Reviewed by Darin.
379
380         http://bugs.webkit.org/show_bug.cgi?id=12963
381         Fix some inconsistencies in the Mozilla JS Array extras implementations
382         with respect to the Mozilla implementation:
383
384           - holes in arrays should be skipped, not treated as undefined,
385             by all such methods
386           - an element with value undefined is not a hole
387           - Array.prototype.forEach should return undefined
388
389         * kjs/array_object.cpp:
390         (ArrayInstance::getOwnPropertySlot):
391         (ArrayProtoFunc::callAsFunction):
392
393 2007-03-27  Anders Carlsson  <acarlsson@apple.com>
394
395         Reviewed by Geoff.
396
397         * bindings/NP_jsobject.cpp:
398         (_NPN_InvokeDefault):
399         Call JSObject:call for native JavaScript objects.
400
401 2007-03-26  David Carson  <dacarson@gmail.com>
402
403         Reviewed by Darin, landed by Anders.
404
405         Fix for: REGRESSION (r19559): Java applet crash
406         http://bugs.webkit.org/show_bug.cgi?id=13142
407         <rdar://problem/5080340>
408
409         The previous fix http://bugs.webkit.org/show_bug.cgi?id=12636 
410         introduced new JNIType to enum in jni_utility.h This is a 
411         problem on the Mac as it seems that the JNIType enum is also
412         used in the JVM, it is used to specify the return type in
413         jni_objc.mm
414         Corrected the fix by moving type to the end, and changing
415         jni_objc.mm to convert the new type to an old compatible
416         type.
417
418         * bindings/jni/jni_objc.mm:
419         (KJS::Bindings::dispatchJNICall):
420         * bindings/jni/jni_utility.h:
421
422 2007-03-26  Christopher Brichford  <chrisb@adobe.com>
423
424         Reviewed/landed by Adam.
425
426         Bug 13198: Move build settings from project file to xcconfig file for apollo
427         port JSCore
428         http://bugs.webkit.org/show_bug.cgi?id=13198
429
430         - Moving build settings from xcode project file to xcconfig files.
431
432         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig:
433         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig:
434         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
435         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
436
437 2007-03-26  Brady Eidson  <beidson@apple.com>
438
439         Rubberstamped by Anders and Maciej aand Geoff (oh my!)
440         
441         Since CFTypeRef is really void*, a RetainPtr couldn't be used. 
442         RefType was "void", which doesn't actually exist as a type.
443         Since RefType only existed for operator*(), and since that operator
444         doesn't make any sense for RetainPtr, I removed them!
445
446         * kjs/nodes.cpp: Touch this to force a rebuild and (hopefully) help the
447           compiler with dependencies
448         * wtf/RetainPtr.h: Nuke RefType and operator*()
449
450 2007-03-26  Geoffrey Garen  <ggaren@apple.com>
451
452         Touched a file to (hopefully) help the compiler with RetainPtr dependencies.
453
454         * kjs/nodes.cpp:
455         (Node::deref):
456
457 2007-03-24  Brady Eidson  <beidson@apple.com>
458
459         Reviewed by Adam
460
461         Whoops, RetainPtr should be in the WTF namespace
462
463         * wtf/RetainPtr.h:
464
465 2007-03-24  Brady Eidson  <beidson@apple.com>
466
467         Reviewed by Adam
468         
469         <rdar://problem/5086210> - Move RetainPtr to WTF
470
471         * wtf/RetainPtr.h: Added
472         * JavaScriptCore.xcodeproj/project.pbxproj: Add it to the project file
473         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto
474
475
476 2007-03-23  Christopher Brichford  <chrisb@adobe.com>
477
478         Reviewed/landed by Adam.
479
480         Bug 13175: Make apollo mac project files for JavaScriptCore actually
481         build something
482         http://bugs.webkit.org/show_bug.cgi?id=13175
483
484         - Changing apollo mac project files for JavaScriptCore such that they actually build
485         JavaScriptCore source code.
486
487         * JavaScriptCore.apolloproj/ForwardingSources/grammar.cpp: Added.
488         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig:
489         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
490
491 2007-03-24  Mark Rowe  <mrowe@apple.com>
492
493         Rubber-stamped by Darin.
494
495         * Configurations/JavaScriptCore.xcconfig: Remove unnecessary INFOPLIST_PREPROCESS.
496
497 2007-03-22  Christopher Brichford  <chrisb@adobe.com>
498
499         Reviewed/landed by Adam.
500
501         Bug 13164: Initial version of mac JavaScriptCore project files for
502         apollo port 
503         http://bugs.webkit.org/show_bug.cgi?id=13164
504
505         - Adding mac project files for apollo port of JavaScriptCore. Currently project
506         just builds dftables.
507
508         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Debug.xcconfig: Added.
509         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.Release.xcconfig: Added.
510         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcconfig: Added.
511         * JavaScriptCore.apolloproj/mac/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Added.
512
513 2007-03-21  Timothy Hatcher  <timothy@apple.com>
514
515         Reviewed by Darin.
516
517         <rdar://problem/5076599> JavaScriptCore has a weak export (vtable for KJS::JSCell)
518
519         * JavaScriptCore.exp: Remove __ZTVN3KJS6JSCellE.
520
521 2007-03-21  Adele Peterson  <adele@apple.com>
522
523         Reviewed by Geoff.
524
525         * API/JSStringRef.cpp: (JSStringIsEqual): Added JSLock.
526
527 2007-03-21  Zack Rusin  <zrusin@trolltech.com>
528
529         Fix the compile when USE(MULTIPLE_THREADS) isn't
530         defined
531
532         * kjs/JSLock.cpp:
533         (KJS::JSLock::currentThreadIsHoldingLock):
534
535 2007-03-20  Maciej Stachowiak  <mjs@apple.com>
536
537         Reviewed by Geoff and Adam.
538         
539         - make USE(MULTIPLE_THREADS) support more portable
540         http://bugs.webkit.org/show_bug.cgi?id=13069
541         
542         - fixed a threadsafety bug discovered by testing this
543         
544         - enhanced threadsafety assertions in collector
545
546         * API/JSCallbackObject.cpp:
547         (KJS::JSCallbackObject::~JSCallbackObject): This destructor can't
548         DropAllLocks around the finalize callback, because it gets called
549         from garbage collection and we can't let other threads collect!
550
551         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
552         * kjs/JSLock.cpp:
553         (KJS::JSLock::currentThreadIsHoldingLock): Added new function
554         to allow stronger assertions than just that the lock is held
555         by some thread (you can now assert that the current thread is
556         holding it, given the new JSLock design).
557         * kjs/JSLock.h:
558         * kjs/collector.cpp: Refactored for portability plus added some
559         stronger assertions.
560         (KJS::Collector::allocate):
561         (KJS::currentThreadStackBase):
562         (KJS::Collector::registerAsMainThread):
563         (KJS::onMainThread):
564         (KJS::PlatformThread::PlatformThread):
565         (KJS::getCurrentPlatformThread):
566         (KJS::Collector::Thread::Thread):
567         (KJS::destroyRegisteredThread):
568         (KJS::Collector::registerThread):
569         (KJS::Collector::markCurrentThreadConservatively):
570         (KJS::suspendThread):
571         (KJS::resumeThread):
572         (KJS::getPlatformThreadRegisters):
573         (KJS::otherThreadStackPointer):
574         (KJS::otherThreadStackBase):
575         (KJS::Collector::markOtherThreadConservatively):
576         (KJS::Collector::markStackObjectsConservatively):
577         (KJS::Collector::protect):
578         (KJS::Collector::unprotect):
579         (KJS::Collector::collectOnMainThreadOnly):
580         (KJS::Collector::markMainThreadOnlyObjects):
581         (KJS::Collector::collect):
582         * kjs/collector.h:
583         * wtf/FastMalloc.cpp:
584         (WTF::fastMallocSetIsMultiThreaded):
585         * wtf/FastMallocInternal.h:
586         * wtf/Platform.h:
587
588 2007-03-19  Darin Adler  <darin@apple.com>
589
590         * kjs/value.h: Roll ~JSValue change out. It was causing problems. I'll do it right later.
591
592 2007-03-19  Geoffrey Garen  <ggaren@apple.com>
593
594         Reviewed by John Sullivan.
595
596         Fixed <rdar://problem/5073380> REGRESSION: Crash occurs at WTF::fastFree() 
597         when reloading liveconnect page (applet)
598         
599         Best to use free when you use malloc, especially when malloc and delete
600         use completely different libraries.
601
602         * bindings/jni/jni_runtime.cpp:
603         (JavaMethod::~JavaMethod):
604
605 2007-03-19  Andrew Wellington  <proton@wiretapped.net>
606
607         Reviewed by Maciej.
608
609         Really set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html)
610
611         * JavaScriptCore.xcodeproj/project.pbxproj:
612
613 2007-03-19  Darin Adler  <darin@apple.com>
614
615         Reviewed by Geoff.
616
617         - Changed list size threshold to 5 based on testing.
618
619         I was testing the i-Bench JavaScript with the list statistics
620         dumping on, and discovered that there were many 5-element lists.
621         The fast case for lists was for 4 elements and fewer. By changing
622         the threshold to 5 elements we get a measurable speedup. I believe
623         this will help real web pages too, not just the benchmark.
624
625         * kjs/list.cpp: Change constant from 4 to 5.
626
627 2007-03-19  Darin Adler  <darin@apple.com>
628
629         * kjs/value.h: Oops, fix build.
630
631 2007-03-19  Darin Adler  <darin@apple.com>
632
633         Reviewed by Geoff.
634
635         - remove ~JSValue; tiny low-risk performance boost
636
637         * kjs/value.h: Remove unneeded empty virtual destructor from JSValue.
638         The only class derived from JSValue is JSCell and it already has a
639         virtual destructor. Declaring an empty constructor in JSValue had one
640         good effect: it marked the destructor private, making it a compile
641         time error to try to destroy a JSValue; but that's not a likely
642         mistake for someone to make. It had two bad effects: (1) it caused gcc,
643         at least, to generate code to fix up the virtual table pointer to
644         point to the JSValue version of the virtual table inside the destructor
645         of all classes derived from JSValue directly or indirectly; (2) it
646         caused JSValue to be a polymorphic class so required a virtual table for
647         it. It's cleaner to not have either of those.
648
649 2007-03-18  Maciej Stachowiak  <mjs@apple.com>
650
651         Reviewed by Mark.
652         
653         - avoid static construction (and global variable access) in a smarter, more portable way,
654         to later enable MUTLI_THREAD mode to work on other platforms and compilers.
655         
656         * kjs/CommonIdentifiers.cpp: Added. New class to hold all the shared identifiers.
657         (KJS::CommonIdentifiers::CommonIdentifiers):
658         (KJS::CommonIdentifiers::shared):
659         * kjs/CommonIdentifiers.h: Added.
660
661         * kjs/ExecState.h:
662         (KJS::ExecState::propertyNames): Hand the CommonIdentifiers instance here for easy access.
663         (KJS::ExecState::ExecState):
664
665         * API/JSObjectRef.cpp:
666         (JSObjectMakeConstructor):
667         * CMakeLists.txt:
668         * JavaScriptCore.exp:
669         * JavaScriptCore.pri:
670         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
671         * JavaScriptCore.xcodeproj/project.pbxproj:
672         * JavaScriptCoreSources.bkl:
673         * bindings/runtime_array.cpp:
674         (RuntimeArray::getOwnPropertySlot):
675         (RuntimeArray::put):
676         * bindings/runtime_method.cpp:
677         (RuntimeMethod::getOwnPropertySlot):
678         * kjs/array_object.cpp:
679         (ArrayInstance::getOwnPropertySlot):
680         (ArrayInstance::put):
681         (ArrayInstance::deleteProperty):
682         (ArrayProtoFunc::ArrayProtoFunc):
683         (ArrayProtoFunc::callAsFunction):
684         (ArrayObjectImp::ArrayObjectImp):
685         * kjs/bool_object.cpp:
686         (BooleanPrototype::BooleanPrototype):
687         (BooleanProtoFunc::BooleanProtoFunc):
688         (BooleanProtoFunc::callAsFunction):
689         (BooleanObjectImp::BooleanObjectImp):
690         * kjs/completion.h:
691         (KJS::Completion::Completion):
692         * kjs/date_object.cpp:
693         (KJS::DateProtoFunc::DateProtoFunc):
694         (KJS::DateObjectImp::DateObjectImp):
695         (KJS::DateObjectFuncImp::DateObjectFuncImp):
696         * kjs/error_object.cpp:
697         (ErrorPrototype::ErrorPrototype):
698         (ErrorProtoFunc::ErrorProtoFunc):
699         (ErrorProtoFunc::callAsFunction):
700         (ErrorObjectImp::ErrorObjectImp):
701         (ErrorObjectImp::construct):
702         (NativeErrorPrototype::NativeErrorPrototype):
703         (NativeErrorImp::NativeErrorImp):
704         (NativeErrorImp::construct):
705         (NativeErrorImp::callAsFunction):
706         * kjs/function.cpp:
707         (KJS::FunctionImp::getOwnPropertySlot):
708         (KJS::FunctionImp::put):
709         (KJS::FunctionImp::deleteProperty):
710         (KJS::FunctionImp::getParameterName):
711         (KJS::DeclaredFunctionImp::construct):
712         (KJS::IndexToNameMap::unMap):
713         (KJS::Arguments::Arguments):
714         (KJS::ActivationImp::getOwnPropertySlot):
715         (KJS::ActivationImp::deleteProperty):
716         (KJS::GlobalFuncImp::GlobalFuncImp):
717         * kjs/function_object.cpp:
718         (FunctionPrototype::FunctionPrototype):
719         (FunctionProtoFunc::FunctionProtoFunc):
720         (FunctionProtoFunc::callAsFunction):
721         (FunctionObjectImp::FunctionObjectImp):
722         (FunctionObjectImp::construct):
723         * kjs/grammar.y:
724         * kjs/identifier.cpp:
725         * kjs/identifier.h:
726         * kjs/interpreter.cpp:
727         (KJS::Interpreter::init):
728         (KJS::Interpreter::initGlobalObject):
729         * kjs/interpreter.h:
730         * kjs/lookup.h:
731         * kjs/math_object.cpp:
732         (MathFuncImp::MathFuncImp):
733         * kjs/nodes.cpp:
734         (ArrayNode::evaluate):
735         (FuncDeclNode::processFuncDecl):
736         (FuncExprNode::evaluate):
737         * kjs/number_object.cpp:
738         (NumberPrototype::NumberPrototype):
739         (NumberProtoFunc::NumberProtoFunc):
740         (NumberObjectImp::NumberObjectImp):
741         * kjs/object.cpp:
742         (KJS::JSObject::put):
743         (KJS::JSObject::defaultValue):
744         (KJS::JSObject::hasInstance):
745         * kjs/object.h:
746         (KJS::JSObject::getOwnPropertySlot):
747         * kjs/object_object.cpp:
748         (ObjectPrototype::ObjectPrototype):
749         (ObjectProtoFunc::ObjectProtoFunc):
750         (ObjectObjectImp::ObjectObjectImp):
751         * kjs/regexp_object.cpp:
752         (RegExpPrototype::RegExpPrototype):
753         (RegExpProtoFunc::RegExpProtoFunc):
754         (RegExpObjectImp::RegExpObjectImp):
755         * kjs/string_object.cpp:
756         (KJS::StringInstance::getOwnPropertySlot):
757         (KJS::StringInstance::put):
758         (KJS::StringInstance::deleteProperty):
759         (KJS::StringPrototype::StringPrototype):
760         (KJS::StringProtoFunc::StringProtoFunc):
761         (KJS::StringProtoFunc::callAsFunction):
762         (KJS::StringObjectImp::StringObjectImp):
763         (KJS::StringObjectFuncImp::StringObjectFuncImp):
764         * kjs/testkjs.cpp:
765         (TestFunctionImp::TestFunctionImp):
766
767 2007-03-18  Andrew Wellington  <proton@wiretapped.net>
768
769         Reviewed by Mark Rowe
770         
771         Set Xcode editor to use 4 space indentation (http://webkit.org/coding/coding-style.html) 
772
773         * JavaScriptCore.xcodeproj/project.pbxproj:
774
775 2007-03-19  Mark Rowe  <mrowe@apple.com>
776
777         Rubber-stamped by Brady.
778
779         Update references to bugzilla.opendarwin.org with bugs.webkit.org.
780
781         * bindings/c/c_utility.cpp:
782         (KJS::Bindings::convertUTF8ToUTF16):
783         * kjs/function.cpp:
784         (KJS::FunctionImp::callAsFunction):
785         * kjs/grammar.y:
786         * kjs/keywords.table:
787         * kjs/lexer.cpp:
788         (KJS::Lexer::shift):
789
790 2007-03-18  Geoffrey Garen  <ggaren@apple.com>
791
792         Reviewed by Oliver Hunt.
793         
794         Exposed some extra toUInt32 functionality, as part of the fix for
795         REGRESSION: Incomplete document.all implementation breaks abtelectronics.com 
796         (Style Change Through JavaScript Blanks Content)
797
798         * JavaScriptCore.exp:
799         * kjs/identifier.h:
800         (KJS::Identifier::toUInt32):
801
802 2007-03-18  Geoffrey Garen  <ggaren@apple.com>
803
804         Removed duplicate export name.
805         
806         * JavaScriptCore.exp:
807
808 2007-03-15  Geoffrey Garen  <ggaren@apple.com>
809
810         Reviewed by Maciej Stachowiak.
811         
812         Fixed <rdar://problem/5064964> Repro ASSERT failure in JS Bindings when 
813         closing window @ lowtrades.bptrade.com
814         
815         Unfortunately, the bindings depend on UString and Identifier as string 
816         representations. So, they need to acquire the JSLock when doing something
817         that will ref/deref their strings.
818
819         Layout tests, the original site, and Java, Flash, and Quicktime on the 
820         web work. No leaks reported. No automated test for this because testing 
821         the Java bindings, like math, is hard.
822         
823         * bindings/runtime.h: Made Noncopyable, just to be sure.
824         
825         * bindings/c/c_class.cpp: 
826         (KJS::Bindings::CClass::~CClass): Acquire the JSLock and explicitly clear the keys
827         in our hashtable, since they're UString::Reps, and ref/deref aren't thread-safe.
828         (KJS::Bindings::CClass::methodsNamed): Also acquire the JSLock when adding
829         keys to the table, since the table ref's them.
830         (KJS::Bindings::CClass::fieldNamed): ditto.
831
832         * bindings/c/c_utility.cpp: Removed dead function.
833         (KJS::Bindings::convertValueToNPVariant): Acquire the JSLock because doing
834         it recursively is pretty cheap, and it's just too confusing to tell whether
835         all our callers do it for us.
836         (KJS::Bindings::convertNPVariantToValue): ditto
837         * bindings/c/c_utility.h:
838
839         * bindings/jni/jni_class.cpp: Same deal as c_class.cpp.
840         (JavaClass::JavaClass):
841         (JavaClass::~JavaClass):
842
843         * bindings/jni/jni_instance.cpp: Same deal as c_utility.cpp.
844         (JavaInstance::stringValue):
845         * bindings/jni/jni_jsobject.cpp:
846         (JavaJSObject::convertValueToJObject):
847
848         * bindings/jni/jni_runtime.cpp:
849         (JavaMethod::~JavaMethod): Moved from header, for clarity.
850         (appendClassName): Made this static, so the set of callers is known, and
851         we can assert that we hold the JSLock. Also changed it to take a UString
852         reference, which makes the calling code simpler.
853         (JavaMethod::signature): Store the ASCII value we care about instead of
854         a UString, since UString is so much more hassle. Hold the JSLock while
855         building up the temporary UString.
856
857         * bindings/jni/jni_runtime.h: Nixed dead code in JavaMethod.
858         (KJS::Bindings::JavaString::JavaString): Hold a UString::Rep instead of
859         a UString, so we can acquire the JSLock and explicitly release it.
860         (KJS::Bindings::JavaString::_commonInit):
861         (KJS::Bindings::JavaString::~JavaString):
862         (KJS::Bindings::JavaString::UTF8String):
863         (KJS::Bindings::JavaString::uchars):
864         (KJS::Bindings::JavaString::length):
865         (KJS::Bindings::JavaString::ustring):
866
867         * bindings/jni/jni_utility.cpp:
868         (KJS::Bindings::convertArrayInstanceToJavaArray): Made this static, so 
869         the set of callers is known, and we can assert that we hold the JSLock. 
870         (KJS::Bindings::convertValueToJValue): Acquire the JSLock because doing
871         it recursively is pretty cheap, and it's just too confusing to tell whether
872         all our callers do it for us.
873
874         * bindings/objc/objc_runtime.h: Nixed some dead code.
875         * bindings/objc/objc_utility.mm:
876         (KJS::Bindings::convertNSStringToString): Same drill as above.
877
878 2007-03-18  Alexey Proskuryakov  <ap@webkit.org>
879
880         Reviewed by Geoff.
881
882         http://bugs.webkit.org/show_bug.cgi?id=13105
883         REGRESSION: an exception raised when calculating base value of a dot expression is not returned
884
885         Test: fast/js/dot-node-base-exception.html
886
887         * kjs/nodes.cpp:
888         (FunctionCallDotNode::evaluate): Added the necessary KJS_CHECKEXCEPTIONVALUE.
889
890 2007-03-18  Steve Falkenburg  <sfalken@apple.com>
891
892         Build fix.
893
894         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
895
896 2007-03-17  Timothy Hatcher  <timothy@apple.com>
897
898         Reviewed by Mark Rowe.
899
900         Made Version.xcconfig smarter when building for different configurations.
901         Now uses the 522+ OpenSource version for Debug and Release, while using the
902         full 522.4 version for Production builds. The system prefix is also computed
903         based on the current system, so 4522.4 on Tiger and 5522.4 on Leopard.
904
905         * Configurations/JavaScriptCore.xcconfig:
906         * Configurations/Version.xcconfig:
907
908 2007-03-15  Maciej Stachowiak  <mjs@apple.com>
909
910         Not reviewed.
911         
912         - build fix
913
914         * wtf/TCSystemAlloc.cpp:
915
916 2007-03-15  Maciej Stachowiak  <mjs@apple.com>
917
918         Reviewed by Geoff and Steve.
919         
920         - fix some portability issues with TCMalloc.
921
922         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
923         * kjs/config.h:
924         * wtf/FastMalloc.cpp:
925         (WTF::SizeClass):
926         (WTF::InitSizeClasses):
927         (WTF::TCMalloc_PageHeap::Split):
928         (WTF::TCMalloc_PageHeap::RegisterSizeClass):
929         (WTF::TCMalloc_Central_FreeList::length):
930         (WTF::TCMalloc_ThreadCache::InitTSD):
931         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
932         * wtf/TCSpinLock.h:
933         * wtf/TCSystemAlloc.cpp:
934         (TryVirtualAlloc):
935         (TCMalloc_SystemAlloc):
936
937 2007-03-15  Timothy Hatcher  <timothy@apple.com>
938
939         Reviewed by John.
940
941         * Factored out most of our common build settings into .xcconfig files. Anything that was common in
942           each build configuration was factored out into the shared .xcconfig file.
943         * Adds a Version.xcconfig file to define the current framework version, to be used in other places.
944         * Use the new $(BUNDLE_VERSION) (defined in Version.xcconfig) in the preprocessed Info.plist.
945         * Use the versions defined in Version.xcconfig to set $(DYLIB_CURRENT_VERSION).
946
947         * Configurations/Base.xcconfig: Added.
948         * Configurations/DebugRelease.xcconfig: Added.
949         * Configurations/JavaScriptCore.xcconfig: Added.
950         * Configurations/Version.xcconfig: Added.
951         * Info.plist:
952         * JavaScriptCore.xcodeproj/project.pbxproj:
953
954 2007-03-16  Shrikant Gangoda  <shrikant.gangoda@celunite.com>
955
956         Gdk build fix.
957
958         * kjs/DateMath.cpp:  gettimeofday comes from <sys/time.h> on Linux.
959
960 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
961
962         Reviewed by .
963
964         - Fixed one more build breakage
965
966         * kjs/date_object.cpp:
967         (KJS::formatLocaleDate):
968
969 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
970
971         Reviewed by .
972
973         - Fixed a build breakage.
974
975         * kjs/DateMath.cpp:
976         * kjs/date_object.cpp:
977         (KJS::formatLocaleDate):
978         (KJS::DateObjectImp::construct):
979
980 2007-03-14  Kevin McCullough  <kmccullough@apple.com>
981
982         Reviewed by Geoff.
983
984         - rdar://problem/5045720
985         - DST changes in US affect JavaScript date calculations (12975)
986         This fix was to ensure we properly test for the new changes to DST in the US.
987         Also this fixes when we apply DST, now we correctly map most past years to current
988         DST rules.  We still have a small issue with years before 1900 or after 2100.
989         rdar://problem/5055038
990
991         * kjs/DateMath.cpp: Fix DST to match spec better.
992         (KJS::getCurrentUTCTime):
993         (KJS::mimimumYearForDST):
994         (KJS::maximumYearForDST):
995         (KJS::equivalentYearForDST):
996         (KJS::getDSTOffset):
997         * kjs/DateMath.h: Consolodated common funtionality.
998         * kjs/date_object.cpp: Consolodated common functionality.
999         (KJS::formatLocaleDate):
1000         (KJS::DateObjectImp::construct):
1001         * tests/mozilla/ecma/jsref.js: Added functions for finding the correct days when DST starts and ends.
1002         * tests/mozilla/ecma/shell.js: Added back in the old DST functions for ease of merging with mozilla if needed.
1003         * tests/mozilla/ecma_2/jsref.js: Added functions for finding the correct days when DST starts and ends.
1004         * tests/mozilla/ecma_3/Date/shell.js: Added functions for finding the correct days when DST starts and ends.
1005         * tests/mozilla/expected.html: Updated to show all date tests passing.
1006
1007 === Safari-5522.4 ===
1008
1009 2007-03-13  Kevin McCullough  <kmccullough@apple.com>
1010
1011         Reviewed by .
1012
1013         - Adding expected failures until the are truly fixed. 
1014         - rdar://problem/5060302
1015
1016         * tests/mozilla/expected.html:
1017
1018 2007-03-12  Kevin McCullough  <kmccullough@apple.com>
1019
1020         Reviewed by .
1021
1022         - Actually update tests for new DST rules.
1023
1024         * tests/mozilla/ecma/Date/15.9.3.1-1.js:
1025         * tests/mozilla/ecma/Date/15.9.3.1-2.js:
1026         * tests/mozilla/ecma/Date/15.9.3.1-3.js:
1027         * tests/mozilla/ecma/Date/15.9.3.1-4.js:
1028         * tests/mozilla/ecma/Date/15.9.3.1-5.js:
1029         * tests/mozilla/ecma/Date/15.9.3.2-1.js:
1030         * tests/mozilla/ecma/Date/15.9.3.2-2.js:
1031         * tests/mozilla/ecma/Date/15.9.3.2-3.js:
1032         * tests/mozilla/ecma/Date/15.9.3.2-4.js:
1033         * tests/mozilla/ecma/Date/15.9.3.2-5.js:
1034         * tests/mozilla/ecma/Date/15.9.3.8-1.js:
1035         * tests/mozilla/ecma/Date/15.9.3.8-2.js:
1036         * tests/mozilla/ecma/Date/15.9.3.8-3.js:
1037         * tests/mozilla/ecma/Date/15.9.3.8-4.js:
1038         * tests/mozilla/ecma/Date/15.9.3.8-5.js:
1039         * tests/mozilla/ecma/Date/15.9.5.10-1.js:
1040         * tests/mozilla/ecma/Date/15.9.5.10-10.js:
1041         * tests/mozilla/ecma/Date/15.9.5.10-11.js:
1042         * tests/mozilla/ecma/Date/15.9.5.10-12.js:
1043         * tests/mozilla/ecma/Date/15.9.5.10-13.js:
1044         * tests/mozilla/ecma/Date/15.9.5.10-2.js:
1045         * tests/mozilla/ecma/Date/15.9.5.10-3.js:
1046         * tests/mozilla/ecma/Date/15.9.5.10-4.js:
1047         * tests/mozilla/ecma/Date/15.9.5.10-5.js:
1048         * tests/mozilla/ecma/Date/15.9.5.10-6.js:
1049         * tests/mozilla/ecma/Date/15.9.5.10-7.js:
1050         * tests/mozilla/ecma/Date/15.9.5.10-8.js:
1051         * tests/mozilla/ecma/Date/15.9.5.10-9.js:
1052         * tests/mozilla/ecma/jsref.js:
1053         * tests/mozilla/ecma_2/jsref.js:
1054         * tests/mozilla/ecma_3/Date/shell.js:
1055
1056 2007-03-12  Kevin McCullough  <kmccullough@apple.com>
1057
1058         Reviewed by .
1059
1060         - Update tests for new DST rules.
1061
1062         * tests/mozilla/ecma/shell.js:
1063
1064 2007-03-11  Geoffrey Garen  <ggaren@apple.com>
1065
1066         Reviewed by Oliver Hunt.
1067         
1068         Fixed <rdar://problem/4681051> Installer crashes in KJS::Collector::
1069         markOtherThreadConservatively(KJS::Collector::Thread*) trying to install 
1070         iLife 06 using Rosetta on an Intel Machine
1071         
1072         The problem was that our thread-specific data destructor would modify the
1073         list of active JavaScript threads without holding the JSLock, corrupting
1074         the list. Corruption was especially likely if one JavaScript thread exited 
1075         while another was starting up.
1076
1077         * JavaScriptCore.exp:
1078         * kjs/JSLock.cpp: Don't conflate locking the JSLock with registering a
1079         thread, since the thread-specific data destructor needs to lock
1080         without registering a thread. Instead, treat thread registration as a
1081         part of the convenience of the JSLock object, and whittle down JSLock::lock()
1082         to just the bits that actually do the locking.
1083         (KJS::JSLock::lock):
1084         (KJS::JSLock::registerThread):
1085         * kjs/JSLock.h: Updated comments to mention the new behavior above, and
1086         other recent changes.
1087         (KJS::JSLock::JSLock):
1088         * kjs/collector.cpp:
1089         (KJS::destroyRegisteredThread): Lock here.
1090         (KJS::Collector::registerThread): To match, assert that we're locked here.
1091
1092 2007-03-10  Geoffrey Garen  <ggaren@apple.com>
1093
1094         Reviewed by Darin Adler.
1095
1096         Fixed <rdar://problem/4587763> PAC file: lock inversion between QT and 
1097         JSCore causes a hang @ www.panoramas.dk
1098         
1099         With a PAC file, run-webkit-tests --threaded passes, the reported site
1100         works, and all the Quicktime/JavaScript and Flash/JavaScript examples
1101         I found through Google work, too.
1102         
1103         Any time JavaScript causes arbitrary non-JavaScript code to execute, it 
1104         risks deadlock, because that code may block, trying to acquire a lock 
1105         owned by a thread that is waiting to execute JavaScript. In this case,
1106         the thread was a networking thread that was waiting to interpret a PAC file.
1107         
1108         Because non-JavaScript code may execute in response to, well, anything,
1109         a perfect solution to this problem is impossible. I've implemented an
1110         optimistic solution, instead: JavaScript will drop its lock whenever it
1111         makes a direct call to non-JavaScript code through a bridging/plug-in API,
1112         but will blissfully ignore the indirect ways it may cause non-JavaScript 
1113         code to run (resizing a window, for example). 
1114         
1115         Unfortunately, this solution introduces significant locking overhead in 
1116         the bridging APIs. I don't see a way around that.
1117
1118         This patch includes some distinct bug fixes I saw along the way:
1119         
1120         * bindings/objc/objc_instance.mm: Fixed a bug where a nested begin() call
1121         would leak its autorelease pool, because it would NULL out _pool without
1122         draining it.
1123
1124         * bindings/runtime_object.cpp:
1125         (RuntimeObjectImp::methodGetter): Don't copy an Identifier to ASCII only
1126         to turn around and make an Identifier from the ASCII. In an earlier 
1127         version of this patch, the copy caused an assertion failure. Now it's 
1128         just unnecessary work.
1129         (RuntimeObjectImp::getOwnPropertySlot): ditto
1130
1131         * bindings/objc/objc_instance.h: Removed overrides of setVAlueOfField and
1132         getValueOfField, because they did exactly what the base class versions did.
1133         Removed overrides of Noncopyable declarations for the same reason.
1134
1135         * bindings/runtime.h: Inherit from Noncopyable instead of rolling our own.
1136         * bindings/c/c_instance.h: ditto
1137
1138         And the actual patch:
1139         
1140         * API/JSCallbackConstructor.cpp: Drop all locks when calling out to C.
1141         (KJS::JSCallbackConstructor::construct):
1142         * API/JSCallbackFunction.cpp: ditto
1143         (KJS::JSCallbackFunction::callAsFunction):
1144         * API/JSCallbackObject.cpp: ditto
1145         (KJS::JSCallbackObject::init):
1146         (KJS::JSCallbackObject::~JSCallbackObject):
1147         (KJS::JSCallbackObject::getOwnPropertySlot):
1148         (KJS::JSCallbackObject::put):
1149         (KJS::JSCallbackObject::deleteProperty):
1150         (KJS::JSCallbackObject::construct):
1151         (KJS::JSCallbackObject::hasInstance):
1152         (KJS::JSCallbackObject::callAsFunction):
1153         (KJS::JSCallbackObject::getPropertyNames):
1154         (KJS::JSCallbackObject::toNumber):
1155         (KJS::JSCallbackObject::toString):
1156         (KJS::JSCallbackObject::staticValueGetter):
1157         (KJS::JSCallbackObject::callbackGetter):
1158         
1159         * bindings/c/c_instance.cpp: Drop all locks when calling out to C.
1160         (KJS::Bindings::CInstance::invokeMethod):
1161         (KJS::Bindings::CInstance::invokeDefaultMethod):
1162         * bindings/c/c_runtime.cpp: Drop all locks when calling out to C.
1163         (KJS::Bindings::CField::valueFromInstance):
1164         (KJS::Bindings::CField::setValueToInstance):
1165         * bindings/jni/jni_objc.mm:
1166         (KJS::Bindings::dispatchJNICall): Drop all locks when calling out to Java.
1167
1168         * bindings/objc/objc_instance.mm: The changes here are to accomodate the
1169         fact that C++ unwinding of DropAllLocks goes crazy when you put it inside
1170         a @try block. I moved all JavaScript stuff outside of the @try blocks, and 
1171         then prefixed the whole blocks with DropAllLocks objects. This required some
1172         supporting changes in other functions, which now acquire the JSLock for
1173         themselves, intead of relying on their callers to do so.
1174         (ObjcInstance::end):
1175         (ObjcInstance::invokeMethod):
1176         (ObjcInstance::invokeDefaultMethod):
1177         (ObjcInstance::setValueOfUndefinedField):
1178         (ObjcInstance::getValueOfUndefinedField):
1179         * bindings/objc/objc_runtime.mm: Same as above, except I didn't want to
1180         change throwError to acquire the JSLock for itself.
1181         (ObjcField::valueFromInstance):
1182         (ObjcField::setValueToInstance):
1183         * bindings/objc/objc_utility.mm: Supporting changes mentioned above.
1184         (KJS::Bindings::convertValueToObjcValue):
1185         (KJS::Bindings::convertObjcValueToValue):
1186
1187         * kjs/JSLock.cpp: 
1188         (1) Fixed DropAllLocks to behave as advertised, and drop the JSLock only 
1189         if the current thread actually acquired it in the first place. This is 
1190         important because WebKit needs to ensure that the JSLock has been 
1191         dropped before it makes a plug-in call, even though it doesn't know if 
1192         the current thread actually acquired the JSLock. (We don't want WebKit
1193         to accidentally drop a lock belonging to *another thread*.)
1194         (2) Used the new per-thread code written for (1) to make recursive calls
1195         to JSLock very cheap. JSLock now knows to call pthread_mutext_lock/ 
1196         pthread_mutext_unlock only at nesting level 0.
1197         (KJS::createDidLockJSMutex):
1198         (KJS::JSLock::lock):
1199         (KJS::JSLock::unlock):
1200         (KJS::DropAllLocks::DropAllLocks):
1201         (KJS::DropAllLocks::~DropAllLocks):
1202         (KJS::JSLock::lockCount):
1203         * kjs/JSLock.h: Don't duplicate Noncopyable.
1204         (KJS::JSLock::~JSLock):
1205
1206         * wtf/Assertions.h: Blind attempt at helping the Windows build.
1207
1208 2007-03-08  MorganL  <morganl.webkit@yahoo.com>
1209
1210         Reviewed by Darin.
1211
1212         http://bugs.webkit.org/show_bug.cgi?id=13018
1213         Bug 13018: allow embedders to override the definition of CRASH.
1214
1215         * wtf/Assertions.h: make it possible to override CRASH.
1216
1217 2007-03-07  Anrong Hu  <huanr@yahoo.com>
1218
1219         Reviewed by Maciej.
1220
1221         Fix http://bugs.webkit.org/show_bug.cgi?id=12535
1222         Bug 12535: Stack-optimizing compilers can trick GC into freeing in-use objects
1223
1224         * kjs/internal.cpp:
1225         (KJS::StringImp::toObject): Copy val onto the stack so it is not subject to garbage collection.
1226
1227 2007-03-07  Geoffrey Garen  <ggaren@apple.com>
1228
1229         Build fix for non-multiple-thread folks.
1230         
1231         Use a shared global in the non-multiple-thread case.
1232
1233         * wtf/FastMalloc.cpp:
1234         (WTF::isForbidden):
1235         (WTF::fastMallocForbid):
1236         (WTF::fastMallocAllow):
1237
1238 2007-03-07  Geoffrey Garen  <ggaren@apple.com>
1239
1240         Reviewed by Darin Adler.
1241         
1242         Fixed ASSERT failure I just introduced.
1243         
1244         Made the fastMalloc isForbidden flag per thread. (Oops!) We expect that
1245         other threads will malloc while we're marking -- we just want to prevent
1246         our own marking from malloc'ing.
1247
1248         * wtf/FastMalloc.cpp:
1249         (WTF::initializeIsForbiddenKey):
1250         (WTF::isForbidden):
1251         (WTF::fastMallocForbid):
1252         (WTF::fastMallocAllow):
1253         (WTF::fastMalloc):
1254         (WTF::fastCalloc):
1255         (WTF::fastFree):
1256         (WTF::fastRealloc):
1257         (WTF::do_malloc):
1258
1259 2007-03-07  Shrikant Gangoda  <shrikant.gangoda@celunite.com>
1260
1261         Reviewed by Maciej.
1262
1263         http://bugs.webkit.org/show_bug.cgi?id=12997
1264
1265         Wrap pthread-specific assertion in #if USE(MULTIPLE_THREADS).
1266
1267         * kjs/collector.cpp:
1268         (KJS::Collector::markMainThreadOnlyObjects):
1269
1270 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
1271
1272         Reviewed by Maciej Stachowiak.
1273         
1274         Fixed <rdar://problem/4576242> | http://bugs.webkit.org/show_bug.cgi?id=12586
1275         PAC file: malloc deadlock sometimes causes a hang @ www.apple.com/pro/profiles/ (12586)
1276         
1277         This is a modified version of r14752 on the branch.
1278         
1279         These changes just add debugging functionality. They ASSERT that we don't 
1280         malloc during the mark phase of a garbage collection, which can cause a
1281         deadlock.
1282
1283         * kjs/collector.cpp:
1284         (KJS::Collector::collect):
1285         * wtf/FastMalloc.cpp:
1286         (WTF::fastMallocForbid):
1287         (WTF::fastMallocAllow):
1288         (WTF::fastMalloc):
1289         (WTF::fastCalloc):
1290         (WTF::fastFree):
1291         (WTF::fastRealloc):
1292         (WTF::do_malloc):
1293         * wtf/FastMalloc.h:
1294
1295 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
1296
1297         Reviewed by Maciej Stachowiak.
1298         
1299         Fixed all known crashers exposed by run-webkit-tests --threaded. This covers:
1300
1301         <rdar://problem/4565394> | http://bugs.webkit.org/show_bug.cgi?id=12585 
1302             PAC file: after closing a window that contains macworld.com, new window 
1303             crashes (KJS::PropertyMap::mark()) (12585)
1304         <rdar://problem/4571215> | http://bugs.webkit.org/show_bug.cgi?id=9211
1305             PAC file: Crash occurs when clicking on the navigation tabs at http://www.businessweek.com/ (9211)
1306         <rdar://problem/4557926> 
1307             PAC file: Crash occurs when attempting to view image in slideshow mode 
1308             at http://d.smugmug.com/gallery/581716 ( KJS::IfNode::execute (KJS::
1309             ExecState*) + 312) if you use a PAC file
1310
1311         (1) Added some missing JSLocks, along with related ASSERTs.
1312         
1313         (2) Fully implemented support for objects that can only be garbage collected
1314         on the main thread. So far, only WebCore uses this. We can add it to API
1315         later if we learn that it's needed. 
1316         
1317         The implementation uses a "main thread only" flag inside each object. When 
1318         collecting on a secondary thread, the Collector does an extra pass through 
1319         the heap to mark all flagged objects before sweeping. This solution makes
1320         the common case -- flag lots of objects, but never collect on a secondary 
1321         thread -- very fast, even though the uncommon case of garbage collecting
1322         on a secondary thread isn't as fast as it could be. I left some notes 
1323         about how to speed it up, if we ever care.
1324         
1325         For posterity, here are some things I learned about GC while investigating:
1326         
1327         * Each collect must either mark or delete every heap object. "Zombie" 
1328         objects, which are neither marked nor deleted, raise these issues:
1329
1330             * On the next pass, the conservative marking algorithm might mark a 
1331             zombie, causing it to mark freed objects.
1332
1333             * The client might try to use a zombie, which would seem live because 
1334             its finalizer had not yet run.
1335
1336         * A collect on the main thread is free to delete any object. Presumably, 
1337         objects allocated on secondary threads have thread-safe finalizers.
1338
1339         * A collect on a secondary thread must not delete thread-unsafe objects.
1340
1341         * The mark function must be thread-safe.
1342         
1343         Line by line comments:
1344
1345         * API/JSObjectRef.h: Added comment specifying that the finalize callback 
1346         may run on any thread.
1347
1348         * JavaScriptCore.exp: Nothing to see here.
1349
1350         * bindings/npruntime.cpp:
1351         (_NPN_GetStringIdentifier): Added JSLock.
1352
1353         * bindings/objc/objc_instance.h:
1354         * bindings/objc/objc_instance.mm:
1355         (ObjcInstance::~ObjcInstance): Use an autorelease pool. The other callers 
1356         to CFRelease needed one, too, but they were dead code, so I removed them 
1357         instead. (This fixes a leak seen while running run-webkit-tests --threaded,
1358         although I don't think it's specifically a threading issue.) 
1359         
1360         * kjs/collector.cpp:
1361         (KJS::Collector::collectOnMainThreadOnly): New function. Tells the collector
1362         to collect a value only if it's collecting on the main thread.
1363         (KJS::Collector::markMainThreadOnlyObjects): New function. Scans the heap
1364         for "main thread only" objects and marks them.
1365
1366         * kjs/date_object.cpp: 
1367         (KJS::DateObjectImp::DateObjectImp): To make the new ASSERTs happy, allocate 
1368         our globals on the heap, avoiding a seemingly unsafe destructor call at 
1369         program exit time.
1370         * kjs/function_object.cpp:
1371         (FunctionPrototype::FunctionPrototype): ditto
1372
1373         * kjs/interpreter.cpp:
1374         (KJS::Interpreter::mark): Removed boolean parameter, which was an incomplete
1375         and arguably hackish way to implement markMainThreadOnlyObjects() inside WebCore.
1376         * kjs/interpreter.h:
1377
1378         * kjs/identifier.cpp:
1379         (KJS::identifierTable): Added some ASSERTs to check for thread safety 
1380         problems.
1381
1382         * kjs/list.cpp: Added some ASSERTs to check for thread safety problems.
1383         (KJS::allocateListImp):
1384         (KJS::List::release):
1385         (KJS::List::append):
1386         (KJS::List::empty): Make the new ASSERTs happy.
1387
1388         * kjs/object.h:
1389         (KJS::JSObject::JSObject): "m_destructorIsThreadSafe" => "m_collectOnMainThreadOnly".
1390         I removed the constructor parameter because m_collectOnMainThreadOnly,
1391         like m_marked, is a Collector bit, so only the Collector should set or get it.
1392
1393         * kjs/object_object.cpp:
1394         (ObjectPrototype::ObjectPrototype): Make the ASSERTs happy.
1395         * kjs/regexp_object.cpp:
1396         (RegExpPrototype::RegExpPrototype): ditto
1397
1398         * kjs/ustring.cpp: Added some ASSERTs to check for thread safety problems.
1399         (KJS::UCharReference::ref): 
1400         (KJS::UString::Rep::createCopying):
1401         (KJS::UString::Rep::create):
1402         (KJS::UString::Rep::destroy):
1403         (KJS::UString::null): Make the new ASSERTs happy.
1404         * kjs/ustring.h:
1405         (KJS::UString::Rep::ref): Added some ASSERTs to check for thread safety problems.
1406         (KJS::UString::Rep::deref):
1407
1408         * kjs/value.h:
1409         (KJS::JSCell::JSCell):
1410
1411 2007-03-06  Geoffrey Garen  <ggaren@apple.com>
1412
1413         Reviewed by Maciej Stachowiak.
1414         
1415         2% speedup on super accurate JS iBench.
1416
1417         (KJS::Collector::collect): Removed anti-optimization to call
1418         pthread_is_threaded_np() before calling pthread_main_np(). Almost all 
1419         apps have more than one thread, so the extra call is actually worse.
1420         Interestingly, even the single-threaded testkjs shows a speed gain
1421         from removing the pthread_is_threaded_np() short-circuit. Not sure why.
1422
1423 2007-03-04  Don Gibson  <dgibson77@gmail.com>
1424
1425         Reviewed by Nikolas Zimmermann.
1426
1427         - fix http://bugs.webkit.org/show_bug.cgi?id=12950
1428           Assertions.cpp should not #define macros that are already defined
1429
1430         * wtf/Assertions.cpp: Don't #define WINVER and _WIN32_WINNT if they
1431         are already defined.
1432
1433 2007-03-02  Steve Falkenburg  <sfalken@apple.com>
1434
1435         Reviewed by Anders.
1436         
1437         Add unsigned int hash traits (matches existing unsigned long version)
1438
1439         * wtf/HashTraits.h:
1440         (WTF::):
1441
1442 2007-03-02  Adam Roben  <aroben@apple.com>
1443
1444         Reviewed by Kevin M.
1445
1446         Try to fix the Qt build.
1447
1448         * kjs/DateMath.cpp:
1449         (KJS::msToGregorianDateTime): Removed unnecessary "struct" keyword.
1450         * kjs/DateMath.h: Moved forward declarations to the top of the file
1451         before they are used.
1452         * kjs/date_object.cpp:
1453         (KJS::formatLocaleDate): Changed to take a const GregorianDateTime&
1454         since GregorianDateTime is Noncopyable.
1455
1456 2007-03-02  Darin Adler  <darin@apple.com>
1457
1458         Reviewed by Kevin McCullough.
1459
1460         - fix http://bugs.webkit.org/show_bug.cgi?id=12867
1461           REGRESSION: BenchJS test 7 (dates) is 220% slower than in Safari 2.0.4
1462
1463         * kjs/DateMath.h: Marked GregorianDateTime as noncopyable, since it has a non-trivial
1464         destructor and not the correspoding copy constructor or assignment operator.
1465         Changed the GregorianDateTime constructor to use member initialization syntax.
1466         Fixed the destructor to use the array delete operator, since timeZone is an array.
1467
1468         * kjs/DateMath.cpp:
1469         (KJS::daysInYear): Changed to call isLeapYear so the rule is not repeated twice.
1470         (KJS::getUTCOffset): Added caching on PLATFORM(DARWIN), since we can rely on the
1471         notify_check function and "com.apple.system.timezone" to let us know when the
1472         offset has changed.
1473
1474 2007-02-27  Geoffrey Garen  <ggaren@apple.com>
1475
1476         Reviewed by Darin Adler.
1477         
1478         Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
1479         JS objects not collected after closing window @ ebay.com/maps.google.com
1480         
1481         Changed Interpreter cache of global constructors and prototypes from
1482         ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient,
1483         and they increase the risk of reference cycles. Also, Darin said something
1484         about ProtectedPtrs giving him warts.
1485         
1486         Also changed data members to precise types from generic JSObject*'s.
1487         
1488         Layout tests and JS tests pass.
1489
1490         * kjs/SavedBuiltins.h:
1491         * kjs/interpreter.cpp:
1492         (KJS::Interpreter::init):
1493         (KJS::Interpreter::~Interpreter):
1494         (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to
1495         constructor, for clarity.
1496         (KJS::Interpreter::mark):
1497         * kjs/interpreter.h:
1498
1499 2007-02-27  Geoffrey Garen  <ggaren@apple.com>
1500
1501         Reviewed by Maciej Stachowiak.
1502         
1503         Fixed http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
1504         JS objects not collected after closing window @ ebay.com/maps.google.com
1505
1506         Don't GC in the Interpreter destructor. For that to work, the Interpreter
1507         would have to NULL out all of its ProtectedPtrs before calling collect(). But 
1508         we've decided that we don't want things to work that way, anyway. We want the
1509         client to be in charge of manual GC so that it can optimize cases when
1510         it will be destroying many interpreters at once
1511         (e.g., http://bugs.webkit.org/show_bug.cgi?id=12900).
1512         
1513         Also removed Interpreter::collect() because it was redundant with 
1514         Collector::collect().
1515
1516         * JavaScriptCore.exp:
1517         * kjs/interpreter.cpp:
1518         (KJS::Interpreter::~Interpreter):
1519         * kjs/testkjs.cpp:
1520         (TestFunctionImp::callAsFunction):
1521
1522 2007-02-26  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1523
1524         Reviewed by Adam Roben.
1525
1526         Rename *_SUPPORT defines to ENABLE_*.
1527
1528         * jscore.bkl:
1529
1530 2007-02-26  Maciej Stachowiak  <mjs@apple.com>
1531
1532         Reviewed by Lars.
1533         
1534         - <rdar://problem/5021698> Disable experimental SVG features (12883)
1535
1536         * wtf/Platform.h: Add ENABLE() macro similar to HAVE() and USE(), to
1537         allow nicer handling of optional WebKit features.
1538
1539 2007-02-22  George Staikos  <staikos@kde.org>
1540
1541         Reviewed by Lars.
1542
1543         Add return values
1544
1545         * wtf/unicode/qt4/UnicodeQt4.h:
1546         (WTF::Unicode::toLower):
1547         (WTF::Unicode::toUpper):
1548
1549 2007-02-22  Oscar Cwajbaum  <public@oscarc.net>
1550
1551         Reviewed by Maciej.
1552
1553         Fix ARM-specific alignment problem in FastMalloc
1554         http://bugs.webkit.org/show_bug.cgi?id=12841
1555
1556         * wtf/FastMalloc.cpp:
1557         Modify how pageheap_memory is declared to ensure proper alignment
1558         on architectures such as ARM
1559
1560 2007-02-20  Zack Rusin  <zrusin@trolltech.com>
1561
1562         Reviewed by Lars
1563
1564         Make sure that non-void methods always return something.
1565
1566         * wtf/unicode/qt4/UnicodeQt4.h:
1567         (WTF::Unicode::toLower):
1568         (WTF::Unicode::toUpper):
1569         (WTF::Unicode::foldCase):
1570
1571 2007-02-18  Kevin Ollivier  <kevino@theolliviers.com>
1572
1573         Reviewed by Adam Roben.
1574
1575         Fix cases where MSVC-specific code was identified as Win32 platform
1576         code. (as it should be compiled for e.g. wx port when using MSVC too)
1577         
1578         * wtf/Assertions.h: 
1579         * wtf/MathExtras.h:
1580         * wtf/StringExtras.h:
1581         changed PLATFORM(WIN) sections to COMPILER(MSVC) as necessary
1582
1583 2007-02-17  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
1584
1585         Reviewed by Adam Roben.
1586
1587         Fix crashes on ARM due to different struct packing. Based on a patch
1588         by Mike Emmel.
1589         * kjs/ustring.cpp: compile-time assert to make sure sizeof(UChar) == 2
1590         * kjs/ustring.h: pack UChar struct to ensure that sizeof(UChar) == 2
1591         * wtf/Assertions.h: add COMPILE_ASSERT macro for compile-time assertions
1592
1593 2007-02-16  George Staikos  <staikos@kde.org>
1594
1595         Reviewed by Maciej.
1596
1597         Fix uninitialized variable
1598
1599         * bindings/testbindings.cpp:
1600         (myAllocate):
1601
1602 2007-02-16  Anders Carlsson  <acarlsson@apple.com>
1603
1604         Reviewed by Mitz.
1605
1606         http://bugs.webkit.org/show_bug.cgi?id=12788
1607         REGRESSION: Going back one page in history has a noticeable delay
1608         
1609         Um...if all elements in two vectors are equal, then I guess we could say that
1610         the two vectors are equal too.
1611         
1612         * wtf/Vector.h:
1613         (WTF::):
1614
1615 2007-02-14  Anders Carlsson  <acarlsson@apple.com>
1616
1617         Reviewed by Darin.
1618
1619         Add new canCompareWithMemcmp vector trait and use it to determine whether
1620         operator== can use memcmp.
1621         
1622         * wtf/Vector.h:
1623         (WTF::):
1624         (WTF::VectorTypeOperations::compare):
1625         (WTF::operator==):
1626         * wtf/VectorTraits.h:
1627         (WTF::):
1628
1629 2007-02-13  Brady Eidson  <beidson@apple.com>
1630
1631         Reviewed by Darin
1632         
1633         Tweaked vector a bit
1634
1635         * wtf/Vector.h:
1636         (WTF::operator==):
1637
1638 2007-02-13  Dex Deacon  <occupant4@gmail.com>
1639
1640         Reviewed by Darin.
1641
1642         - fix for http://bugs.webkit.org/show_bug.cgi?id=12750
1643           Vector operator== was not defined correctly. It returned void,
1644           did not accept const Vectors, and used an int instead of size_t. 
1645
1646         * wtf/Vector.h: fixed comparison operators
1647         (WTF::operator==):
1648         (WTF::operator!=):
1649
1650 2007-02-10  David Carson  <dacarson@gmail.com>
1651
1652         Reviewed by Maciej.
1653
1654         - fix for http://bugs.webkit.org/show_bug.cgi?id=12636
1655         Corrected the generation of method signatures when the parameter
1656         is an Array. 
1657         Added support for converting a Javascript array to a Java array.
1658
1659         * bindings/jni/jni_utility.h: added new type for array, array_type
1660         * bindings/jni/jni_runtime.cpp: add support for new array type
1661         (JavaField::valueFromInstance):
1662         (JavaField::setValueToInstance):
1663         (JavaMethod::JavaMethod):
1664         (JavaMethod::signature):
1665         * bindings/jni/jni_utility.cpp: add support for new array type
1666         (KJS::Bindings::callJNIMethod):
1667         (KJS::Bindings::callJNIStaticMethod):
1668         (KJS::Bindings::callJNIMethodIDA):
1669         (KJS::Bindings::JNITypeFromClassName):
1670         (KJS::Bindings::signatureFromPrimitiveType):
1671         (KJS::Bindings::JNITypeFromPrimitiveType):
1672         (KJS::Bindings::getJNIField):
1673         (KJS::Bindings::convertArrayInstanceToJavaArray): new method
1674         converts the Javascript array to the requested Java array.
1675         (KJS::Bindings::convertValueToJValue):
1676
1677 2007-02-08  Anders Carlsson  <acarlsson@apple.com>
1678
1679         Reviewed by Geoff.
1680
1681         <rdar://problem/4930614>
1682         Safari complains about "Slow Script" if GMail is left open and machine is busy
1683         
1684         <rdar://problem/4649516>
1685         Turn off slow script dialog or crank up time that makes it come up
1686         
1687         <rdar://problem/4963589>
1688         Slow script warning is displayed after closing of PROMPT or PRINT dialog
1689         
1690         Re-do the way script timeouts are handled. No longer use a unix timer that sends signals. Instead, add a 
1691         tick count and increment it in loop bodies. If the tick count reaches a threshold, do a timeout check. If the total time executing
1692         is higher than the timeout value, (possibly) interrupt the script. The timeout checker also adjusts the threshold dynamically
1693         to prevent doing the timeout check too often.
1694          
1695         * JavaScriptCore.exp:
1696         Remove pause and resume calls.
1697         
1698         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1699         Add winmm.lib.
1700
1701         * kjs/interpreter.cpp:
1702         (KJS::Interpreter::init):
1703         (KJS::Interpreter::~Interpreter):
1704         (KJS::Interpreter::startTimeoutCheck):
1705         (KJS::Interpreter::stopTimeoutCheck):
1706         (KJS::Interpreter::resetTimeoutCheck):
1707         (KJS::getCurrentTime):
1708         (KJS::Interpreter::checkTimeout):
1709         * kjs/interpreter.h:
1710         (KJS::Interpreter::timedOut):
1711         * kjs/nodes.cpp:
1712         (DoWhileNode::execute):
1713         (WhileNode::execute):
1714         (ForNode::execute):
1715
1716 2007-02-07  Darin Adler  <darin@apple.com>
1717
1718         * JavaScriptCore.vcproj/JavaScriptCore.sln: Reenable testkjs.
1719
1720 2007-02-07  Darin Adler  <darin@apple.com>
1721
1722         Reviewed by Geoff.
1723
1724         - another build fix; this time for sure
1725
1726         * pcre/pcre_exec.c: (match):
1727         The compiler caught an incorrect use of the othercase variable across
1728         a call to RMATCH in character repeat processing. Local variables can
1729         change in the crazy NO_RECURSE mode that we use, so we instead need
1730         the value in othercase to be in one of the special stack frame variables.
1731         Added a new stack frame variable for this purpose named repeat_othercase.
1732         Also noted a similar error in the non-UTF-16 side of the #ifdef, but
1733         didn't try to fix that one. Also removed a SUPPORT_UCP #ifdef from the
1734         PCRE_UTF16 side; that code doesn't work without the Unicde properties
1735         table, and we don't try to use it that way.
1736
1737 2007-02-06  Steve Falkenburg  <sfalken@apple.com>
1738
1739         Disable testkjs in sln until we figure out mysterious compiler warning.
1740
1741         * JavaScriptCore.vcproj/JavaScriptCore.sln:
1742
1743 2007-02-06  Steve Falkenburg  <sfalken@apple.com>
1744
1745         Build fix by ggaren
1746
1747         * pcre/pcre_exec.c:
1748         (match):
1749
1750 2007-02-06  Darin Adler  <darin@apple.com>
1751
1752         Reviewed by Geoff.
1753
1754         - fix <rdar://problem/4979089> PCRE should avoid setjmp/longjmp even when compiler
1755           is not GCC
1756
1757         Added a new code path that's slower and way uglier but doesn't rely on GCC's
1758         computed gotos.
1759
1760         * pcre/pcre_exec.c: Added a numeric parameter to the RMATCH function. It must be
1761         different at every RMATCH call site. Changed the non-GCC NO_RECURSE version of
1762         the macro to use a label incorporating the number. Changed the RRETURN macro to
1763         use a goto instead of longjmp.
1764         (match): Added a different number at each callsite, using a perl script for the
1765         first-time task. Going forward it should be easy to maintain by hand. Added a
1766         switch statement at the bottom of the function. We'll get compile time errors
1767         if we have anything in the switch statement that's never used in an RMATCH,
1768         but errors in the other direction are silent except at runtime.
1769
1770 2007-02-06  Darin Adler  <darin@apple.com>
1771
1772         Reviewed by John.
1773
1774         - fix <rdar://problem/4687840> 9A241: JavaScript RegExp 25-30x slower than on 10.4.7
1775
1776         I used Shark to figure out what to do. The test case is now 15% faster than with
1777         stock Safari. Some other regular expression cases might still be a few % slower
1778         than before, but the >10x slowdown is now completely gone.
1779
1780         1) Fix slowness caused by setjmp/longjmp by using computed goto instead.
1781
1782         Use GCC extensions - locally declared labels, labels as values, and computed goto -
1783         instead of using setjmp/longjmp to implemement non-recursive version of the regular
1784         expression system. We could probably make this even faster if we reduced the use
1785         of malloc a bit too.
1786
1787         2) Fix slowness caused by allocating heapframe objects by allocating the first
1788            16 of them from the stack.
1789
1790         3) Speed up use of malloc and free in PCRE by making it use fastMalloc and fastFree.
1791
1792         4) Speed up the test case by adding a special case to a UString function.
1793
1794         5) Made a small improvement to the innermost hottest loop of match by hoisting
1795            the conversion from int to pcre_uchar out of the loop.
1796
1797         * JavaScriptCore.xcodeproj/project.pbxproj: Compile FastMallocPCRE.cpp, and don't
1798         compile pcre_globals.c.
1799
1800         * wtf/FastMallocPCRE.cpp: Added. A copy of pcre_globals.c that uses FastMalloc.h.
1801         This is better than code that sets the PCRE allocation globals because by doing it
1802         this way there's guaranteed to be no problem with order of initialization.
1803
1804         * kjs/ustring.cpp: (KJS::UString::spliceSubstringsWithSeparators): Add a fast
1805         special case when this is called for only one subrange and no seaprators. This
1806         was happening a lot in the test case and it seems quite reasonable to optimize this.
1807
1808         * pcre/pcre_exec.c: Create a copy of the RMATCH and RRETURN macros that use goto
1809         instead of setjmp/longjmp. Change code that calls pcre_stack_malloc to first use
1810         storage on the stack inside the match function.
1811         (match): Move initialization of utf8 up a couple lines to avoid "possibly used
1812         uninitialized" warning. Use a local variable so we compare with pcre_uchar instead
1813         of with int inside the inner "find a character" loop.
1814
1815 2007-02-03  George Staikos  <staikos@kde.org>
1816
1817         Reviewed by Alexey.
1818
1819         -1 is not a valid point.  We can't handle anything > 0xffff anyway.
1820         Fixes crash on cases like eval("x");
1821
1822         * wtf/unicode/qt4/UnicodeQt4.h:
1823         (WTF::Unicode::category):
1824
1825 2007-02-02  Darin Adler  <darin@apple.com>
1826
1827         Reviewed by Anders.
1828
1829         - fix copying and assigning a ListHashSet
1830
1831         No test because the code path with bugs I am fixing is not used yet.
1832
1833         * wtf/ListHashSet.h: Tweaked ListHashSetNodeAllocator a little bit for clarity.
1834         Changed m_allocator to be an OwnPtr instead of doing an explicit delete.
1835         Fixed bug in copy constructor where we'd have an uninitialized m_allocator.
1836         Fixed bug in assignment operator where it would swap only the hash table, and
1837         not the head, tail, and allocator pointers.
1838
1839 2007-02-02  Geoffrey Garen  <ggaren@apple.com>
1840
1841         Reviewed by Maciej Stachowiak.
1842         
1843         Use WTFLog instead of fprintf for logging KJS::Node leaks.
1844
1845         * kjs/nodes.cpp:
1846         (NodeCounter::~NodeCounter): Changed count to unsigned, updated
1847         to match style guidelines.
1848
1849 2007-02-02  Maciej Stachowiak  <mjs@apple.com>
1850
1851         - not reviewed, build fix
1852
1853         * wtf/ListHashSet.h:
1854         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): ummm, use union correctly
1855
1856 2007-02-01  Maciej Stachowiak  <mjs@apple.com>
1857
1858         Reviewed by Darin.
1859         
1860         - use a custom allocator for ListHashSet, to fix ~1% perf regression using it for form control
1861
1862         * wtf/ListHashSet.h:
1863         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator):
1864         (WTF::ListHashSetNodeAllocator::allocate):
1865         (WTF::ListHashSetNodeAllocator::deallocate):
1866         (WTF::ListHashSetNode::operator new):
1867         (WTF::ListHashSetNode::operator delete):
1868         (WTF::ListHashSetNode::destroy):
1869         (WTF::ListHashSetTranslator::translate):
1870         (WTF::::ListHashSet):
1871         (WTF::::~ListHashSet):
1872         (WTF::::add):
1873         (WTF::::unlinkAndDelete):
1874         (WTF::::deleteAllNodes):
1875
1876 2007-01-31  Maciej Stachowiak  <mjs@apple.com>
1877
1878         Reviewed by Adam.
1879         
1880         - fix sporadic crash
1881
1882         * wtf/ListHashSet.h:
1883         (WTF::::remove): remove before deleting
1884
1885 2007-01-31  Maciej Stachowiak  <mjs@apple.com>
1886
1887         Reviewed by Mark with help from Lars.
1888         
1889         - added new ListHashSet class, which combines a hashtable and a linked list to provide a set
1890         that keeps elements in inserted order
1891         
1892         This is to assist in fixing the following:
1893         <rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541]
1894         http://bugs.webkit.org/show_bug.cgi?id=10541
1895
1896         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1897         * JavaScriptCore.xcodeproj/project.pbxproj:
1898         * wtf/HashTable.h:
1899         (WTF::HashTable::find):
1900         (WTF::HashTable::contains):
1901         (WTF::::find):
1902         (WTF::::contains):
1903         * wtf/ListHashSet.h: Added.
1904         (WTF::ListHashSetNode::ListHashSetNode):
1905         (WTF::ListHashSetNodeHashFunctions::hash):
1906         (WTF::ListHashSetNodeHashFunctions::equal):
1907         (WTF::ListHashSetIterator::ListHashSetIterator):
1908         (WTF::ListHashSetIterator::get):
1909         (WTF::ListHashSetIterator::operator*):
1910         (WTF::ListHashSetIterator::operator->):
1911         (WTF::ListHashSetIterator::operator++):
1912         (WTF::ListHashSetIterator::operator--):
1913         (WTF::ListHashSetIterator::operator==):
1914         (WTF::ListHashSetIterator::operator!=):
1915         (WTF::ListHashSetIterator::operator const_iterator):
1916         (WTF::ListHashSetIterator::node):
1917         (WTF::ListHashSetConstIterator::ListHashSetConstIterator):
1918         (WTF::ListHashSetConstIterator::get):
1919         (WTF::ListHashSetConstIterator::operator*):
1920         (WTF::ListHashSetConstIterator::operator->):
1921         (WTF::ListHashSetConstIterator::operator++):
1922         (WTF::ListHashSetConstIterator::operator--):
1923         (WTF::ListHashSetConstIterator::operator==):
1924         (WTF::ListHashSetConstIterator::operator!=):
1925         (WTF::ListHashSetConstIterator::node):
1926         (WTF::ListHashSetTranslator::hash):
1927         (WTF::ListHashSetTranslator::equal):
1928         (WTF::ListHashSetTranslator::translate):
1929         (WTF::::ListHashSet):
1930         (WTF::::operator):
1931         (WTF::::~ListHashSet):
1932         (WTF::::size):
1933         (WTF::::capacity):
1934         (WTF::::isEmpty):
1935         (WTF::::begin):
1936         (WTF::::end):
1937         (WTF::::find):
1938         (WTF::::contains):
1939         (WTF::::add):
1940         (WTF::::remove):
1941         (WTF::::clear):
1942         (WTF::::unlinkAndDelete):
1943         (WTF::::appendNode):
1944         (WTF::::deleteAllNodes):
1945         (WTF::::makeIterator):
1946         (WTF::::makeConstIterator):
1947         (WTF::deleteAllValues):
1948
1949 2007-01-30  Darin Adler  <darin@apple.com>
1950
1951         * kjs/DateMath.cpp: Fix license header to reflect LGPL as the first license
1952         mentioned. We still mention the option of using under MPL or GPL since some
1953         of this code came from the Mozilla project with those license terms.
1954
1955 2007-01-30  Simon Hausmann  <hausmann@kde.org>
1956
1957         Reviewed by Zack.
1958
1959         Turned JavaScriptCore from a separate library into an includable
1960         project, to combine it all into libWebKitQt.
1961
1962         * JavaScriptCore.pri: Added.
1963         * JavaScriptCore.pro: Removed.
1964         * kjs/testkjs.pro:
1965
1966 2007-01-29  Geoffrey Garen  <ggaren@apple.com>
1967
1968         Reviewed by Maciej Stachowiak.
1969
1970         Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines
1971         
1972         The TCMalloc module now initializes, if needed, inside GetCache() and 
1973         fastMallocSetIsMultiThreaded(). We leverage the same synchronization 
1974         technique used for enabling / disabling the single-threaded optimization 
1975         to synchronize initialization of the library without requiring a lock 
1976         for every malloc.
1977         
1978         1,251 runs of tcmalloc_unittest, 2 runs of a custom, massively multi-threaded 
1979         tcmalloc_unittest, and my custom version of the PLT show no regressions.
1980         Super-accurate JS iBench reports a .24% regression, which is right at the
1981         limit of its error range, so I'm declaring victory.
1982
1983         * wtf/FastMalloc.cpp:
1984         (WTF::fastMallocSetIsMultiThreaded): Initialize, if needed. (InitModule()
1985         checks the "if needed" part.)
1986         (WTF::TCMalloc_ThreadCache::GetCache): Restored original TCMalloc code
1987         inside #ifdef, for posterity. Added new initialization logic.
1988         (WTF::TCMalloc_ThreadCache::InitModule): Call InitTSD(), since we don't
1989         have a static initializer to call it for us, now. This means that fastMalloc
1990         is not usable as a general libc allocator, but it never was, and if it were
1991         the general libc allocator, we wouldn't be here in the first place, so whatever.
1992         (WTF::TCMalloc_ThreadCache::InitTSD): Don't try to take the pageheap_lock, 
1993         since InitModule already has it.
1994
1995 2007-01-29  Kevin McCullough  <KMcCullough@apple.com>
1996
1997         Reviewed by Geoff and Oliver.
1998
1999         - rdar://problem/4955561
2000         - missusing JavaScript shouldn't crash webkit.  Now it doesn't, in this case.
2001
2002         * bindings/objc/objc_runtime.mm:
2003         (ObjcFallbackObjectImp::callAsFunction):
2004         * bindings/runtime_method.cpp:
2005         (RuntimeMethod::callAsFunction):
2006         * bindings/runtime_object.cpp:
2007         (RuntimeObjectImp::callAsFunction):
2008
2009 2007-01-28  Geoffrey Garen  <ggaren@apple.com>
2010
2011         Reviewed by Maciej Stachowiak.
2012         
2013         First step in fixing <rdar://problem/4485644> REGRESSION: JavaScriptCore 
2014         has init routines
2015         
2016         Don't rely on a static initializer to store the main thread's ID (which
2017         we would use to detect allocations on secondary threads). Instead, require 
2018         the caller to notify fastMalloc if it might allocate on a secondary thread.
2019         
2020         Also fixed what seemed like a race condition in do_malloc.
2021         
2022         tcmalloc_unittest and my custom versions of JS iBench and PLT show no
2023         regressions.
2024
2025         * wtf/FastMalloc.cpp:
2026         (WTF::fastMallocSetIsMultiThreaded): 
2027         (1) Renamed from "fastMallocRegisterThread", which was a misleading name because 
2028         not all threads need to register with fastMalloc -- only secondary threads 
2029         need to, and only for the purpose of disabling its single-threaded optimization. 
2030
2031         (2) Use the pageheap_lock instead of a custom one, since we need to synchronize
2032         with the read of isMultiThreaded inside CreateCacheIfNecessary. This is a new
2033         requirement, now that we can't guarantee that the first call to CreateCacheIfNecessary
2034         will occur on the main thread at init time, before any other threads have been created.
2035
2036         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2037         (WTF::do_malloc): Reverted WTF change only to call GetCache() if size <= kMaxSize.
2038         The WTF code would read phinited without holding the pageheap_lock, which
2039         seemed like a race condition. Regardless, calling GetCache reduces the number 
2040         of code paths to module initialization, which will help in writing the 
2041         final fix for this bug.
2042
2043 2007-01-28  David Kilzer  <ddkilzer@webkit.org>
2044
2045         Reviewed by Darin.
2046
2047         - fix http://bugs.webkit.org/show_bug.cgi?id=9815
2048           JavaScript TypeError loading Dean Edwards' JS compressor/obfuscator
2049
2050         Creating a function using 'new Function()' was not setting its prototype with the
2051         same flags as 'function() { }'.
2052
2053         Test: fast/js/function-prototype.html
2054
2055         * kjs/function_object.cpp:
2056         (FunctionObjectImp::construct): Change flags from DontEnum|DontDelete|ReadOnly to
2057         Internal|DontDelete to match FuncDeclNode::processFuncDecl() and
2058         FuncExprNode::evaluate() in kjs/nodes.cpp.
2059
2060 2007-01-27  Geoffrey Garen  <ggaren@apple.com>
2061
2062         Reviewed by Beth Dakin.
2063         
2064         Added some missing JSLocks, which might fix <rdar://problem/4889707>.
2065
2066         We need to lock whenever we might allocate memory because our FastMalloc
2067         implementation requires clients to register their threads, which we do
2068         through JSLock. 
2069         
2070         We also need to lock whenever modifying ref-counts because they're not 
2071         thread-safe.
2072
2073         * API/JSObjectRef.cpp:
2074         (JSClassCreate): Allocates memory
2075         (JSClassRetain): Modifies a ref-count
2076         (JSClassRelease): Modifies a ref-count
2077         (JSPropertyNameArrayRetain): Modifies a ref-count
2078         (JSPropertyNameArrayRelease): Modifies a ref-count
2079         * API/JSStringRef.cpp:
2080         (JSStringRetain): Modifies a ref-count
2081         * API/JSValueRef.cpp:
2082         (JSValueIsInstanceOfConstructor): Might allocate memory if an exception
2083         is thrown.
2084
2085 2007-01-27  Lars Knoll <lars@trolltech.com>
2086
2087         Fix the Qt build.
2088
2089         * bindings/qt/qt_instance.h:
2090
2091 2007-01-25  Geoffrey Garen  <ggaren@apple.com>
2092
2093         Reviewed by Maciej Stachowiak.
2094         
2095         Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack 
2096         of ownership policy causes crashes (e.g., in Dashcode)
2097         
2098         The old model for RootObject ownership was either to (1) leak them or (2) assign
2099         them to a single owner -- the WebCore::Frame -- which would destroy them 
2100         when it believed that all of its plug-ins had unloaded.
2101         
2102         This model was broken because of (1) and also because plug-ins are not the only 
2103         RootObject clients. All Bindings clients are RootObjects clients, including 
2104         applications, which outlive any particular WebCore::Frame.
2105         
2106         The new model for RootObject ownership is to reference-count them, with a
2107         throw-back to the old model: The WebCore::Frame tracks the RootObjects
2108         it creates, and invalidates them when it believes that all of its plug-ins 
2109         have unloaded.
2110         
2111         We maintain this throw-back to avoid plug-in leaks, particularly from Java.
2112         Java is completely broken when it comes to releasing JavaScript objects. 
2113         Comments in our code allege that Java does not always call finalize when 
2114         collecting objects. Moreoever, my own testing reveals that, when Java does 
2115         notify JavaScript of a finalize, the data it provides is totally bogus.
2116         
2117         This setup is far from ideal, but I don't think we can do better without
2118         completely rewriting the bindings code, and possibly part of the Java
2119         plug-in / VM.
2120         
2121         Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect*
2122         and a few LiveConnect demos on the web also run without a hitch.
2123         
2124         const RootObject* => RootObject*, since we need to ref/deref
2125         
2126         * bindings/NP_jsobject.cpp:
2127         (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead
2128         of just relying on the RootObject to do it for us when it's invalidated.
2129         (_isSafeScript): Check RootObject validity.
2130         (_NPN_CreateScriptObject): ditto
2131         (_NPN_Invoke): ditto
2132         (_NPN_Evaluate): ditto
2133         (_NPN_GetProperty): ditto
2134         (_NPN_SetProperty): ditto
2135         (_NPN_RemoveProperty): ditto
2136         (_NPN_HasProperty): ditto
2137         (_NPN_HasMethod): ditto
2138         (_NPN_SetException): ditto
2139
2140         * bindings/runtime_root.cpp: 
2141         Revived bit-rotted LIAR LIAR LIAR comment.
2142         
2143         LOOK: Added support for invalidating RootObjects without deleting them, 
2144         which is the main goal of this patch. 
2145
2146         Moved protect counting into the RootObject class, to emphasize that 
2147         the RootObject protects the JSObject, and unprotects it upon being invalidated.
2148             addNativeReference => RootObject::gcProtect
2149             removeNativeReference => RootObject::gcUnprotect
2150             ProtectCountSet::contains => RootObject::gcIsProtected
2151             
2152         I know we'll all be sad to see the word "native" go.
2153         
2154         * bindings/runtime_root.h: Added ref-counting support to RootObject, with
2155         all the standard accoutrements.
2156
2157         * bindings/c/c_utility.cpp:
2158         (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject,
2159         return void instead of just leaking.
2160
2161         * bindings/jni/jni_instance.cpp:
2162         (JavaInstance::JavaInstance): Don't take a RootObject in our constructor;
2163         be like other Instances and require the caller to call setRootObject. This
2164         reduces the number of ownership code paths.
2165         (JavaInstance::invokeMethod): Check RootObject for validity.
2166         * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having
2167         an arg constructor accomplishes the same thing.
2168
2169         * bindings/jni/jni_jsobject.cpp:
2170         (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize()
2171         checks for RootObject validity.
2172         (JavaJSObject::JavaJSObject): check RootObject for validity
2173         (JavaJSObject::call): ditto
2174         (JavaJSObject::eval): ditto
2175         (JavaJSObject::getMember): ditto
2176         (JavaJSObject::setMember): ditto
2177         (JavaJSObject::removeMember): ditto
2178         (JavaJSObject::getSlot): ditto
2179         (JavaJSObject::setSlot): ditto
2180         (JavaJSObject::toString): ditto
2181         (JavaJSObject::finalize): ditto
2182         (JavaJSObject::createNative): No need to tell the RootObject to protect 
2183         the global object, since the RootObject already owns the interpreter.
2184
2185         * bindings/jni/jni_runtime.cpp:
2186         (JavaArray::JavaArray): Removed copy construcutor becaue it was unused.
2187         Dead code is dangerous code.
2188
2189         * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use
2190         of WebScriptObject was bogus, because WebUndefined is not a subclass of
2191         WebScriptObject.
2192         (convertValueToObjcObject): If we can't find a valid RootObject,
2193         return nil instead of just leaking.
2194
2195         * bindings/objc/objc_utility.mm:
2196         (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject,
2197         return nil instead of just leaking.
2198
2199 2007-01-27  Andrew Wellington  <proton@wiretapped.net>
2200
2201         Reviewed by Maciej.
2202         
2203         Fix for Repeated string concatenation results in OOM crash
2204         http://bugs.webkit.org/show_bug.cgi?id=11131
2205
2206         * kjs/operations.cpp:
2207         (KJS::add): Throw exception if string addition result is null
2208         * kjs/ustring.cpp:
2209         (KJS::UString::UString): Don't call memcpy when malloc failed
2210
2211 2007-01-25  Jan Kraemer  <camel@gmx.de>
2212
2213         Reviewed by Maciej
2214
2215         Fix for http://bugs.webkit.org/show_bug.cgi?id=12382
2216
2217         Fix crash on architectures with 32 bit ints and
2218         64 bit longs (For example Linux on AMD64)
2219
2220         * kjs/dtoa.cpp: #define Long int as suggested in comment
2221
2222 2007-01-24  Geoffrey Garen  <ggaren@apple.com>
2223
2224         Fixed up #include order for style. No review necessary.
2225
2226         * API/JSStringRef.cpp:
2227
2228 2007-01-24  Geoffrey Garen  <ggaren@apple.com>
2229
2230         Reviewed by Maciej Stachowiak.
2231
2232         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2233         Copy JSStringRefCF, in case anybody wants to use it. (I just added
2234         it recently.)
2235
2236 2007-01-24  Maciej Stachowiak  <mjs@apple.com>
2237
2238         Not reviewed, trivial property change.
2239         
2240         * JavaScriptCore.vcproj/JavaScriptCore.sln: remove svn:mime-type
2241         property which made this binary.
2242
2243 2007-01-25  Mark Rowe  <mrowe@apple.com>
2244
2245         Reviewed by Darin.
2246
2247         * Info.plist: Update copyright string.
2248
2249 2007-01-24  Darin Adler  <darin@apple.com>
2250
2251         Reviewed by Mark Rowe.
2252
2253         * JavaScriptCore.xcodeproj/project.pbxproj: Changed to /usr/sbin/sysctl
2254         so we don't rely on people's paths.
2255
2256 2007-01-23  Alice Liu  <alice.liu@apple.com>
2257
2258         release build fix
2259
2260         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2261         Copy APICasts.h
2262
2263 2007-01-23  Geoffrey Garen  <ggaren@apple.com>
2264
2265         build fix
2266
2267         * API/JSStringRef.h:
2268         * JavaScriptCore.xcodeproj/project.pbxproj:
2269
2270 2007-01-24  Mark Rowe  <mrowe@apple.com>
2271
2272         Build fix for DumpRenderTree.
2273
2274         * JavaScriptCore.xcodeproj/project.pbxproj: Make JSStringRefCF.h public so it's copied into built framework.
2275
2276 2007-01-23  Anders Carlsson  <acarlsson@apple.com>
2277
2278         Reviewed by Darin.
2279
2280         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2281         Copy APICasts.h
2282
2283 2007-01-23  Geoffrey Garen  <ggaren@apple.com>
2284
2285         Reviewed by Maciej Stachowiak.
2286         
2287         Fixed <rdar://problem/4885131> Move CFString function declarations from 
2288         JSStringRef.h to JSStringRefCF.h
2289         
2290         Also removed remaining API FIXMEs and changed them into Radars.
2291
2292         * API/JSClassRef.cpp:
2293         (OpaqueJSClass::OpaqueJSClass): Added Radar numbers for UTF8 conversion.
2294
2295         * API/JSContextRef.cpp:
2296         (JSGlobalContextCreate): Replaced FIXME for NULL JSContextRef with Radar number.
2297
2298         * API/JSObjectRef.h: Removed FIXME, which is unprofessional in a public header.
2299
2300         * API/JSStringRef.cpp: Moved CF related implementations to JSStringRefCF.cpp.
2301         (JSStringCreateWithUTF8CString): Replaced FIXME with Radar number.
2302         * API/JSStringRef.h: Moved CF related declarations to JSStringRefCF.h. Added
2303         #include of JSStringRefCF.h as a stopgap until clients start #including
2304         it as needed by themselves.
2305
2306         * API/JSStringRefCF.cpp: Added.
2307         (JSStringCreateWithCFString):
2308         (JSStringCopyCFString): Replaced JSChar cast with UniChar cast, which is 
2309         more appropriate for a CF call.
2310         * API/JSStringRefCF.h: Added.
2311         * JavaScriptCore.xcodeproj/project.pbxproj:
2312
2313 2007-01-18  Sanjay Madhav  <sanjay12@gmail.com>
2314
2315         Reviewed by Darin.
2316
2317         Add JavaScriptCore define to help with tracing of when objects are marked.
2318
2319         * kjs/object.cpp:
2320         (KJS::JSObject::mark):
2321
2322 2007-01-18  Simon Hausmann  <hausmann@kde.org>
2323
2324         Reviewed by Zack.
2325
2326         * JavaScriptCore.pro: Remove generated files on make clean.
2327         * pcre/pcre.pri:
2328
2329 2007-01-16  Alexey Proskuryakov  <ap@webkit.org>
2330
2331         Reviewed by Maciej.
2332
2333         http://bugs.webkit.org/show_bug.cgi?id=12268
2334         Give object prototypes their own names
2335
2336         * kjs/lookup.h: Append "Prototype" to ClassName in KJS_IMPLEMENT_PROTOTYPE.
2337
2338 2007-01-16  Geoffrey Garen  <ggaren@apple.com>
2339
2340         Reviewed by Darin Adler.
2341         
2342         Added re-entrency checking to GC allocation and collection. It is an error
2343         to allocate or collect from within a collection. We've had at least one 
2344         case of each bug in the past.
2345         
2346         Added a comment to the API header, explaining that API clients must not
2347         make this mistake, either.
2348         
2349         Layout tests and JS tests pass.
2350
2351         * API/JSObjectRef.h:
2352         * kjs/collector.cpp:
2353         (KJS::GCLock::GCLock):
2354         (KJS::GCLock::~GCLock):
2355         (KJS::Collector::allocate):
2356         (KJS::Collector::collect):
2357
2358 2007-01-14  Mark Rowe  <mrowe@apple.com>
2359
2360         Reviewed by Mitz.
2361
2362         Minor fixes to JavaScript pretty-printing.
2363
2364         * JavaScriptCore.exp:
2365         * kjs/Parser.cpp:
2366         (KJS::Parser::prettyPrint): Return line number and error message if parsing fails.
2367         * kjs/Parser.h:
2368         * kjs/nodes2string.cpp:
2369         (ElementNode::streamTo): Include comma delimiters in array literals.
2370         (PropertyNameNode::streamTo): Quote property names in object literals to handle the case when the property name is not a valid identifier.
2371         * kjs/testkjs.cpp:
2372         (doIt): Print any errors encountered while pretty-printing.
2373
2374 2007-01-12  Anders Carlsson  <acarlsson@apple.com>
2375
2376         Reviewed by Darin.
2377
2378         * wtf/HashTraits.h:
2379         Add hash traits for unsigned long and unsigned long long.
2380
2381 2007-01-12  Geoffrey Garen  <ggaren@apple.com>
2382
2383         RS by Brady Eidson.
2384         
2385         Rolling back in r18786 with leaks fixed, and these renames slightly reworked:
2386
2387         Because they can return 0:
2388         rootObjectForImp => findRootObject (overloaded for JSObject* and Interpreter*)
2389         rootObjectForInterpreter => findRootObject (ditto)
2390         findReferenceSet => findProtectCountSet
2391
2392 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
2393
2394         RS by Brady Eidson.
2395         
2396         Rolling out r18786 because it caused leaks.
2397
2398 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
2399
2400         Reviewed by Anders Carlsson.
2401
2402         Even more cleanup in preparation for fixing <rdar://problem/4608404> 
2403         WebScriptObject's _executionContext lack of ownership policy causes 
2404         crashes (e.g., in Dashcode)
2405         
2406         Layout tests pass.
2407         
2408         Renames:
2409             ReferencesSet | ProtectCounts => ProtectCountSet (because it's a typename for a set of GC protect counts)
2410             ReferencesByRootMap => RootObjectMap (because RootObjectToProtectCountSetMap would have been confusing)
2411             pv => protectedValues
2412             rootObjectForImp => getRootObject (overloaded for JSObject* and Interpreter*)
2413             rootObjectForInterpreter => getRootObject (ditto)
2414             findReferenceSet => getProtectCountSet
2415             imp => jsObject
2416         
2417         (KJS::Bindings::getRootObjectMap): Changed to take advantage of built-in
2418         facility for initializing static variables.
2419
2420         (KJS::Bindings::getProtectCountSet):
2421         (KJS::Bindings::destroyProtectCountSet): Added. Helps encapsulate the fact
2422         that getting a ProtectCountSet entails adding a RootObject to a hash table,
2423         and destroying one entails the reverse.
2424
2425         (KJS::Bindings::getRootObject): Removed spurious NULL check.
2426         
2427         (KJS::Bindings::findReferenceSet): Renamed. Changed to use getRootObject()
2428         instead of iterating on its own.
2429
2430         (KJS::Bindings::addNativeReference): Changed to use an early return instead
2431         of indenting the whole function.
2432         (KJS::Bindings::removeNativeReference): Ditto.
2433
2434 2007-01-11  Geoffrey Garen  <ggaren@apple.com>
2435
2436         Reviewed by Anders Carlsson.
2437
2438         Even more cleanup in preparation for fixing <rdar://problem/4608404> 
2439         WebScriptObject's _executionContext lack of ownership policy causes 
2440         crashes (e.g., in Dashcode)
2441         
2442         Layout tests pass.
2443         
2444         Renames:
2445             findRootObjectForNativeHandleFunction => createRootObject
2446             FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction
2447             
2448         Also removed unnecessary use of "Bindings::" prefix.
2449
2450         * JavaScriptCore.exp:
2451         * bindings/jni/jni_jsobject.cpp:
2452         (JavaJSObject::createNative):
2453         (JavaJSObject::convertValueToJObject):
2454         (JavaJSObject::convertJObjectToValue):
2455         * bindings/runtime_root.cpp:
2456         (KJS::Bindings::RootObject::setCreateRootObject):
2457         * bindings/runtime_root.h:
2458         (KJS::Bindings::RootObject::createRootObject):
2459
2460 2007-01-11  George Staikos  <staikos@kde.org>
2461
2462         Reviewed by Maciej
2463
2464         Appears to be Mac specific right now.
2465
2466         * kjs/config.h:
2467
2468 2007-01-10  Lars Knoll <lars@trolltech.com>
2469
2470         Reviewed by Zack
2471
2472         Use the new functionality in Qt 4.3, to make
2473         the methods closer compliant with the Unicode
2474         spec.
2475
2476         Keep the old code so that it still compiles against
2477         Qt 4.2.
2478
2479         * wtf/unicode/qt4/UnicodeQt4.h:
2480         (WTF::Unicode::toLower):
2481         (WTF::Unicode::toUpper):
2482         (WTF::Unicode::toTitleCase):
2483         (WTF::Unicode::foldCase):
2484         (WTF::Unicode::isFormatChar):
2485         (WTF::Unicode::isPrintableChar):
2486         (WTF::Unicode::isSeparatorSpace):
2487         (WTF::Unicode::isPunct):
2488         (WTF::Unicode::isDigit):
2489         (WTF::Unicode::isLower):
2490         (WTF::Unicode::isUpper):
2491         (WTF::Unicode::digitValue):
2492         (WTF::Unicode::mirroredChar):
2493         (WTF::Unicode::combiningClass):
2494         (WTF::Unicode::decompositionType):
2495         (WTF::Unicode::umemcasecmp):
2496         (WTF::Unicode::direction):
2497         (WTF::Unicode::category):
2498
2499 2007-01-09  Darin Adler  <darin@apple.com>
2500
2501         - update 2007 Apple copyright for the new company name
2502
2503         * kjs/DateMath.cpp:
2504
2505 2007-01-09  Darin Adler  <darin@apple.com>
2506
2507         - fix build
2508
2509         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
2510         Actually compile it this time.
2511
2512 2007-01-09  Darin Adler  <darin@apple.com>
2513
2514         - fix build
2515
2516         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
2517         Change types.
2518
2519 2007-01-09  Darin Adler  <darin@apple.com>
2520
2521         - fix build on platforms where Unicode::UChar is != uint16_t
2522
2523         * kjs/string_object.cpp: (KJS::StringProtoFunc::callAsFunction):
2524         Change types.
2525
2526 2007-01-09  Mitz Pettel  <mitz@webkit.org>
2527
2528         Reviewed by Darin.
2529
2530         - changes for http://bugs.webkit.org/show_bug.cgi?id=11078
2531           Forms Don't Submit (ASP Pages)
2532
2533         * JavaScriptCore.exp:
2534         * kjs/value.cpp:
2535         (KJS::JSValue::toInt32): Folded toInt32Inline into this method, which was its
2536         only caller.
2537         (KJS::JSValue::toUInt32): Added a variant that reports if the conversion has
2538         succeeded.
2539         * kjs/value.h:
2540
2541 2007-01-09  Darin Adler  <darin@apple.com>
2542
2543         Reviewed by Maciej.
2544
2545         - fix http://bugs.webkit.org/show_bug.cgi?id=12174
2546           improve Unicode use (less WTF::Unicode:: prefix, centralized character names)
2547
2548         * wtf/unicode/icu/UnicodeIcu.h: Change parameter and return types
2549         to UChar32 and UChar. Removed unneeded type casts and added some
2550         const to functions that lacked it. Removed WTF::Unicode::memcmp.
2551         (WTF::Unicode::umemcasecmp): Renamed from strcasecmp since this
2552         doesn't work on 0-terminated strings as the str functions do.
2553         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
2554
2555         - got rid of namespace prefixes from most uses of WTF::Unicode
2556
2557         * kjs/function.cpp:
2558         (KJS::isStrWhiteSpace):
2559         (KJS::escapeStringForPrettyPrinting):
2560         * kjs/lexer.cpp:
2561         (KJS::Lexer::isWhiteSpace):
2562         (KJS::Lexer::isIdentStart):
2563         (KJS::Lexer::isIdentPart):
2564         * kjs/string_object.cpp:
2565         (KJS::StringProtoFunc::callAsFunction):
2566
2567 2007-01-07  David Kilzer  <ddkilzer@webkit.org>
2568
2569         Reviewed by Darin.
2570
2571         - fix http://bugs.webkit.org/show_bug.cgi?id=11917
2572           setlocale() can return null
2573
2574         * kjs/date_object.cpp:
2575         (KJS::DateProtoFunc::callAsFunction): Removed dead code.
2576
2577 2007-01-07  David Carson  <dacarson@gmail.com>
2578
2579         Reviewed by Darin.
2580
2581         - fix http://bugs.webkit.org/show_bug.cgi?id=12100
2582           JNI bindings should be available to non-Mac platforms that have JNI
2583
2584         Change JNI so that it is not wrapped in the PLATFORM(MAC) ifdef, enabling
2585         other platforms who have JNI to use it.
2586
2587         * bindings/jni/jni_instance.h:  
2588           Removed unnecessary include of <CoreFoundation/CoreFoundation.h>
2589         * bindings/jni/jni_utility.cpp:
2590         (KJS::Bindings::setJavaVM):
2591         * bindings/jni/jni_utility.h:
2592           Added new method for clients to set the JavaVM
2593         * bindings/runtime.cpp:
2594         (KJS::Bindings::Instance::createBindingForLanguageInstance):
2595           Changed code to utilize new #if HAVE(JNI)
2596         * kjs/config.h:
2597           Added new #define for JNI, ie HAVE_JNI
2598
2599 2007-01-07  David Carson  <dacarson@gmail.com>
2600
2601         Reviewed by Darin.
2602
2603         Fix http://bugs.webkit.org/show_bug.cgi?id=11431
2604         ARM platform has some byte alignment issues
2605
2606         Fix for NaN being 4 bytes and it must start on a byte boundary
2607         for ARM architectures.
2608
2609         * kjs/fpconst.cpp:
2610         (KJS::):
2611
2612 2007-01-04  David Kilzer  <ddkilzer@webkit.org>
2613
2614         Reviewed by Kevin McCullough.
2615
2616         - fix http://bugs.webkit.org/show_bug.cgi?id=12070
2617           REGRESSION: KJS::getUTCOffset() caches UTC offset but ignores time zone changes
2618
2619         * kjs/DateMath.cpp:
2620         (KJS::getUTCOffset): Don't cache UTC offset.
2621
2622 2007-01-02  Darin Adler  <darin@apple.com>
2623
2624         - minor tweak (hope this doesn't re-break Windows)
2625
2626         * pcre/pcre_compile.c: Removed use of const pcre_uchar const * -- Mitz probably
2627         meant const pcre_uchar *const, but I think we can do without the explicit const here.
2628
2629         * pcre/pcre_internal.h: Re-enabled warning C4114.
2630
2631 2007-01-02  David Kilzer  <ddkilzer@webkit.org>
2632
2633         Reviewed by NOBODY (Windows build fix).
2634
2635         The MSVC compiler requires variables to be declared at the top of the enclosing block in C source.
2636
2637         Disable this warning to prevent MSVC from complaining about the 'const pcre_uchar const *' type:
2638         warning C4114: same type qualifier used more than once
2639
2640         * pcre/pcre_compile.c:
2641         (pcre_compile2): Moved variable declarations to top of their respective enclosing blocks.
2642         * pcre/pcre_internal.h: Added pragma to disable compiler warning.
2643
2644 2007-01-01  Mitz Pettel  <mitz@webkit.org>
2645
2646         Reviewed by Darin.
2647
2648         - fix http://bugs.webkit.org/show_bug.cgi?id=11849
2649           REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly)
2650
2651         Modified pcre_compile() (and the functions that it calls) to work with patterns
2652         containing null characters.
2653
2654         Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js
2655
2656         * kjs/regexp.cpp:
2657         (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead
2658         pass its length to pcre_compile.
2659         * pcre/pcre.h:
2660         * pcre/pcre_compile.c:
2661         (check_escape):
2662         (get_ucp):
2663         (is_counted_repeat):
2664         (check_posix_syntax):
2665         (compile_branch):
2666         (compile_regex):
2667         (pcre_compile): Added a parameter specifying the length of the pattern, which
2668         is no longer required to be null-terminated and may contain null characters. 
2669         (pcre_compile2):
2670         * pcre/pcre_internal.h:
2671         * tests/mozilla/expected.html: Updated for the two tests that this patch
2672         fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js
2673         which were not updated after bug 6257 was fixed.
2674
2675 2007-01-01  David Kilzer  <ddkilzer@webkit.org>
2676
2677         Reviewed by Darin.
2678
2679         - fix http://bugs.webkit.org/show_bug.cgi?id=12057
2680           REGRESSION: JavaScript Date Is One Day In The Future in GMT time zone
2681
2682         Because Mac OS X returns geographically and historically accurate time zone information,
2683         converting Jan 02, 1970 12:00:00 AM to local time then subtracting 24 hours did not work
2684         in GMT (London - England) since it was in BST (+0100) all year in 1970[1].  Instead, the
2685         UTC offset is calculated by converting Jan 01, 2000 12:00:00 AM to local time then
2686         subtracting that from the same date in UTC.
2687
2688         [1] http://en.wikipedia.org/wiki/British_Summer_Time
2689
2690         * kjs/DateMath.cpp:
2691         (KJS::getUTCOffset): Updated UTC offset calculation.
2692         (KJS::getDSTOffset): Improved comment.
2693
2694 2006-12-31  David Kilzer  <ddkilzer@webkit.org>
2695
2696         Reviewed by Geoff.
2697
2698         Update embedded pcre library from version 6.2 to 6.4.  Changes from pcre 6.2 to 6.3
2699         did not include any files in JavaScriptCore/pcre.
2700
2701         All changes include renaming EXPORT to PCRE_EXPORT, renaming of ucp_findchar() to
2702         _pcre_ucp_findchar(), or comment changes.  Additional changes noted below.
2703
2704         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Updated source file list.
2705         * JavaScriptCore.xcodeproj/project.pbxproj: Renamed pcre_printint.c to pcre_printint.src
2706         and changed it from a source file to a header file.
2707         * JavaScriptCoreSources.bkl: Updated source file list.
2708         * pcre/CMakeLists.txt: Updated source file list.
2709         * pcre/pcre-config.h:
2710         * pcre/pcre.h: Updated version.
2711         * pcre/pcre.pri: Updated source file list.
2712         * pcre/pcre_compile.c: Include pcre_printint.src #if DEBUG.
2713         (pcre_compile2):
2714         * pcre/pcre_config.c:
2715         * pcre/pcre_exec.c:
2716         (match):
2717         * pcre/pcre_fullinfo.c:
2718         * pcre/pcre_info.c:
2719         * pcre/pcre_internal.h: Added header guard.  Removed export of _pcre_printint().
2720         * pcre/pcre_ord2utf8.c:
2721         * pcre/pcre_printint.c: Renamed to pcre_printint.src.
2722         * pcre/pcre_printint.src: Added.  Renamed _pcre_printint() to pcre_printint().
2723         * pcre/pcre_refcount.c:
2724         * pcre/pcre_study.c:
2725         * pcre/pcre_tables.c:
2726         * pcre/pcre_try_flipped.c:
2727         * pcre/pcre_ucp_findchar.c: Added contents of ucp_findchar.c.
2728         * pcre/pcre_version.c:
2729         * pcre/pcre_xclass.c:
2730         (_pcre_xclass):
2731         * pcre/ucp.h: Removed export of ucp_findchar().
2732         * pcre/ucp_findchar.c: Removed.  Contents moved to pcre_ucp_findchar.c.
2733
2734 2006-12-29  David Kilzer  <ddkilzer@webkit.org>
2735
2736         Reviewed by Geoff.
2737
2738         Update embedded pcre library from version 6.1 to 6.2.  From the pcre ChangeLog:
2739
2740         3. Added "b" to the 2nd argument of fopen() in dftables.c, for non-Unix-like
2741            operating environments where this matters.
2742
2743         5. Named capturing subpatterns were not being correctly counted when a pattern
2744            was compiled. This caused two problems: (a) If there were more than 100
2745            such subpatterns, the calculation of the memory needed for the whole
2746            compiled pattern went wrong, leading to an overflow error. (b) Numerical
2747            back references of the form \12, where the number was greater than 9, were
2748            not recognized as back references, even though there were sufficient
2749            previous subpatterns.
2750
2751         * pcre/dftables.c: Item 3.
2752         (main):
2753         * pcre/pcre.h: Updated version.
2754         * pcre/pcre_compile.c: Item 5.
2755         (read_repeat_counts):
2756         (pcre_compile2):
2757
2758 2006-12-29  Geoffrey Garen  <ggaren@apple.com>
2759
2760         Reviewed by Brian Dash... err... Mark Rowe.
2761
2762         More cleanup in preparation for fixing <rdar://problem/4608404> 
2763         WebScriptObject's _executionContext lack of ownership policy causes 
2764         crashes (e.g., in Dashcode)
2765         
2766         The key change here is to RootObject::RootObject().
2767         
2768         * JavaScriptCore.exp:
2769
2770         * bindings/c/c_utility.cpp:
2771         (KJS::Bindings::convertValueToNPVariant): Changed to use new constructor.
2772
2773         * bindings/jni/jni_jsobject.cpp:
2774         (JavaJSObject::createNative): Changed to use new constructor. Replaced
2775         large 'if' followed by default condition with "if !" and explicit default
2776         condition.
2777
2778         * bindings/objc/objc_runtime.mm:
2779         (convertValueToObjcObject): Changed to use new constructor.
2780
2781         * bindings/runtime_root.cpp:
2782         (KJS::Bindings::RootObject::destroy): "removeAllNativeReferences" => "destroy"
2783         because this function actually destroys the RootObject.
2784
2785         * bindings/runtime_root.h: Changed Interpreter* to RefPtr<Interpreter>
2786         to prevent a RootObject from holding a stale Interperter*.
2787         
2788         (KJS::Bindings::RootObject::RootObject): Changed constructor to take an 
2789         Interpreter*, since it's pointless to create a RootObject without one.
2790         Removed setRootObjectImp() and rootObjectImp() because they were just
2791         a confusing way of setting and getting the Interpreter's global object.
2792
2793         (KJS::Bindings::RootObject::nativeHandle): "_nativeHandle" => "m_nativeHandle"
2794         (KJS::Bindings::RootObject::interpreter): "_interpreter" => "m_interpreter"
2795
2796 2006-12-28  George Staikos  <staikos@kde.org>
2797
2798         Reviewed by Olliej.
2799
2800         * bindings/qt/qt_instance.cpp: build
2801         (KJS::Bindings::QtInstance::QtInstance):
2802
2803 2006-12-28  Geoffrey Garen  <ggaren@apple.com>
2804
2805         Reviewed by Oliver Hunt.
2806         
2807         More cleanup. Layout tests pass.
2808         
2809         Use a helper function to initialize and access WebUndefined and WebScriptObject.
2810
2811         * bindings/objc/objc_runtime.h:
2812         * bindings/objc/objc_runtime.mm:
2813         (KJS::Bindings::webScriptObjectClass):
2814         (KJS::Bindings::webUndefinedClass):
2815         (convertValueToObjcObject):
2816         * bindings/objc/objc_utility.mm:
2817         (KJS::Bindings::convertValueToObjcValue):
2818         (KJS::Bindings::convertObjcValueToValue):
2819
2820 2006-12-28  Geoffrey Garen  <ggaren@apple.com>
2821
2822         Reviewed by Brady Eidson.
2823         
2824         Some cleanup in preparation for fixing <rdar://problem/4608404> 
2825         WebScriptObject's _executionContext lack of ownership policy causes 
2826         crashes (e.g., in Dashcode)
2827         
2828         I'm just trying to make heads or tails of this baffling code.
2829         
2830         Renamed "root" | "execContext" | "executionContext" => "rootObject", because
2831         that's the object's (admittedly vague) type name.
2832         
2833         * bindings/runtime.cpp: Removed createLanguageInstanceForValue
2834         because I'll give you a dollar if you can explain to me what it actually did.
2835         
2836         * bindings/runtime_root.cpp: Put everything in the KJS::Bindings namespace,
2837         removing the KJS::Bindings prefix from individual functions and datatypes.
2838         This matches the header and eliminates a lot of syntax cruft.
2839         
2840         * bindings/c/c_utility.cpp:
2841         (KJS::Bindings::convertValueToNPVariant): Replaced use of createLanguageInstanceForValue
2842         with call to _NPN_CreateScriptObject because that's what createLanguageInstanceForValue
2843         actually did (but don't ask me for that dollar now; that's cheating.)
2844
2845         * bindings/objc/objc_utility.h:
2846         * bindings/objc/objc_utility.mm:
2847         (KJS::Bindings::convertValueToObjcValue): Removed. Its only purpose was 
2848         to call a single function for WebKit, which WebKit can do on its own.
2849
2850         * kjs/interpreter.h: Removed rtti() because it was unused, and this class
2851         is scheduled for demolition anyway.
2852         
2853         * kjs/interpreter.cpp: Removed createLanguageInstanceForValue because it had
2854         nothing to do with the Interpreter, and nothing makes Chuck Norris more mad
2855         than a function whose sole purpose is to call another function of the same
2856         name. (Really, I asked him.)
2857
2858 2006-12-26  Geoffrey Garen  <ggaren@apple.com>
2859
2860         Reviewed by Eric Seidel.
2861
2862         Some cleanup in preparation for fixing <rdar://problem/4740328> Safari 
2863         crash on quit in _NPN_ReleaseObject from KJS::Bindings::CInstance::~CInstance
2864
2865         * bindings/c/c_instance.cpp:
2866         * bindings/c/c_instance.h: Removed unused copy constructor and assignment
2867         operator. They made tracking data flow more difficult. Unused code is also 
2868         dangerous because it can succumb to bit rot with the stealth of a Ninja.
2869         
2870         Replaced #include with forward declaration to reduce header dependency.
2871         
2872         * bindings/npruntime.cpp: Sorted #includes.
2873         (_NPN_GetStringIdentifier): Replaced assert with ASSERT.
2874         (_NPN_GetStringIdentifiers): ditto
2875         (_NPN_ReleaseVariantValue): ditto
2876         (_NPN_CreateObject): ditto
2877         (_NPN_RetainObject): ditto
2878         (_NPN_ReleaseObject): ditto
2879         (_NPN_DeallocateObject): ditto
2880
2881 2006-12-20  Anders Carlsson  <acarlsson@apple.com>
2882
2883         * kjs/string_object.cpp:
2884         (localeCompare):
2885         Another speculative Win32 fix.
2886
2887 2006-12-20  Anders Carlsson  <acarlsson@apple.com>
2888
2889         * kjs/string_object.cpp:
2890         (localeCompare):
2891         Speculative Win32 fix.
2892
2893 2006-12-20  Anders Carlsson  <acarlsson@apple.com>
2894
2895         Reviewed by Darin.
2896
2897         <rdar://problem/4235733>
2898         <http://bugs.webkit.org/?show_bug.cgi?id=10193>
2899         support String.localeCompare.
2900         
2901         Implement localeCompare.
2902         
2903         * JavaScriptCore.xcodeproj/project.pbxproj:
2904         * kjs/string_object.cpp:
2905         (localeCompare):
2906         (StringProtoFunc::callAsFunction):
2907         * kjs/string_object.h:
2908         (KJS::StringProtoFunc::):
2909
2910 2006-12-20  Timothy Hatcher  <timothy@apple.com>
2911
2912         Reviewed by Mark Rowe.
2913
2914         * JavaScriptCore.xcodeproj/project.pbxproj: use GCC 4.0 for all the other test targets
2915
2916 2006-12-20  Timothy Hatcher  <timothy@apple.com>
2917
2918         Reviewed by Mark Rowe.
2919
2920         <rdar://problem/4871613> JavaScriptCore-421.31's dftables target needs to override default compiler and use gcc-4.0
2921
2922         * JavaScriptCore.xcodeproj/project.pbxproj:
2923
2924 2006-12-20  Lars Knoll <lars@trolltech.com>
2925
2926         Reviewed by David Hyatt
2927
2928         Added support to bind QObject's to 
2929         JavaScript.
2930
2931         * JavaScriptCore.pro:
2932         * bindings/qt/qt_class.cpp: Added.
2933         (KJS::Bindings::QtClass::QtClass):
2934         (KJS::Bindings::QtClass::~QtClass):
2935         (KJS::Bindings::QtClass::classForObject):
2936         (KJS::Bindings::QtClass::name):
2937         (KJS::Bindings::QtClass::methodsNamed):
2938         (KJS::Bindings::QtClass::fieldNamed):
2939         * bindings/qt/qt_class.h: Added.
2940         (KJS::Bindings::QtClass::constructorAt):
2941         (KJS::Bindings::QtClass::numConstructors):
2942         * bindings/qt/qt_instance.cpp: Added.
2943         (KJS::Bindings::QtInstance::QtInstance):
2944         (KJS::Bindings::QtInstance::~QtInstance):
2945         (KJS::Bindings::QtInstance::operator=):
2946         (KJS::Bindings::QtInstance::getClass):
2947         (KJS::Bindings::QtInstance::begin):
2948         (KJS::Bindings::QtInstance::end):
2949         (KJS::Bindings::QtInstance::implementsCall):
2950         (KJS::Bindings::QtInstance::invokeMethod):
2951         (KJS::Bindings::QtInstance::invokeDefaultMethod):
2952         (KJS::Bindings::QtInstance::defaultValue):
2953         (KJS::Bindings::QtInstance::stringValue):
2954         (KJS::Bindings::QtInstance::numberValue):
2955         (KJS::Bindings::QtInstance::booleanValue):
2956         (KJS::Bindings::QtInstance::valueOf):
2957         * bindings/qt/qt_instance.h: Added.
2958         (KJS::Bindings::QtInstance::getObject):
2959         * bindings/qt/qt_runtime.cpp: Added.
2960         (KJS::Bindings::convertValueToQVariant):
2961         (KJS::Bindings::convertQVariantToValue):
2962         (KJS::Bindings::QtField::name):
2963         (KJS::Bindings::QtField::valueFromInstance):
2964         (KJS::Bindings::QtField::setValueToInstance):
2965         * bindings/qt/qt_runtime.h: Added.
2966         (KJS::Bindings::QtField::QtField):
2967         (KJS::Bindings::QtField::type):
2968         (KJS::Bindings::QtMethod::QtMethod):
2969         (KJS::Bindings::QtMethod::name):
2970         (KJS::Bindings::QtMethod::numParameters):
2971         * bindings/runtime.cpp:
2972         (KJS::Bindings::Instance::createBindingForLanguageInstance):
2973         * bindings/runtime.h:
2974         (KJS::Bindings::Instance::):
2975         * bindings/testbindings.pro: Added.
2976         * bindings/testqtbindings.cpp: Added.
2977         (MyObject::MyObject):
2978         (MyObject::setTestString):
2979         (MyObject::setTestInt):
2980         (MyObject::testString):
2981         (MyObject::testInt):
2982         (MyObject::foo):
2983         (Global::className):
2984         (main):
2985
2986 2006-12-19  Anders Carlsson  <acarlsson@apple.com>
2987
2988         Reviewed by Geoff.
2989
2990         Add -p option to testkjs which pretty prints the files instead of executing them.
2991
2992         * JavaScriptCore.exp:
2993         * JavaScriptCore.xcodeproj/project.pbxproj:
2994         * kjs/Parser.cpp:
2995         (KJS::Parser::prettyPrint):
2996         * kjs/Parser.h:
2997         * kjs/testkjs.cpp:
2998         (doIt):
2999
3000 2006-12-19  Brady Eidson  <beidson@apple.com>
3001
3002         Rubberstamped by Lou
3003         
3004         Removed unneccessary "else"
3005
3006         * wtf/Assertions.cpp:
3007
3008 2006-12-19  Timothy Hatcher  <timothy@apple.com>
3009
3010         Reviewed by Darin.
3011
3012         <rdar://problem/4891774> Local WebCore/WebBrowser builds fail in 9A328 due to warning about ObjC-2.0 language features
3013
3014         * JavaScriptCore.xcodeproj/project.pbxproj:
3015
3016 2006-12-17  Simon Hausmann  <hausmann@kde.org>
3017
3018         Reviewed by Zack.
3019
3020         * kjs/testkjs.pro: Oops, make it also build on machines other than
3021         mine :)
3022
3023 2006-12-17  Simon Hausmann  <hausmann@kde.org>
3024
3025         Reviewed by Rob Buis.
3026
3027         * kjs/testkjs.pro: Added .pro file to build testkjs.
3028
3029 2006-12-16  Alexey Proskuryakov  <ap@webkit.org>
3030
3031         Reviewed by Rob.
3032
3033         A deleted object was accessed to prepare RegExp construction error messages.
3034
3035         * kjs/regexp_object.cpp:
3036         (RegExpObjectImp::construct): Wrap the RegExp into an OwnPtr.
3037
3038 2006-12-16  Mitz Pettel  <mitz@webkit.org>
3039
3040         Reviewed by Alexey.
3041
3042         - fix http://bugs.webkit.org/show_bug.cgi?id=11814
3043           REGRESSION(r18098): Find does not work with capital letters
3044
3045         Test: editing/execCommand/findString-3.html
3046
3047         * wtf/unicode/icu/UnicodeIcu.h:
3048         (WTF::Unicode::foldCase): Changed to not return an error if the result fits
3049         in the buffer without a null terminator.
3050
3051 2006-12-13  Maciej Stachowiak  <mjs@apple.com>
3052
3053         Reviewed by Anders.
3054         
3055         - added equality and inequality operations for HashMap and Vector, useful for comparing more complex types
3056
3057         * wtf/HashMap.h:
3058         (WTF::operator==):
3059         (WTF::operator!=):
3060         * wtf/Vector.h:
3061         (WTF::operator==):
3062         (WTF::operator!=):
3063
3064 2006-12-12  Alexey Proskuryakov  <ap@webkit.org>
3065
3066         Reviewed by Geoff. Based on a patch by Maks Orlovich.
3067
3068         http://bugs.webkit.org/show_bug.cgi?id=6257
3069         Throw errors on invalid expressions (KJS merge)
3070
3071         * kjs/regexp.cpp:
3072         (KJS::RegExp::RegExp):
3073         (KJS::RegExp::~RegExp):
3074         (KJS::RegExp::match):
3075         * kjs/regexp.h:
3076         (KJS::RegExp::flags):
3077         (KJS::RegExp::isValid):
3078         (KJS::RegExp::errorMessage):
3079         (KJS::RegExp::subPatterns):
3080         Remember and report RegExp construction failures. Renamed data members not to start with underscores.
3081
3082         * kjs/regexp_object.cpp:
3083         (RegExpObjectImp::construct): Raise an exception if RegExp construction fails.
3084         (RegExpObjectImp::callAsFunction): Removed an obsolete comment.
3085
3086         * tests/mozilla/ecma_3/RegExp/regress-119909.js: Reduced the number of nested parentheses to 
3087         a value supported by PCRE.
3088
3089 2006-12-11  Alexey Proskuryakov  <ap@webkit.org>
3090
3091         Reviewed by Darin.
3092
3093         http://bugs.webkit.org/show_bug.cgi?id=9673
3094         Add support for window.atob() and window.btoa()
3095
3096         * JavaScriptCore.exp: Export UString::is8Bit().
3097         * JavaScriptCore.xcodeproj/project.pbxproj: Added StringExtras.h as 
3098         a private header.
3099
3100 2006-12-11  Darin Adler  <darin@apple.com>
3101
3102         Reviewed by Brady.
3103
3104         * JavaScriptCore.xcodeproj/project.pbxproj: Let Xcode update this
3105         (I think Hyatt is using an old Xcode).
3106
3107 2006-12-11  David Hyatt  <hyatt@apple.com>
3108
3109         Fix the failing layout test.  Just remove Unicode::isSpace and
3110         revert StringImpl to do the same thing it was doing before.
3111
3112         Reviewed by darin
3113
3114         * wtf/unicode/icu/UnicodeIcu.h:
3115         * wtf/unicode/qt4/UnicodeQt4.h:
3116
3117 2006-12-09  George Staikos  <staikos@kde.org>
3118
3119         Reviewed by Zack.
3120
3121         Fix bison again on qmake build.
3122
3123         * JavaScriptCore.pro:
3124
3125 2006-12-09  Lars Knoll <lars@trolltech.com>
3126
3127         Reviewed by Zack
3128
3129         Make it possible to build WebKit with qmake.
3130
3131         * JavaScriptCore.pro: Added.
3132         * kjs/kjs.pro: Removed.
3133         * pcre/pcre.pri: Added.
3134
3135 2006-12-09  Zack Rusin  <zack@kde.org>
3136
3137         Fixing the compilation with platform kde after the icu changes.
3138
3139         * CMakeLists.txt:
3140
3141 2006-12-09  Adam Roben  <aroben@apple.com>
3142
3143         Reviewed by Darin.
3144
3145         Some updates in reaction to r18098.
3146
3147         * wtf/unicode/icu/UnicodeIcu.h: Use !! to convert UBool to bool in all
3148         cases.
3149         (WTF::Unicode::toLower):
3150         (WTF::Unicode::toUpper):
3151         (WTF::Unicode::isDigit):
3152         (WTF::Unicode::isSpace):
3153         (WTF::Unicode::isPunct):
3154         (WTF::Unicode::isLower):
3155         (WTF::Unicode::isUpper):
3156         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3157         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3158
3159 2006-12-09  George Staikos  <staikos@kde.org>
3160
3161         Patch by Lars Knoll, comment out ICU dependency on Qt platform (unused code).
3162
3163         Reviewed by Darin.
3164
3165         * bindings/c/c_utility.cpp:
3166         (KJS::Bindings::convertUTF8ToUTF16):
3167
3168 2006-12-08  David Hyatt  <hyatt@apple.com>
3169
3170         Land the new ICU abstraction layer.  Patch by Lars.
3171
3172         Reviewed by me
3173
3174         * JavaScriptCore.xcodeproj/project.pbxproj:
3175         * wtf/Platform.h:
3176         * wtf/unicode/UnicodeCategory.h: Removed.
3177         * wtf/unicode/UnicodeDecomposition.h: Removed.
3178         * wtf/unicode/UnicodeDirection.h: Removed.
3179         * wtf/unicode/icu/UnicodeIcu.h:
3180         (WTF::Unicode::):
3181         (WTF::Unicode::foldCase):
3182         (WTF::Unicode::toLower):
3183         (WTF::Unicode::toUpper):
3184         (WTF::Unicode::toTitleCase):
3185         (WTF::Unicode::isDigit):
3186         (WTF::Unicode::isSpace):
3187         (WTF::Unicode::isPunct):
3188         (WTF::Unicode::mirroredChar):
3189         (WTF::Unicode::category):
3190         (WTF::Unicode::direction):
3191         (WTF::Unicode::isLower):
3192         (WTF::Unicode::isUpper):
3193         (WTF::Unicode::digitValue):
3194         (WTF::Unicode::combiningClass):
3195         (WTF::Unicode::decompositionType):
3196         (WTF::Unicode::strcasecmp):
3197         (WTF::Unicode::memset):
3198         * wtf/unicode/qt4/UnicodeQt4.cpp: Removed.
3199         * wtf/unicode/qt4/UnicodeQt4.h:
3200         (WTF::Unicode::):
3201         (WTF::Unicode::toLower):
3202         (WTF::Unicode::toUpper):
3203         (WTF::Unicode::toTitleCase):
3204         (WTF::Unicode::foldCase):
3205         (WTF::Unicode::isPrintableChar):
3206         (WTF::Unicode::isLower):
3207         (WTF::Unicode::isUpper):
3208         (WTF::Unicode::digitValue):
3209         (WTF::Unicode::combiningClass):
3210         (WTF::Unicode::decompositionType):
3211         (WTF::Unicode::strcasecmp):
3212         (WTF::Unicode::memset):
3213         (WTF::Unicode::direction):
3214         (WTF::Unicode::category):
3215
3216 === Safari-521.32 ===
3217
3218 2006-12-08  Adam Roben  <aroben@apple.com>
3219
3220         Reviewed by Anders.
3221
3222         This is a mo' better fix for ensuring we don't use macro definitions
3223         of min/max.
3224
3225         * kjs/config.h:
3226         * wtf/Vector.h:
3227
3228 2006-12-07  Kevin Fyure  <digdog@macports.org>
3229
3230         Reviewed by Darin.
3231
3232         http://bugs.webkit.org/show_bug.cgi?id=11545
3233         Disable the testcases do not follow the ECMA-262v3 specification.
3234         
3235         * tests/mozilla/expected.html: Update Results.
3236         * tests/mozilla/js1_2/String/concat.js:
3237         4 tests disabled. The result of concat Array object is not followinig
3238         ECMA 15.5.4.6
3239         * tests/mozilla/js1_2/function/Number.js:
3240         1 test disabled. The result of Array object to Number object conversion 
3241         is not following ECMA 9.3. And the test was duplicated in 
3242         ecma/TypeConversion/9.3-1.js
3243         * tests/mozilla/js1_2/function/String.js:
3244         2 tests disabled. The result of Object/Array object to String object 
3245         conversion is not following ECMA 15.5.1.1 and ECMA 9.8
3246
3247 2006-11-30  Steve Falkenburg  <sfalken@apple.com>
3248
3249         Reviewed by Oliver.
3250         
3251         Move WTF from JavaScriptCore project into a new WTF project.
3252
3253         * JavaScriptCore.vcproj/JavaScriptCore.sln: Add WTF.vcproj to sln
3254         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove WTF source files
3255         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added.
3256         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add dependency on WTF.lib
3257
3258 2006-11-30  Geoffrey Garen  <ggaren@apple.com>
3259
3260         Reviewed by Beth Dakin.
3261         
3262         Fixed up garbage collection at window close time.
3263
3264         * kjs/interpreter.cpp:
3265         (KJS::Interpreter::~Interpreter): Garbage collect here, since
3266         destroying the interpreter frees the global object and 
3267         therefore creates a lot of garbage.
3268
3269 2006-11-20  W. Andy Carrel  <wac@google.com>
3270
3271         Reviewed by Maciej.
3272
3273         http://bugs.webkit.org/show_bug.cgi?id=11501
3274         REGRESSION: \u no longer escapes metacharacters in RegExps
3275         http://bugs.webkit.org/show_bug.cgi?id=11502
3276         Serializing RegExps doesn't preserve Unicode escapes
3277
3278         * kjs/lexer.cpp:
3279         (Lexer::Lexer):
3280         (Lexer::setCode):
3281         (Lexer::shift):
3282         (Lexer::scanRegExp):
3283         Push \u parsing back down into the RegExp object rather than in the
3284         parser. This backs out r17354 in favor of a new fix that better 
3285         matches the behavior of other browsers.
3286
3287         * kjs/lexer.h:
3288         * kjs/regexp.cpp:
3289         (KJS::RegExp::RegExp):
3290         (KJS::sanitizePattern):
3291         (KJS::isHexDigit):
3292         (KJS::convertHex):
3293         (KJS::convertUnicode):
3294         * kjs/regexp.h:
3295         Translate \u escaped unicode characters for the benefit of pcre.
3296
3297         * kjs/ustring.cpp:
3298         (KJS::UString::append):
3299         Fix failure to increment length on the first UChar appended to a 
3300         UString that was copy-on-write.
3301
3302         * tests/mozilla/ecma_2/RegExp/properties-001.js:
3303         Adjust tests back to the uniform standards.
3304
3305 2006-11-20  Samuel Weinig  <sam@webkit.org>
3306
3307         Reviewed by Maciej.
3308
3309         Fix for http://bugs.webkit.org/show_bug.cgi?id=11647
3310         Fix Win32 build
3311
3312         * kjs/config.h: define NOMINMAX instead of min/max
3313         as themselves.
3314         * wtf/Vector.h: put back hack to ensure that min/max
3315         are not defined as macros.
3316
3317 2006-11-19  Simon Hausmann  <hausmann@kde.org>
3318
3319         Reviewed by Zack.
3320
3321         http://bugs.webkit.org/show_bug.cgi?id=11649
3322         Fix CMake Qt-only build without KDE CMake files
3323
3324         * CMakeLists.txt:
3325         * pcre/CMakeLists.txt:
3326
3327 2006-11-17  Anders Carlsson  <acarlsson@apple.com>
3328
3329         Reviewed by Adam.
3330
3331         Make sure that we always use std::min and std::max instead of macros.
3332         
3333         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3334         * kjs/config.h:
3335         * wtf/Vector.h:
3336
3337 === Safari-521.31 ===
3338
3339 2006-11-12  Geoffrey Garen  <ggaren@apple.com>
3340
3341         Reviewed by Beth Dakin.
3342         
3343         Added project-wide setting to disable Microsoft's made-up deprecation 
3344         warnings related to std:: functions. (Doesn't have any affect yet,
3345         since we currently disable all deprecation warnings.)
3346
3347         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3348
3349 2006-11-12  Mark Rowe  <bdash@webkit.org>
3350
3351         Reviewed by Mitz.
3352
3353         Clean up of JavaScriptCore bakefiles.
3354
3355         * JavaScriptCoreSources.bkl:
3356         * jscore.bkl:
3357
3358 2006-11-11  Alexey Proskuryakov  <ap@webkit.org>
3359
3360         Reviewed by Maciej.
3361
3362         http://bugs.webkit.org/show_bug.cgi?id=11508
3363         Undisable some warnings for JSImmediate.h
3364
3365         Fix suggested by Don Gibson.
3366
3367         * kjs/JSImmediate.h:
3368         Re-enable all MSVC warnings, move the remaining runtime checks
3369         to compile-time.
3370
3371 2006-11-10  Zalan Bujtas  <zalan.bujtas@nokia.com>
3372
3373         Reviewed by Maciej.
3374
3375         Added s60/symbian platform defines.
3376         http://bugs.webkit.org/show_bug.cgi?id=11540
3377
3378         * wtf/Platform.h:
3379
3380 === Safari-521.30 ===
3381
3382 2006-11-08  Ada Chan  <adachan@apple.com>
3383
3384         Reviewed by darin.
3385         
3386         Added a method to delete all the keys in a HashMap.
3387
3388         * wtf/HashMap.h:
3389         (WTF::deleteAllPairFirsts):
3390         (WTF::deleteAllKeys):
3391
3392 2006-11-07  Anders Carlsson  <acarlsson@apple.com>
3393
3394         Reviewed by Geoff.
3395
3396         * API/JSClassRef.cpp:
3397         (OpaqueJSClass::OpaqueJSClass):
3398         Initialize cachedPrototype to 0.
3399
3400 2006-11-06  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
3401
3402         Reviewed by Maciej.
3403
3404         Remove warning about garbage after #else. #else clause applies for all
3405         non-mac platforms, not only win.
3406
3407         * kjs/date_object.cpp:
3408
3409 2006-11-06  Mark Rowe  <bdash@webkit.org>
3410
3411         Reviewed by the wonderful Mitz Pettel.
3412
3413         http://bugs.webkit.org/show_bug.cgi?id=11524
3414         Bug 11524: REGRESSION(r9842): Array.prototype.join should use ToString operator rather than calling toString on each element
3415
3416         * kjs/array_object.cpp:
3417         (ArrayProtoFunc::callAsFunction): Use ToString operator on each element rather than calling their toString method.
3418
3419 2006-11-03  Steve Falkenburg  <sfalken@apple.com>
3420
3421         Fix build
3422
3423         * kjs/JSImmediate.h:
3424
3425 2006-11-03  Alexey Proskuryakov  <ap@nypop.com>
3426
3427         Reviewed by Darin.
3428
3429         http://bugs.webkit.org/show_bug.cgi?id=11504
3430         Fix warnings on non 32 bit platforms
3431
3432         * kjs/JSImmediate.h:
3433         (KJS::JSImmediate::NanAsBits):
3434         (KJS::JSImmediate::oneAsBits):
3435         Rewrite in a way that moves runtime checks to compile-time.
3436
3437         (KJS::):
3438         (KJS::JSImmediate::fromDouble):
3439         (KJS::JSImmediate::toDouble):
3440
3441 2006-11-02  George Staikos <staikos@kde.org>
3442
3443         Reviewed by Maciej.
3444
3445         * collector.cpp:
3446         Remove a deprecated pthreads call.
3447
3448 2006-11-02  Anders Carlsson  <acarlsson@apple.com>
3449
3450         Reviewed by Maciej, landed by Anders.
3451
3452         * CMakeLists.txt:
3453         Make KDE support optional.
3454
3455 2006-11-01  Kevin McCullough  <KMcCullough@apple.com>
3456
3457         Reviewed by Brady.
3458
3459         - Fixes many JavaScriptCore tests in other timezones.  The root problem is that on mac localtime() returns historically accurate information for DST, but the JavaScript spec explicitly states to not take into account historical information but rather to interpolate from valid years.
3460
3461         * kjs/DateMath.cpp:
3462         (KJS::equivalentYearForDST):
3463         (KJS::getDSTOffsetSimple):
3464         (KJS::getDSTOffset):
3465
3466 2006-10-31  Geoffrey Garen  <ggaren@apple.com>
3467
3468         Reviewed by Beth.
3469         
3470         Fixed http://bugs.webkit.org/show_bug.cgi?id=11477
3471         REGRESSION: GMail crashes in KJS::FunctionImp::callerGetter
3472
3473         * kjs/function.cpp:
3474         (KJS::FunctionImp::argumentsGetter): Removed unnecessary braces.
3475         (KJS::FunctionImp::callerGetter): More logical NULL checking.
3476
3477 2006-10-31  Oliver Hunt  <oliver@apple.com>
3478
3479         Reviewed by Geoff.
3480
3481         Adding definition for PLATFORM(CI)
3482
3483         * wtf/Platform.h:
3484
3485 2006-10-31  Vladimir Olexa  <vladimir.olexa@gmail.com>
3486
3487         Reviewed by Geoff.
3488
3489         http://bugs.webkit.org/show_bug.cgi?id=4166
3490         Function object does not support caller property
3491
3492         Test: fast/js/caller-property.html
3493
3494         * kjs/function.cpp: 
3495         (KJS::FunctionImp::callerGetter): added
3496         (KJS::FunctionImp::getOwnPropertySlot): added if statement to handle callerGetter()
3497         * kjs/function.h: added callerGetter() declaration
3498         * kjs/identifier.h: added caller property macro
3499         * tests/mozilla/expected.html: 
3500
3501 2006-10-30  Kevin McCullough  <KMcCullough@apple.com>
3502
3503         Reviewed by Adam.
3504
3505         - Fix some timezone issues and JavaScriptCore date tests.  Addresses bugzilla 4930.
3506
3507         * kjs/DateMath.h:
3508         (KJS::GregorianDateTime::GregorianDateTime): Here's the fix, to add parenthesis for order of precedence.
3509         * kjs/date_object.cpp:
3510         (KJS::DateProtoFunc::callAsFunction): 
3511         (KJS::DateObjectImp::construct): memset not needed as GregorianDateTime initializes itself.
3512
3513 2006-10-30  Darin Adler  <darin@apple.com>
3514
3515         Reviewed by John Sullivan.
3516
3517         * kjs/SavedBuiltins.h: Added needed include.
3518         * wtf/OwnPtr.h: (WTF::OwnPtr::set): Fixed mistake in assertion.
3519
3520 2006-10-28  Darin Adler  <darin@apple.com>
3521
3522         Reviewed by Maciej.
3523
3524         - renamed PassRefPtr::release to releaseRef to make it clearer that
3525           it's the counterpart of adoptRef, and to make it harder to confuse
3526           it with the safer-to-use RefPtr::release
3527
3528         * kjs/identifier.cpp:
3529        &n