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