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