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