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