2008-03-06 Alp Toker <alp@atoker.com>
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2008-03-06  Alp Toker  <alp@atoker.com>
2
3         Fix the build fix in r30845 to support out-of-tree builds.
4
5         * GNUmakefile.am:
6
7 2008-03-06  Steve Falkenburg  <sfalken@apple.com>
8
9         Build fix.
10
11         * wtf/ThreadingWin.cpp:
12         (WTF::ThreadCondition::timedWait):
13
14 2008-03-06  Darin Adler  <darin@apple.com>
15
16         - another small step towards fixing the Qt build
17
18         * JavaScriptCore.pri: Remove more references to the now-obsolete bindings directory.
19
20 2008-03-06  Darin Adler  <darin@apple.com>
21
22         - a small step towards fixing the Qt build
23
24         * JavaScriptCore.pri: Remove references to files no longer present in JavaScriptCore/bindings.
25
26 2008-03-06  Brady Eidson  <beidson@apple.com>
27
28         Gtk Build fix
29
30         * wtf/ThreadingGtk.cpp:
31         (WTF::ThreadCondition::timedWait):
32
33 2008-03-06  Alexey Proskuryakov  <ap@webkit.org>
34
35         Wx build fix.
36
37         * wtf/unicode/icu/CollatorICU.cpp:
38         (WTF::Collator::userDefault): Put ICU workaround under both PLATFORM(DARWIN) and
39         PLATFORM(CF) checks, so that each port can decide if it wants to use CF on Mac for it.
40
41 2008-03-06  Brady Eidson <beidson@apple.com>
42
43         Reviewed by Darin
44
45         Add a timedWait() method to ThreadCondition
46
47         * JavaScriptCore.exp:
48
49         * wtf/Threading.h:
50
51         * wtf/ThreadingGtk.cpp:
52         (WTF::ThreadCondition::timedWait):
53
54         * wtf/ThreadingNone.cpp:
55         (WTF::ThreadCondition::timedWait):
56
57         * wtf/ThreadingPthreads.cpp:
58         (WTF::ThreadCondition::timedWait):
59
60         * wtf/ThreadingWin.cpp:
61         (WTF::ThreadCondition::timedWait): Needs implementation
62
63 2008-03-06  Alexey Proskuryakov  <ap@webkit.org>
64
65         More build fixes.
66
67         * jscore.bkl: Add the wtf/unicode directory.
68         * wtf/unicode/CollatorDefault.cpp:
69         (WTF::Collator::userDefault): Use a constructor that does exist.
70         * wtf/unicode/icu/CollatorICU.cpp: Mac build fix for case-sensitive file systems.
71
72 2008-03-06  Darin Adler  <darin@apple.com>
73
74         - try to fix the Qt build
75
76         * JavaScriptCore.pri: Add the wtf/unicode directory.
77
78 2008-03-06  Darin Adler  <darin@apple.com>
79
80         - try to fix the GTK build
81
82         * GNUmakefile.am: Add a -I for the wtf/unicode directory.
83
84 2008-03-06  Darin Adler  <darin@apple.com>
85
86         - try to fix the Mac build
87
88         * icu/unicode/parseerr.h: Copied from ../WebCore/icu/unicode/parseerr.h.
89         * icu/unicode/ucol.h: Copied from ../WebCore/icu/unicode/ucol.h.
90         * icu/unicode/uloc.h: Copied from ../WebCore/icu/unicode/uloc.h.
91         * icu/unicode/unorm.h: Copied from ../WebCore/icu/unicode/unorm.h.
92         * icu/unicode/uset.h: Copied from ../WebCore/icu/unicode/uset.h.
93
94 2008-03-06  Alexey Proskuryakov  <ap@webkit.org>
95
96         Reviewed by Darin.
97
98         <rdar://problem/5687269> Need to create a Collator abstraction for WebCore and JavaScriptCore
99
100         * wtf/Threading.h:
101         (WTF::initializeThreading):
102         * wtf/ThreadingGtk.cpp:
103         (WTF::initializeThreading):
104         * wtf/ThreadingNone.cpp:
105         * wtf/ThreadingPthreads.cpp:
106         * wtf/ThreadingWin.cpp:
107         Added AtomicallyInitializedStatic.
108
109         * kjs/string_object.cpp: (KJS::localeCompare): Changed to use Collator.
110
111         * GNUmakefile.am:
112         * JavaScriptCore.exp:
113         * JavaScriptCore.pri:
114         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
115         * JavaScriptCore.xcodeproj/project.pbxproj:
116         * JavaScriptCoreSources.bkl:
117         Added new fiiles to projects.
118
119         * wtf/unicode/Collator.h: Added.
120         (WTF::Collator::):
121         * wtf/unicode/CollatorDefault.cpp: Added.
122         (WTF::Collator::Collator):
123         (WTF::Collator::~Collator):
124         (WTF::Collator::setOrderLowerFirst):
125         (WTF::Collator::collate):
126         * wtf/unicode/icu/CollatorICU.cpp: Added.
127         (WTF::cachedCollatorMutex):
128         (WTF::Collator::Collator):
129         (WTF::Collator::~Collator):
130         (WTF::Collator::setOrderLowerFirst):
131         (WTF::Collator::collate):
132         (WTF::Collator::createCollator):
133         (WTF::Collator::releaseCollator):
134
135 2008-03-05  Kevin Ollivier  <kevino@theolliviers.com>
136
137         Fix the wx build after the bindings move.
138
139         * JavaScriptCoreSources.bkl:
140         * jscore.bkl:
141
142 2008-03-05  Alp Toker  <alp@atoker.com>
143
144         GTK+ build fix for breakage introduced in r30800.
145
146         Track moved bridge sources from JavaScriptCore to WebCore.
147
148         * GNUmakefile.am:
149
150 2008-03-05  Brent Fulgham  <bfulgham@gmail.com>
151
152         Reviewed by Adam Roben.
153
154         Remove definition of WTF_USE_SAFARI_THEME from wtf/Platform.h
155         because the PLATFORM(CG) flag is not set until config.h has
156         already included this file.
157
158         * wtf/Platform.h:  Remove useless definition of WTF_USE_SAFARI_THEME
159
160 2008-03-05  Brady Eidson  <beidson@apple.com>
161
162         Reviewed by Alexey and Mark Rowe
163
164         Fix for <rdar://problem/5778247> - Reproducible crash on storage/execute-sql-args.html
165
166         DatabaseThread::unscheduleDatabaseTasks() manually filters through a MessageQueue,
167         removing particular items for Databases that were shutting down.
168
169         This filtering operation is not atomic, and therefore causes a race condition with the
170         MessageQueue waking up and reading from the message queue.  
171
172         The end result was an attempt to dereference a null DatabaseTask.  Timing-wise, this never
173         seemed to happen in a debug build, otherwise an assertion would've caught it.  Replacing that
174         assertion with a crash in a release build is what revealed this bug.
175
176         * wtf/MessageQueue.h:
177         (WTF::::waitForMessage): Tweak the waiting logic to check the queue's empty state then go back
178           to sleep if the queue was empty - checking m_killed each time it wakes up.
179
180 2008-03-05  David D. Kilzer  <ddkilzer@apple.com>
181
182         Remove unused header includes from interpreter.cpp.
183
184         Reviewed by Darin.
185
186         * kjs/interpreter.cpp: Remove unused header includes.
187
188 2008-03-05  Anders Carlsson  <andersca@apple.com>
189
190         Reviewed by Sam.
191         
192         Remove bindings/.
193
194         * bindings: Removed.
195
196 2008-03-05  Anders Carlsson  <andersca@apple.com>
197
198         Don't build bindings/ anymore.
199         
200         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
201
202 2008-03-05  Anders Carlsson  <andersca@apple.com>
203
204         Reviewed by Geoff.
205
206         Don't build JavaScriptCore/bindings.
207         
208         * JavaScriptCore.exp:
209         Export a couple of new functions. 
210         
211         * JavaScriptCore.xcodeproj/project.pbxproj:
212         Remove bindings/
213         
214         * kjs/config.h:
215         No need to define HAVE_JNI anymore.
216         
217         * kjs/interpreter.cpp:
218         Remove unnecessary include.
219
220 2008-03-05  David D. Kilzer  <ddkilzer@apple.com>
221
222         Allow override of default script file name using command-line argument.
223
224         Reviewed by Adele.
225
226         * API/minidom.c:
227         (main): Allow first command-line argument to override the default script
228         file name of "minidom.js".
229         * API/testapi.c:
230         (main): Allow first command-line argument to override the default script
231         file name of "testapi.js".
232
233 2008-03-04  Mark Rowe  <mrowe@apple.com>
234
235         Mac build fix.
236
237         * JavaScriptCore.exp:  Add new symbol to exports file.
238
239 2008-03-03  Oliver Hunt  <oliver@apple.com>
240
241         Reviewed by Anders.
242
243         Make ForInNode check for the timeout interrupt
244
245         * kjs/nodes.cpp:
246         (KJS::ForInNode::execute):
247
248 2008-03-02  Brent Fulgham  <bfulgham@gmail.com>
249
250         Reviewed by Alp Toker.
251
252         http://bugs.webkit.org/show_bug.cgi?id=17415
253         GTK Build (using autotools) on Mac OS (DarwinPorts) Fails
254
255         Add -lstdc++ to link flags for minidom program.  This corrects
256         a build error for the GTK+ on Mac OS.
257
258         * GNUmakefile.am:
259
260 2008-03-01  Mark Rowe  <mrowe@apple.com>
261
262         Reviewed by Tim Hatcher.
263
264         Update Xcode configuration to support building debug and release from the mysterious future.
265
266         * Configurations/Base.xcconfig:
267         * Configurations/DebugRelease.xcconfig:
268
269 2008-02-29  Brent Fulgham  <bfulgham@gmail.com>
270
271         http://bugs.webkit.org/show_bug.cgi?id=17483
272         Implement scrollbars on Windows (Cairo)
273
274         Reviewed by Adam Roben.
275
276         * wtf/Platform.h:
277
278 2008-02-29  Adam Roben  <aroben@apple.com>
279
280         Remove unused DebuggerImp::abort and DebuggerImp::aborted
281
282         Reviewed by Tim and Sam.
283
284         * kjs/function_object.cpp:
285         (KJS::FunctionObjectImp::construct):
286         * kjs/internal.h:
287         (KJS::DebuggerImp::DebuggerImp):
288         * kjs/nodes.cpp:
289         (KJS::Node::handleException):
290         (KJS::FunctionBodyNodeWithDebuggerHooks::execute):
291
292 2008-02-28  Eric Christopher  <echristo@apple.com>
293
294         Reviewed by Geoffrey Garen.
295
296         ** TOTAL **:          1.005x as fast    2867.6ms +/- 0.4%  2853.2ms +/- 0.3%    significant
297
298         * kjs/nodes.cpp: Tell the compiler that exceptions are unexpected (for
299         the sake of branch prediction and code organization).
300
301 2008-02-27  Alexey Proskuryakov  <ap@webkit.org>
302
303         Reviewed by Sam Weinig.
304
305         http://bugs.webkit.org/show_bug.cgi?id=17030
306         Small buffer overflow within initialization
307
308         * kjs/date_object.cpp:
309         (KJS::DateObjectFuncImp::callAsFunction):
310         (KJS::parseDate):
311         Remove unnecessary and incorrect memset() calls - GregorianDateTime can initialize itself.
312
313 2008-02-25  Sam Weinig  <sam@webkit.org>
314
315         Reviewed by Dan Bernstein.
316
317         - Add a variant of remove that takes a position and a length.
318
319         * wtf/Vector.h:
320         (WTF::Vector::remove):
321
322 2008-02-25  Mark Mentovai  <mark@moxienet.com>
323
324         Reviewed by Mark Rowe.
325
326         Enable CollectorHeapIntrospector to build by itself, as well as in an AllInOneFile build.
327         http://bugs.webkit.org/show_bug.cgi?id=17538
328
329         * kjs/CollectorHeapIntrospector.cpp: Provide "using" declaration for
330           WTF::RemoteMemoryReader.
331         * kjs/collector.h: Move CollectorHeap declaration here...
332         * kjs/collector.cpp: ... from here.
333
334 2008-02-25  Darin Adler  <darin@apple.com>
335
336         Reviewed by Adam.
337
338         * JavaScriptCore.exp: Sort the contents of this file.
339
340 2008-02-25  Adam Roben  <aroben@apple.com>
341
342         MSVC build fix
343
344         * kjs/testkjs.cpp:
345         (functionQuit): Don't add a return statement after exit(0) for MSVC.
346
347 2008-02-24  Sam Weinig  <sam@webkit.org>
348
349         Reviewed by Mark Rowe.
350
351         http://bugs.webkit.org/show_bug.cgi?id=17529
352         Add support for reading from stdin from testkjs
353
354         * kjs/testkjs.cpp:
355         (GlobalObject::GlobalObject): Add readline function to global object.
356         (functionReadline): Added. Reads characters from stdin until a '\n' or
357         EOF is encountered. The input is returned as a String to the caller.
358
359 2008-02-24  Sam Weinig  <sam@webkit.org>
360
361         Reviewed by Mark Rowe.
362
363         http://bugs.webkit.org/show_bug.cgi?id=17528
364         Give testkjs a bath
365
366         * JavaScriptCore.exp:
367         * JavaScriptCore.xcodeproj/project.pbxproj: Make the testkjs.cpp use 4 space indentation.
368         * kjs/testkjs.cpp:
369         (StopWatch::getElapsedMS):
370         (GlobalObject::className):
371         (GlobalObject::GlobalObject):
372         Rename GlobalImp to GlobalObject and setup the global functions
373         in the GlobalObject's constructor. Also, use static functions for
374         the implementation so we can use the standard PrototypeFunction
375         class and remove TestFunctionImp.
376         (functionPrint): Move print() functionality here.
377         (functionDebug): Move debug() functionality here.
378         (functionGC): Move gc() functionality here.
379         (functionVersion): Move version() functionality here.
380         (functionRun): Move run() functionality here.
381         (functionLoad): Move load() functionality here.
382         (functionQuit): Move quit() functionality here.
383         (prettyPrintScript): Fix indentation.
384         (runWithScripts): Since all the functionality of createGlobalObject is
385         now in the GlobalObject constructor, just call new here.
386         (parseArguments): Fix indentation.
387         (kjsmain): Ditto
388         (fillBufferWithContentsOfFile): Ditto.
389
390 2008-02-24  Sam Weinig  <sam@webkit.org>
391
392         Reviewed by Oliver Hunt and Mark Rowe.
393
394         http://bugs.webkit.org/show_bug.cgi?id=17505
395         Add support for getting command line arguments in testkjs
396
397         - This slightly changes the behavior of parsing arguments by requiring
398           a '-f' before all files. 
399
400         * kjs/testkjs.cpp:
401         (createGlobalObject): Add a global property called 'arguments' which
402         contains an array with the parsed arguments as strings.
403         (runWithScripts): Pass in the arguments vector so that it can be passed
404         to the global object.
405         (parseArguments): Change parsing rules to require a '-f' before any script
406         file. After all '-f' and '-p' arguments have been parsed, the remaining
407         are added to the arguments vector and exposed to the script. If there is a
408         chance of ambiguity (the user wants to pass the string '-f' to the script),
409         the string '--' can be used separate the options from the pass through 
410         arguments.
411         (kjsmain):
412
413 2008-02-24  Dan Bernstein  <mitz@apple.com>
414
415         Reviewed by Darin Adler.
416
417         - fix http://bugs.webkit.org/show_bug.cgi?id=17511
418           REGRESSION: Reproducible crash in SegmentedSubstring::SegmentedSubstring(SegmentedSubstring const&)
419
420         * wtf/Deque.h:
421         (WTF::::expandCapacityIfNeeded): Fixed the case where m_start and m_end
422         are both zero but the buffer capacity is non-zero.
423         (WTF::::prepend): Added validity checks.
424
425 2008-02-23  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
426
427         Rubber stamped by Darin.
428
429         Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup
430         whitespaces introduced in the previous commit.
431
432         * GNUmakefile.am: 
433
434 2008-02-23  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
435
436         * GNUmakefile.am: Add GLOBALDEPS for testkjs and minidom.
437
438 2008-02-23  Darin Adler  <darin@apple.com>
439
440         Reviewed by Anders.
441
442         - http://bugs.webkit.org/show_bug.cgi?id=17496
443           make Deque use a circular array; add iterators
444
445         * wtf/Deque.h: Wrote an all-new version of this class that uses a circular
446         buffer. Growth policy is identical to vector. Added iterators.
447
448         * wtf/Vector.h: Made two small refinements while using this to implement
449         Deque: Made VectorBufferBase derive from Noncopyable, which would have
450         saved me some debugging time if it had been there. Renamed Impl and
451         m_impl to Buffer and m_buffer.
452
453 2008-02-23  Darin Adler  <darin@apple.com>
454
455         Reviewed by Anders.
456
457         - http://bugs.webkit.org/show_bug.cgi?id=17067
458           eliminate attributes parameter from JSObject::put for speed/clarity
459
460         * API/JSCallbackObject.h: Removed attribute arguments.
461         * API/JSCallbackObjectFunctions.h:
462         (KJS::JSCallbackObject<Base>::put): Ditto.
463         * API/JSObjectRef.cpp:
464         (JSObjectSetProperty): Use initializeVariable or putDirect when necessary
465         to set attribute values.
466         * JavaScriptCore.exp: Updated.
467         * bindings/objc/objc_runtime.h: Removed attribute arguments.
468         * bindings/objc/objc_runtime.mm:
469         (ObjcFallbackObjectImp::put): Ditto.
470         * bindings/runtime_array.cpp:
471         (RuntimeArray::put): Ditto.
472         * bindings/runtime_array.h: Ditto.
473         * bindings/runtime_object.cpp:
474         (RuntimeObjectImp::put): Ditto.
475         * bindings/runtime_object.h: Ditto. Also removed canPut which was only
476         called from one place in WebCore that can use hasProperty instead.
477
478         * kjs/Activation.h: Removed attribute argument from put and added the new
479         initializeVariable function that's used to put variables in variable objects.
480         Also made isActivationObject a const member.
481
482         * kjs/JSGlobalObject.cpp:
483         (KJS::JSGlobalObject::put): Removed attribute argument.
484         (KJS::JSGlobalObject::initializeVariable): Added. Used to give variables
485         their initial values, which can include the read-only property.
486         (KJS::JSGlobalObject::reset): Removed obsolete comments about flags.
487         Removed Internal flag, which is no longer needed.
488         * kjs/JSGlobalObject.h: More of the same.
489
490         * kjs/JSVariableObject.h: Added pure virtual initializeVariable function.
491         (KJS::JSVariableObject::symbolTablePut): Removed checkReadOnly flag; we always
492         check read-only.
493         (KJS::JSVariableObject::symbolTableInitializeVariable): Added.
494
495         * kjs/array_instance.cpp:
496         (KJS::ArrayInstance::put): Removed attribute argument.
497         * kjs/array_instance.h: Ditto.
498
499         * kjs/function.cpp:
500         (KJS::FunctionImp::put): Ditto.
501         (KJS::Arguments::put): Ditto.
502         (KJS::ActivationImp::put): Ditto.
503         (KJS::ActivationImp::initializeVariable): Added.
504         * kjs/function.h: Removed attribute arguments.
505
506         * kjs/function_object.cpp:
507         (KJS::FunctionObjectImp::construct): Removed Internal flag.
508
509         * kjs/lookup.h:
510         (KJS::lookupPut): Removed attributes argument. Also changed to use putDirect
511         instead of calling JSObject::put.
512         (KJS::cacheGlobalObject): Ditto.
513
514         * kjs/nodes.cpp:
515         (KJS::ConstDeclNode::handleSlowCase): Call initializeVariable to initialize
516         the constant.
517         (KJS::ConstDeclNode::evaluateSingle): Ditto.
518         (KJS::TryNode::execute): Use putDirect to set up the new object.
519         (KJS::FunctionBodyNode::processDeclarations): Removed Internal.
520         (KJS::ProgramNode::processDeclarations): Ditto.
521         (KJS::EvalNode::processDeclarations): Call initializeVariable to initialize
522         the variables and functions.
523         (KJS::FuncDeclNode::makeFunction): Removed Internal.
524         (KJS::FuncExprNode::evaluate): Ditto.
525
526         * kjs/object.cpp: Removed canPut, which was only being used in one code path,
527         not the normal high speed one.
528         (KJS::JSObject::put): Removed attribute argument. Moved the logic from
529         canPut here, in the one code ath that was still using it.
530         * kjs/object.h: Removed Internal attribute, ad canPut function. Removed the
531         attributes argument to the put function. Made isActivationObject const.
532
533         * kjs/regexp_object.cpp:
534         (KJS::RegExpImp::put): Removed attributes argument.
535         (KJS::RegExpImp::putValueProperty): Ditto.
536         (KJS::RegExpObjectImp::put): Ditto.
537         (KJS::RegExpObjectImp::putValueProperty): Ditto.
538         * kjs/regexp_object.h: Ditto.
539
540         * kjs/string_object.cpp:
541         (KJS::StringInstance::put): Removed attributes argument.
542         * kjs/string_object.h: Ditto.
543
544 2008-02-23  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
545
546         Not reviewed, Gtk build fix.
547
548         * kjs/testkjs.pro:
549
550 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
551
552         Windows build fix - move ThreadCondition implementation from WebCore to WTF.
553
554         * wtf/ThreadingWin.cpp:
555         (WTF::ThreadCondition::ThreadCondition):
556         (WTF::ThreadCondition::~ThreadCondition):
557         (WTF::ThreadCondition::wait):
558         (WTF::ThreadCondition::signal):
559         (WTF::ThreadCondition::broadcast):
560
561 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
562
563         Touch some files, hoping that Windows build bot will create JSC headers.
564
565         * kjs/AllInOneFile.cpp:
566         * kjs/array_instance.cpp:
567         * wtf/HashTable.cpp:
568
569 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
570
571         Qt/Wx build fix - this file was still in a wrong namespace, too.
572
573         * wtf/ThreadingNone.cpp:
574
575 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
576
577         More build fixing - fix mismatched braces.
578
579         * JavaScriptCore.pri:
580
581 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
582
583         Wx and Gtk build fixes.
584
585         * JavaScriptCore.pri: Don't try to compile ThreadingPthreads.
586         * wtf/ThreadingGtk.cpp: Use a correct namespace.
587
588 2008-02-23  Alexey Proskuryakov  <ap@webkit.org>
589
590         Reviewed by Darin.
591
592         Move basic threading support from WebCore to WTF.
593
594         Added mutex protection to MessageQueue::killed() for paranoia sake.
595
596         * GNUmakefile.am:
597         * JavaScriptCore.exp:
598         * JavaScriptCore.pri:
599         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
600         * JavaScriptCore.xcodeproj/project.pbxproj:
601         * JavaScriptCoreSources.bkl:
602         * wtf/Locker.h: Copied from WebCore/platform/Locker.h.
603         * wtf/MessageQueue.h: Copied from WebCore/platform/MessageQueue.h.
604         (WTF::::killed):
605         * wtf/Threading.h: Copied from WebCore/platform/Threading.h.
606         * wtf/ThreadingGtk.cpp: Copied from WebCore/platform/gtk/ThreadingGtk.cpp.
607         (WebCore::createThread):
608         * wtf/ThreadingNone.cpp: Copied from WebCore/platform/ThreadingNone.cpp.
609         * wtf/ThreadingPthreads.cpp: Copied from WebCore/platform/pthreads/ThreadingPthreads.cpp.
610         (WTF::createThread):
611         * wtf/ThreadingWin.cpp: Copied from WebCore/platform/win/ThreadingWin.cpp.
612         (WTF::createThread):
613         (WTF::Mutex::Mutex):
614         (WTF::Mutex::~Mutex):
615         (WTF::Mutex::lock):
616         (WTF::Mutex::tryLock):
617         (WTF::Mutex::unlock):
618
619 2008-02-22  Geoffrey Garen  <ggaren@apple.com>
620
621         Reviewed by Sam Weinig.
622         
623         Partial fix for <rdar://problem/5744037> Gmail out of memory (17455)
624         
625         I'm removing KJS_MEM_LIMIT for the following reasons:
626         
627         - We have a few reports of KJS_MEM_LIMIT breaking important web
628         applications, like GMail and Google Reader. (For example, if you
629         simply open 12 GMail tabs, tab #12 will hit the limit.)
630
631         - Firefox has no discernable JS object count limit, so any limit, even
632         a large one, is a potential compatibility problem.
633         
634         - KJS_MEM_LIMIT does not protect against malicious memory allocation,
635         since there are many ways to maliciously allocate memory without
636         increasing the JS object count.
637         
638         - KJS_MEM_LIMIT is already mostly broken, since it only aborts the
639         script that breaches the limit, not any subsequent scripts.
640         
641         - We've never gotten bug reports about websites that would have
642         benefited from an unbroken KJS_MEM_LIMIT. The initial check-in of
643         KJS_MEM_LIMIT (KJS revision 80061) doesn't mention a website that
644         needed it.
645         
646         - Any website that brings you anywhere close to crashing due to the
647         number of live JS objects will almost certainly put up the "slow
648         script" dialog at least 20 times beforehand.
649
650         * kjs/collector.cpp:
651         (KJS::Collector::collect):
652         * kjs/collector.h:
653         * kjs/nodes.cpp:
654         (KJS::TryNode::execute):
655
656 2008-02-22  Oliver Hunt  <oliver@apple.com>
657
658         Reviewed by Alexey P.
659
660         <rdar://problem/5759327> REGRESSION: while(NaN) acts like while(true)
661
662         Fix yet another case where we incorrectly relied on implicit double
663         to bool coercion.
664
665         * kjs/nodes.cpp:
666         (KJS::PostDecLocalVarNode::evaluateToBoolean):
667
668 2008-02-20  Michael Knaup  <michael.knaup@mac.com>
669
670         Reviewed by Darin.
671
672         Fix for Bug 16753: date set methods with no args should result in NaN (Acid3 bug)
673         The set values result in NaN now when called with no args, NaN or +/- inf values.
674         The setYear, setFullYear and setUTCFullYear methods used on NaN dates work as 
675         descripted in the standard.
676
677         * kjs/date_object.cpp:
678         (KJS::fillStructuresUsingTimeArgs):
679         (KJS::fillStructuresUsingDateArgs):
680         (KJS::setNewValueFromTimeArgs):
681         (KJS::setNewValueFromDateArgs):
682         (KJS::dateProtoFuncSetYear):
683
684 2008-02-19  Anders Carlsson  <andersca@apple.com>
685
686         Reviewed by Darin.
687
688         Change OpaqueJSClass and RootObject to start with a ref count of 1.
689         
690         * API/JSClassRef.cpp:
691         (OpaqueJSClass::OpaqueJSClass):
692         (OpaqueJSClass::createNoAutomaticPrototype):
693         (OpaqueJSClass::create):
694         * API/JSClassRef.h:
695         * API/JSObjectRef.cpp:
696         (JSClassCreate):
697         * bindings/runtime_root.cpp:
698         (KJS::Bindings::RootObject::create):
699         (KJS::Bindings::RootObject::RootObject):
700
701 2008-02-19  Darin Adler  <darin@apple.com>
702
703         Rubber stamped by Anders.
704
705         - removed explicit initialization to 1 for RefCounted; that's now the default
706
707         * kjs/regexp.cpp:
708         (KJS::RegExp::RegExp): Removed RefCounted initializer.
709
710 2008-02-19  Darin Adler  <darin@apple.com>
711
712         Reviewed by Anders.
713
714         - next step for http://bugs.webkit.org/show_bug.cgi?id=17257
715           start ref counts at 1 instead of 0 for speed
716
717         * wtf/RefCounted.h:
718         (WTF::RefCounted::RefCounted): Have refcounts default to 1. This allows us to start
719         removing the explicit initialization of RefCounted from classes and eventually we
720         can remove the ability to have the initial count of 0 entirely.
721
722 2008-02-18  Samuel Weinig  <sam@webkit.org>
723
724         Reviewed by Geoff Garen.
725
726         Fix for http://bugs.webkit.org/show_bug.cgi?id=17419
727         Remove CompatMode from JavaScriptCore as it is never set to anything other than NativeMode
728
729         * kjs/JSGlobalObject.cpp:
730         (KJS::JSGlobalObject::init):
731         * kjs/JSGlobalObject.h:
732         (KJS::JSGlobalObject::setDebugger):
733         * kjs/date_object.cpp:
734         (KJS::dateProtoFuncGetYear):
735
736 2008-02-18  Darin Adler  <darin@apple.com>
737
738         Reviewed by Sam.
739
740         * wtf/ASCIICType.h:
741         (WTF::toASCIIHexValue): Added.
742
743 2008-02-17  Darin Adler  <darin@apple.com>
744
745         * wtf/ListHashSet.h: (WTF::swap): Removed stray return statement.
746
747 2008-02-15  Adam Roben  <aroben@apple.com>
748
749         Make JavaScriptCore's FEATURE_DEFINES match WebCore's
750
751         Reviewed by Mark.
752
753         * Configurations/JavaScriptCore.xcconfig:
754
755 2008-02-14  Stephanie Lewis <slewis@apple.com>
756
757         Reviewed by Geoff.
758
759         Update order files.
760
761         * JavaScriptCore.order:
762
763 2008-02-14  Geoffrey Garen  <ggaren@apple.com>
764
765         Reviewed by Sam Weinig.
766         
767         Fixed <rdar://problem/5737835> nee http://bugs.webkit.org/show_bug.cgi?id=17329
768         Crash in JSGlobalObject::popActivation when inserting hyperlink in Wordpress (17329)
769         
770         Don't reset the "activations" stack in JSGlobalObject::reset, since we
771         might be executing a script during the call to reset, and the script
772         needs to safely run to completion.
773         
774         Instead, initialize the "activations" stack when the global object is
775         created, and subsequently rely on pushing and popping during normal
776         execution to maintain the stack's state.
777         
778         * kjs/JSGlobalObject.cpp:
779         (KJS::JSGlobalObject::init):
780         (KJS::JSGlobalObject::reset):
781
782 2008-02-13  Bernhard Rosenkraenzer  <bero@arklinux.org>
783
784         Reviewed by Darin.
785
786         - http://bugs.webkit.org/show_bug.cgi?id=17339
787           JavaScriptCore does not build with gcc 4.3
788
789         * kjs/interpreter.cpp: Add include of <unistd.h>, since that's where
790         getpid() comes from.
791
792 2008-02-13  Oliver Hunt  <oliver@apple.com>
793
794         Reviewed by Alexey P.
795
796         <rdar://problem/5737003> REGRESSION (r27747): can't browse pictures on fastcupid.com
797
798         When converting numeric values to booleans we need to account for NaN
799
800         * kjs/nodes.cpp:
801         (KJS::MultNode::evaluateToBoolean):
802         (KJS::ModNode::evaluateToBoolean):
803
804 2008-02-08  Samuel Weinig  <sam@webkit.org>
805
806         Reviewed by Brady Eidson.
807
808         <rdar://problem/5659216> REGRESSION: PLT 0.3% slower due to r28868 (caching ClassNodeList and NamedNodeList)
809
810         - Tweak the statements in isASCIISpace to account for the statistical distribution of
811           usage in the PLT.
812
813         .4% speedup on my machine.  Stephanie's machine shows this as .3% speedup.
814
815         * wtf/ASCIICType.h:
816         (WTF::isASCIISpace): 
817
818 2008-02-11  Sam Weinig  <sam@webkit.org>
819
820         Reviewed by Anders Carlsson.
821
822         Fixes for:
823         <rdar://problem/5735497> Match Firefox's cross-domain model more accurately by return the built-in version of functions even if they have been overridden
824         <rdar://problem/5735443> Crash when setting the Window objects prototype to a custom Object and then calling a method on it
825
826         - Expose the native Object.prototype.toString implementation so that it can be used for cross-domain
827           toString calling.
828
829         * JavaScriptCore.exp:
830         * kjs/object_object.cpp:
831         * kjs/object_object.h:
832
833 2008-02-10  Darin Adler  <darin@apple.com>
834
835         Rubber stamped by Eric.
836
837         * kjs/ExecState.h:
838         (KJS::ExecState::takeException): Added.
839
840 2008-02-10  Darin Adler  <darin@apple.com>
841
842         Reviewed by Eric.
843
844         - http://bugs.webkit.org/show_bug.cgi?id=17256
845           eliminate default ref. count of 0 in RefCounted class
846
847         * wtf/RefCounted.h:
848         (WTF::RefCounted::RefCounted): Remove default of 0.
849
850 2008-02-10  Darin Adler  <darin@apple.com>
851
852         Reviewed by Eric.
853
854         - http://bugs.webkit.org/show_bug.cgi?id=17256
855           Make clients of RefCounted explicitly set the count to 0.
856
857         * API/JSClassRef.cpp:
858         (OpaqueJSClass::OpaqueJSClass):
859         * bindings/runtime_root.cpp:
860         (KJS::Bindings::RootObject::RootObject):
861
862 2008-02-09  Darin Adler  <darin@apple.com>
863
864         Reviewed by Mitz.
865
866         - http://bugs.webkit.org/show_bug.cgi?id=17256
867           Change RegExp to start its ref count at 1, not 0
868
869         We'll want to do this to every RefCounted class, one at a time.
870
871         * kjs/nodes.h:
872         (KJS::RegExpNode::RegExpNode): Use RegExp::create instead of new RegExp.
873         * kjs/regexp.cpp:
874         (KJS::RegExp::RegExp): Marked inline, set initial ref count to 1.
875         (KJS::RegExp::create): Added. Calls new RegExp then adopts the initial ref.
876         * kjs/regexp.h: Reformatted. Made the constructors private. Added static
877         create functions that return objects already wrapped in PassRefPtr.
878         * kjs/regexp_object.cpp:
879         (KJS::regExpProtoFuncCompile): Use RegExp::create instead of new RegExp.
880         (KJS::RegExpObjectImp::construct): Ditto.
881         * kjs/string_object.cpp:
882         (KJS::stringProtoFuncMatch): Ditto.
883         (KJS::stringProtoFuncSearch): Ditto.
884
885 2008-02-08  Oliver Hunt  <oliver@apple.com>
886
887         Reviewed by Maciej.
888
889         <rdar://problem/5731773> REGRESSION (r28973): Extraneous parentheses in function.toString()
890         https://bugs.webkit.org/show_bug.cgi?id=17214
891
892         Make a subclass of CommaNode to provide the correct precedence for each expression in
893         a variable declaration list.
894
895         * kjs/grammar.y:
896         * kjs/nodes.h:
897         (KJS::VarDeclCommaNode::):
898
899 2008-02-08  Darin Adler  <darin@apple.com>
900
901         Reviewed by Oliver.
902
903         - fix http://bugs.webkit.org/show_bug.cgi?id=17247
904           Labelled continue/break can fail in some cases
905
906         Test: fast/js/continue-break-multiple-labels.html
907
908         * kjs/nodes.h:
909         (KJS::StatementNode::pushLabel): Made this virtual.
910         (KJS::LabelNode::pushLabel): Forward pushLabel calls to the statement inside.
911
912 2008-02-08  Darin Adler  <darin@apple.com>
913
914         Reviewed by Eric.
915
916         - fix http://bugs.webkit.org/show_bug.cgi?id=15003
917           Function.prototype.constructor should not be DontDelete/ReadOnly (Acid3 bug)
918
919         Test: fast/js/constructor-attributes.html
920
921         * kjs/JSGlobalObject.cpp:
922         (KJS::JSGlobalObject::reset): Remove unwanted attributes from "constructor".
923         * kjs/function_object.cpp:
924         (KJS::FunctionObjectImp::construct): Ditto.
925         * kjs/nodes.cpp:
926         (KJS::FuncDeclNode::makeFunction): Ditto.
927         (KJS::FuncExprNode::evaluate): Ditto.
928
929 2008-02-06  Geoffrey Garen  <ggaren@apple.com>
930
931         Reviewed by Oliver Hunt.
932         
933         Added an ASSERT to catch refCount underflow, since it caused a leak in
934         my last check-in.
935
936         * wtf/RefCounted.h:
937         (WTF::RefCounted::deref):
938
939 2008-02-06  Geoffrey Garen  <ggaren@apple.com>
940
941         Reviewed by Darin Adler.
942
943         PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4%
944         slower due to r28884 (global variable symbol table optimization)
945         
946         Tweaked RefCounted::deref() to be a little more efficient.
947
948         1% - 1.5% speedup on my machine. .7% speedup on Stephanie's machine.
949         
950         * wtf/RefCounted.h:
951         (WTF::RefCounted::deref): Don't modify m_refCount if we're just going
952         to delete the object anyway. Also, use a simple == test, which might be
953         faster than <= on some hardware.
954
955 2008-02-06  Darin Adler  <darin@apple.com>
956
957         Reviewed by Sam.
958
959         - fix http://bugs.webkit.org/show_bug.cgi?id=17094
960           Array.prototype functions create length properties with DontEnum/DontDelete
961
962         Test results match Gecko with very few obscure exceptions that seem to be
963         bugs in Gecko.
964
965         Test: fast/js/array-functions-non-arrays.html
966
967         * kjs/array_object.cpp:
968         (KJS::arrayProtoFuncConcat):  Removed DontEnum and DontDelete from the call
969         to set length.
970         (KJS::arrayProtoFuncPop): Ditto. Also added missing call to deleteProperty,
971         which is not needed for real arrays, but is needed for non-arrays.
972         (KJS::arrayProtoFuncPush): Ditto.
973         (KJS::arrayProtoFuncShift): Ditto.
974         (KJS::arrayProtoFuncSlice): Ditto.
975         (KJS::arrayProtoFuncSort): Removed incorrect call to set length when
976         the array has no elements.
977         (KJS::arrayProtoFuncSplice): Removed DontEnum and DontDelete from the call
978         to set length.
979         (KJS::arrayProtoFuncUnShift): Ditto. Also added a check for 0 arguments to
980         make behavior match the specification in that case.
981         * kjs/nodes.cpp:
982         (KJS::ArrayNode::evaluate): Removed DontEnum and DontDelete from the call
983         to set length.
984
985 2008-02-06  Darin Adler  <darin@apple.com>
986
987         Reviewed by Sam.
988
989         - replace calls to put to set up properties with calls to putDirect, to
990           prepare for a future change where put won't take attributes any more,
991           and for a slight performance boost
992
993         * API/JSObjectRef.cpp:
994         (JSObjectMakeConstructor): Use putDirect instead of put.
995         * kjs/CommonIdentifiers.h: Removed lastIndex.
996         * kjs/JSGlobalObject.cpp:
997         (KJS::JSGlobalObject::reset): Use putDirect instead of put.
998         * kjs/array_object.cpp:
999         (KJS::arrayProtoFuncConcat): Took out extra call to get length (unused).
1000         (KJS::ArrayObjectImp::ArrayObjectImp): Use putDirect instead of put.
1001         * kjs/error_object.cpp:
1002         (KJS::ErrorPrototype::ErrorPrototype): Use putDirect instead of put.
1003         * kjs/function.cpp:
1004         (KJS::Arguments::Arguments): Use putDirect instead of put.
1005         (KJS::PrototypeFunction::PrototypeFunction): Use putDirect instead of put.
1006         * kjs/function_object.cpp:
1007         (KJS::FunctionObjectImp::construct): Use putDirect instead of put.
1008         * kjs/nodes.cpp:
1009         (KJS::FuncDeclNode::makeFunction): Use putDirect instead of put.
1010         (KJS::FuncExprNode::evaluate): Use putDirect instead of put.
1011         * kjs/regexp_object.cpp:
1012         (KJS::regExpProtoFuncCompile): Use setLastIndex instead of put(lastIndex).
1013         (KJS::RegExpImp::match): Get and set lastIndex by using m_lastIndex instead of
1014         calling get and put.
1015         * kjs/regexp_object.h:
1016         (KJS::RegExpImp::setLastIndex): Added.
1017         * kjs/string_object.cpp:
1018         (KJS::stringProtoFuncMatch): Use setLastIndex instead of put(lastIndex).
1019
1020 2008-02-05  Sam Weinig  <sam@webkit.org>
1021
1022         Reviewed by Anders Carlsson.
1023
1024         Fix for http://bugs.webkit.org/show_bug.cgi?id=8080
1025         NodeList (and other DOM lists) items are not enumeratable using for..in
1026
1027         * JavaScriptCore.exp:
1028
1029 2008-02-05  Mark Rowe  <mrowe@apple.com>
1030
1031         Reviewed by Oliver Hunt.
1032
1033         Update versioning to support the mysterious future.
1034
1035         * Configurations/Version.xcconfig: Add SYSTEM_VERSION_PREFIX_1060.
1036
1037 2008-02-04  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
1038
1039         Reviewed by Oliver Hunt.
1040
1041         Fixes Bug 16889: REGRESSION (r29425): Canvas-based graphing calculator fails to run
1042               Bug 17015: REGRESSION (r29414-29428): www.fox.com "shows" menu fails to render
1043               Bug 17164: REGRESSION: JavaScript pop-up menu appears at wrong location when hovering image at http://news.chinatimes.com/
1044
1045         <http://bugs.webkit.org/show_bug.cgi?id=16889>
1046         <rdar://problem/5696255>
1047
1048         <http://bugs.webkit.org/show_bug.cgi?id=17015>
1049
1050         <http://bugs.webkit.org/show_bug.cgi?id=17164>
1051         <rdar://problem/5720947>
1052
1053         The ActivationImp tear-off (r29425) introduced a problem with ReadModify
1054         nodes that first resolve a slot, call valueForReadModifyNode(), and then
1055         store a value in the previously resolved slot. Since valueForReadModifyNode()
1056         may cause a tear-off, the slot needs to be resolved again, but this was
1057         not happening with the existing code.
1058
1059         * kjs/nodes.cpp:
1060         (KJS::ReadModifyLocalVarNode::evaluate):
1061         (KJS::ReadModifyResolveNode::evaluate):
1062
1063 2008-02-04  Cameron McCormack <cam@mcc.id.au>
1064
1065         Reviewed by Geoff Garen.
1066
1067         Remove some unneccesary UNUSED_PARAMs.  Clarify ownership rule of return value of JSObjectCopyPropertyNames.
1068
1069         * API/JSNode.c:
1070         (JSNode_appendChild):
1071         (JSNode_removeChild):
1072         (JSNode_replaceChild):
1073         (JSNode_getNodeType):
1074         (JSNode_getFirstChild):
1075         * API/JSNodeList.c:
1076         (JSNodeList_length):
1077         * API/JSObjectRef.h:
1078
1079 2008-02-04  Rodney Dawes  <dobey@wayofthemonkey.com>
1080
1081         Reviewed by Alp Toker and Mark Rowe.
1082
1083         Fix http://bugs.webkit.org/show_bug.cgi?id=17175.
1084         Bug 17175: Use of C++ compiler flags in CFLAGS
1085
1086         * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS.
1087
1088 2008-02-04  Alp Toker  <alp@atoker.com>
1089
1090         Rubber-stamped by Mark Rowe.
1091
1092         Remove all trailing whitespace in the GTK+ port and related
1093         components.
1094
1095         * GNUmakefile.am:
1096
1097 2008-02-02  Darin Adler  <darin@apple.com>
1098
1099         Reviewed by Geoff Garen.
1100
1101         PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4%
1102         slower due to r28884 (global variable symbol table optimization)
1103
1104         Geoff's theory is that the slowdown was due to copying hash tables when
1105         putting things into the back/forward cache. If that's true, then this
1106         should fix the problem.
1107
1108         (According to Geoff's measurements, in a PLT that exaggerates the
1109         importance of symbol table saving during cached page creation, this
1110         patch is a ~3X speedup in cached page creation, and a 9% speedup overall.)
1111
1112         * JavaScriptCore.exp: Updated.
1113
1114         * kjs/JSVariableObject.cpp:
1115         (KJS::JSVariableObject::saveLocalStorage): Updated for changes to SavedProperty,
1116         which has been revised to avoid initializing each SavedProperty twice when building
1117         the array. Store the property names too, so we don't have to store the symbol table
1118         separately. Do this by iterating the symbol table instead of the local storage vector.
1119         (KJS::JSVariableObject::restoreLocalStorage): Ditto. Restore the symbol table as
1120         well as the local storage vector.
1121
1122         * kjs/JSVariableObject.h: Removed save/restoreSymbolTable and do that work inside
1123         save/restoreLocalStorage instead. Made restoreLocalStorage a non-const member function
1124         that takes a const reference to a SavedProperties object.
1125
1126         * kjs/LocalStorage.h: Changed attributes to be unsigned instead of int to match
1127         other declarations of attributes elsewhere.
1128
1129         * kjs/property_map.cpp:
1130         (KJS::SavedProperties::SavedProperties): Updated for data member name change.
1131         (KJS::PropertyMap::save): Updated for data member name change and to use the new
1132         inline init function instead of setting the fields directly. This allows us to
1133         skip initializing the SavedProperty objects when first allocating the array, and
1134         just do it when we're actually setting up the individual elements.
1135         (KJS::PropertyMap::restore): Updated for SavedProperty changes.
1136
1137         * kjs/property_map.h: Changed SavedProperty from a struct to a class. Set it up so
1138         it does not get initialized at construction time to avoid initializing twice when
1139         creating an array of SavedProperty. Removed the m_ prefixes from the members of
1140         the SavedProperties struct. Generally we use m_ for class members and not struct.
1141
1142 2008-02-02  Tony Chang  <idealisms@gmail.com>
1143
1144         Reviewed by darin.  Landed by eseidel.
1145
1146         Add #define guards for WIN32_LEAN_AND_MEAN and _CRT_RAND_S.
1147
1148         * kjs/config.h:
1149         * wtf/FastMalloc.cpp:
1150         * wtf/TCSpinLock.h:
1151
1152 2008-01-28  Sam Weinig  <sam@webkit.org>
1153
1154         Rubber-stamped by Darin Adler.
1155
1156         - Fix whitespace in nodes.h/cpp and nodes2string.cpp.
1157
1158         (NOTE: Specific changed functions elided for space and clarity)
1159         * kjs/nodes.cpp:
1160         * kjs/nodes.h:
1161         * kjs/nodes2string.cpp:
1162
1163 2008-01-27  Sam Weinig  <sam@webkit.org>
1164
1165         Reviewed by Oliver Hunt.
1166
1167         Patch for http://bugs.webkit.org/show_bug.cgi?id=17025
1168         nodes.h/cpp has been rolling around in the mud - lets hose it down
1169
1170         - Rename member variables to use the m_ prefix.
1171
1172         (NOTE: Specific changed functions elided for space and clarity)
1173         * kjs/grammar.y:
1174         * kjs/nodes.cpp:
1175         * kjs/nodes.h:
1176         * kjs/nodes2string.cpp:
1177
1178 2008-01-27  Darin Adler  <darin@apple.com>
1179
1180         Reviewed by Oliver.
1181
1182         - fix <rdar://problem/5657450> REGRESSION: const is broken
1183
1184         Test: fast/js/const.html
1185
1186         SunSpider said this was 0.3% slower. And I saw some Shark samples in
1187         JSGlobalObject::put -- not a lot but a few. We may be able to regain the
1188         speed, but for now we will take that small hit for correctness sake.
1189
1190         * kjs/JSGlobalObject.cpp:
1191         (KJS::JSGlobalObject::put): Pass the checkReadOnly flag in to symbolTablePut
1192         instead of passing attributes.
1193
1194         * kjs/JSVariableObject.h:
1195         (KJS::JSVariableObject::symbolTablePut): Removed the code to set attributes
1196         here, since we only set attributes when creating a property. Added the code
1197         to check read-only here, since we need that to implement const!
1198
1199         * kjs/function.cpp:
1200         (KJS::ActivationImp::put): Pass the checkReadOnly flag in to symbolTablePut
1201         instead of passing attributes.
1202
1203         * kjs/nodes.cpp:
1204         (KJS::isConstant): Added.
1205         (KJS::PostIncResolveNode::optimizeVariableAccess): Create a PostIncConstNode
1206         if optimizing for a local variable and the variable is constant.
1207         (KJS::PostDecResolveNode::optimizeVariableAccess): Ditto. But PostDecConstNode.
1208         (KJS::PreIncResolveNode::optimizeVariableAccess): Ditto. But PreIncConstNode.
1209         (KJS::PreDecResolveNode::optimizeVariableAccess): Ditto. But PreDecConstNode.
1210         (KJS::PreIncConstNode::evaluate): Return the value + 1.
1211         (KJS::PreDecConstNode::evaluate): Return the value - 1.
1212         (KJS::PostIncConstNode::evaluate): Return the value converted to a number.
1213         (KJS::PostDecConstNode::evaluate): Ditto.
1214         (KJS::ReadModifyResolveNode::optimizeVariableAccess): Create a ReadModifyConstNode
1215         if optimizing for a local variable and the variable is constant.
1216         (KJS::AssignResolveNode::optimizeVariableAccess): Ditto. But AssignConstNode.
1217         (KJS::ScopeNode::optimizeVariableAccess): Pass the local storage to the
1218         node optimizeVariableAccess functions, since that's where we need to look to
1219         figure out if a variable is constant.
1220         (KJS::FunctionBodyNode::processDeclarations): Moved the call to
1221         optimizeVariableAccess until after localStorage is set up.
1222         (KJS::ProgramNode::processDeclarations): Ditto.
1223
1224         * kjs/nodes.h: Fixed the IsConstant and HasInitializer values. They are used
1225         as flag masks, so a value of 0 will not work for IsConstant. Changed the
1226         first parameter to optimizeVariableAccess to be a const reference to a symbol
1227         table and added a const reference to local storage. Added classes for const
1228         versions of local variable access: PostIncConstNode, PostDecConstNode,
1229         PreIncConstNode, PreDecConstNode, ReadModifyConstNode, and AssignConstNode.
1230
1231         * kjs/object.cpp:
1232         (KJS::JSObject::put): Tweaked comments a bit, and changed the checkReadOnly
1233         expression to match the form used at the two other call sites.
1234
1235 2008-01-27  Darin Adler  <darin@apple.com>
1236
1237         Reviewed by Oliver.
1238
1239         - fix http://bugs.webkit.org/show_bug.cgi?id=16498
1240           ''.constructor.toString() gives [function]
1241
1242         Test: fast/js/function-names.html
1243
1244         * kjs/array_object.cpp:
1245         (KJS::ArrayObjectImp::ArrayObjectImp): Use the class name as the constructor's function name.
1246         * kjs/bool_object.cpp:
1247         (KJS::BooleanObjectImp::BooleanObjectImp): Ditto.
1248         * kjs/date_object.cpp:
1249         (KJS::DateObjectImp::DateObjectImp): Ditto.
1250         * kjs/error_object.cpp:
1251         (KJS::ErrorPrototype::ErrorPrototype): Make the error object be an Error.
1252         (KJS::ErrorObjectImp::ErrorObjectImp): Use the class name as the constructor's function name.
1253         (KJS::NativeErrorPrototype::NativeErrorPrototype): Take const UString&.
1254         (KJS::NativeErrorImp::NativeErrorImp): Use the prototype's name as the constructor's function
1255         name.
1256         * kjs/error_object.h: Change ErrorPrototype to inherit from ErrorInstance. Change the
1257         NativeErrorImp constructor to take a NativeErrorPrototype pointer for its prototype.
1258         * kjs/function.h: Removed unneeded constructor for internal functions without names.
1259         We want to avoid those!
1260         * kjs/function_object.cpp:
1261         (KJS::functionProtoFuncToString): Removed code that writes out just [function] for functions
1262         that have no names. There's no reason to do that.
1263         (KJS::FunctionObjectImp::FunctionObjectImp): Use the class name as the constructor's
1264         function name.
1265         * kjs/internal.cpp: Removed the unused constructor.
1266         * kjs/number_object.cpp:
1267         (KJS::fractionalPartToString): Marked static for internal linkage.
1268         (KJS::exponentialPartToString): Ditto.
1269         (KJS::numberProtoFuncToPrecision): Removed an unneeded else.
1270         (KJS::NumberObjectImp::NumberObjectImp): Use the class name as the constructor's
1271         function name.
1272         (KJS::NumberObjectImp::getValueProperty): Tweaked formatting.
1273         * kjs/object_object.cpp:
1274         (KJS::ObjectObjectImp::ObjectObjectImp): Use "Object" for the function name.
1275         * kjs/regexp_object.cpp:
1276         (KJS::RegExpObjectImp::RegExpObjectImp): Use "RegExp" for the function name.
1277         * kjs/string_object.cpp:
1278         (KJS::StringObjectImp::StringObjectImp): Use the class name as the constructor's
1279         function name.
1280
1281 2008-01-26  Darin Adler  <darin@apple.com>
1282
1283         Reviewed by Oliver.
1284
1285         - fix http://bugs.webkit.org/show_bug.cgi?id=17027
1286           Incorrect Function.toString behaviour with read/modify/write operators performed on negative numbers
1287
1288         Test: fast/js/function-toString-parentheses.html
1289
1290         The problem here was that a NumberNode with a negative number in it had the wrong
1291         precedence. It's not a primary expression, it's a unary operator with a primary
1292         expression after it.
1293
1294         Once the precedence of NumberNode was fixed, the cases from bug 17020 were also
1295         fixed without trying to treat bracket nodes like dot nodes. That wasn't needed.
1296         The reason we handle numbers before dot nodes specially is that the dot is a
1297         legal character in a number. The same is not true of a bracket. Eventually we
1298         could get smarter, and only add the parentheses when there is actual ambiguity.
1299         There is none if the string form of the number already has a dot in it, or if
1300         it's a number with a alphabetic name like infinity or NAN.
1301
1302         * kjs/nodes.h: Renamed back from ObjectAccess to DotExpr.
1303         (KJS::NumberNode::precedence): Return PrecUnary for negative numbers, since
1304         they serialize as a unary operator, not a primary expression.
1305         * kjs/nodes2string.cpp:
1306         (KJS::SourceStream::operator<<): Clear m_numberNeedsParens if this adds
1307         parens; one set is enough.
1308         (KJS::bracketNodeStreamTo): Remove unneeded special flag here. Normal
1309         operator precedence suffices.
1310         (KJS::NewExprNode::streamTo): Ditto.
1311
1312 2008-01-26  Oliver Hunt  <oliver@apple.com>
1313
1314         Reviewed by Maciej and Darin.
1315
1316         Fix for http://bugs.webkit.org/show_bug.cgi?id=17020
1317         Function.toString does not parenthesise numbers for the bracket accessor
1318
1319         It turns out that logic was there for all of the dot accessor nodes to make numbers be
1320         parenthesised properly, so it was a trivial extension to extend that to the bracket nodes.
1321         I renamed the enum type to reflect the fact that it is now used for both dot and bracket
1322         accessors.
1323
1324         * kjs/nodes2string.cpp:
1325         (KJS::bracketNodeStreamTo):
1326         (KJS::BracketAccessorNode::streamTo):
1327
1328 2008-01-26  Oliver Hunt  <oliver@apple.com>
1329
1330         Reviewed by Darin.
1331
1332         Fix Bug 17018: Incorrect code generated from Function.toString for get/setters in object literals
1333
1334         Don't quote getter and setter names during output, as that is simply wrong.
1335
1336         * kjs/nodes2string.cpp:
1337         (KJS::PropertyNode::streamTo):
1338
1339 2008-01-26  Darin Adler  <darin@apple.com>
1340
1341         Reviewed by Eric Seidel.
1342
1343         - http://bugs.webkit.org/show_bug.cgi?id=16860
1344           a bit of cleanup after the Activation optimization
1345
1346         * JavaScriptCore.exp: Export the GlobalExecState constructor instead of
1347         the global flavor of the ExecState constructor. It'd probably be cleaner
1348         to not export either one, but JSGlobalObject inlines the code that
1349         constructs the ExecState. If we changed that, we could remove this export.
1350
1351         * JavaScriptCore.xcodeproj/project.pbxproj: Re-sorted a few things and
1352         put the new source files into the kjs group rather than at the top level.
1353
1354         * kjs/ExecState.cpp:
1355         (KJS::ExecState::ExecState): Marked inline and updated for data member
1356         name changes. This is now only for use for the derived classes. Also removed
1357         code that sets the unused m_savedExec data member for the global case. That
1358         data member is only used for the other two types.
1359         (KJS::ExecState::~ExecState): Marked inline and removed all the code.
1360         The derived class destructors now inclde the appropriate code.
1361         (KJS::ExecState::lexicalGlobalObject): Removed unneeded special case for
1362         an empty scope chain. The bottom function already returns 0 for that case,
1363         so the general case code handles it fine. Also changed to use data members
1364         directly rather than calling functions.
1365         (KJS::GlobalExecState::GlobalExecState): Added. Calls through to the base
1366         class constructor.
1367         (KJS::GlobalExecState::~GlobalExecState): Added.
1368         (KJS::InterpreterExecState::InterpreterExecState): Added. Moved code to
1369         manipulate activeExecStates here since we don't want to have to check for the
1370         special case of globalExec.
1371         (KJS::InterpreterExecState::~InterpreterExecState): Added.
1372         (KJS::EvalExecState::EvalExecState): Added.
1373         (KJS::EvalExecState::~EvalExecState): Added.
1374         (KJS::FunctionExecState::FunctionExecState): Added.
1375         (KJS::FunctionExecState::~FunctionExecState): Added.
1376
1377         * kjs/ExecState.h: Tweaked the header, includes, and declarations a bit.
1378         Made ExecState inherit from Noncopyable. Reformatted some comments and
1379         made them a bit more brief. Rearranged declarations a little bit and removed
1380         unused savedExec function. Changed seenLabels function to return a reference
1381         rather than a pointer. Made constructors and destructor protected, and also
1382         did the same with all data members. Renamed m_thisVal to m_thisValue and
1383         ls to m_labelStack. Added three new derived classes for each of the
1384         types of ExecState. The primary goal here was to remove a branch from the
1385         code in the destructor, but it's also clearer than overloading the arguments
1386         to the ExecState constructor.
1387
1388         * kjs/JSGlobalObject.cpp:
1389         (KJS::getCurrentTime): Fixed formatting.
1390         (KJS::JSGlobalObject::pushActivation): Removed parentheses that don't make
1391         the expression clearer -- other similar sites didn't have these parentheses,
1392         even the one a couple lines earlier that sets stackEntry.
1393         (KJS::JSGlobalObject::tearOffActivation): Got rid of unneeded static_cast
1394         (I think I mentioned this during patch review) and used an early exit so that
1395         the entire contents of the function aren't nested inside an if statement.
1396         Also removed the check of codeType, instead checking Activation for 0.
1397         For now, I kept the codeType check, but inside an assertion.
1398
1399         * kjs/JSGlobalObject.h: Changed type of globalExec to GlobalExecState.
1400         * kjs/function.cpp:
1401         (KJS::FunctionImp::callAsFunction): Changed type to FunctionExecState.
1402         (KJS::GlobalFuncImp::callAsFunction): Changed type to EvalExecState.
1403         * kjs/interpreter.cpp:
1404         (KJS::Interpreter::evaluate): Changed type to GlobalExecState.
1405
1406         * kjs/nodes.cpp:
1407         (KJS::ContinueNode::execute): Changed code since seenLabels() returns a
1408         reference now instead of a pointer.
1409         (KJS::BreakNode::execute): Ditto.
1410         (KJS::LabelNode::execute): Ditto.
1411
1412 2008-01-26  Sam Weinig  <sam@webkit.org>
1413
1414         Reviewed by Mark Rowe.
1415
1416         Cleanup node2string a little.
1417         - Remove some unnecessary branching.
1418         - Factor out bracket and dot streaming into static inline functions.
1419
1420         * kjs/nodes.h:
1421         * kjs/nodes2string.cpp:
1422         (KJS::bracketNodeStreamTo):
1423         (KJS::dotNodeStreamTo):
1424         (KJS::FunctionCallBracketNode::streamTo):
1425         (KJS::FunctionCallDotNode::streamTo):
1426         (KJS::PostIncBracketNode::streamTo):
1427         (KJS::PostDecBracketNode::streamTo):
1428         (KJS::PostIncDotNode::streamTo):
1429         (KJS::PostDecDotNode::streamTo):
1430         (KJS::DeleteBracketNode::streamTo):
1431         (KJS::DeleteDotNode::streamTo):
1432         (KJS::PreIncBracketNode::streamTo):
1433         (KJS::PreDecBracketNode::streamTo):
1434         (KJS::PreIncDotNode::streamTo):
1435         (KJS::PreDecDotNode::streamTo):
1436         (KJS::ReadModifyBracketNode::streamTo):
1437         (KJS::AssignBracketNode::streamTo):
1438         (KJS::ReadModifyDotNode::streamTo):
1439         (KJS::AssignDotNode::streamTo):
1440         (KJS::WhileNode::streamTo):
1441
1442 2008-01-26  Mark Rowe  <mrowe@apple.com>
1443
1444         Reviewed by Darin Adler.
1445
1446         Fix http://bugs.webkit.org/show_bug.cgi?id=17001
1447         Bug 17001: Build error with Gtk port on Mac OS X
1448
1449         If both XP_MACOSX and XP_UNIX are defined then X11.h and Carbon.h will both be included.
1450         These provide conflicting definitions for a type named 'Cursor'.  As XP_UNIX is set by
1451         the build system when targeting X11, it doesn't make sense for XP_MACOSX to also be set
1452         in this instance.
1453
1454         * bindings/npapi.h: Don't define XP_MACOSX if XP_UNIX is defined.
1455
1456 2008-01-26  Darin Adler  <darin@apple.com>
1457
1458         Reviewed by Oliver.
1459
1460         - fix http://bugs.webkit.org/show_bug.cgi?id=17013
1461           JSC can't round trip certain for-loops
1462
1463         Test: fast/js/toString-for-var-decl.html
1464
1465         * kjs/nodes.h: Added PlaceholderTrueNode so we can put nodes into
1466         for loops without injecting the word "true" into them (nice, but not
1467         the bug fix). Fixed ForNode constructor so expr1WasVarDecl is set
1468         only when there is an expression, since it's common for the actual
1469         variable declaration to be moved by the parser.
1470
1471         * kjs/nodes2string.cpp:
1472         (KJS::PlaceholderTrueNode::streamTo): Added. Empty.
1473
1474 2008-01-25  Oliver Hunt  <oliver@apple.com>
1475
1476         Reviewed by Maciej.
1477
1478         Fix for bug 17012: REGRESSION: JSC can't round trip an object literal
1479
1480         Add logic to ensure that object literals and function expressions get
1481         parentheses when necessary.
1482
1483         * kjs/nodes.h:
1484         * kjs/nodes2string.cpp:
1485         (KJS::SourceStream::operator<<):
1486
1487 2008-01-24  Steve Falkenburg  <sfalken@apple.com>
1488
1489         Build fix.
1490
1491         * JavaScriptCore.vcproj/JavaScriptCore.sln:
1492
1493 2008-01-24  Steve Falkenburg  <sfalken@apple.com>
1494
1495         Build fix.
1496
1497         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
1498
1499 2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
1500
1501         Reviewed by Simon.
1502
1503         Fix QDateTime to JS Date conversion.
1504         Several conversion errors (some UTC related, some month
1505         offset related) and the conversion distance for Date
1506         to DateTime conversion weights were fixed (it should never
1507         be better to convert a JS Number into a Date rather than
1508         an int).
1509         
1510         * bindings/qt/qt_runtime.cpp:
1511         (KJS::Bindings::convertValueToQVariant):
1512         (KJS::Bindings::convertQVariantToValue):
1513
1514 2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
1515
1516         Reviewed by Simon.
1517
1518         Add support for calling QObjects.
1519         Add support for invokeDefaultMethod (via a call to
1520         a specific slot), and also allow using it as a
1521         constructor, like QtScript.
1522         
1523
1524         * bindings/qt/qt_class.cpp:
1525         (KJS::Bindings::QtClass::fallbackObject):
1526         * bindings/qt/qt_instance.cpp:
1527         (KJS::Bindings::QtRuntimeObjectImp::construct):
1528         (KJS::Bindings::QtInstance::QtInstance):
1529         (KJS::Bindings::QtInstance::~QtInstance):
1530         (KJS::Bindings::QtInstance::implementsCall):
1531         (KJS::Bindings::QtInstance::invokeDefaultMethod):
1532         * bindings/qt/qt_instance.h:
1533         * bindings/qt/qt_runtime.cpp:
1534         (KJS::Bindings::findMethodIndex):
1535         (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
1536         (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
1537         * bindings/qt/qt_runtime.h:
1538
1539 2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
1540
1541         Reviewed by Simon.
1542
1543         Code style cleanups.
1544         Add spaces before/after braces in inline function.
1545
1546         * bindings/qt/qt_instance.h:
1547
1548 2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
1549
1550         Reviewed by Simon.
1551
1552         Code style cleanups.
1553         Remove spaces and unneeded declared parameter names.
1554
1555         * bindings/qt/qt_instance.cpp:
1556         (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
1557
1558 2008-01-24  Michael Goddard  <michael.goddard@trolltech.com>
1559
1560         Reviewed by Simon.
1561
1562         Clear stale RuntimeObjectImps.
1563         Since other objects can have refs to the QtInstance,
1564         we can't rely on the QtInstance being deleted when the
1565         RuntimeObjectImp is invalidate or deleted.  This
1566         could result in a stale JSObject being returned for
1567         a valid Instance.
1568
1569         * bindings/qt/qt_instance.cpp:
1570         (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
1571         (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
1572         (KJS::Bindings::QtRuntimeObjectImp::invalidate):
1573         (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
1574         (KJS::Bindings::QtInstance::getRuntimeObject):
1575         * bindings/runtime.cpp:
1576         (KJS::Bindings::Instance::createRuntimeObject):
1577         * bindings/runtime.h:
1578
1579 2008-01-23  Alp Toker  <alp@atoker.com>
1580
1581         Rubber-stamped by Mark Rowe.
1582
1583         Remove whitespace after -I in automake include lists.
1584
1585         * GNUmakefile.am:
1586
1587 2008-01-23  Michael Goddard <michael.goddard@trolltech.com>
1588
1589         Reviewed by Lars Knoll <lars@trolltech.com>.
1590
1591         Reworked the JavaScriptCore Qt bindings:
1592         
1593         * Add initial support for string and variant arrays, as well
1594         as sub QObjects in the JS bindings.
1595         
1596         * Don't expose fields marked as not scriptable by moc.
1597         
1598         * Add support for dynamic properties and accessing named
1599         QObject children of an object (like QtScript and older
1600         IE DOM style JS).
1601         * Add support for custom toString methods.
1602         
1603         * Fine tune some bindings to be closer to QtScript.
1604         Make void functions return undefined, and empty/
1605         null QStrings return a zero length string.
1606         
1607         * Create framework for allowing more direct method calls.
1608         Since RuntimeMethod doesn't allow us to add additional
1609         methods/properties to a function, add these classes.
1610         Start prototyping object.signal.connect(...).
1611         
1612         * Add signal support to the Qt bindings.
1613         Allow connecting to signals (object.signal.connect(slot)),
1614         disconnecting, and emitting signals.  Currently chooses
1615         the first signal that matches the name, so this will need
1616         improvement.
1617         
1618         * Add property names, and resolve signals closer to use.
1619         Enumerating properties now returns some of the Qt properties
1620         and signals.  Slots and methods aren't quite present.  Also,
1621         resolve signal connections etc. closer to the time of use, so
1622         we can do more dynamic resolution based on argument type etc.
1623         Still picks the first one with the same name, at the moment.
1624         
1625         * Make signature comparison code consistent.
1626         Use the same code for checking meta signatures in
1627         the method and fallback getters, and avoid a
1628         QByteArray construction when we can.
1629         
1630         * Fix minor memory leak, and handle pointers better.
1631         Delete the private object in the dtors, and use RefPtrs
1632         for holding Instances etc.
1633         
1634         * Handle method lookup better.
1635         Allow invocation time method lookup based on the arguments,
1636         which is closer to QtScript behaviour.  Also, cache the
1637         method lists and delete them in the QtClass dtor (stops
1638         a memory leak).
1639         
1640         * Improve JS to Qt data type conversions.
1641         Add some support for Date & RegExp JS objects,
1642         and provide some metrics on the quality of the
1643         conversion.
1644         
1645         * A couple of fixes for autotest failures.
1646         Better support for converting lists, read/write only
1647         QMetaProperty support, modified slot search order...)
1648
1649         * bindings/qt/qt_class.cpp:
1650         (KJS::Bindings::QtClass::QtClass):
1651         (KJS::Bindings::QtClass::~QtClass):
1652         (KJS::Bindings::QtClass::name):
1653         (KJS::Bindings::QtClass::fallbackObject):
1654         (KJS::Bindings::QtClass::methodsNamed):
1655         (KJS::Bindings::QtClass::fieldNamed):
1656         * bindings/qt/qt_class.h:
1657         * bindings/qt/qt_instance.cpp:
1658         (KJS::Bindings::QtInstance::QtInstance):
1659         (KJS::Bindings::QtInstance::~QtInstance):
1660         (KJS::Bindings::QtInstance::getRuntimeObject):
1661         (KJS::Bindings::QtInstance::getClass):
1662         (KJS::Bindings::QtInstance::implementsCall):
1663         (KJS::Bindings::QtInstance::getPropertyNames):
1664         (KJS::Bindings::QtInstance::invokeMethod):
1665         (KJS::Bindings::QtInstance::invokeDefaultMethod):
1666         (KJS::Bindings::QtInstance::stringValue):
1667         (KJS::Bindings::QtInstance::booleanValue):
1668         (KJS::Bindings::QtInstance::valueOf):
1669         (KJS::Bindings::QtField::name):
1670         (KJS::Bindings::QtField::valueFromInstance):
1671         (KJS::Bindings::QtField::setValueToInstance):
1672         * bindings/qt/qt_instance.h:
1673         (KJS::Bindings::QtInstance::getBindingLanguage):
1674         (KJS::Bindings::QtInstance::getObject):
1675         * bindings/qt/qt_runtime.cpp:
1676         (KJS::Bindings::QWKNoDebug::QWKNoDebug):
1677         (KJS::Bindings::QWKNoDebug::~QWKNoDebug):
1678         (KJS::Bindings::QWKNoDebug::operator<<):
1679         (KJS::Bindings::):
1680         (KJS::Bindings::valueRealType):
1681         (KJS::Bindings::convertValueToQVariant):
1682         (KJS::Bindings::convertQVariantToValue):
1683         (KJS::Bindings::QtRuntimeMethod::QtRuntimeMethod):
1684         (KJS::Bindings::QtRuntimeMethod::~QtRuntimeMethod):
1685         (KJS::Bindings::QtRuntimeMethod::codeType):
1686         (KJS::Bindings::QtRuntimeMethod::execute):
1687         (KJS::Bindings::QtRuntimeMethodData::~QtRuntimeMethodData):
1688         (KJS::Bindings::QtRuntimeMetaMethodData::~QtRuntimeMetaMethodData):
1689         (KJS::Bindings::QtRuntimeConnectionMethodData::~QtRuntimeConnectionMethodData):
1690         (KJS::Bindings::QtMethodMatchType::):
1691         (KJS::Bindings::QtMethodMatchType::QtMethodMatchType):
1692         (KJS::Bindings::QtMethodMatchType::kind):
1693         (KJS::Bindings::QtMethodMatchType::isValid):
1694         (KJS::Bindings::QtMethodMatchType::isVariant):
1695         (KJS::Bindings::QtMethodMatchType::isMetaType):
1696         (KJS::Bindings::QtMethodMatchType::isUnresolved):
1697         (KJS::Bindings::QtMethodMatchType::isMetaEnum):
1698         (KJS::Bindings::QtMethodMatchType::enumeratorIndex):
1699         (KJS::Bindings::QtMethodMatchType::variant):
1700         (KJS::Bindings::QtMethodMatchType::metaType):
1701         (KJS::Bindings::QtMethodMatchType::metaEnum):
1702         (KJS::Bindings::QtMethodMatchType::unresolved):
1703         (KJS::Bindings::QtMethodMatchType::typeId):
1704         (KJS::Bindings::QtMethodMatchType::name):
1705         (KJS::Bindings::QtMethodMatchData::QtMethodMatchData):
1706         (KJS::Bindings::QtMethodMatchData::isValid):
1707         (KJS::Bindings::QtMethodMatchData::firstUnresolvedIndex):
1708         (KJS::Bindings::indexOfMetaEnum):
1709         (KJS::Bindings::findMethodIndex):
1710         (KJS::Bindings::findSignalIndex):
1711         (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod):
1712         (KJS::Bindings::QtRuntimeMetaMethod::mark):
1713         (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction):
1714         (KJS::Bindings::QtRuntimeMetaMethod::getOwnPropertySlot):
1715         (KJS::Bindings::QtRuntimeMetaMethod::lengthGetter):
1716         (KJS::Bindings::QtRuntimeMetaMethod::connectGetter):
1717         (KJS::Bindings::QtRuntimeMetaMethod::disconnectGetter):
1718         (KJS::Bindings::QtRuntimeConnectionMethod::QtRuntimeConnectionMethod):
1719         (KJS::Bindings::QtRuntimeConnectionMethod::callAsFunction):
1720         (KJS::Bindings::QtRuntimeConnectionMethod::getOwnPropertySlot):
1721         (KJS::Bindings::QtRuntimeConnectionMethod::lengthGetter):
1722         (KJS::Bindings::QtConnectionObject::QtConnectionObject):
1723         (KJS::Bindings::QtConnectionObject::~QtConnectionObject):
1724         (KJS::Bindings::QtConnectionObject::metaObject):
1725         (KJS::Bindings::QtConnectionObject::qt_metacast):
1726         (KJS::Bindings::QtConnectionObject::qt_metacall):
1727         (KJS::Bindings::QtConnectionObject::execute):
1728         (KJS::Bindings::QtConnectionObject::match):
1729         (KJS::Bindings::::QtArray):
1730         (KJS::Bindings::::~QtArray):
1731         (KJS::Bindings::::rootObject):
1732         (KJS::Bindings::::setValueAt):
1733         (KJS::Bindings::::valueAt):
1734         * bindings/qt/qt_runtime.h:
1735         (KJS::Bindings::QtField::):
1736         (KJS::Bindings::QtField::QtField):
1737         (KJS::Bindings::QtField::fieldType):
1738         (KJS::Bindings::QtMethod::QtMethod):
1739         (KJS::Bindings::QtMethod::name):
1740         (KJS::Bindings::QtMethod::numParameters):
1741         (KJS::Bindings::QtArray::getLength):
1742         (KJS::Bindings::QtRuntimeMethod::d_func):
1743         (KJS::Bindings::QtRuntimeMetaMethod::d_func):
1744         (KJS::Bindings::QtRuntimeConnectionMethod::d_func):
1745         (KJS::Bindings::):
1746         * bindings/runtime.cpp:
1747         (KJS::Bindings::Instance::createBindingForLanguageInstance):
1748         (KJS::Bindings::Instance::createRuntimeObject):
1749         (KJS::Bindings::Instance::reallyCreateRuntimeObject):
1750         * bindings/runtime.h:
1751
1752 2008-01-22  Anders Carlsson  <andersca@apple.com>
1753
1754         Reviewed by Darin and Adam.
1755
1756         <rdar://problem/5688975>
1757         div element on microsoft site has wrong left offset.
1758         
1759         Return true even if NPN_GetProperty returns null or undefined. This matches Firefox 
1760         (and is what the Silverlight plug-in expects).
1761         
1762         * bindings/NP_jsobject.cpp:
1763         (_NPN_GetProperty):
1764
1765 2008-01-21  Geoffrey Garen  <ggaren@apple.com>
1766
1767         Reviewed by Maciej Stachowiak.
1768         
1769         Fixed http://bugs.webkit.org/show_bug.cgi?id=16909
1770         REGRESSION: Amazon.com crash (ActivationImp)
1771         
1772         (and a bunch of other crashes)
1773         
1774         Plus, a .7% SunSpider speedup to boot.
1775         
1776         Replaced the buggy currentExec and savedExec mechanisms with an
1777         explicit ExecState stack.
1778
1779         * kjs/collector.cpp:
1780         (KJS::Collector::collect): Explicitly mark the ExecState stack.
1781
1782         (KJS::Collector::reportOutOfMemoryToAllExecStates): Slight change in
1783         behavior: We no longer throw an exception in any global ExecStates,
1784         since global ExecStates are more like pseudo-ExecStates, and aren't
1785         used for script execution. (It's unclear what would happen if you left
1786         an exception waiting around in a global ExecState, but it probably
1787         wouldn't be good.)
1788
1789 2008-01-21  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
1790
1791         Reviewed by Alp Toker.
1792
1793         http://bugs.webkit.org/show_bug.cgi?id=16955
1794         Get errors when cross-compile webkit-gtk
1795
1796         * GNUmakefile.am: removed ICU_CFLAGS
1797
1798 2008-01-18  Kevin McCullough  <kmccullough@apple.com>
1799
1800         - Build fix.
1801
1802         * kjs/ustring.h:
1803
1804 2008-01-18  Kevin McCullough  <kmccullough@apple.com>
1805
1806         - Build fix.
1807
1808         * kjs/ustring.cpp:
1809         * kjs/ustring.h:
1810         (KJS::UString::cost):
1811
1812 2008-01-18  Kevin McCullough  <kmccullough@apple.com>
1813
1814         Reviewed by Geoff.
1815
1816         - Correctly report cost of appended strings to trigger GC.
1817
1818         * kjs/ustring.cpp:
1819         (KJS::):
1820         (KJS::UString::Rep::create):
1821         (KJS::UString::UString): Don't create unnecssary objects.
1822         (KJS::UString::cost): Report cost if necessary but also keep track of 
1823         reported cost.
1824         * kjs/ustring.h:
1825
1826 2008-01-18  Simon Hausmann  <hausmann@webkit.org>
1827
1828         Reviewed by Holger.
1829
1830         Fix return type conversions from Qt slots to JS values.
1831         
1832         This also fixes fast/dom/open-and-close-by-DOM.html, which called
1833         layoutTestController.windowCount().
1834         
1835         When constructing the QVariant that holds the return type we cannot
1836         use the QVarian(Type) constuctor as that will create a null variant.
1837         We have to use the QVariant(Type, void *) constructor instead, just
1838         like in QMetaObject::read() for example.
1839         
1840
1841         * bindings/qt/qt_instance.cpp:
1842         (KJS::Bindings::QtInstance::getRuntimeObject):
1843
1844 2008-01-18  Prasanth Ullattil  <prasanth.ullattil@trolltech.com>
1845
1846         Reviewed by Simon Hausmann <hausmann@webkit.org>.
1847
1848         Fix compilation on Win64(2): Implemented currentThreadStackBase on X86-64 on Windows
1849         
1850
1851         * kjs/collector.cpp:
1852         (KJS::Collector::heapAllocate):
1853
1854 2008-01-18  Prasanth Ullattil  <prasanth.ullattil@trolltech.com>
1855
1856         Reviewed by Simon Hausmann <hausmann@webkit.org>.
1857
1858         Fix compilation on Win64(1): Define WTF_PLATFORM_X86_64 correctly on Win64.
1859         
1860
1861         * wtf/Platform.h:
1862
1863 2008-01-17  Antti Koivisto  <antti@apple.com>
1864
1865         Fix Windows build.
1866
1867         * kjs/regexp_object.cpp:
1868         (KJS::regExpProtoFuncToString):
1869
1870 2008-01-16  Sam Weinig  <sam@webkit.org>
1871
1872         Reviewed by Darin.
1873
1874         Fix for http://bugs.webkit.org/show_bug.cgi?id=16901
1875         Convert remaining JS function objects to use the new PrototypeFunction class
1876
1877         - Moves Boolean, Function, RegExp, Number, Object and Global functions to their
1878           own static function implementations so that they can be used with the
1879           PrototypeFunction class.  SunSpider says this is 1.003x as fast.
1880
1881         * kjs/JSGlobalObject.cpp:
1882         (KJS::JSGlobalObject::reset):
1883         * kjs/array_object.h:
1884         * kjs/bool_object.cpp:
1885         (KJS::BooleanInstance::BooleanInstance):
1886         (KJS::BooleanPrototype::BooleanPrototype):
1887         (KJS::booleanProtoFuncToString):
1888         (KJS::booleanProtoFuncValueOf):
1889         (KJS::BooleanObjectImp::BooleanObjectImp):
1890         (KJS::BooleanObjectImp::implementsConstruct):
1891         (KJS::BooleanObjectImp::construct):
1892         (KJS::BooleanObjectImp::callAsFunction):
1893         * kjs/bool_object.h:
1894         (KJS::BooleanInstance::classInfo):
1895         * kjs/error_object.cpp:
1896         (KJS::ErrorPrototype::ErrorPrototype):
1897         (KJS::errorProtoFuncToString):
1898         * kjs/error_object.h:
1899         * kjs/function.cpp:
1900         (KJS::globalFuncEval):
1901         (KJS::globalFuncParseInt):
1902         (KJS::globalFuncParseFloat):
1903         (KJS::globalFuncIsNaN):
1904         (KJS::globalFuncIsFinite):
1905         (KJS::globalFuncDecodeURI):
1906         (KJS::globalFuncDecodeURIComponent):
1907         (KJS::globalFuncEncodeURI):
1908         (KJS::globalFuncEncodeURIComponent):
1909         (KJS::globalFuncEscape):
1910         (KJS::globalFuncUnEscape):
1911         (KJS::globalFuncKJSPrint):
1912         (KJS::PrototypeFunction::PrototypeFunction):
1913         * kjs/function.h:
1914         * kjs/function_object.cpp:
1915         (KJS::FunctionPrototype::FunctionPrototype):
1916         (KJS::functionProtoFuncToString):
1917         (KJS::functionProtoFuncApply):
1918         (KJS::functionProtoFuncCall):
1919         * kjs/function_object.h:
1920         * kjs/number_object.cpp:
1921         (KJS::NumberPrototype::NumberPrototype):
1922         (KJS::numberProtoFuncToString):
1923         (KJS::numberProtoFuncToLocaleString):
1924         (KJS::numberProtoFuncValueOf):
1925         (KJS::numberProtoFuncToFixed):
1926         (KJS::numberProtoFuncToExponential):
1927         (KJS::numberProtoFuncToPrecision):
1928         * kjs/number_object.h:
1929         (KJS::NumberInstance::classInfo):
1930         (KJS::NumberObjectImp::classInfo):
1931         (KJS::NumberObjectImp::):
1932         * kjs/object_object.cpp:
1933         (KJS::ObjectPrototype::ObjectPrototype):
1934         (KJS::objectProtoFuncValueOf):
1935         (KJS::objectProtoFuncHasOwnProperty):
1936         (KJS::objectProtoFuncIsPrototypeOf):
1937         (KJS::objectProtoFuncDefineGetter):
1938         (KJS::objectProtoFuncDefineSetter):
1939         (KJS::objectProtoFuncLookupGetter):
1940         (KJS::objectProtoFuncLookupSetter):
1941         (KJS::objectProtoFuncPropertyIsEnumerable):
1942         (KJS::objectProtoFuncToLocaleString):
1943         (KJS::objectProtoFuncToString):
1944         * kjs/object_object.h:
1945         * kjs/regexp_object.cpp:
1946         (KJS::RegExpPrototype::RegExpPrototype):
1947         (KJS::regExpProtoFuncTest):
1948         (KJS::regExpProtoFuncExec):
1949         (KJS::regExpProtoFuncCompile):
1950         (KJS::regExpProtoFuncToString):
1951         * kjs/regexp_object.h:
1952
1953 2008-01-16  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
1954
1955         Reviewed by Maciej & Darin.
1956
1957         Fixes Bug 16868: Gmail crash
1958           and Bug 16871: Crash when loading apple.com/startpage
1959
1960         <http://bugs.webkit.org/show_bug.cgi?id=16868>
1961         <rdar://problem/5686108>
1962
1963         <http://bugs.webkit.org/show_bug.cgi?id=16871>
1964         <rdar://problem/5686670>
1965
1966         Adds ActivationImp tear-off for cross-window eval() and fixes an
1967         existing garbage collection issue exposed by the ActivationImp tear-off
1968         patch (r29425) that can occur when an ExecState's m_callingExec is
1969         different than its m_savedExec.
1970
1971         * kjs/ExecState.cpp:
1972         (KJS::ExecState::mark):
1973         * kjs/function.cpp:
1974         (KJS::GlobalFuncImp::callAsFunction):
1975
1976 2008-01-16  Sam Weinig  <sam@webkit.org>
1977
1978         Reviewed by Oliver.
1979
1980         Clean up MathObjectImp, it needed a little scrubbing.
1981
1982         * kjs/math_object.cpp:
1983         (KJS::MathObjectImp::MathObjectImp):
1984         (KJS::MathObjectImp::getOwnPropertySlot):
1985         (KJS::MathObjectImp::getValueProperty):
1986         (KJS::mathProtoFuncACos):
1987         (KJS::mathProtoFuncASin):
1988         (KJS::mathProtoFuncATan):
1989         (KJS::mathProtoFuncATan2):
1990         (KJS::mathProtoFuncCos):
1991         (KJS::mathProtoFuncExp):
1992         (KJS::mathProtoFuncLog):
1993         (KJS::mathProtoFuncSin):
1994         (KJS::mathProtoFuncSqrt):
1995         (KJS::mathProtoFuncTan):
1996         * kjs/math_object.h:
1997         (KJS::MathObjectImp::classInfo):
1998         (KJS::MathObjectImp::):
1999
2000 2008-01-16  Sam Weinig  <sam@webkit.org>
2001
2002         Reviewed by Geoffrey Garen.
2003
2004         Rename Lexer variable bol to atLineStart.
2005
2006         * kjs/lexer.cpp:
2007         (KJS::Lexer::Lexer):
2008         (KJS::Lexer::setCode):
2009         (KJS::Lexer::nextLine):
2010         (KJS::Lexer::lex):
2011         * kjs/lexer.h:
2012
2013 2008-01-16  Sam Weinig  <sam@webkit.org>
2014
2015         Reviewed by Geoffrey Garen and Anders Carlsson.
2016
2017         Remove uses of KJS_PURE_ECMA as we don't ever build with it defined,
2018         and we have many features that are not included in the ECMA spec.
2019
2020         * kjs/lexer.cpp:
2021         (KJS::Lexer::Lexer):
2022         (KJS::Lexer::setCode):
2023         (KJS::Lexer::nextLine):
2024         (KJS::Lexer::lex):
2025         * kjs/lexer.h:
2026         * kjs/string_object.cpp:
2027         * kjs/string_object.h:
2028
2029 2008-01-15  Sam Weinig  <sam@webkit.org>
2030
2031         Reviewed by Geoffrey Garen.
2032
2033         Fix <rdar://problem/5595552> r27608 introduced a 20% increase in JS binary size, 4% increase in WebCore binary size
2034
2035         - This changes the way JS functions that use Lookup tables are handled.  Instead of using
2036           one class per function, which allowed specialization of the virtual callAsFunction
2037           method, we now use one class, PrototypeFunction, which takes a pointer to a static
2038           function to use as the implementation.  This significantly decreases the binary size
2039           of JavaScriptCore (about 145k on an Intel only build) while still keeping some of the
2040           speedup r27608 garnered (SunSpider says this is 1.005x as slow, which should leave some
2041           wiggle room from the original 1% speedup) and keeps the functions implementations in separate
2042           functions to help with optimizations.
2043
2044         * JavaScriptCore.exp:
2045         * JavaScriptCore.xcodeproj/project.pbxproj:
2046         * kjs/array_object.cpp:
2047         (KJS::arrayProtoFuncToString):
2048         (KJS::arrayProtoFuncToLocaleString):
2049         (KJS::arrayProtoFuncJoin):
2050         (KJS::arrayProtoFuncConcat):
2051         (KJS::arrayProtoFuncPop):
2052         (KJS::arrayProtoFuncPush):
2053         (KJS::arrayProtoFuncReverse):
2054         (KJS::arrayProtoFuncShift):
2055         (KJS::arrayProtoFuncSlice):
2056         (KJS::arrayProtoFuncSort):
2057         (KJS::arrayProtoFuncSplice):
2058         (KJS::arrayProtoFuncUnShift):
2059         (KJS::arrayProtoFuncFilter):
2060         (KJS::arrayProtoFuncMap):
2061         (KJS::arrayProtoFuncEvery):
2062         (KJS::arrayProtoFuncForEach):
2063         (KJS::arrayProtoFuncSome):
2064         (KJS::arrayProtoFuncIndexOf):
2065         (KJS::arrayProtoFuncLastIndexOf):
2066         * kjs/array_object.h:
2067         * kjs/date_object.cpp:
2068         (KJS::DatePrototype::getOwnPropertySlot):
2069         (KJS::dateProtoFuncToString):
2070         (KJS::dateProtoFuncToUTCString):
2071         (KJS::dateProtoFuncToDateString):
2072         (KJS::dateProtoFuncToTimeString):
2073         (KJS::dateProtoFuncToLocaleString):
2074         (KJS::dateProtoFuncToLocaleDateString):
2075         (KJS::dateProtoFuncToLocaleTimeString):
2076         (KJS::dateProtoFuncValueOf):
2077         (KJS::dateProtoFuncGetTime):
2078         (KJS::dateProtoFuncGetFullYear):
2079         (KJS::dateProtoFuncGetUTCFullYear):
2080         (KJS::dateProtoFuncToGMTString):
2081         (KJS::dateProtoFuncGetMonth):
2082         (KJS::dateProtoFuncGetUTCMonth):
2083         (KJS::dateProtoFuncGetDate):
2084         (KJS::dateProtoFuncGetUTCDate):
2085         (KJS::dateProtoFuncGetDay):
2086         (KJS::dateProtoFuncGetUTCDay):
2087         (KJS::dateProtoFuncGetHours):
2088         (KJS::dateProtoFuncGetUTCHours):
2089         (KJS::dateProtoFuncGetMinutes):
2090         (KJS::dateProtoFuncGetUTCMinutes):
2091         (KJS::dateProtoFuncGetSeconds):
2092         (KJS::dateProtoFuncGetUTCSeconds):
2093         (KJS::dateProtoFuncGetMilliSeconds):
2094         (KJS::dateProtoFuncGetUTCMilliseconds):
2095         (KJS::dateProtoFuncGetTimezoneOffset):
2096         (KJS::dateProtoFuncSetTime):
2097         (KJS::dateProtoFuncSetMilliSeconds):
2098         (KJS::dateProtoFuncSetUTCMilliseconds):
2099         (KJS::dateProtoFuncSetSeconds):
2100         (KJS::dateProtoFuncSetUTCSeconds):
2101         (KJS::dateProtoFuncSetMinutes):
2102         (KJS::dateProtoFuncSetUTCMinutes):
2103         (KJS::dateProtoFuncSetHours):
2104         (KJS::dateProtoFuncSetUTCHours):
2105         (KJS::dateProtoFuncSetDate):
2106         (KJS::dateProtoFuncSetUTCDate):
2107         (KJS::dateProtoFuncSetMonth):
2108         (KJS::dateProtoFuncSetUTCMonth):
2109         (KJS::dateProtoFuncSetFullYear):
2110         (KJS::dateProtoFuncSetUTCFullYear):
2111         (KJS::dateProtoFuncSetYear):
2112         (KJS::dateProtoFuncGetYear):
2113         * kjs/date_object.h:
2114         * kjs/function.cpp:
2115         (KJS::PrototypeFunction::PrototypeFunction):
2116         (KJS::PrototypeFunction::callAsFunction):
2117         * kjs/function.h:
2118         * kjs/lookup.h:
2119         (KJS::HashEntry::):
2120         (KJS::staticFunctionGetter):
2121         * kjs/math_object.cpp:
2122         (KJS::mathProtoFuncAbs):
2123         (KJS::mathProtoFuncACos):
2124         (KJS::mathProtoFuncASin):
2125         (KJS::mathProtoFuncATan):
2126         (KJS::mathProtoFuncATan2):
2127         (KJS::mathProtoFuncCeil):
2128         (KJS::mathProtoFuncCos):
2129         (KJS::mathProtoFuncExp):
2130         (KJS::mathProtoFuncFloor):
2131         (KJS::mathProtoFuncLog):
2132         (KJS::mathProtoFuncMax):
2133         (KJS::mathProtoFuncMin):
2134         (KJS::mathProtoFuncPow):
2135         (KJS::mathProtoFuncRandom):
2136         (KJS::mathProtoFuncRound):
2137         (KJS::mathProtoFuncSin):
2138         (KJS::mathProtoFuncSqrt):
2139         (KJS::mathProtoFuncTan):
2140         * kjs/math_object.h:
2141         * kjs/string_object.cpp:
2142         (KJS::stringProtoFuncToString):
2143         (KJS::stringProtoFuncValueOf):
2144         (KJS::stringProtoFuncCharAt):
2145         (KJS::stringProtoFuncCharCodeAt):
2146         (KJS::stringProtoFuncConcat):
2147         (KJS::stringProtoFuncIndexOf):
2148         (KJS::stringProtoFuncLastIndexOf):
2149         (KJS::stringProtoFuncMatch):
2150         (KJS::stringProtoFuncSearch):
2151         (KJS::stringProtoFuncReplace):
2152         (KJS::stringProtoFuncSlice):
2153         (KJS::stringProtoFuncSplit):
2154         (KJS::stringProtoFuncSubstr):
2155         (KJS::stringProtoFuncSubstring):
2156         (KJS::stringProtoFuncToLowerCase):
2157         (KJS::stringProtoFuncToUpperCase):
2158         (KJS::stringProtoFuncToLocaleLowerCase):
2159         (KJS::stringProtoFuncToLocaleUpperCase):
2160         (KJS::stringProtoFuncLocaleCompare):
2161         (KJS::stringProtoFuncBig):
2162         (KJS::stringProtoFuncSmall):
2163         (KJS::stringProtoFuncBlink):
2164         (KJS::stringProtoFuncBold):
2165         (KJS::stringProtoFuncFixed):
2166         (KJS::stringProtoFuncItalics):
2167         (KJS::stringProtoFuncStrike):
2168         (KJS::stringProtoFuncSub):
2169         (KJS::stringProtoFuncSup):
2170         (KJS::stringProtoFuncFontcolor):
2171         (KJS::stringProtoFuncFontsize):
2172         (KJS::stringProtoFuncAnchor):
2173         (KJS::stringProtoFuncLink):
2174         * kjs/string_object.h:
2175
2176 2008-01-15  Geoffrey Garen  <ggaren@apple.com>
2177
2178         Reviewed by Adam Roben.
2179         
2180         Some tweaks to our headerdoc, suggested by David Gatwood on the docs
2181         team.
2182
2183         * API/JSBase.h:
2184         * API/JSObjectRef.h:
2185         * API/JSStringRef.h:
2186         * API/JSValueRef.h:
2187
2188 2008-01-15  Alp Toker  <alp@atoker.com>
2189
2190         Rubber-stamped by Anders.
2191
2192         Make the HTTP backend configurable in the GTK+ port. curl is currently
2193         the only option.
2194
2195         * wtf/Platform.h: Don't hard-code WTF_USE_CURL for GTK
2196
2197 2008-01-15  Sam Weinig  <sam@webkit.org>
2198
2199         Reviewed by Beth Dakin.
2200
2201         Remove unneeded variable.
2202
2203         * kjs/string_object.cpp:
2204         (KJS::StringProtoFuncSubstr::callAsFunction):
2205
2206 2008-01-14  Steve Falkenburg  <sfalken@apple.com>
2207
2208         Use shared vsprops for most vcproj properties.
2209         
2210         Reviewed by Darin.
2211
2212         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add missing Debug_Internal config.
2213         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add missing Debug_Internal config.
2214         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2215
2216 2008-01-14  Adam Roben  <aroben@apple.com>
2217
2218         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
2219         some headers that were missing from the vcproj so their contents will
2220         be included in Find in Files.
2221
2222 2008-01-14  Adam Roben  <aroben@apple.com>
2223
2224         Fix Bug 16871: Crash when loading apple.com/startpage
2225
2226         <http://bugs.webkit.org/show_bug.cgi?id=16871>
2227         <rdar://problem/5686670>
2228
2229         Patch written by Darin, reviewed by me.
2230
2231         * kjs/ExecState.cpp:
2232         (KJS::ExecState::mark): Call ActivationImp::markChildren if our
2233         m_activation is on the stack. This is what ScopeChain::mark also does,
2234         but apparently in some cases it's possible for an ExecState's
2235         ActivationImp to not be in any ScopeChain.
2236
2237 2008-01-14  Kevin McCullough  <kmccullough@apple.com>
2238
2239         Reviewed by Oliver.
2240
2241         -<rdar://problem/5622667> REGRESSION (Leopard-ToT): Endless loading loop
2242         trying to view techreport.com comments
2243         - We need to set values in the map, because if they are already in the
2244         map they will not be reset when we use add().
2245
2246         * kjs/array_instance.cpp:
2247         (KJS::ArrayInstance::put):
2248
2249 2008-01-14  Darin Adler  <darin@apple.com>
2250
2251         Reviewed by Adam.
2252
2253         - re-speed-up the page load test (my StringImpl change slowed it down)
2254
2255         * wtf/RefCounted.h:
2256         (WTF::RefCounted::RefCounted): Allow derived classes to start with a reference
2257         count other than 0. Eventually everyone will want to start with a 1. This is a
2258         staged change. For now, there's a default of 0, and you can specify 1. Later,
2259         there will be no default and everyone will have to specify. And then later, there
2260         will be a default of 1. Eventually, we can take away even the option of starting
2261         with 0!
2262
2263         * wtf/Vector.h:
2264         (WTF::Vector::Vector): Sped up creation of non-empty vectors by removing the
2265         overhead of first constructing something empty and then calling resize.
2266         (WTF::Vector::clear): Sped up the common case of calling clear on an empty
2267         vector by adding a check for that case.
2268         (WTF::Vector::releaseBuffer): Marked this function inline and removed a branch
2269         in the case of vectors with no inline capacity (normal vectors) by leaving out
2270         the code to copy the inline buffer in that case.
2271
2272 2008-01-14  Alexey Proskuryakov  <ap@webkit.org>
2273
2274         Reviewed by David Kilzer.
2275
2276         http://bugs.webkit.org/show_bug.cgi?id=16787
2277         array.splice() with 1 element not working
2278
2279         Test: fast/js/array-splice.html
2280
2281         * kjs/array_object.cpp:
2282         (KJS::ArrayProtoFuncSplice::callAsFunction): Implement this Mozilla extension, and fix
2283         some other edge cases.
2284
2285 2008-01-13  Steve Falkenburg  <sfalken@apple.com>
2286
2287         Share common files across projects.
2288         
2289         Unify vsprops files
2290         Debug:          common.vsprops, debug.vsprops
2291         Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
2292         Release:        common.vsprops, release.vsprops
2293         
2294         Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
2295         debug_internal.vsprops will be mostly empty except for file path prefix modifiers.
2296
2297         Reviewed by Adam Roben.
2298
2299         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2300         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2301         * JavaScriptCore.vcproj/debug.vsprops: Removed.
2302         * JavaScriptCore.vcproj/debug_internal.vsprops: Removed.
2303         * JavaScriptCore.vcproj/release.vsprops: Removed.
2304         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2305
2306 2008-01-13  Marius Bugge Monsen  <mbm@trolltech.com>
2307
2308         Contributions and review by Adriaan de Groot,
2309         Simon Hausmann, Eric Seidel, and Darin Adler.
2310
2311         - http://bugs.webkit.org/show_bug.cgi?id=16590
2312           Compilation fixes for Solaris.
2313
2314         * kjs/DateMath.h:
2315         (KJS::GregorianDateTime::GregorianDateTime): Use the WIN_OS code path
2316         for SOLARIS too, presumably because Solaris also lacks the tm_gtoff and tm_zone
2317         fields.
2318         (KJS::GregorianDateTime::operator tm): Ditto.
2319
2320         * kjs/collector.cpp:
2321         (KJS::currentThreadStackBase): Use thr_stksegment on Solaris.
2322
2323         * wtf/MathExtras.h:
2324         (isfinite): Implement for Solaris.
2325         (isinf): Ditto.
2326         (signbit): Ditto. But this one is wrong, so I added a FIXME.
2327
2328         * wtf/Platform.h: Define PLATFORM(SOLARIS) when "sun" or "__sun" is defined.
2329
2330 2008-01-13  Michael Goddard  <michael.goddard@trolltech.com>
2331
2332         Reviewed by Anders Carlsson.
2333
2334         Add binding language type to Instance.
2335         Allows runtime determination of the type of an
2336         Instance, to allow safe casting.  Doesn't actually
2337         add any safe casting yet, though.
2338
2339         Add a helper function to get an Instance from a JSObject*.
2340         Given an object and the expected binding language, see if
2341         the JSObject actually wraps an Instance of the given type
2342         and return it.  Otherwise return 0.
2343
2344         Move RuntimeObjectImp creations into Instance.
2345         Make the ctor protected, and Instance a friend class, so
2346         that all creation of RuntimeObjectImps goes through
2347         one place.
2348
2349         Remove copy ctor/assignment operator for QtInstance.
2350         Instance itself is Noncopyable, so QtInstance doesn't
2351         need to have these.
2352
2353         Add caching for QtInstance and associated RuntimeObjectImps.
2354         Push any dealings with QtLanguage bindings into QtInstance,
2355         and cache them there, rather than in the Instance layer.  Add
2356         a QtRuntimeObjectImp to help with caching.
2357
2358         * JavaScriptCore.exp:
2359         * bindings/c/c_instance.h:
2360         * bindings/jni/jni_instance.h:
2361         * bindings/objc/objc_instance.h:
2362         * bindings/qt/qt_instance.cpp:
2363         (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
2364         (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
2365         (KJS::Bindings::QtRuntimeObjectImp::invalidate):
2366         (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
2367         (KJS::Bindings::QtInstance::QtInstance):
2368         (KJS::Bindings::QtInstance::~QtInstance):
2369         (KJS::Bindings::QtInstance::getQtInstance):
2370         (KJS::Bindings::QtInstance::getRuntimeObject):
2371         * bindings/qt/qt_instance.h:
2372         (KJS::Bindings::QtInstance::getBindingLanguage):
2373         * bindings/runtime.cpp:
2374         (KJS::Bindings::Instance::createBindingForLanguageInstance):
2375         (KJS::Bindings::Instance::createRuntimeObject):
2376         (KJS::Bindings::Instance::getInstance):
2377         * bindings/runtime.h:
2378         * bindings/runtime_object.h:
2379         (KJS::RuntimeObjectImp::getInternalInstance):
2380
2381 2008-01-12  Alp Toker  <alp@atoker.com>
2382
2383         Reviewed by Mark Rowe.
2384
2385         Hide non-public symbols in GTK+/autotools release builds.
2386
2387         * GNUmakefile.am:
2388
2389 2008-01-12  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
2390
2391         Reviewed by Mark Rowe.
2392
2393         Fix http://bugs.webkit.org/show_bug.cgi?id=16852
2394         Fixes leaking of ActivationStackNode objects.
2395
2396         * kjs/JSGlobalObject.cpp:
2397         (KJS::JSGlobalObject::deleteActivationStack):
2398         (KJS::JSGlobalObject::~JSGlobalObject):
2399         (KJS::JSGlobalObject::init):
2400         (KJS::JSGlobalObject::reset):
2401         * kjs/JSGlobalObject.h:
2402
2403 2008-01-12  Darin Adler  <darin@apple.com>
2404
2405         - try to fix Qt Windows build
2406
2407         * pcre/dftables: Remove reliance on the list form of Perl pipes.
2408
2409 2008-01-12  Darin Adler  <darin@apple.com>
2410
2411         - try to fix Qt build
2412
2413         * kjs/function.cpp: Added include of scope_chain_mark.h.
2414         * kjs/scope_chain_mark.h: Added multiple-include guards.
2415
2416 2008-01-12  Mark Rowe  <mrowe@apple.com>
2417
2418         Another Windows build fix.
2419
2420         * kjs/Activation.h:
2421
2422 2008-01-12  Mark Rowe  <mrowe@apple.com>
2423
2424         Attempted Windows build fix.  Use struct consistently when forward-declaring
2425         ActivationStackNode and StackActivation.
2426
2427         * kjs/Activation.h:
2428         * kjs/JSGlobalObject.h:
2429
2430 2008-01-12  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
2431
2432         Reviewed by Maciej.
2433
2434         Fixes a problem with the ActivationImp tear-off patch (r29425) where
2435         some of the calls to JSGlobalObject::tearOffActivation() were using
2436         the wrong test to determine whether it should leave a relic behind.
2437
2438         * kjs/function.cpp:
2439         (KJS::FunctionImp::argumentsGetter):
2440         (KJS::ActivationImp::getOwnPropertySlot):
2441
2442 2008-01-11  Geoffrey Garen  <ggaren@apple.com>
2443
2444         Reviewed by Oliver Hunt.
2445         
2446         Fixed <rdar://problem/5665251> REGRESSION (r28880-r28886): Global
2447         variable access (16644)
2448         
2449         This bug was caused by var declarations shadowing built-in properties of
2450         the global object.
2451         
2452         To match Firefox, we've decided that var declarations will never shadow
2453         built-in properties of the global object or its prototypes. We used to
2454         behave more like IE, which allows shadowing, but walking that line got
2455         us into trouble with websites that sent us down the Firefox codepath.
2456
2457         * kjs/JSVariableObject.h:
2458         (KJS::JSVariableObject::symbolTableGet): New code to support calling
2459         hasProperty before the variable object is fully initialized (so you
2460         can call it during initialization).
2461
2462         * kjs/nodes.cpp:.
2463         (KJS::ProgramNode::initializeSymbolTable): Always do a full hasProperty
2464         check when looking for duplicates, not getDirect, since it only checks
2465         the property map, and not hasOwnProperty, since it doesn't check
2466         prototypes.
2467         (KJS::EvalNode::processDeclarations): ditto
2468
2469         * kjs/property_slot.h:
2470         (KJS::PropertySlot::ungettableGetter): Best function name evar.
2471
2472 2008-01-11  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
2473
2474         Reviewed by Maciej.
2475
2476         Optimized ActivationImp allocation, so that activation records are now
2477         first allocated on an explicitly managed stack and only heap allocated
2478         when necessary. Roughly a 5% improvement on SunSpider, and a larger
2479         improvement on benchmarks that use more function calls.
2480
2481         * JavaScriptCore.xcodeproj/project.pbxproj:
2482         * kjs/Activation.h: Added.
2483         (KJS::ActivationImp::ActivationData::ActivationData):
2484         (KJS::ActivationImp::ActivationImp):
2485         (KJS::ActivationImp::classInfo):
2486         (KJS::ActivationImp::isActivationObject):
2487         (KJS::ActivationImp::isOnStack):
2488         (KJS::ActivationImp::d):
2489         (KJS::StackActivation::StackActivation):
2490         * kjs/ExecState.cpp:
2491         (KJS::ExecState::ExecState):
2492         (KJS::ExecState::~ExecState):
2493         * kjs/ExecState.h:
2494         (KJS::ExecState::replaceScopeChainTop):
2495         (KJS::ExecState::setActivationObject):
2496         (KJS::ExecState::setLocalStorage):
2497         * kjs/JSGlobalObject.cpp:
2498         (KJS::JSGlobalObject::reset):
2499         (KJS::JSGlobalObject::pushActivation):
2500         (KJS::JSGlobalObject::checkActivationCount):
2501         (KJS::JSGlobalObject::popActivationHelper):
2502         (KJS::JSGlobalObject::popActivation):
2503         (KJS::JSGlobalObject::tearOffActivation):
2504         * kjs/JSGlobalObject.h:
2505         * kjs/JSVariableObject.h:
2506         (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
2507         (KJS::JSVariableObject::JSVariableObject):
2508         * kjs/function.cpp:
2509         (KJS::FunctionImp::argumentsGetter):
2510         (KJS::ActivationImp::ActivationImp):
2511         (KJS::ActivationImp::~ActivationImp):
2512         (KJS::ActivationImp::init):
2513         (KJS::ActivationImp::getOwnPropertySlot):
2514         (KJS::ActivationImp::markHelper):
2515         (KJS::ActivationImp::mark):
2516         (KJS::ActivationImp::ActivationData::ActivationData):
2517         (KJS::GlobalFuncImp::callAsFunction):
2518         * kjs/function.h:
2519         * kjs/nodes.cpp:
2520         (KJS::PostIncResolveNode::evaluate):
2521         (KJS::PostDecResolveNode::evaluate):
2522         (KJS::PreIncResolveNode::evaluate):
2523         (KJS::PreDecResolveNode::evaluate):
2524         (KJS::ReadModifyResolveNode::evaluate):
2525         (KJS::AssignResolveNode::evaluate):
2526         (KJS::WithNode::execute):
2527         (KJS::TryNode::execute):
2528         (KJS::FunctionBodyNode::processDeclarations):
2529         (KJS::FuncExprNode::evaluate):
2530         * kjs/object.h:
2531         * kjs/scope_chain.h:
2532         (KJS::ScopeChain::replace):
2533         * kjs/scope_chain_mark.h: Added.
2534         (KJS::ScopeChain::mark):
2535
2536 2008-01-11  Simon Hausmann  <hausmann@webkit.org>
2537
2538         Reviewed by Mark Rowe.
2539
2540         Fix the (clean) qmake build. For generating chartables.c we don't
2541         depend on a separate input source file anymore, the dftables perl
2542         script is enough. So use that instead as value for the .input
2543         variable, to ensure that qmake also generates a rule to call dftables.
2544
2545         * pcre/pcre.pri:
2546
2547 2008-01-10  Geoffrey Garen  <ggaren@apple.com>
2548
2549         Reviewed by John Sullivan.
2550
2551         Fixed some world leak reports:
2552         * <rdar://problem/5669436> PLT complains about world leak of 1 JavaScript
2553         Interpreter after running cvs-base suite
2554
2555         * <rdar://problem/5669423> PLT complains about world leak if browser
2556         window is open when PLT starts
2557         
2558         * kjs/collector.h: Added the ability to distinguish between global
2559         objects and GC-protected global objects, since we only consider the
2560         latter to be world leaks.
2561         * kjs/collector.cpp:
2562
2563 2008-01-11  Mark Rowe  <mrowe@apple.com>
2564
2565         Silence qmake warning about ctgen lacking input.
2566
2567         Rubber-stamped by Alp Toker.
2568
2569         * pcre/pcre.pri:
2570
2571 2008-01-10  David Kilzer  <ddkilzer@apple.com>
2572
2573         dftables should be rewritten as a script
2574
2575         <http://bugs.webkit.org/show_bug.cgi?id=16818>
2576         <rdar://problem/5681463>
2577
2578         Reviewed by Darin.
2579
2580         Rewrote the dftables utility in Perl.  Attempted to switch all
2581         build systems to call the script directly instead of building
2582         a binary first.  Only the Xcode build was able to be tested.
2583
2584         * DerivedSources.make: Added pcre directory to VPATH and changed
2585         to invoke dftables directly.
2586         * GNUmakefile.am: Removed build information and changed to invoke
2587         dftables directly.
2588         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed reference to
2589         dftables project.
2590         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto.
2591         * JavaScriptCore.vcproj/dftables: Removed.
2592         * JavaScriptCore.vcproj/dftables/dftables.vcproj: Removed.
2593         * JavaScriptCore.xcodeproj/project.pbxproj: Removed dftables target.
2594         * jscore.bkl: Removed dftables executable definition.
2595         * pcre/dftables: Copied from JavaScriptCore/pcre/dftables.cpp.
2596         * pcre/dftables.cpp: Removed.
2597         * pcre/dftables.pro: Removed.
2598         * pcre/pcre.pri: Removed references to dftables.cpp and changed to
2599         invoke dftables directly.
2600
2601 2008-01-10  Dan Bernstein  <mitz@apple.com>
2602
2603         Reviewed by Darin Adler.
2604
2605         - fix http://bugs.webkit.org/show_bug.cgi?id=16782
2606           <rdar://problem/5675331> REGRESSION(r29266): Reproducible crash in fast/replaced/image-map.html
2607
2608         The crash resulted from a native object (DumpRenderTree's
2609         EventSender) causing its wrapper to be invalidated (by clicking a
2610         link that replaced the document in the window) and consequently
2611         deallocated. The fix is to use RefPtrs to protect the native object
2612         from deletion by self-invalidation.
2613
2614         * bindings/runtime_method.cpp:
2615         (RuntimeMethod::callAsFunction):
2616         * bindings/runtime_object.cpp:
2617         (RuntimeObjectImp::fallbackObjectGetter):
2618         (RuntimeObjectImp::fieldGetter):
2619         (RuntimeObjectImp::methodGetter):
2620         (RuntimeObjectImp::put):
2621         (RuntimeObjectImp::defaultValue):
2622         (RuntimeObjectImp::callAsFunction):
2623
2624 2008-01-07  Mark Rowe  <mrowe@apple.com>
2625
2626         Reviewed by Maciej Stachowiak.
2627
2628         Turn testIsInteger assertions into compile-time asserts and move them into HashTraits.h
2629         where possible.
2630
2631         * kjs/testkjs.cpp:
2632         * wtf/HashTraits.h:
2633
2634 2008-01-07  Nikolas Zimmermann  <zimmermann@kde.org>
2635
2636         Reviewed by Mark.
2637
2638         Enable SVG_FONTS by default.
2639
2640         * Configurations/JavaScriptCore.xcconfig:
2641
2642 2008-01-07  Darin Adler  <darin@apple.com>
2643
2644         Rubber stamped by David Kilzer.
2645
2646         - get rid of empty fpconst.cpp
2647
2648         * GNUmakefile.am: Remove fpconst.cpp.
2649         * JavaScriptCore.pri: Ditto.
2650         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
2651         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
2652         * JavaScriptCoreSources.bkl: Ditto.
2653
2654         * kjs/fpconst.cpp: Removed.
2655
2656 2008-01-07  Darin Adler  <darin@apple.com>
2657
2658         Reviewed by David Kilzer.
2659
2660         - fix alignment problem with NaN and Inf globals
2661
2662         * kjs/fpconst.cpp: Move the contents of this file from here back to
2663         value.cpp. The reason this was in a separate file is that the DARWIN
2664         version of this used a declaration of the globals with a different
2665         type to avoid creating "init routines". That's no longer necessary for
2666         DARWIN and was never necessary for the non-DARWIN code path.
2667         To make this patch easy to merge, I didn't actually delete this file
2668         yet. We'll do that in a separate changeset.
2669
2670         * kjs/value.cpp: If C99's NAN and INFINITY are present, then use them,
2671         othrewise use the union trick from fpconst.cpp. I think it would be
2672         better to eliminate KJS::NaN and KJS::Inf and just use NAN and INFINITY
2673         directly or std::numeric_limits<double>::quiet_nan() and
2674         std::numeric_limits<double>::infinity(). But when I tried that, it
2675         slowed down SunSpider. Someone else could do that cleanup if they
2676         could do it without slowing down the engine.
2677
2678 2008-01-07  Adam Roben  <aroben@apple.com>
2679
2680         Windows build fix
2681
2682         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
2683         JavaScript.h to the project.
2684         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2685         Copy JavaScript.h to WEBKITOUTPUTDIR.
2686
2687 2008-01-07  Timothy Hatcher  <timothy@apple.com>
2688
2689         Reviewed by Darin.
2690
2691         Fix Mac build.
2692
2693         * API/JSNode.c:
2694         * API/JSNode.h:
2695         * API/JSNodeList.c:
2696         * API/JSNodeList.h:
2697         * API/JavaScript.h:
2698         * API/JavaScriptCore.h:
2699         * API/minidom.c:
2700         * JavaScriptCore.xcodeproj/project.pbxproj:
2701
2702 2008-01-07  Alp Toker  <alp@atoker.com>
2703
2704         Reviewed by Darin.
2705
2706         http://bugs.webkit.org/show_bug.cgi?id=16029
2707         JavaScriptCore.h is not suitable for platforms other than Mac OS X
2708
2709         Introduce a new JavaScriptCore/JavaScript.h public API header. This
2710         should be used by all new portable code using the JavaScriptCore API.
2711
2712         JavaScriptCore/JavaScriptCore.h will remain for compatibility with
2713         existing applications that depend on it including JSStringRefCF.h
2714         which isn't portable.
2715
2716         Also add minidom to the GTK+/autotools build since we can now support
2717         it on all platforms.
2718
2719         * API/JSNode.h:
2720         * API/JSNodeList.h:
2721         * API/JavaScript.h: Added.
2722         * API/JavaScriptCore.h:
2723         * ForwardingHeaders/JavaScriptCore/JavaScript.h: Added.
2724         * GNUmakefile.am:
2725         * JavaScriptCore.xcodeproj/project.pbxproj:
2726
2727 2008-01-06  Eric Seidel  <eric@webkit.org>
2728
2729         Reviewed by Sam.
2730
2731         Abstract all DateObject.set* functions in preparation for fixing:
2732         http://bugs.webkit.org/show_bug.cgi?id=16753
2733         
2734         SunSpider had random changes here and there but was overall a wash.
2735
2736         * kjs/date_object.cpp:
2737         (KJS::fillStructuresUsingTimeArgs):
2738         (KJS::setNewValueFromTimeArgs):
2739         (KJS::setNewValueFromDateArgs):
2740         (KJS::DateProtoFuncSetMilliSeconds::callAsFunction):
2741         (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction):
2742         (KJS::DateProtoFuncSetSeconds::callAsFunction):
2743         (KJS::DateProtoFuncSetUTCSeconds::callAsFunction):
2744         (KJS::DateProtoFuncSetMinutes::callAsFunction):
2745         (KJS::DateProtoFuncSetUTCMinutes::callAsFunction):
2746         (KJS::DateProtoFuncSetHours::callAsFunction):
2747         (KJS::DateProtoFuncSetUTCHours::callAsFunction):
2748         (KJS::DateProtoFuncSetDate::callAsFunction):
2749         (KJS::DateProtoFuncSetUTCDate::callAsFunction):
2750         (KJS::DateProtoFuncSetMonth::callAsFunction):
2751         (KJS::DateProtoFuncSetUTCMonth::callAsFunction):
2752         (KJS::DateProtoFuncSetFullYear::callAsFunction):
2753         (KJS::DateProtoFuncSetUTCFullYear::callAsFunction):
2754
2755 2008-01-06  Nikolas Zimmermann  <zimmermann@kde.org>
2756
2757         Reviewed by Dan.
2758
2759         Add new helper function isArabicChar - SVG Fonts support needs it.
2760
2761         * wtf/unicode/icu/UnicodeIcu.h:
2762         (WTF::Unicode::isArabicChar):
2763         * wtf/unicode/qt4/UnicodeQt4.h:
2764         (WTF::Unicode::isArabicChar):
2765
2766 2008-01-06  Alp Toker  <alp@atoker.com>
2767
2768         Reviewed by Mark Rowe.
2769
2770         Use $(EXEEXT) to account for the .exe extension in the GTK+ Windows
2771         build. (This is already done correctly in DerivedSources.make.) Issue
2772         noticed by Mikkel when building in Cygwin.
2773
2774         Add a missing slash. This was a hack from the qmake build system that
2775         isn't necessary with autotools.
2776
2777         * GNUmakefile.am:
2778
2779 2008-01-05  Darin Adler  <darin@apple.com>
2780
2781         * API/JSRetainPtr.h: One more file that needed the change below.
2782
2783 2008-01-05  Darin Adler  <darin@apple.com>
2784
2785         * wtf/OwnPtr.h: OwnPtr needs the same fix as RefPtr below.
2786
2787 2008-01-05  Adam Roben  <aroben@apple.com>
2788
2789         Build fix.
2790
2791         Reviewed by Maciej.
2792
2793         * wtf/RetainPtr.h: Use PtrType instead of T* because of the
2794         RemovePointer magic.
2795
2796 2008-01-05  Darin Adler  <darin@apple.com>
2797
2798         Rubber stamped by Maciej Stachowiak.
2799
2800         - cut down own PIC branches by using a pointer-to-member-data instead of a
2801           pointer-to-member-function in WTF smart pointers
2802
2803         * wtf/OwnArrayPtr.h:
2804         * wtf/OwnPtr.h:
2805         * wtf/PassRefPtr.h:
2806         * wtf/RefPtr.h:
2807         * wtf/RetainPtr.h:
2808         Use a pointer to the m_ptr member instead of the get member.
2809         The GCC compiler generates better code for this idiom.
2810
2811 2008-01-05  Henry Mason  <hmason@mac.com>
2812
2813         Reviewed by Maciej Stachowiak.
2814
2815         http://bugs.webkit.org/show_bug.cgi?id=16738
2816         Bug 16738: Collector block offset could be stored as an cell offset instead of a byte offset
2817
2818         Gives a 0.4% SunSpider boost and prettier code.
2819
2820         * kjs/collector.cpp: Switched to cell offsets from byte offsets
2821         (KJS::Collector::heapAllocate):
2822         (KJS::Collector::sweep):
2823
2824 2008-01-04  Mark Rowe  <mrowe@apple.com>
2825
2826         Reviewed by Maciej Stachowiak.
2827
2828         Have the two malloc zones print useful diagnostics if their free method are unexpectedly invoked.
2829         Due to <rdar://problem/5671357> this can happen if an application attempts to free a pointer that
2830         was not allocated by any registered malloc zone on the system.
2831
2832         * kjs/CollectorHeapIntrospector.h:
2833         * wtf/FastMalloc.cpp:
2834
2835 2008-01-04  Alp Toker  <alp@atoker.com>
2836
2837         GTK+ autotools build fix. Terminate empty rules.
2838
2839         * GNUmakefile.am:
2840
2841 2008-01-03  Simon Hausmann  <hausmann@webkit.org>
2842
2843         Reviewed by Mark Rowe.
2844
2845         Fix compilation with gcc 4.3: limits.h is needed for INT_MAX.
2846
2847         * pcre/pcre_exec.cpp:
2848
2849 2008-01-03  Darin Adler  <darin@apple.com>
2850
2851         * tests/mozilla/expected.html: The fix for bug 16696 also fixed a test
2852         case, ecma_3/RegExp/perlstress-002.js, so updated results to expect
2853         that test to succeed.
2854
2855 2008-01-02  Darin Adler  <darin@apple.com>
2856
2857         Reviewed by Geoff.
2858
2859         - fix http://bugs.webkit.org/show_bug.cgi?id=16696
2860           JSCRE fails fails to match Acid3 regexp
2861
2862         Test: fast/regex/early-acid3-86.html
2863
2864         The problem was with the cutoff point between backreferences and octal
2865         escape sequences. We need to determine the cutoff point by counting the
2866         total number of capturing brackets, which requires an extra pass through
2867         the expression when compiling it.
2868
2869         * pcre/pcre_compile.cpp:
2870         (CompileData::CompileData): Added numCapturingBrackets. Removed some
2871         unused fields.
2872         (compileBranch): Use numCapturingBrackets when calling checkEscape.
2873         (calculateCompiledPatternLength): Use numCapturingBrackets when calling
2874         checkEscape, and also store the bracket count at the end of the compile.
2875         (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
2876         count the number of brackets and then a second time to calculate the length.
2877
2878 2008-01-02  Darin Adler  <darin@apple.com>
2879
2880         Reviewed by Geoff.
2881
2882         - fix http://bugs.webkit.org/show_bug.cgi?id=16696
2883           JSCRE fails fails to match Acid3 regexp
2884
2885         Test: fast/regex/early-acid3-86.html
2886
2887         The problem was with the cutoff point between backreferences and octal
2888         escape sequences. We need to determine the cutoff point by counting the
2889         total number of capturing brackets, which requires an extra pass through
2890         the expression when compiling it.
2891
2892         * pcre/pcre_compile.cpp:
2893         (CompileData::CompileData): Added numCapturingBrackets. Removed some
2894         unused fields.
2895         (compileBranch): Use numCapturingBrackets when calling checkEscape.
2896         (calculateCompiledPatternLength): Use numCapturingBrackets when calling
2897         checkEscape, and also store the bracket count at the end of the compile.
2898         (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
2899         count the number of brackets and then a second time to calculate the length.
2900
2901 2008-01-02  David Kilzer <ddkilzer@webkit.org>
2902
2903         Reviewed and landed by Darin.
2904
2905         * kjs/nodes.cpp:
2906         (KJS::DoWhileNode::execute): Added a missing return.
2907
2908 2008-01-02  Darin Adler  <darin@apple.com>
2909
2910         - try to fix Qt build
2911
2912         * wtf/unicode/qt4/UnicodeQt4.h:
2913         (WTF::Unicode::foldCase): Add some missing const.
2914
2915 2008-01-02  Alice Liu  <alice.liu@apple.com>
2916
2917         Reviewed by Sam Weinig.
2918
2919         need to export ASCIICType.h for use in DRT
2920
2921         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2922         * wtf/ASCIICType.h:
2923         (WTF::isASCIIUpper):
2924
2925 2008-01-02  Sam Weinig  <sam@webkit.org>
2926
2927         Reviewed by Beth Dakin.
2928
2929         Cleanup error_object.h/cpp.
2930
2931         * kjs/JSGlobalObject.cpp:
2932         (KJS::JSGlobalObject::reset):
2933         * kjs/error_object.cpp:
2934         (KJS::):
2935         (KJS::ErrorInstance::ErrorInstance):
2936         (KJS::ErrorPrototype::ErrorPrototype):
2937         (KJS::ErrorProtoFuncToString::ErrorProtoFuncToString):
2938         (KJS::ErrorProtoFuncToString::callAsFunction):
2939         (KJS::ErrorObjectImp::ErrorObjectImp):
2940         (KJS::ErrorObjectImp::implementsConstruct):
2941         (KJS::ErrorObjectImp::construct):
2942         (KJS::ErrorObjectImp::callAsFunction):
2943         (KJS::NativeErrorPrototype::NativeErrorPrototype):
2944         (KJS::NativeErrorImp::NativeErrorImp):
2945         (KJS::NativeErrorImp::implementsConstruct):
2946         (KJS::NativeErrorImp::construct):
2947         (KJS::NativeErrorImp::callAsFunction):
2948         (KJS::NativeErrorImp::mark):
2949         * kjs/error_object.h:
2950         (KJS::ErrorInstance::classInfo):
2951         (KJS::NativeErrorImp::classInfo):
2952
2953 2008-01-02  Mark Rowe  <mrowe@apple.com>
2954
2955         Rubber-stamped by Alp Toker.
2956
2957         * GNUmakefile.am: Add missing dependency on grammar.y.
2958
2959 2008-01-01  Darin Adler  <darin@apple.com>
2960
2961         Reviewed by Eric.
2962
2963         - fix for http://bugs.webkit.org/show_bug.cgi?id=16695
2964           JSC allows non-identifier codepoints in identifiers (affects Acid3)
2965
2966         Test: fast/js/kde/parse.html
2967
2968         * kjs/lexer.cpp:
2969         (KJS::Lexer::lex): Added additional states to distinguish Unicode escapes at the
2970         start of identifiers from ones inside identifiers. Rejected characters that don't pass
2971         the isIdentStart and isIdentPart tests.
2972         (KJS::Lexer::convertUnicode): Removed incorrect FIXME comment.
2973
2974         * kjs/lexer.h: Added new states to distinguish \u escapes at the start of identifiers
2975         from \u escapes inside identifiers.
2976
2977 2008-01-01  Darin Adler  <darin@apple.com>
2978
2979         - rolled scope chain optimization out; it was breaking the world
2980
2981 2008-01-01  Darin Adler  <darin@apple.com>
2982
2983         Reviewed by Geoff.
2984
2985         - http://bugs.webkit.org/show_bug.cgi?id=16685
2986           eliminate List::empty() to cut down on PIC branches
2987
2988         Also included one other speed-up -- remove the call to reserveCapacity from
2989         FunctionBodyNode::processDeclarations in all but the most unusual cases.
2990
2991         Together these make SunSpider 1.016x as fast.
2992
2993         * JavaScriptCore.exp: Updated.
2994         * kjs/ExecState.cpp:
2995         (KJS::globalEmptyList): Added. Called only when creating global ExecState
2996         instances.
2997         (KJS::ExecState::ExecState): Broke constructor up into three separate functions,
2998         for the three separate node types. Also went through each of the three and
2999         streamlined as much as possible, removing dead code. This prevents us from having
3000         to access the global in the function body version of the constructor.
3001
3002         * kjs/ExecState.h: Added emptyList(). Replaced the constructor with a set of
3003         three that are specific to the different node types that can create new execution
3004         state objects.
3005
3006         * kjs/array_object.cpp:
3007         (KJS::ArrayProtoFuncToLocaleString::callAsFunction): Use exec->emptyList() instead
3008         of List::empty().
3009         (KJS::ArrayProtoFuncConcat::callAsFunction): Ditto.
3010         (KJS::ArrayProtoFuncSlice::callAsFunction): Ditto.
3011         (KJS::ArrayProtoFuncSplice::callAsFunction): Ditto.
3012         (KJS::ArrayProtoFuncFilter::callAsFunction): Ditto.
3013         * kjs/function.cpp:
3014         (KJS::FunctionImp::callAsFunction): Updated to call new ExecState constructor.
3015         (KJS::GlobalFuncImp::callAsFunction): Ditto (for eval).
3016         * kjs/function_object.cpp:
3017         (FunctionObjectImp::construct): Use exec->emptyList() instead of List::empty().
3018
3019         * kjs/list.cpp: Removed List::empty.
3020         * kjs/list.h: Ditto.
3021
3022         * kjs/nodes.cpp:
3023         (KJS::ElementNode::evaluate): Use exec->emptyList() instead of List::empty().
3024         (KJS::ArrayNode::evaluate): Ditto.
3025         (KJS::ObjectLiteralNode::evaluate): Ditto.
3026         (KJS::PropertyListNode::evaluate): Ditto.
3027         (KJS::FunctionBodyNode::processDeclarations): Another speed-up. Check the capacity
3028         before calling reserveCapacity, because it doesn't get inlined the local storage
3029         vector is almost always big enough -- saving the function call overhead is a big
3030         deal.
3031         (KJS::FuncDeclNode::makeFunction): Use exec->emptyList() instead of List::empty().
3032         (KJS::FuncExprNode::evaluate): Ditto.
3033         * kjs/object.cpp:
3034         (KJS::tryGetAndCallProperty): Ditto.
3035         * kjs/property_slot.cpp:
3036         (KJS::PropertySlot::functionGetter): Ditto.
3037         * kjs/string_object.cpp:
3038         (KJS::StringProtoFuncSplit::callAsFunction): Ditto.
3039
3040 2008-01-01  Darin Adler  <darin@apple.com>
3041
3042         Reviewed by Geoff.
3043
3044         - fix http://bugs.webkit.org/show_bug.cgi?id=16648
3045           REGRESSION (r28165): Yuku.com navigation prints "jsRegExpExecute failed with result -2"
3046           <rdar://problem/5646486> REGRESSION (r28165): Layout test fast/regex/test1 fails intermittently
3047
3048         Fixes 34 failing test cases in the fast/regex/test1.html test.
3049
3050         Restored the stack which prevents infinite loops for brackets that match the empty
3051         string; it had been removed as an optimization.
3052
3053         Unfortunately, restoring this stack causes the regular expression test in SunSpider
3054         to be 1.095x as slow and the overall test to be 1.004x as slow. Maybe we can find
3055         a correct optimization to restore the speed!
3056
3057         It's possible the original change was on the right track but just off by one.
3058
3059         * pcre/pcre_exec.cpp: Add back eptrblock, but name it BracketChainNode.
3060         (MatchStack::pushNewFrame): Add back the logic needed here.
3061         (startNewGroup): Ditto.
3062         (match): Ditto.
3063
3064 2008-01-01  Darin Adler  <darin@apple.com>
3065
3066         Reviewed by Geoff.
3067
3068         - http://bugs.webkit.org/show_bug.cgi?id=16683
3069           speed up function calls by making ScopeChain::push cheaper
3070
3071         This gives a 1.019x speedup on SunSpider.
3072
3073         After doing this, I realized this probably will be obsolete when the optimization
3074         to avoid creating an activation object is done. When we do that one we should check
3075         if rolling this out will speed things up, since this does add overhead at the time
3076         you copy the scope chain.
3077
3078         * kjs/object.h: Removed the ScopeChain::release function. It was
3079         marked inline, and called in exactly one place, so moved it there.
3080         No idea why it was in this header file!
3081
3082         * kjs/scope_chain.cpp: Removed the overload of the ScopeChain::push
3083         function that takes another ScopeChain. It was unused. I think we used
3084         it over in WebCore at one point, but not any more.
3085
3086         * kjs/scope_chain.h: Changed ScopeChainNode into a struct rather than
3087         a class, got rid of its constructor so we can have one that's uninitialized,
3088         and moved the refCount into a derived struct, ScopeChainHeapNode. Made _node
3089         mutable so it can be changed in the moveToHeap function. Changed the copy
3090         constructor and assignment operator to call moveToHeap, since the top node
3091         can't be shared when it's embedded in another ScopeChain object. Updated
3092         functions as needed to handle the case where the first object isn't on the
3093         heap or to add casts for cases where it's guaranteed to be. Changed the push
3094         function to always put the new node into the ScopeChain object; it will get
3095         put onto the heap when needed later.
3096
3097 2008-01-01  Geoffrey Garen  <ggaren@apple.com>
3098
3099         Reviewed by Darin Adler.
3100         
3101         Fixed slight logic error in reserveCapacity, where we would reallocate
3102         the storage buffer unnecessarily.
3103
3104         * wtf/Vector.h:
3105         (WTF::::reserveCapacity): No need to grow the buffer if newCapacity is
3106         equal to capacity().
3107
3108 2008-01-01  Darin Adler  <darin@apple.com>
3109
3110         Reviewed by Oliver.
3111
3112         - http://bugs.webkit.org/show_bug.cgi?id=16684
3113           eliminate debugger overhead from function body execution
3114
3115         Speeds SunSpider up 1.003x. That's a small amount, but measurable.
3116
3117         * JavaScriptCore.exp: Updated.
3118         * kjs/Parser.h:
3119         (KJS::Parser::parse): Create the node with a static member function named create() instead
3120         of using new explicitly.
3121
3122         * kjs/grammar.y: Changed calls to new FunctionBodyNode to use FunctionBodyNode::create().
3123
3124         * kjs/nodes.cpp:
3125         (KJS::ProgramNode::create): Added. Calls new.
3126         (KJS::EvalNode::create): Ditto.
3127         (KJS::FunctionBodyNode::create): Ditto, but creates FunctionBodyNodeWithDebuggerHooks
3128         when a debugger is present.
3129         (KJS::FunctionBodyNode::execute): Removed debugger hooks.
3130         (KJS::FunctionBodyNodeWithDebuggerHooks::FunctionBodyNodeWithDebuggerHooks): Added.
3131         (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Calls the debugger, then the code,
3132         then the debugger again.
3133
3134         * kjs/nodes.h: Added create functions, made the constructors private and protected.
3135
3136 2007-12-30  Eric Seidel  <eric@webkit.org>
3137
3138         Reviewed by Sam.
3139
3140         More small cleanup to array_object.cpp
3141
3142         * kjs/array_object.cpp:
3143         (KJS::ArrayProtoFuncToString::callAsFunction):
3144         (KJS::ArrayProtoFuncToLocaleString::callAsFunction):
3145         (KJS::ArrayProtoFuncJoin::callAsFunction):
3146         (KJS::ArrayProtoFuncConcat::callAsFunction):
3147         (KJS::ArrayProtoFuncReverse::callAsFunction):
3148         (KJS::ArrayProtoFuncShift::callAsFunction):
3149         (KJS::ArrayProtoFuncSlice::callAsFunction):
3150         (KJS::ArrayProtoFuncSort::callAsFunction):
3151         (KJS::ArrayProtoFuncSplice::callAsFunction):
3152         (KJS::ArrayProtoFuncUnShift::callAsFunction):
3153         (KJS::ArrayProtoFuncFilter::callAsFunction):
3154         (KJS::ArrayProtoFuncMap::callAsFunction):
3155         (KJS::ArrayProtoFuncEvery::callAsFunction):
3156
3157 2007-12-30  Eric Seidel  <eric@webkit.org>
3158
3159         Reviewed by Sam.
3160
3161         Apply wkstyle to array_object.cpp
3162
3163         * kjs/array_object.cpp:
3164         (KJS::ArrayPrototype::ArrayPrototype):
3165         (KJS::ArrayPrototype::getOwnPropertySlot):
3166         (KJS::ArrayProtoFuncConcat::callAsFunction):
3167         (KJS::ArrayProtoFuncPop::callAsFunction):
3168         (KJS::ArrayProtoFuncReverse::callAsFunction):
3169         (KJS::ArrayProtoFuncShift::callAsFunction):
3170         (KJS::ArrayProtoFuncSlice::callAsFunction):
3171         (KJS::ArrayProtoFuncSort::callAsFunction):
3172         (KJS::ArrayProtoFuncSplice::callAsFunction):
3173         (KJS::ArrayProtoFuncUnShift::callAsFunction):
3174         (KJS::ArrayProtoFuncFilter::callAsFunction):
3175         (KJS::ArrayProtoFuncMap::callAsFunction):
3176         (KJS::ArrayProtoFuncEvery::callAsFunction):
3177         (KJS::ArrayProtoFuncLastIndexOf::callAsFunction):
3178         (KJS::ArrayObjectImp::ArrayObjectImp):
3179         (KJS::ArrayObjectImp::implementsConstruct):
3180         (KJS::ArrayObjectImp::construct):
3181         (KJS::ArrayObjectImp::callAsFunction):
3182
3183 2007-12-30  Eric Seidel  <eric@webkit.org>
3184
3185         Reviewed by Sam.
3186
3187         Remove maxInt/minInt, replacing with std:max/min<int>()
3188
3189         * kjs/array_object.cpp:
3190         (KJS::ArrayProtoFuncSplice::callAsFunction):
3191         * kjs/operations.cpp:
3192         * kjs/operations.h:
3193
3194 2007-12-30  Eric Seidel  <eric@webkit.org>
3195
3196         Reviewed by Sam.
3197         
3198         Update Number.toString to properly throw exceptions.
3199         Cleanup code in Number.toString implementation.
3200
3201         * kjs/number_object.cpp:
3202         (KJS::numberToString):
3203         * kjs/object.cpp:
3204         (KJS::Error::create): Remove bogus debug lines.
3205
3206 2007-12-28  Eric Seidel  <eric@webkit.org>
3207
3208         Reviewed by Oliver.
3209
3210         ASSERT when debugging via Drosera due to missed var lookup optimization.
3211         http://bugs.webkit.org/show_bug.cgi?id=16634
3212         
3213         No test case possible.
3214
3215         * kjs/nodes.cpp:
3216         (KJS::BreakpointCheckStatement::optimizeVariableAccess):
3217         * kjs/nodes.h:
3218
3219 2007-12-28  Eric Seidel  <eric@webkit.org>
3220
3221         Reviewed by Oliver.
3222
3223         Fix (-0).toFixed() and re-factor a little
3224         Fix (-0).toExponential() and printing of trailing 0s in toExponential
3225         Fix toPrecision(nan) handling
3226         http://bugs.webkit.org/show_bug.cgi?id=16640
3227
3228         * kjs/number_object.cpp:
3229         (KJS::numberToFixed):
3230         (KJS::fractionalPartToString):
3231         (KJS::numberToExponential):
3232         (KJS::numberToPrecision):
3233
3234 2007-12-28  Eric Seidel  <eric@webkit.org>
3235
3236         Reviewed by Sam.
3237
3238         More changes to make number code readable
3239
3240         * kjs/number_object.cpp:
3241         (KJS::integer_part_noexp):
3242         (KJS::numberToFixed):
3243         (KJS::numberToExponential):
3244
3245 2007-12-28  Eric Seidel  <eric@webkit.org>
3246
3247         Reviewed by Sam.
3248
3249         More small cleanups to toPrecision
3250
3251         * kjs/number_object.cpp:
3252         (KJS::numberToPrecision):
3253
3254 2007-12-28  Eric Seidel  <eric@webkit.org>
3255
3256         Reviewed by Sam.
3257
3258         More small attempts to make number code readable
3259
3260         * kjs/number_object.cpp:
3261         (KJS::exponentialPartToString):
3262         (KJS::numberToExponential):
3263         (KJS::numberToPrecision):
3264
3265 2007-12-28  Eric Seidel  <eric@webkit.org>
3266
3267         Reviewed by Sam.
3268
3269         Break out callAsFunction implementations into static functions
3270
3271         * kjs/number_object.cpp:
3272         (KJS::numberToString):
3273         (KJS::numberToFixed):
3274         (KJS::numberToExponential):
3275         (KJS::numberToPrecision):
3276         (KJS::NumberProtoFunc::callAsFunction):
3277
3278 2007-12-28  Eric Seidel  <eric@webkit.org>
3279
3280         Reviewed by Sam.
3281
3282         Apply wkstyle/astyle and fix placement of *
3283
3284         * kjs/number_object.cpp:
3285         (KJS::):
3286         (KJS::NumberInstance::NumberInstance):
3287         (KJS::NumberPrototype::NumberPrototype):
3288         (KJS::NumberProtoFunc::NumberProtoFunc):
3289         (KJS::integer_part_noexp):
3290         (KJS::intPow10):
3291         (KJS::NumberProtoFunc::callAsFunction):
3292         (KJS::NumberObjectImp::NumberObjectImp):
3293         (KJS::NumberObjectImp::getOwnPropertySlot):
3294         (KJS::NumberObjectImp::getValueProperty):
3295         (KJS::NumberObjectImp::implementsConstruct):
3296         (KJS::NumberObjectImp::construct):
3297         (KJS::NumberObjectImp::callAsFunction):
3298         * kjs/object.cpp:
3299         (KJS::JSObject::put):
3300
3301 2007-12-27  Eric Seidel  <eric@webkit.org>
3302
3303         Reviewed by Sam.
3304
3305         ASSERT in JavaScriptCore while viewing WICD test case
3306         http://bugs.webkit.org/show_bug.cgi?id=16626
3307         
3308         * kjs/nodes.cpp:
3309         (KJS::ForInNode::execute): move KJS_CHECK_EXCEPTION to proper place
3310
3311 2007-12-26  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
3312
3313         Reviewed by Alp Toker.
3314
3315         http://bugs.webkit.org/show_bug.cgi?id=16390
3316         Use autotools or GNU make as the build system for the GTK port
3317
3318         * GNUmakefile.am: Added.
3319
3320 2007-12-25  Maciej Stachowiak  <mjs@apple.com>
3321         
3322         Reviewed by Oliver.
3323                 
3324         - Remove unnecessary redundant check from property setting
3325         http://bugs.webkit.org/show_bug.cgi?id=16602
3326                 
3327         1.3% speedup on SunSpider.
3328         
3329         * kjs/object.cpp:
3330         (KJS::JSObject::put): Don't do canPut check when not needed; let
3331         the PropertyMap handle it.        
3332         (KJS::JSObject::canPut): Don't check the static property
3333         table. lookupPut does that already.
3334         
3335 2007-12-24  Alp Toker  <alp@atoker.com>
3336
3337         Fix builds that don't use AllInOneFile.cpp following breakage
3338         introduced in r28973.
3339
3340         * kjs/grammar.y:
3341
3342 2007-12-24  Maciej Stachowiak  <mjs@apple.com>
3343
3344         Reviewed by Eric.
3345
3346         - Optimize variable declarations
3347         http://bugs.webkit.org/show_bug.cgi?id=16585
3348         
3349         3.5% speedup on SunSpider.
3350
3351         var statements now result in either assignments or empty statements.
3352         
3353         This allows a couple of optimization opportunities:
3354         - No need to branch at runtime to check if there is an initializer
3355         - EmptyStatementNodes can be removed entirely (also done in this patch)
3356         - Assignment expressions get properly optimized for local variables
3357         
3358         This patch also includes some code cleanup:
3359         - Most of the old VarStatement/VarDecl logic is now only used for const declarations, 
3360           thus it is renamed appropriately
3361         - AssignExprNode is gone
3362         
3363         * JavaScriptCore.exp:
3364         * kjs/NodeInfo.h:
3365         * kjs/grammar.y:
3366         * kjs/nodes.cpp:
3367         (KJS::SourceElements::append):
3368         (KJS::ConstDeclNode::ConstDeclNode):
3369         (KJS::ConstDeclNode::optimizeVariableAccess):
3370         (KJS::ConstDeclNode::handleSlowCase):
3371         (KJS::ConstDeclNode::evaluateSingle):
3372         (KJS::ConstDeclNode::evaluate):
3373         (KJS::ConstStatementNode::optimizeVariableAccess):
3374         (KJS::ConstStatementNode::execute):
3375         (KJS::VarStatementNode::optimizeVariableAccess):
3376         (KJS::VarStatementNode::execute):
3377         (KJS::ForInNode::ForInNode):
3378         (KJS::ForInNode::optimizeVariableAccess):
3379         (KJS::ForInNode::execute):
3380         (KJS::FunctionBodyNode::initializeSymbolTable):
3381         (KJS::ProgramNode::initializeSymbolTable):
3382         (KJS::FunctionBodyNode::processDeclarations):
3383         (KJS::ProgramNode::processDeclarations):
3384         (KJS::EvalNode::processDeclarations):
3385         * kjs/nodes.h:
3386         (KJS::DeclarationStacks::):
3387         (KJS::StatementNode::):
3388         (KJS::ConstDeclNode::):
3389         (KJS::ConstStatementNode::):
3390         (KJS::EmptyStatementNode::):
3391         (KJS::VarStatementNode::):
3392         (KJS::ForNode::):
3393         * kjs/nodes2string.cpp:
3394         (KJS::ConstDeclNode::streamTo):
3395         (KJS::ConstStatementNode::streamTo):
3396         (KJS::ScopeNode::streamTo):
3397         (KJS::VarStatementNode::streamTo):
3398         (KJS::ForNode::streamTo):
3399         (KJS::ForInNode::streamTo):
3400
3401 2007-12-21  Mark Rowe  <mrowe@apple.com>
3402
3403         Reviewed by Oliver Hunt.
3404
3405         * JavaScriptCore.exp: Remove unused symbol to prevent a weak external symbol
3406         being generated in JavaScriptCore.framework.
3407
3408 2007-12-21  Darin Adler  <darin@apple.com>
3409
3410         Requested by Maciej.
3411
3412         * kjs/nodes.h: Use the new NEVER_INLINE here and eliminate the old
3413         KJS_NO_INLINE. We don't want to have two, and we figured it was better
3414         to keep the one that's in WTF.
3415
3416 2007-12-21  Darin Adler  <darin@apple.com>
3417
3418         Reviewed by Eric.
3419
3420         - http://bugs.webkit.org/show_bug.cgi?id=16561
3421           remove debugger overhead from non-debugged JavaScript execution
3422
3423         1.022x as fast on SunSpider.
3424
3425         * JavaScriptCore.exp: Updated.
3426
3427         * kjs/NodeInfo.h: Renamed SourceElementsStub to SourceElements,
3428         since that more accurately describes the role of this object, which
3429         is a reference-counted wrapper for a Vector.
3430
3431         * kjs/Parser.cpp:
3432         (KJS::Parser::didFinishParsing): Changed parameter type to SourceElements,
3433         and use plain assignment instead of set.
3434         * kjs/Parser.h: Changed parameter type of didFinishParsing to a
3435         SourceElements. Also changed m_sourceElements; we now use a RefPtr instead
3436         of an OwnPtr as well.
3437
3438         * kjs/grammar.y: Got rid of all the calls to release() on SourceElements.
3439         That's now handed inside the constructors for various node types, since we now
3440         use vector swapping instead.
3441
3442         * kjs/nodes.cpp:
3443         (KJS::Node::rethrowException): Added NEVER_INLINE, because this was getting inlined
3444         and we want exception handling out of the normal code flow.
3445         (KJS::SourceElements::append): Moved here from the header. This now handles
3446         creating a BreakpointCheckStatement for each statement in the debugger case.
3447         That way we can get breakpoint handling without having it in every execute function.
3448         (KJS::BreakpointCheckStatement::BreakpointCheckStatement): Added.
3449         (KJS::BreakpointCheckStatement::execute): Added. Contains the code that was formerly
3450         in the StatementNode::hitStatement function and the KJS_BREAKPOINT macro.
3451         (KJS::BreakpointCheckStatement::streamTo): Added.
3452         (KJS::ArgumentListNode::evaluateList): Use KJS_CHECKEXCEPTIONVOID since the return
3453         type is void.
3454         (KJS::VarStatementNode::execute): Removed KJS_BREAKPOINT.
3455         (KJS::BlockNode::BlockNode): Changed parameter type to SourceElements.
3456         Changed code to use release since the class now contains a vector rather than
3457         a vector point.
3458         (KJS::BlockNode::optimizeVariableAccess): Updated since member is now a vector
3459         rather than a vector pointer.
3460         (KJS::BlockNode::execute): Ditto.
3461         (KJS::ExprStatementNode::execute): Removed KJS_BREAKPOINT.
3462         (KJS::IfNode::execute): Ditto.
3463         (KJS::IfElseNode::execute): Ditto.
3464         (KJS::DoWhileNode::execute): Ditto.
3465         (KJS::WhileNode::execute): Ditto.
3466         (KJS::ContinueNode::execute): Ditto.
3467         (KJS::BreakNode::execute): Ditto.
3468         (KJS::ReturnNode::execute): Ditto.
3469         (KJS::WithNode::execute): Ditto.
3470         (KJS::CaseClauseNode::optimizeVariableAccess): Updated since member is now a vector
3471         rather than a vector pointer.
3472         (KJS::CaseClauseNode::executeStatements): Ditto.
3473         (KJS::SwitchNode::execute): Removed KJS_BREAKPOINT.
3474         (KJS::ThrowNode::execute): Ditto.
3475         (KJS::TryNode::execute): Ditto.
3476         (KJS::ScopeNode::ScopeNode): Changed parameter type to SourceElements.
3477         (KJS::ProgramNode::ProgramNode): Ditto.
3478         (KJS::EvalNode::EvalNode): Ditto.
3479         (KJS::FunctionBodyNode::FunctionBodyNode): Ditto.
3480         (KJS::ScopeNode::optimizeVariableAccess): Updated since member is now a vector
3481         rather than a vector pointer.
3482
3483         * kjs/nodes.h: Removed hitStatement. Renamed SourceElements to StatementVector.
3484         Renamed SourceElementsStub to SourceElements and made it derive from
3485         ParserRefCounted rather than from Node, hold a vector rather than a pointer to
3486         a vector, and changed the release function to swap with another vector rather
3487         than the pointer idiom. Updated BlockNode and CaseClauseNode to hold actual
3488         vectors instead of pointers to vectors. Added BreakpointCheckStatement.
3489
3490         * kjs/nodes2string.cpp:
3491         (KJS::statementListStreamTo): Changed to work on a vector instead of a pointer
3492         to a vector.
3493         (KJS::BlockNode::streamTo): Ditto.
3494         (KJS::CaseClauseNode::streamTo):  Ditto.
3495
3496         * wtf/AlwaysInline.h: Added NEVER_INLINE.
3497         * wtf/PassRefPtr.h: Tweaked formatting. Added clear() function that matches the
3498         ones in OwnPtr and auto_ptr.
3499         * wtf/RefPtr.h: Ditto.
3500
3501 2007-12-21  Darin Adler  <darin@apple.com>
3502
3503         - fix broken regression tests
3504
3505         The broken tests were fast/js/do-while-expression-value.html and
3506         fast/js/while-expression-value.html.
3507
3508         * kjs/nodes.cpp: Check in the correct version of this file. I had accidentally landed
3509         an old version of my patch for bug 16471.
3510         (KJS::statementListExecute): The logic here was backwards. Have to set the value
3511         even for non-normal execution results.
3512
3513 2007-12-20  Alexey Proskuryakov  <ap@webkit.org>
3514
3515         Windows build fix
3516
3517         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Copy npruntime_internal.h
3518         to WebKitBuild.
3519
3520 2007-12-20  Eric Seidel  <eric@webkit.org>
3521
3522         Reviewed by mjs.
3523         
3524         Split IfNode into IfNode and IfElseNode for speedup.
3525         http://bugs.webkit.org/show_bug.cgi?id=16470
3526         
3527         SunSpider claims this is 1.003x as fast as before.
3528         (This required running with --runs 15 to get consistent enough results to tell!)
3529
3530         * kjs/grammar.y: