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