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