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