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