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