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