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