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