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