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