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