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