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