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