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