2007-10-21 Mark Rowe <mrowe@apple.com>
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2007-10-21  Mark Rowe  <mrowe@apple.com>
2
3         Reviewed by Mitz.
4
5         Fix http://bugs.webkit.org/show_bug.cgi?id=15603
6         Bug 15603: Regression(r26847): Crash when sorting an empty array from JavaScript
7
8         * kjs/array_object.cpp:
9         (KJS::freeStorage): Reinstate null-check that was removed in r26847.
10
11 2007-10-21  Darin Adler  <darin@apple.com>
12
13         - fix Windows build
14
15         * kjs/array_instance.h: Removed unused ExecState parameter.
16         * kjs/array_object.cpp:
17         (KJS::ArrayInstance::put): Ditto.
18         (KJS::ArrayInstance::setLength): Ditto.
19
20 2007-10-21  Darin Adler  <darin@apple.com>
21
22         * kjs/array_object.cpp: (KJS::ArrayInstance::put):
23         Add missing assignment that was causing regression test crash.
24
25 2007-10-21  Darin Adler  <darin@apple.com>
26
27         Reviewed by Maciej.
28
29         - http://bugs.webkit.org/show_bug.cgi?id=15585
30           speed up sparse arrays by using a custom map
31     
32         Speeds up SunSpider by 10%.
33
34         * kjs/array_object.cpp:
35         (allocateStorage): Leave room for an additional pointer.
36         (reallocateStorage): Ditto.
37         (freeStorage): Ditto.
38         (ArrayInstance::~ArrayInstance): Delete the overflow map if present.
39         (ArrayInstance::getItem): Read values from the overflow map if present.
40         Removed the check of length, since it slows down the common case.
41         (ArrayInstance::getOwnPropertySlot): Ditto. Also removed the fallback
42         to the property map.
43         (ArrayInstance::put): Write values into the overflow map as needed.
44         Also create overflow map when needed.
45         (ArrayInstance::deleteProperty): Remove values from the overflow map
46         as appropriate.
47         (ArrayInstance::getPropertyNames): Add a name for each identifier in
48         the property map. This is extremely inefficient.
49         (ArrayInstance::setLength): Remove any values in the overflow map
50         that are past the new length, as we formerly did with the property map.
51         (ArrayInstance::mark): Mark any values in the overflow map.
52         (compareByStringForQSort): Removed unneeded undefined case, since
53         compactForSorting guarantees we will have no undefined values.
54         (compareWithCompareFunctionForQSort): Ditto.
55         (ArrayInstance::compactForSorting): Copy all the values out of the
56         overflow map and destroy it.
57
58         * kjs/property_map.h: Removed now-unused getSparseArrayPropertyNames.
59         * kjs/property_map.cpp: Ditto.
60
61 2007-10-20  Darin Adler  <darin@apple.com>
62
63         Reviewed by Maciej.
64
65         - http://bugs.webkit.org/show_bug.cgi?id=15579
66           stop churning identifier reference counts copying Completion objects
67
68         * kjs/completion.h: Replace the Identifier with an Identifier*.
69         * kjs/nodes.cpp:
70         (ForInNode::execute): Update for change to Completion constructor.
71         (ContinueNode::execute): Ditto.
72         (BreakNode::execute): Ditto.
73
74 2007-10-20  Mark Rowe  <mrowe@apple.com>
75
76         Reviewed by Alp.
77
78         Gtk changes needed to enable HTML 5 client-side database storage.
79
80         * wtf/Platform.h: Have Gtk use pthreads for now.
81
82 2007-10-20  Geoffrey Garen  <ggaren@apple.com>
83
84         Reviewed by Maciej Stachowiak.
85
86         Fixed http://bugs.webkit.org/show_bug.cgi?id=15570
87         Store gathered declaration nodes in the function body node.
88         
89         This means that you only have to gather the declaration nodes the first 
90         time the function executes. Performance gain of 2.10% on SunSpider, 
91         0.90% on command-line JS iBench.
92
93         * kjs/nodes.cpp: Split declaration stack initialization code off into 
94         initializeDeclarationStacks().
95         (FunctionBodyNode::FunctionBodyNode):
96         (FunctionBodyNode::initializeDeclarationStacks):
97         (FunctionBodyNode::processDeclarations):
98
99         * kjs/nodes.h: Changed DeclarationStacks structure to hold references, 
100         since the actual Vectors are now stored either on the stack or in the 
101         function body node.
102
103 2007-10-19  Geoffrey Garen  <ggaren@apple.com>
104
105         Reviewed by Darin Adler.
106         
107         http://bugs.webkit.org/show_bug.cgi?id=15559
108         Moved processDeclarations call into FunctionBodyNode::execute
109
110         To improve encapsulation, moved processDeclarations call into
111         FunctionBodyNode::execute. Also marked processDeclarations 
112         ALWAYS_INLINE, since it has only 1 caller now. This is a .71% speedup 
113         on command-line JS iBench.
114
115         * kjs/function.cpp:
116         (KJS::FunctionImp::callAsFunction):
117         (KJS::GlobalFuncImp::callAsFunction):
118         * kjs/function.h:
119         * kjs/interpreter.cpp:
120         (KJS::Interpreter::evaluate):
121         * kjs/nodes.cpp:
122         (FunctionBodyNode::execute):
123         * kjs/nodes.h:
124
125 2007-10-19  Brady Eidson  <beidson@apple.com>
126
127         Reviewed by Sam
128
129         Queue -> Deque! and small style tweaks
130
131         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
132         * JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
133         * wtf/Deque.h: Added.
134         (WTF::DequeNode::DequeNode):
135         (WTF::Deque::Deque):
136         (WTF::Deque::~Deque):
137         (WTF::Deque::size):
138         (WTF::Deque::isEmpty):
139         (WTF::Deque::append):
140         (WTF::Deque::prepend):
141         (WTF::Deque::first):
142         (WTF::Deque::last):
143         (WTF::Deque::removeFirst):
144         (WTF::Deque::clear):
145         * wtf/Queue.h: Removed.
146
147
148 2007-10-19  Brady Eidson <beidson@apple.com>
149
150         Reviewed by Oliver
151
152         Added a simple LinkedList based Queue to wtf
153         We can make a better, more sophisticated an efficient one later, but have
154         needed one for some time, now!
155
156         * JavaScriptCore.xcodeproj/project.pbxproj:
157         * wtf/Queue.h: Added.
158         (WTF::QueueNode::QueueNode):
159         (WTF::Queue::Queue):
160         (WTF::Queue::~Queue):
161         (WTF::Queue::size):
162         (WTF::Queue::isEmpty):
163         (WTF::Queue::append):
164         (WTF::Queue::prepend):
165         (WTF::Queue::first):
166         (WTF::Queue::last):
167         (WTF::Queue::removeFirst):
168         (WTF::Queue::clear):
169
170 2007-10-19  Nikolas Zimmermann  <zimmermann@kde.org>
171
172         Reviewed by Anders.
173
174         Try to fix Qt/Win build slave, by including windows.h also on Qt/Win.
175
176         * kjs/testkjs.cpp: Change PLATFORM(WIN) to PLATFORM(WIN_OS)
177
178 2007-10-19  Simon Hausmann  <hausmann@kde.org>
179
180         Reviewed by Lars.
181
182         Fix compilation on Windows when wchar_t is a typedef instead of a native type (triggered by -Zc:wchar_t-).
183         Don't provide the wchar_t overloads then as they conflict with the unsigned short ones.
184
185         * wtf/ASCIICType.h:
186         (WTF::isASCIIAlpha):
187         (WTF::isASCIIAlphanumeric):
188         (WTF::isASCIIDigit):
189         (WTF::isASCIIHexDigit):
190         (WTF::isASCIILower):
191         (WTF::isASCIISpace):
192         (WTF::toASCIILower):
193         (WTF::toASCIIUpper):
194
195 2007-10-19  Simon Hausmann  <hausmann@kde.org>
196
197         Reviewed by Lars.
198
199         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.
200
201         * kjs/config.h:
202
203 2007-10-18  Maciej Stachowiak  <mjs@apple.com>
204
205         Reviewed by Adam.
206         
207         - use __declspec(thread) for fast thread-local storage on Windows
208         
209         - 2.2% speedup on sunspider (on Windows)
210         - 7% speedup on the string section
211         - 6% speedup on JS iBench
212         
213         - fixed <rdar://problem/5473084> PLT on Windows got 2.5% slower between r25406 and r25422
214         - fixed at least some of <rdar://5527965? i-Bench JS was 14% slower in 310A11 than 310A10
215         
216         
217         * wtf/FastMalloc.cpp:
218         (WTF::getThreadHeap):
219         (WTF::setThreadHeap):
220         (WTF::TCMalloc_ThreadCache::GetCache):
221         (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
222         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
223
224 2007-10-17  Darin Adler  <darin@apple.com>
225
226         Reviewed by Mark Rowe.
227
228         - fix http://bugs.webkit.org/show_bug.cgi?id=15543
229           <rdar://problem/5545639> REGRESSION (r26697):
230           GoogleDocs: Can't create new documents or open existing ones
231
232         Test: fast/js/regexp-non-character.html
233
234         * pcre/pcre_compile.c: (check_escape): Take out the checks for valid characters
235         in the \u sequences -- not needed and actively harmful.
236
237 2007-10-17  Anders Carlsson  <andersca@apple.com>
238
239         Reviewed by Oliver.
240
241         * wtf/Platform.h:
242         #define USE_PTHREADS on Mac.
243
244 2007-10-17  Geoffrey Garen  <ggaren@apple.com>
245
246         Reviewed by Darin Adler.
247         
248         Merged DeclaredFunctionImp into FunctionImp (the base class) because 
249         the distinction between the two was unused.
250         
251         Removed codeType() from FunctionImp because FunctionImp and its 
252         subclasses all returned FunctionCode, so it was unused, practically 
253         speaking.
254         
255         Removed a different codeType() from GlobalFuncImp because it was unused.
256         (Perhaps it was vestigial from a time when GlobalFuncImp used to 
257         inherit from FunctionImp.)
258
259         * bindings/runtime_method.cpp:
260         * bindings/runtime_method.h:
261         * kjs/function.cpp:
262         (KJS::):
263         (KJS::FunctionImp::FunctionImp):
264         (KJS::FunctionImp::callAsFunction):
265         (KJS::FunctionImp::construct):
266         (KJS::FunctionImp::execute):
267         (KJS::FunctionImp::processVarDecls):
268         * kjs/function.h:
269         (KJS::FunctionImp::implementsConstruct):
270         (KJS::FunctionImp::scope):
271         * kjs/function_object.cpp:
272         (FunctionProtoFunc::callAsFunction):
273         (FunctionObjectImp::construct):
274         * kjs/nodes.cpp:
275         (FuncDeclNode::processFuncDecl):
276         (FuncExprNode::evaluate):
277
278 2007-10-17  Adam Roben  <aroben@apple.com>
279
280         Windows build fix part 2.
281
282         Fix was by Darin, reviewed by Anders and Adam.
283
284         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add
285         FastMallocPCRE.cpp to the project, and let Visual Studio have its way
286         with the post-build step.
287         * pcre/pcre.h: Don't DLL export the entry points just because this
288         is Win32 -- this is an internal copy of PCRE and should be private.
289         * pcre/pcre_compile.c: Fix an uninitialized variable warning --
290         there's no real problem but it's better to quiet the compiler by
291         tweaking the code slightly than turn off the warning entirely.
292
293 2007-10-17  Adam Roben  <aroben@apple.com>
294
295         Windows build fix.
296
297         Reviewed by Anders.
298
299         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
300         some mismatched signed/unsigned comparison warnings.
301         * pcre/pcre_exec.c:
302         (match): #if-out some labels that don't seem to exist.
303
304 2007-10-17  Mark Rowe  <mrowe@apple.com>
305
306         Gtk build fix.
307
308         * JavaScriptCore.pri: Add FastMallocPCRE.cpp.
309         * pcre/pcre_get. #if out two functions that depend on pcre_get_stringnumber, which
310         is currently unavailable for UTF-16.
311
312 2007-10-16  Darin Adler  <darin@apple.com>
313
314         Reviewed by Geoff.
315
316         - merged PCRE changes between 6.4 and 6.5
317
318         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
319         * JavaScriptCore.xcodeproj/project.pbxproj:
320         Removed pcre_config.c, pcre_globals.c, pcre_info.c, pcre_maketables.c,
321         pcre_printint.src, pcre_refcount.c, pcre_study.c, pcre_try_flipped.c,
322         pcre_ucp_findchar.c, pcre_version.c, and ucptable.c. Added pcre_ucp_searchfuncs.c.
323
324         * pcre/AUTHORS:
325         * pcre/LICENCE:
326         * pcre/MERGING:
327         * pcre/dftables.c:
328         * pcre/pcre-config.h:
329         * pcre/pcre.h:
330         * pcre/pcre.pri:
331         * pcre/pcre_compile.c:
332         * pcre/pcre_exec.c:
333         * pcre/pcre_fullinfo.c:
334         * pcre/pcre_get.c:
335         * pcre/pcre_internal.h:
336         * pcre/pcre_maketables.c:
337         * pcre/pcre_ord2utf8.c:
338         * pcre/pcre_tables.c:
339         * pcre/pcre_ucp_searchfuncs.c: Copied from pcre/pcre_ucp_findchar.c.
340         * pcre/pcre_xclass.c:
341         * pcre/ucp.h:
342         * pcre/ucpinternal.h:
343         * pcre/ucptable.c:
344         Updated with new versions from the PCRE 6.5 release, merged with changes.
345
346         * pcre/pcre_config.c: Removed.
347         * pcre/pcre_globals.c: Removed.
348         * pcre/pcre_info.c: Removed.
349         * pcre/pcre_printint.src: Removed.
350         * pcre/pcre_refcount.c: Removed.
351         * pcre/pcre_study.c: Removed.
352         * pcre/pcre_try_flipped.c: Removed.
353         * pcre/pcre_ucp_findchar.c: Removed.
354         * pcre/pcre_version.c: Removed.
355
356 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
357
358         Reviewed by Darin Adler.
359
360         Removed KJS_VERBOSE because it was getting in the way of readability, 
361         and the messages didn't seem very helpful.
362
363         * kjs/function.cpp:
364         (KJS::FunctionImp::callAsFunction):
365         (KJS::FunctionImp::passInParameters):
366         * kjs/lookup.h:
367         (KJS::lookupPut):
368         * kjs/object.cpp:
369         (KJS::JSObject::put):
370         * kjs/value.h:
371
372 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
373
374         Reviewed by Darin Adler.
375         
376         Removed the Parameter class because it was a redundant wrapper around 
377         Identifier.
378
379         * kjs/function.cpp:
380         (KJS::FunctionImp::passInParameters):
381         (KJS::FunctionImp::getParameterName):
382         * kjs/nodes.cpp:
383         (FunctionBodyNode::addParam):
384         * kjs/nodes.h:
385         (KJS::FunctionBodyNode::):
386
387 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
388
389         Reviewed by Darin Adler.
390         
391         Global replace of assert with ASSERT.
392
393 2007-10-16  Adam Roben  <aroben@apple.com>
394
395         Make testkjs not delay-load WebKit
396
397         Soon, delay-loading WebKit will be impossible (because we will be
398         using __declspec(thread) for thread-local storage). This change
399         prepares testkjs for the future.
400
401         Reviewed by Sam.
402
403         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed WebKitInitializer,
404         added FindSafari.
405         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Don't link against
406         WebKitInitializer, don't delay-load WebKit.
407         * kjs/testkjs.cpp: Don't use WebKitInitializer.
408
409 2007-10-16  Adam Roben  <aroben@apple.com>
410
411         Updated testkjs for the rename of WebKit_debug.dll to WebKit.dll for the Debug configuration
412
413         Reviewed by Kevin McCullough.
414
415         * JavaScriptCore.vcproj/debug.vsprops: Added WebKitDLLConfigSuffix.
416         * JavaScriptCore.vcproj/debug_internal.vsprops: Ditto.
417         * JavaScriptCore.vcproj/release.vsprops: Ditto.
418         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Use
419         WebKitDLLConfigSuffix when referring to WebKit.dll, and fixed a typo
420         in the name of icuuc36[_debug].dll.
421
422 2007-10-16  Geoffrey Garen  <ggaren@apple.com>
423
424         Reviewed by Maciej Stachowiak.
425         
426         Re-structured variable and function declaration code.
427         
428         Command-line JS iBench shows no regression.
429         
430         Here are the changes:
431
432         1. Function declarations are now processed at the same time as var 
433         declarations -- namely, immediately upon entry to an execution context. 
434         This does not match Firefox, which waits to process a function
435         declaration until the declaration's containing block executes, but it 
436         does match IE and the ECMA spec. (10.1.3 states that var and function 
437         declarations should be processed at the same time -- namely, "On 
438         entering an execution context." 12.2 states that "A Block does not 
439         define a new execution scope.")
440
441         2. Declaration processing proceeds iteratively now, rather than 
442         recursively, storing the nodes is finds in stacks. This will later 
443         facilitate an optimization to hold on to the gathered declaration nodes, 
444         rather than re-fetching them in every function call. 
445         [ http://bugs.webkit.org/show_bug.cgi?id=14868 ]
446
447         Modified these tests because they expected the incorrect Mozilla 
448         behavior described above:
449
450         * tests/mozilla/ecma_3/Function/scope-001.js:
451         * tests/mozilla/js1_5/Scope/regress-184107.js:
452
453 2007-10-16  Darin Adler  <darin@apple.com>
454
455         - try to fix the GTK build
456
457         * kjs/ustring.cpp: Include ASCIICType.h, not ASCIICtype.h.
458
459 2007-10-16  Darin Adler  <darin@apple.com>
460
461         - try to fix the Windows build
462
463         * kjs/date_object.cpp: (KJS::parseDate): A couple instances of isspace were
464         in here. Not sure why it wasn't failing elsewhere. Changed to isASCIISpace.
465
466 2007-10-16  Darin Adler  <darin@apple.com>
467
468         - try to fix the GTK build
469
470         * kjs/ustring.cpp: Include ASCIICType.h.
471
472 2007-10-16  Darin Adler  <darin@apple.com>
473
474         Reviewed by Maciej and Geoff (and looked over by Eric).
475
476         - http://bugs.webkit.org/show_bug.cgi?id=15519
477           eliminate use of <ctype.h> for processing ASCII
478
479         * wtf/ASCIICType.h: Added.
480         * wtf/DisallowCType.h: Added.
481
482         * kjs/config.h: Include DisallowCType.h.
483
484         * kjs/date_object.cpp:
485         (KJS::skipSpacesAndComments):
486         (KJS::findMonth):
487         (KJS::parseDate):
488         * kjs/function.cpp:
489         (KJS::decode):
490         * kjs/ustring.cpp:
491         (KJS::UString::toDouble):
492         Use ASCIICType.h functions instead of ctype.h ones.
493
494 2007-10-14  Maciej Stachowiak  <mjs@apple.com>
495
496         Reviewed by Darin.
497
498         - fixes for "New JavaScript benchmark"
499         http://bugs.webkit.org/show_bug.cgi?id=15515
500         
501         * kjs/testkjs.cpp:
502         (TestFunctionImp::callAsFunction): Implement "load" for compatibility
503         with SpiderMonkey.
504         (TestFunctionImp::): ditto
505         (doIt): ditto
506         (kjsmain): Drop useless --> from output.
507
508 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
509
510         Removed unnecessary #include.
511
512         * API/JSObjectRef.cpp:
513
514 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
515
516         Double-reverse build fix. My tree was out of date.
517
518         * kjs/nodes.cpp:
519         (NumberNode::evaluate):
520
521 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
522
523         Build fix.
524
525         * kjs/nodes.cpp:
526         (NumberNode::evaluate):
527
528 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
529
530         Reviewed by Darin Adler.
531         
532         Removed surprising self-named "hack" that made nested functions 
533         available as named properties of their containing functions, and placed
534         containing function objects in the scope chains of nested functions.
535         
536         There were a few reasons to remove this "hack:"
537
538         1. It contradicted FF, IE, and the ECMA spec.
539
540         2. It incurred a performance penalty, since merely parsing a function 
541         required parsing its body for nested functions (and so on).
542
543         3. SVN history contains no explanation for why it was added. It was just
544         legacy code in a large merge a long, long time ago.
545
546         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
547
548         * kjs/nodes.cpp:
549         (FuncDeclNode::processFuncDecl):
550
551 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
552
553         Reviewed by Darin Adler.
554         
555         Removed the concept of AnonymousCode. It was unused, and it doesn't
556         exist in the ECMA spec.
557         
558         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
559
560         * kjs/Context.cpp:
561         (KJS::Context::Context):
562         * kjs/function.h:
563         (KJS::):
564         * kjs/nodes.cpp:
565         (ReturnNode::execute):
566
567 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
568
569         Reviewed by Darin Adler.
570         
571         Made function parameters DontDelete. This matches FF and the vague
572         description in ECMA 10.1.3. It's also required in order to make
573         symbol table based lookup of function parameters valid. (If the 
574         parameters aren't DontDelete, you can't guarantee that you'll find
575         them later in the symbol table.)
576
577         [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
578
579         * kjs/function.cpp:
580         (KJS::FunctionImp::passInParameters):
581
582 2007-10-15  Geoffrey Garen  <ggaren@apple.com>
583
584         Reviewed by Maciej Stachowiak.
585         
586         Some Vector optimizations. These are especially important when using
587         Vector as a stack for implementing recursive algorithms iteratively.
588         
589         [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
590
591         1. Added shrink(), which is a version of resize() that you can call
592         to save a branch / improve code generation and inlining when you know 
593         that the vector is not getting bigger.
594         
595         2. Changed subclassing relationship in VectorBuffer to remove a call to
596         fastFree() in the destructor for the inlineCapacity != 0 template
597         specialization. This brings inline Vectors one step closer to true
598         stack-allocated arrays.
599         
600         Also changed abort() to CRASH(), since the latter works better.
601
602         * wtf/Vector.h:
603         (WTF::VectorBufferBase::allocateBuffer):
604         (WTF::VectorBufferBase::deallocateBuffer):
605         (WTF::VectorBufferBase::VectorBufferBase):
606         (WTF::VectorBufferBase::~VectorBufferBase):
607         (WTF::):
608         (WTF::VectorBuffer::VectorBuffer):
609         (WTF::VectorBuffer::~VectorBuffer):
610         (WTF::VectorBuffer::deallocateBuffer):
611         (WTF::VectorBuffer::releaseBuffer):
612         (WTF::Vector::clear):
613         (WTF::Vector::removeLast):
614         (WTF::::operator):
615         (WTF::::fill):
616         (WTF::::shrink):
617
618 2007-10-12  Geoffrey Garen  <ggaren@apple.com>
619
620         Reviewed by Maciej Stachowiak.
621         
622         Fixed http://bugs.webkit.org/show_bug.cgi?id=15490
623         Iteration statements sometimes incorrectly evaluate to the empty value 
624         (KDE r670547). 
625         
626         [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ]
627         
628         This patch is a merge of KDE r670547, with substantial modification 
629         for performance.
630         
631         It fixes do-while statements to evaluate to a value. (They used
632         to evaluate to the empty value in all cases.) 
633
634         It also fixes SourceElementsNode to maintain the value of abnormal 
635         completions like "break" and "continue."
636         
637         It also re-works the main execution loop in SourceElementsNode so that
638         it (1) makes a little more sense and (2) avoids unnecessary work. This 
639         is a .28% speedup on command-line JS iBench.
640
641         * kjs/nodes.cpp:
642         (DoWhileNode::execute):
643         (SourceElementsNode::execute):
644
645 2007-10-15  Simon Hausmann  <hausmann@kde.org>
646
647         Reviewed by Lars.
648
649         Fix compilation with gcc 4.3 by including 'limits' due to the use of std::numeric_limits.
650
651         * wtf/HashTraits.h:
652
653 2007-10-5  Kevin Ollivier  <kevino@theolliviers.com>
654  
655         Reviewed by Adam.
656         
657         Add support for MSVC7, and fix cases where PLATFORM(WIN) should
658         be PLATFORM(WIN_OS) for other ports building on Windows.
659  
660         * kjs/DateMath.cpp:
661         (KJS::getDSTOffsetSimple):
662         * kjs/JSImmediate.h:
663         * wtf/Assertions.cpp:
664         * wtf/Assertions.h:
665         * wtf/Platform.h:
666         * wtf/StringExtras.h:
667         (snprintf):
668         (vsnprintf):
669
670 2007-10-14  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
671
672         Reviewed by Darin.
673
674         Adds NegateNode optimization from KJS. The relevant revision in KDE
675         is 666736.
676
677         * kjs/grammar.y:
678         * kjs/nodes.cpp:
679         (NumberNode::evaluate):
680         * kjs/nodes.h:
681         (KJS::Node::):
682         (KJS::NumberNode::):
683         * kjs/nodes2string.cpp:
684         (NumberNode::streamTo):
685
686 2007-10-14  Jason Foreman  <jason@threeve.org>
687
688         Reviewed by Maciej.
689
690         Fix http://bugs.webkit.org/show_bug.cgi?id=15145
691         
692         Ensure that if adjusting n to minimize the difference of n*intPow10(e-p+1) to x,
693         that the property n < intPow10(p) is maintained.
694
695         * kjs/number_object.cpp:
696         (NumberProtoFunc::callAsFunction):
697
698 == Rolled over to ChangeLog-2007-10-14 ==