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