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