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