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