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