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