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