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