d1e1770f34562eacfa323c0d0902949cd0753201
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2007-10-23  Darin Adler  <darin@apple.com>
2
3         Reviewed by Maciej.
4
5         - fix http://bugs.webkit.org/show_bug.cgi?id=15639
6           fix Math.abs(0), Math.ceil(-0), and Math.floor(-0)
7
8         Test: fast/js/math.html
9
10         * kjs/math_object.cpp: (MathFuncImp::callAsFunction):
11         Fix abs to look at the sign bit. Add a special case for values in the range
12         between -0 and -1 and a special case for ceil and for -0 for floor.
13
14 2007-10-23  Darin Adler  <darin@apple.com>
15
16         Reviewed by Eric.
17
18         - streamline exception handling code for a >1% speed-up of SunSpider
19
20         * kjs/nodes.cpp: Changed macros to use functions for everything that's not
21         part of normal execution. We'll take function call overhead when propagating
22         an exception or out of memory.
23         (KJS::createOutOfMemoryCompletion): Added.
24         (KJS::substitute): Use append instead of the relatively inefficient + operator.
25         (KJS::Node::rethrowException): Added.
26         * kjs/nodes.h: Added rethrowException.
27
28 2007-10-22  Darin Adler  <darin@apple.com>
29
30         Reviewed by Maciej.
31
32         - fix http://bugs.webkit.org/show_bug.cgi?id=15636
33           some JavaScriptCore regression tests are failing due to numeric conversion
34
35         This should restore correctness and make speed better too, restoring some
36         of the optimization we lost in my last check-in.
37
38         * kjs/JSImmediate.h:
39         (KJS::JSImmediate::getTruncatedInt32): Added. Uses the range checking idiom
40         I used in my patch yesterday.
41         (KJS::JSImmediate::getTruncatedUInt32): Ditto.
42
43         * kjs/internal.h: Removed getInt32 and added getTruncatedInt/UInt32.
44         * kjs/internal.cpp:
45         (KJS::NumberImp::getUInt32): Changed to always use double, since I can't find
46         a way to write this more efficiently for float.
47         (KJS::NumberImp::getTruncatedInt32): Added.
48         (KJS::NumberImp::getTruncatedUInt32): Added.
49
50         * kjs/value.h: Removed getInt32 and added getTruncatedInt/UInt32.
51         (KJS::JSValue::getUInt32):
52         (KJS::JSValue::getTruncatedInt32): Added.
53         (KJS::JSValue::getTruncatedUInt32): Added.
54         (KJS::JSValue::toInt32): Changed getInt32 call to getTruncatedInt32.
55         (KJS::JSValue::toUInt32): Changed getUInt32 call to getTruncatedUInt32.
56         * kjs/value.cpp:
57         (KJS::JSCell::getTruncatedInt32): Added.
58         (KJS::JSCell::getTruncatedUInt32): Added.
59         (KJS::JSValue::toInteger): Changed getUInt32 call to getTruncatedInt32.
60         (KJS::JSValue::toInt32SlowCase): Removed extra getInt32 call I accidentally
61         had left in here.
62         (KJS::JSValue::toUInt32SlowCase): Ditto.
63         (KJS::JSValue::toUInt16): Changed getUInt32 call to getTruncatedUInt32.
64
65         * JavaScriptCore.exp: Updated.
66
67 2007-10-22  Darin Adler  <darin@apple.com>
68
69         Reviewed by Geoff.
70
71         - fix http://bugs.webkit.org/show_bug.cgi?id=15632
72           js1_5/Array/array-001.js test failing
73
74         One of the JavaScriptCore tests was failing; it failed because of
75         my change to NumberImp::getUInt32. The incorrect code I copied was
76         from JSImmediate::getUInt32, and was a pre-existing bug.
77
78         This patch fixes correctness, but will surely slow down SunSpider.
79         We may be able to code this tighter and get the speed back.
80
81         * kjs/JSImmediate.h:
82         (KJS::JSImmediate::getInt32): Renamed from toInt32 to more accurately
83         reflect the fact that this function only returns true if the value is
84         accurate (no fractional part, etc.). Changed code so that it returns
85         false when the value has a fraction.
86         (KJS::JSImmediate::getUInt32): Ditto.
87
88         * kjs/internal.cpp:
89         (KJS::NumberImp::getInt32): Changed code so that it returns false when
90         the value has a fraction. Restores the old behavior.
91         (KJS::NumberImp::getUInt32): Ditto.
92
93         * kjs/value.h:
94         (KJS::JSValue::getInt32): Updated for name change.
95         (KJS::JSValue::getUInt32): Ditto.
96         (KJS::JSValue::toInt32): Ditto.
97         (KJS::JSValue::toUInt32): Ditto.
98
99 2007-10-22  Darin Adler  <darin@apple.com>
100
101         Reviewed by Brady.
102
103         - fix crash seen when running JavaScriptCore tests
104
105         * kjs/array_instance.cpp: (KJS::ArrayInstance::mark):
106         Copy and paste error: I accidentally had code here that was
107         making a copy of the HashMap -- that's illegal inside a mark
108         function and was unnecessary. The other callsite was modifying
109         the map as it iterated it, but this function is not.
110
111 2007-10-22  Maciej Stachowiak  <mjs@apple.com>
112
113         Reviewed by Oliver.
114         
115         - Avoid moving floats into integer registers in jsNumber() for 3% speedup on SunSpider
116         http://bugs.webkit.org/show_bug.cgi?id=15627
117
118         * kjs/JSImmediate.h:
119         (KJS::JSImmediate::fromDouble): Avoid moving floats to integer
120         registers since this is very slow.
121
122 2007-10-22  Darin Adler  <darin@apple.com>
123
124         Reviewed by Eric Seidel.
125
126         - http://bugs.webkit.org/show_bug.cgi?id=15617
127           improve speed of integer conversions
128
129         Makes SunSpider 6% faster.
130
131         * kjs/JSImmediate.h: Added toInt32 and toUInt32, with separate versions for
132         32-bit and 64-bit.
133         * kjs/value.h:
134         (KJS::JSValue::getUInt32): Call JSImmediate::toUInt32.
135
136         * kjs/internal.h: Added getInt32.
137         * kjs/internal.cpp:
138         (KJS::NumberImp::getInt32): Added.
139         (KJS::NumberImp::getUInt32): Replaced with more-optimal implementation
140         stolen from JSValue.
141
142         * kjs/value.h:
143         (KJS::jsNumber): Marked ALWAYS_INLINE, because this wasn't getting
144         inlined.
145         (KJS::JSValue::getInt32): Added.
146         (KJS::JSValue::getUInt32): Changed to call the new JSImmediate::toUInt32
147         to avoid converting from float to double.
148         (KJS::JSValue::toInt32): Made inline, separated out the slow case.
149         (KJS::JSValue::toUInt32): Ditto.
150         * kjs/value.cpp:
151         (KJS::JSCell::getInt32): Added.
152         (KJS::JSValue::toInt32SlowCase): Renamed from toInt32. Changed to use the
153         new getInt32. Added a faster case for in-range numbers.
154         (KJS::JSValue::toUInt32SlowCase): Ditto.
155         (KJS::JSValue::toUInt16): Added a faster case for in-range numbers.
156
157         * JavaScriptCore.exp: Updated for changes.
158
159 2007-10-22  Adam Roben  <aroben@apple.com>
160
161         Windows build fix
162
163         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Turn off
164         warning about implicit conversion to bool.
165
166 2007-10-22  Mark Rowe  <mrowe@apple.com>
167
168         Gtk build fix.
169
170         * kjs/array_instance.cpp:
171
172 2007-10-22  Darin Adler  <darin@apple.com>
173
174         Reviewed by Maciej.
175
176         - http://bugs.webkit.org/show_bug.cgi?id=15606
177           make cut-off for sparse vs. dense arrays smarter for speed with large arrays
178
179         Makes the morph test in SunSpider 26% faster, and the overall
180         benchmark 3% faster.
181
182         This also fixes some small problems we had with the distinction
183         between nonexistent and undefined values in arrays.
184
185         * kjs/array_instance.h: Tweaked formatting and naming.
186         * kjs/array_instance.cpp: Copied from kjs/array_object.cpp.
187         (KJS::storageSize): Added. Computes the size of the storage given a vector length.
188         (KJS::increasedVectorLength): Added. Implements the rule for resizing the vector.
189         (KJS::isDenseEnoughForVector): Added.
190         (KJS::ArrayInstance::ArrayInstance): Initialize the new fields.
191         (KJS::ArrayInstance::~ArrayInstance): Since m_storage is now never 0, delete it.
192         (KJS::ArrayInstance::getItem): Updated for name changes.
193         (KJS::ArrayInstance::lengthGetter): Ditto.
194         (KJS::ArrayInstance::inlineGetOwnPropertySlot): Added. Allows both versions of
195         getOwnPropertySlot to share more code.
196         (KJS::ArrayInstance::getOwnPropertySlot): Just refactored, no code change.
197         (KJS::ArrayInstance::put): Added logic for extending the vector as long as the
198         array is dense enough. Also keep m_numValuesInVector up to date.
199         (KJS::ArrayInstance::deleteProperty): Added code to keep m_numValuesInVector
200         up to date.
201         (KJS::ArrayInstance::getPropertyNames): Fixed bug where this would omit names
202         for array indices with undefined values.
203         (KJS::ArrayInstance::increaseVectorLength): Renamed from resizeStorage. Also
204         simplified to only handle getting larger.
205         (KJS::ArrayInstance::setLength): Added code to update m_numValuesInVector, to
206         zero out the unused part of the vector and to delete the map if it's no longer
207         needed.
208         (KJS::ArrayInstance::mark): Tweaked formatting.
209         (KJS::compareByStringForQSort): Ditto.
210         (KJS::ArrayInstance::sort): Ditto.
211         (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
212         Ditto.
213         (KJS::compareWithCompareFunctionForQSort): Ditto.
214         (KJS::ArrayInstance::compactForSorting): Fixed bug where this would turn
215         undefined values into nonexistent values in some cases.
216
217         * kjs/array_object.h: Removed MAX_ARRAY_INDEX.
218         * kjs/array_object.cpp: Removed ArrayInstance. Moved to a separate file.
219
220         * JavaScriptCore.pri: Added array_instance.cpp.
221         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
222         * kjs/AllInOneFile.cpp: Ditto.
223
224 2007-10-22  Andrew Wellington  <proton@wiretapped.net>
225
226         Reviewed by Mark Rowe.
227         
228         Fix for local database support after r26879
229         Ensure that ENABLE_DATABASE and ENABLE_ICONDATABASE are correctly set
230
231         * Configurations/JavaScriptCore.xcconfig:
232
233 2007-10-22  Simon Hausmann  <hausmann@kde.org>
234
235         Reviewed by Alp.
236
237         Build fix for the non-qmake builds.
238
239         * wtf/Platform.h: Default to enabling the database features unless
240         otherwise specified. (similar to ENABLE_ICONDATABASE)
241
242 2007-10-22  Holger Freyther  <zecke@selfish.org>
243
244         Reviewed by Simon Hausmann <hausmann@kde.org>.
245
246         * Do not build testkjs as an application bundle. This is
247         needed for run-javascriptcore-tests on OSX.
248         * Also, based on r26633, allow to test the WebKit/Qt port on OSX.
249         * Set DYLD_LIBRARY_PATH if it was set in the environment. It must be set
250         as we do not have -rpath on OSX.
251
252         * kjs/testkjs.pro:
253
254 2007-10-21  Mark Rowe  <mrowe@apple.com>
255
256         Reviewed by Alp.
257
258         http://bugs.webkit.org/show_bug.cgi?id=15575
259         Bug 15575: [GTK] Implement threading using GThread
260
261         * wtf/Platform.h: Do not enable pthreads for Gtk.
262
263 2007-10-21  Mark Rowe  <mrowe@apple.com>
264
265         Reviewed by Mitz.
266
267         Fix http://bugs.webkit.org/show_bug.cgi?id=15603
268         Bug 15603: Regression(r26847): Crash when sorting an empty array from JavaScript
269
270         * kjs/array_object.cpp:
271         (KJS::freeStorage): Reinstate null-check that was removed in r26847.
272
273 2007-10-21  Darin Adler  <darin@apple.com>
274
275         - fix Windows build
276
277         * kjs/array_instance.h: Removed unused ExecState parameter.
278         * kjs/array_object.cpp:
279         (KJS::ArrayInstance::put): Ditto.
280         (KJS::ArrayInstance::setLength): Ditto.
281
282 2007-10-21  Darin Adler  <darin@apple.com>
283
284         * kjs/array_object.cpp: (KJS::ArrayInstance::put):
285         Add missing assignment that was causing regression test crash.
286
287 2007-10-21  Darin Adler  <darin@apple.com>
288
289         Reviewed by Maciej.
290
291         - http://bugs.webkit.org/show_bug.cgi?id=15585
292           speed up sparse arrays by using a custom map
293     
294         Speeds up SunSpider by 10%.
295
296         * kjs/array_object.cpp:
297         (allocateStorage): Leave room for an additional pointer.
298         (reallocateStorage): Ditto.
299         (freeStorage): Ditto.
300         (ArrayInstance::~ArrayInstance): Delete the overflow map if present.
301         (ArrayInstance::getItem): Read values from the overflow map if present.
302         Removed the check of length, since it slows down the common case.
303         (ArrayInstance::getOwnPropertySlot): Ditto. Also removed the fallback
304         to the property map.
305         (ArrayInstance::put): Write values into the overflow map as needed.
306         Also create overflow map when needed.
307         (ArrayInstance::deleteProperty): Remove values from the overflow map
308         as appropriate.
309         (ArrayInstance::getPropertyNames): Add a name for each identifier in
310         the property map. This is extremely inefficient.
311         (ArrayInstance::setLength): Remove any values in the overflow map
312         that are past the new length, as we formerly did with the property map.
313         (ArrayInstance::mark): Mark any values in the overflow map.
314         (compareByStringForQSort): Removed unneeded undefined case, since
315         compactForSorting guarantees we will have no undefined values.
316         (compareWithCompareFunctionForQSort): Ditto.
317         (ArrayInstance::compactForSorting): Copy all the values out of the
318         overflow map and destroy it.
319
320         * kjs/property_map.h: Removed now-unused getSparseArrayPropertyNames.
321         * kjs/property_map.cpp: Ditto.
322
323 2007-10-20  Darin Adler  <darin@apple.com>
324
325         Reviewed by Maciej.
326
327         - http://bugs.webkit.org/show_bug.cgi?id=15579
328           stop churning identifier reference counts copying Completion objects
329
330         * kjs/completion.h: Replace the Identifier with an Identifier*.
331         * kjs/nodes.cpp:
332         (ForInNode::execute): Update for change to Completion constructor.
333         (ContinueNode::execute): Ditto.
334         (BreakNode::execute): Ditto.
335
336 2007-10-20  Mark Rowe  <mrowe@apple.com>
337
338         Reviewed by Alp.
339
340         Gtk changes needed to enable HTML 5 client-side database storage.
341
342         * wtf/Platform.h: Have Gtk use pthreads for now.
343
344 2007-10-20  Geoffrey Garen  <ggaren@apple.com>
345
346         Reviewed by Maciej Stachowiak.
347
348         Fixed http://bugs.webkit.org/show_bug.cgi?id=15570
349         Store gathered declaration nodes in the function body node.
350         
351         This means that you only have to gather the declaration nodes the first 
352         time the function executes. Performance gain of 2.10% on SunSpider, 
353         0.90% on command-line JS iBench.
354
355         * kjs/nodes.cpp: Split declaration stack initialization code off into 
356         initializeDeclarationStacks().
357         (FunctionBodyNode::FunctionBodyNode):
358         (FunctionBodyNode::initializeDeclarationStacks):
359         (FunctionBodyNode::processDeclarations):
360
361         * kjs/nodes.h: Changed DeclarationStacks structure to hold references, 
362         since the actual Vectors are now stored either on the stack or in the 
363         function body node.
364
365 2007-10-19  Geoffrey Garen  <ggaren@apple.com>
366
367         Reviewed by Darin Adler.
368         
369         http://bugs.webkit.org/show_bug.cgi?id=15559
370         Moved processDeclarations call into FunctionBodyNode::execute
371
372         To improve encapsulation, moved processDeclarations call into
373         FunctionBodyNode::execute. Also marked processDeclarations 
374         ALWAYS_INLINE, since it has only 1 caller now. This is a .71% speedup 
375         on command-line JS iBench.
376
377         * kjs/function.cpp:
378         (KJS::FunctionImp::callAsFunction):
379         (KJS::GlobalFuncImp::callAsFunction):
380         * kjs/function.h:
381         * kjs/interpreter.cpp:
382         (KJS::Interpreter::evaluate):
383         * kjs/nodes.cpp:
384         (FunctionBodyNode::execute):
385         * kjs/nodes.h:
386
387 2007-10-19  Brady Eidson  <beidson@apple.com>
388
389         Reviewed by Sam
390
391         Queue -> Deque! and small style tweaks
392
393         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
394         * JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
395         * wtf/Deque.h: Added.
396         (WTF::DequeNode::DequeNode):
397         (WTF::Deque::Deque):
398         (WTF::Deque::~Deque):
399         (WTF::Deque::size):
400         (WTF::Deque::isEmpty):
401         (WTF::Deque::append):
402         (WTF::Deque::prepend):
403         (WTF::Deque::first):
404         (WTF::Deque::last):
405         (WTF::Deque::removeFirst):
406         (WTF::Deque::clear):
407         * wtf/Queue.h: Removed.
408
409
410 2007-10-19  Brady Eidson <beidson@apple.com>
411
412         Reviewed by Oliver
413
414         Added a simple LinkedList based Queue to wtf
415         We can make a better, more sophisticated an efficient one later, but have
416         needed one for some time, now!
417
418         * JavaScriptCore.xcodeproj/project.pbxproj:
419         * wtf/Queue.h: Added.
420         (WTF::QueueNode::QueueNode):
421         (WTF::Queue::Queue):
422         (WTF::Queue::~Queue):
423         (WTF::Queue::size):
424         (WTF::Queue::isEmpty):
425         (WTF::Queue::append):
426         (WTF::Queue::prepend):
427         (WTF::Queue::first):
428         (WTF::Queue::last):
429         (WTF::Queue::removeFirst):
430         (WTF::Queue::clear):
431
432 2007-10-19  Nikolas Zimmermann  <zimmermann@kde.org>
433
434         Reviewed by Anders.
435
436         Try to fix Qt/Win build slave, by including windows.h also on Qt/Win.
437
438         * kjs/testkjs.cpp: Change PLATFORM(WIN) to PLATFORM(WIN_OS)
439
440 2007-10-19  Simon Hausmann  <hausmann@kde.org>
441
442         Reviewed by Lars.
443
444         Fix compilation on Windows when wchar_t is a typedef instead of a native type (triggered by -Zc:wchar_t-).
445         Don't provide the wchar_t overloads then as they conflict with the unsigned short ones.
446
447         * wtf/ASCIICType.h:
448         (WTF::isASCIIAlpha):
449         (WTF::isASCIIAlphanumeric):
450         (WTF::isASCIIDigit):
451         (WTF::isASCIIHexDigit):
452         (WTF::isASCIILower):
453         (WTF::isASCIISpace):
454         (WTF::toASCIILower):
455         (WTF::toASCIIUpper):
456
457 2007-10-19  Simon Hausmann  <hausmann@kde.org>
458
459         Reviewed by Lars.
460
461         Another build fix for the windows/qt build: Apply the same fix as in revision 26686 also to kjs/config.h to disable the disallowctype feature.
462
463         * kjs/config.h:
464
465 2007-10-18  Maciej Stachowiak  <mjs@apple.com>
466
467         Reviewed by Adam.
468         
469         - use __declspec(thread) for fast thread-local storage on Windows
470         
471         - 2.2% speedup on sunspider (on Windows)
472         - 7% speedup on the string section
473         - 6% speedup on JS iBench
474         
475         - fixed <rdar://problem/5473084> PLT on Windows got 2.5% slower between r25406 and r25422
476         - fixed at least some of <rdar://5527965? i-Bench JS was 14% slower in 310A11 than 310A10
477         
478         
479         * wtf/FastMalloc.cpp:
480         (WTF::getThreadHeap):
481         (WTF::setThreadHeap):
482         (WTF::TCMalloc_ThreadCache::GetCache):
483         (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
484         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
485
486 2007-10-17  Darin Adler  <darin@apple.com>
487
488         Reviewed by Mark Rowe.
489
490         - fix http://bugs.webkit.org/show_bug.cgi?id=15543
491           <rdar://problem/5545639> REGRESSION (r26697):
492           GoogleDocs: Can't create new documents or open existing ones
493
494         Test: fast/js/regexp-non-character.html
495
496         * pcre/pcre_compile.c: (check_escape): Take out the checks for valid characters
497         in the \u sequences -- not needed and actively harmful.
498
499 2007-10-17  Anders Carlsson  <andersca@apple.com>
500
501         Reviewed by Oliver.
502
503         * wtf/Platform.h:
504         #define USE_PTHREADS on Mac.
505
506 2007-10-17  Geoffrey Garen  <ggaren@apple.com>
507
508         Reviewed by Darin Adler.
509         
510         Merged DeclaredFunctionImp into FunctionImp (the base class) because 
511         the distinction between the two was unused.
512         
513         Removed codeType() from FunctionImp because FunctionImp and its 
514         subclasses all returned FunctionCode, so it was unused, practically 
515         speaking.
516         
517         Removed a different codeType() from GlobalFuncImp because it was unused.
518         (Perhaps it was vestigial from a time when GlobalFuncImp used to 
519         inherit from FunctionImp.)
520
521         * bindings/runtime_method.cpp:
522         * bindings/runtime_method.h:
523         * kjs/function.cpp:
524         (KJS::):
525         (KJS::FunctionImp::FunctionImp):
526         (KJS::FunctionImp::callAsFunction):
527         (KJS::FunctionImp::construct):
528         (KJS::FunctionImp::execute):
529         (KJS::FunctionImp::processVarDecls):
530         * kjs/function.h:
531         (KJS::FunctionImp::implementsConstruct):
532         (KJS::FunctionImp::scope):
533         * kjs/function_object.cpp:
534         (FunctionProtoFunc::callAsFunction):
535         (FunctionObjectImp::construct):
536         * kjs/nodes.cpp:
537         (FuncDeclNode::processFuncDecl):
538         (FuncExprNode::evaluate):
539
540 2007-10-17  Adam Roben  <aroben@apple.com>
541
542         Windows build fix part 2.
543
544         Fix was by Darin, reviewed by Anders and Adam.
545
546         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add
547         FastMallocPCRE.cpp to the project, and let Visual Studio have its way
548         with the post-build step.
549         * pcre/pcre.h: Don't DLL export the entry points just because this
550         is Win32 -- this is an internal copy of PCRE and should be private.
551         * pcre/pcre_compile.c: Fix an uninitialized variable warning --
552         there's no real problem but it's better to quiet the compiler by
553         tweaking the code slightly than turn off the warning entirely.
554
555 2007-10-17  Adam Roben  <aroben@apple.com>
556
557         Windows build fix.
558
559         Reviewed by Anders.
560
561         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
562         some mismatched signed/unsigned comparison warnings.
563         * pcre/pcre_exec.c:
564         (match): #if-out some labels that don't seem to exist.
565
566 2007-10-17  Mark Rowe  <mrowe@apple.com>
567
568         Gtk build fix.
569
570         * JavaScriptCore.pri: Add FastMallocPCRE.cpp.
571         * pcre/pcre_get. #if out two functions that depend on pcre_get_stringnumber, which
572         is currently unavailable for UTF-16.
573
574 2007-10-16  Darin Adler  <darin@apple.com>
575
576         Reviewed by Geoff.
577
578         - merged PCRE changes between 6.4 and 6.5
579
580         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
581         * JavaScriptCore.xcodeproj/project.pbxproj:
582         Removed pcre_config.c, pcre_globals.c, pcre_info.c, pcre_maketables.c,
583         pcre_printint.src, pcre_refcount.c, pcre_study.c, pcre_try_flipped.c,
584         pcre_ucp_findchar.c, pcre_version.c, and ucptable.c. Added pcre_ucp_searchfuncs.c.
585
586         * pcre/AUTHORS:
587         * pcre/LICENCE:
588         * pcre/MERGING:
589         * pcre/dftables.c:
590         * pcre/pcre-config.h:
591         * pcre/pcre.h:
592         * pcre/pcre.pri:
593         * pcre/pcre_compile.c:
594         * pcre/pcre_exec.c:
595         * pcre/pcre_fullinfo.c:
596         * pcre/pcre_get.c:
597         * pcre/pcre_internal.h:
598         * pcre/pcre_maketables.c:
599         * pcre/pcre_ord2utf8.c:
600         * pcre/pcre_tables.c:
601         * pcre/pcre_ucp_searchfuncs.c: Copied from pcre/pcre_ucp_findchar.c.
602         * pcre/pcre_xclass.c:
603         * pcre/ucp.h:
604         * pcre/ucpinternal.h:
605         * pcre/ucptable.c:
606         Updated with new versions from the PCRE 6.5 release, merged with changes.
607
608         * pcre/pcre_config.c: Removed.
609         * pcre/pcre_globals.c: Removed.
610         * pcre/pcre_info.c: Removed.
611         * pcre/pcre_printint.src: Removed.
612         * pcre/pcre_refcount.c: Removed.
613         * pcre/pcre_study.c: Removed.
614         * pcre/pcre_try_flipped.c: Removed.
615         * pcre/pcre_ucp_findchar.c: Removed.
616         * pcre/pcre_version.c: Removed.
617
618 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
619
620         Reviewed by Darin Adler.
621
622         Removed KJS_VERBOSE because it was getting in the way of readability, 
623         and the messages didn't seem very helpful.
624
625         * kjs/function.cpp:
626         (KJS::FunctionImp::callAsFunction):
627         (KJS::FunctionImp::passInParameters):
628         * kjs/lookup.h:
629         (KJS::lookupPut):
630         * kjs/object.cpp:
631         (KJS::JSObject::put):
632         * kjs/value.h:
633
634 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
635
636         Reviewed by Darin Adler.
637         
638         Removed the Parameter class because it was a redundant wrapper around 
639         Identifier.
640
641         * kjs/function.cpp:
642         (KJS::FunctionImp::passInParameters):
643         (KJS::FunctionImp::getParameterName):
644         * kjs/nodes.cpp:
645         (FunctionBodyNode::addParam):
646         * kjs/nodes.h:
647         (KJS::FunctionBodyNode::):
648
649 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
650
651         Reviewed by Darin Adler.
652         
653         Global replace of assert with ASSERT.
654
655 2007-10-16  Adam Roben  <aroben@apple.com>
656
657         Make testkjs not delay-load WebKit
658
659         Soon, delay-loading WebKit will be impossible (because we will be
660         using __declspec(thread) for thread-local storage). This change
661         prepares testkjs for the future.
662
663         Reviewed by Sam.
664
665         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed WebKitInitializer,
666         added FindSafari.
667         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Don't link against
668         WebKitInitializer, don't delay-load WebKit.
669         * kjs/testkjs.cpp: Don't use WebKitInitializer.
670
671 2007-10-16  Adam Roben  <aroben@apple.com>
672
673         Updated testkjs for the rename of WebKit_debug.dll to WebKit.dll for the Debug configuration
674
675         Reviewed by Kevin McCullough.
676
677         * JavaScriptCore.vcproj/debug.vsprops: Added WebKitDLLConfigSuffix.
678         * JavaScriptCore.vcproj/debug_internal.vsprops: Ditto.
679         * JavaScriptCore.vcproj/release.vsprops: Ditto.
680         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Use
681         WebKitDLLConfigSuffix when referring to WebKit.dll, and fixed a typo
682         in the name of icuuc36[_debug].dll.
683
684 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
685
686         Reviewed by Maciej Stachowiak.
687         
688         Re-structured variable and function declaration code.
689         
690         Command-line JS iBench shows no regression.
691         
692         Here are the changes:
693
694         1. Function declarations are now processed at the same time as var 
695         declarations -- namely, immediately upon entry to an execution context. 
696         This does not match Firefox, which waits to process a function
697         declaration until the declaration's containing block executes, but it 
698         does match IE and the ECMA spec. (10.1.3 states that var and function 
699         declarations should be processed at the same time -- namely, "On 
700         entering an execution context." 12.2 states that "A Block does not 
701         define a new execution scope.")
702
703         2. Declaration processing proceeds iteratively now, rather than 
704         recursively, storing the nodes is finds in stacks. This will later 
705         facilitate an optimization to hold on to the gathered declaration nodes, 
706         rather than re-fetching them in every function call. 
707         [ http://bugs.webkit.org/show_bug.cgi?id=14868 ]
708
709         Modified these tests because they expected the incorrect Mozilla 
710         behavior described above:
711
712         * tests/mozilla/ecma_3/Function/scope-001.js:
713         * tests/mozilla/js1_5/Scope/regress-184107.js:
714
715 2007-10-16  Darin Adler  <darin@apple.com>
716
717         - try to fix the GTK build
718
719         * kjs/ustring.cpp: Include ASCIICType.h, not ASCIICtype.h.
720
721 2007-10-16  Darin Adler  <darin@apple.com>
722
723         - try to fix the Windows build
724
725         * kjs/date_object.cpp: (KJS::parseDate): A couple instances of isspace were
726         in here. Not sure why it wasn't failing elsewhere. Changed to isASCIISpace.
727
728 2007-10-16  Darin Adler  <darin@apple.com>
729
730         - try to fix the GTK build
731
732         * kjs/ustring.cpp: Include ASCIICType.h.
733
734 2007-10-16  Darin Adler  <darin@apple.com>
735
736         Reviewed by Maciej and Geoff (and looked over by Eric).
737
738         - http://bugs.webkit.org/show_bug.cgi?id=15519
739           eliminate use of <ctype.h> for processing ASCII
740
741         * wtf/ASCIICType.h: Added.
742         * wtf/DisallowCType.h: Added.
743
744         * kjs/config.h: Include DisallowCType.h.
745
746         * kjs/date_object.cpp:
747         (KJS::skipSpacesAndComments):
748         (KJS::findMonth):
749         (KJS::parseDate):
750         * kjs/function.cpp:
751         (KJS::decode):
752         * kjs/ustring.cpp:
753         (KJS::UString::toDouble):
754         Use ASCIICType.h functions instead of ctype.h ones.
755
756 2007-10-14  Maciej Stachowiak  <mjs@apple.com>
757
758         Reviewed by Darin.
759
760         - fixes for "New JavaScript benchmark"
761         http://bugs.webkit.org/show_bug.cgi?id=15515
762         
763         * kjs/testkjs.cpp:
764         (TestFunctionImp::callAsFunction): Implement "load" for compatibility
765         with SpiderMonkey.
766         (TestFunctionImp::): ditto
767         (doIt): ditto
768         (kjsmain): Drop useless --> from output.
769
770 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
771
772         Removed unnecessary #include.
773
774         * API/JSObjectRef.cpp:
775
776 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
777
778         Double-reverse build fix. My tree was out of date.
779
780         * kjs/nodes.cpp:
781         (NumberNode::evaluate):
782
783 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
784
785         Build fix.
786
787         * kjs/nodes.cpp:
788         (NumberNode::evaluate):
789
790 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
791
792         Reviewed by Darin Adler.
793         
794         Removed surprising self-named "hack" that made nested functions 
795         available as named properties of their containing functions, and placed
796         containing function objects in the scope chains of nested functions.
797         
798         There were a few reasons to remove this "hack:"
799
800         1. It contradicted FF, IE, and the ECMA spec.
801
802         2. It incurred a performance penalty, since merely parsing a function 
803         required parsing its body for nested functions (and so on).
804
805         3. SVN history contains no explanation for why it was added. It was just
806         legacy code in a large merge a long, long time ago.
807
808         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
809
810         * kjs/nodes.cpp:
811         (FuncDeclNode::processFuncDecl):
812
813 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
814
815         Reviewed by Darin Adler.
816         
817         Removed the concept of AnonymousCode. It was unused, and it doesn't
818         exist in the ECMA spec.
819         
820         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
821
822         * kjs/Context.cpp:
823         (KJS::Context::Context):
824         * kjs/function.h:
825         (KJS::):
826         * kjs/nodes.cpp:
827         (ReturnNode::execute):
828
829 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
830
831         Reviewed by Darin Adler.
832         
833         Made function parameters DontDelete. This matches FF and the vague
834         description in ECMA 10.1.3. It's also required in order to make
835         symbol table based lookup of function parameters valid. (If the 
836         parameters aren't DontDelete, you can't guarantee that you'll find
837         them later in the symbol table.)
838
839         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
840
841         * kjs/function.cpp:
842         (KJS::FunctionImp::passInParameters):
843
844 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
845
846         Reviewed by Maciej Stachowiak.
847         
848         Some Vector optimizations. These are especially important when using
849         Vector as a stack for implementing recursive algorithms iteratively.
850         
851         [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
852
853         1. Added shrink(), which is a version of resize() that you can call
854         to save a branch / improve code generation and inlining when you know 
855         that the vector is not getting bigger.
856         
857         2. Changed subclassing relationship in VectorBuffer to remove a call to
858         fastFree() in the destructor for the inlineCapacity != 0 template
859         specialization. This brings inline Vectors one step closer to true
860         stack-allocated arrays.
861         
862         Also changed abort() to CRASH(), since the latter works better.
863
864         * wtf/Vector.h:
865         (WTF::VectorBufferBase::allocateBuffer):
866         (WTF::VectorBufferBase::deallocateBuffer):
867         (WTF::VectorBufferBase::VectorBufferBase):
868         (WTF::VectorBufferBase::~VectorBufferBase):
869         (WTF::):
870         (WTF::VectorBuffer::VectorBuffer):
871         (WTF::VectorBuffer::~VectorBuffer):
872         (WTF::VectorBuffer::deallocateBuffer):
873         (WTF::VectorBuffer::releaseBuffer):
874         (WTF::Vector::clear):
875         (WTF::Vector::removeLast):
876         (WTF::::operator):
877         (WTF::::fill):
878         (WTF::::shrink):
879
880 2007-10-12  Geoffrey Garen  <ggaren@apple.com>
881
882         Reviewed by Maciej Stachowiak.
883         
884         Fixed http://bugs.webkit.org/show_bug.cgi?id=15490
885         Iteration statements sometimes incorrectly evaluate to the empty value 
886         (KDE r670547). 
887         
888         [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
889         
890         This patch is a merge of KDE r670547, with substantial modification 
891         for performance.
892         
893         It fixes do-while statements to evaluate to a value. (They used
894         to evaluate to the empty value in all cases.) 
895
896         It also fixes SourceElementsNode to maintain the value of abnormal 
897         completions like "break" and "continue."
898         
899         It also re-works the main execution loop in SourceElementsNode so that
900         it (1) makes a little more sense and (2) avoids unnecessary work. This 
901         is a .28% speedup on command-line JS iBench.
902
903         * kjs/nodes.cpp:
904         (DoWhileNode::execute):
905         (SourceElementsNode::execute):
906
907 2007-10-15  Simon Hausmann  <hausmann@kde.org>
908
909         Reviewed by Lars.
910
911         Fix compilation with gcc 4.3 by including 'limits' due to the use of std::numeric_limits.
912
913         * wtf/HashTraits.h:
914
915 2007-10-5  Kevin Ollivier  <kevino@theolliviers.com>
916  
917         Reviewed by Adam.
918         
919         Add support for MSVC7, and fix cases where PLATFORM(WIN) should
920         be PLATFORM(WIN_OS) for other ports building on Windows.
921  
922         * kjs/DateMath.cpp:
923         (KJS::getDSTOffsetSimple):
924         * kjs/JSImmediate.h:
925         * wtf/Assertions.cpp:
926         * wtf/Assertions.h:
927         * wtf/Platform.h:
928         * wtf/StringExtras.h:
929         (snprintf):
930         (vsnprintf):
931
932 2007-10-14  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
933
934         Reviewed by Darin.
935
936         Adds NegateNode optimization from KJS. The relevant revision in KDE
937         is 666736.
938
939         * kjs/grammar.y:
940         * kjs/nodes.cpp:
941         (NumberNode::evaluate):
942         * kjs/nodes.h:
943         (KJS::Node::):
944         (KJS::NumberNode::):
945         * kjs/nodes2string.cpp:
946         (NumberNode::streamTo):
947
948 2007-10-14  Jason Foreman  <jason@threeve.org>
949
950         Reviewed by Maciej.
951
952         Fix http://bugs.webkit.org/show_bug.cgi?id=15145
953         
954         Ensure that if adjusting n to minimize the difference of n*intPow10(e-p+1) to x,
955         that the property n < intPow10(p) is maintained.
956
957         * kjs/number_object.cpp:
958         (NumberProtoFunc::callAsFunction):
959
960 == Rolled over to ChangeLog-2007-10-14 ==