2009-12-04 Kent Hansen <kent.hansen@nokia.com>
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2009-12-04  Kent Hansen  <kent.hansen@nokia.com>
2
3         Reviewed by Darin Adler.
4
5         JavaScript delete operator should return false for string properties
6         https://bugs.webkit.org/show_bug.cgi?id=32012
7
8         * runtime/StringObject.cpp:
9         (JSC::StringObject::deleteProperty):
10
11 2009-12-03  Drew Wilson  <atwilson@chromium.org>
12
13         Rolled back r51633 because it causes a perf regression in Chromium.
14
15         * wtf/Platform.h:
16
17 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
18
19         Try and fix the Windows build.
20
21         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
22
23 2009-12-03  Mark Rowe  <mrowe@apple.com>
24
25         Try and fix the Mac build.
26
27         * JavaScriptCore.exp:  Export a symbol that should be exported.
28
29 2009-12-03  Oliver Hunt  <oliver@apple.com>
30
31         Reviewed by Gavin Barraclough.
32
33         REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
34         https://bugs.webkit.org/show_bug.cgi?id=32133
35
36         Work around odd GCC-ism and correct the scopechain for use by
37         calls made while a cachedcall is active on the callstack.
38
39         * interpreter/CachedCall.h:
40         (JSC::CachedCall::newCallFrame):
41         * runtime/JSArray.cpp:
42         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
43         * runtime/StringPrototype.cpp:
44         (JSC::stringProtoFuncReplace):
45
46 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
47
48         Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
49
50         https://bugs.webkit.org/show_bug.cgi?id=32136
51         Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
52         Instead, allow the result of a string concatenation to be represented in a tree form - with a
53         variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
54
55         Strings must still currently be resolved down to a flat UString representation before being used,
56         but by holding the string in a rope representation during construction we can avoid copying data
57         until we know the final size of the string.
58
59         ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
60
61         * JavaScriptCore.exp:
62
63             - Update exports.
64
65         * interpreter/Interpreter.cpp:
66         (JSC::Interpreter::privateExecute):
67
68             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
69
70         * jit/JITOpcodes.cpp:
71         (JSC::JIT::privateCompileCTIMachineTrampolines):
72
73             - Switch the string length trampoline to read the length directly from JSString::m_length,
74               rather than from the JSString's UString::Rep's 'len' property.
75
76         * jit/JITStubs.cpp:
77         (JSC::DEFINE_STUB_FUNCTION):
78
79             - Modify op_add such that addition of two strings, where either or both strings are already
80               in rope representation, produces a rope as a result.
81
82         * runtime/JSString.cpp:
83         (JSC::JSString::Rope::~Rope):
84         (JSC::copyChars):
85         (JSC::JSString::resolveRope):
86         (JSC::JSString::getPrimitiveNumber):
87         (JSC::JSString::toBoolean):
88         (JSC::JSString::toNumber):
89         (JSC::JSString::toString):
90         (JSC::JSString::toThisString):
91         (JSC::JSString::getStringPropertyDescriptor):
92         * runtime/JSString.h:
93         (JSC::JSString::Rope::Fiber::Fiber):
94         (JSC::JSString::Rope::Fiber::destroy):
95         (JSC::JSString::Rope::Fiber::isRope):
96         (JSC::JSString::Rope::Fiber::rope):
97         (JSC::JSString::Rope::Fiber::string):
98         (JSC::JSString::Rope::create):
99         (JSC::JSString::Rope::initializeFiber):
100         (JSC::JSString::Rope::ropeLength):
101         (JSC::JSString::Rope::stringLength):
102         (JSC::JSString::Rope::fibers):
103         (JSC::JSString::Rope::Rope):
104         (JSC::JSString::Rope::operator new):
105         (JSC::JSString::JSString):
106         (JSC::JSString::value):
107         (JSC::JSString::length):
108         (JSC::JSString::isRope):
109         (JSC::JSString::rope):
110         (JSC::JSString::string):
111         (JSC::JSString::canGetIndex):
112         (JSC::jsSingleCharacterSubstring):
113         (JSC::JSString::getIndex):
114         (JSC::jsSubstring):
115         (JSC::JSString::getStringPropertySlot):
116
117             - Add rope form.
118
119         * runtime/Operations.h:
120         (JSC::jsAdd):
121         (JSC::concatenateStrings):
122
123             - Update string concatenation, and addition of ropes, to produce ropes.
124
125         * runtime/StringObject.cpp:
126         (JSC::StringObject::getOwnPropertyNames):
127
128             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
129
130 2009-11-23  Jeremy Moskovich  <jeremy@chromium.org>
131
132         Reviewed by Eric Seidel.
133
134         Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
135         https://bugs.webkit.org/show_bug.cgi?id=31802
136
137         No test since this is already covered by existing pixel tests.
138
139         * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
140
141 2009-12-02  Oliver Hunt  <oliver@apple.com>
142
143         Reviewed by Gavin Barraclough.
144
145         Add files missed in prior patch.
146
147         * runtime/JSZombie.cpp:
148         (JSC::):
149         (JSC::JSZombie::leakedZombieStructure):
150         * runtime/JSZombie.h: Added.
151         (JSC::JSZombie::JSZombie):
152         (JSC::JSZombie::isZombie):
153         (JSC::JSZombie::classInfo):
154         (JSC::JSZombie::isGetterSetter):
155         (JSC::JSZombie::isAPIValueWrapper):
156         (JSC::JSZombie::isPropertyNameIterator):
157         (JSC::JSZombie::getCallData):
158         (JSC::JSZombie::getConstructData):
159         (JSC::JSZombie::getUInt32):
160         (JSC::JSZombie::toPrimitive):
161         (JSC::JSZombie::getPrimitiveNumber):
162         (JSC::JSZombie::toBoolean):
163         (JSC::JSZombie::toNumber):
164         (JSC::JSZombie::toString):
165         (JSC::JSZombie::toObject):
166         (JSC::JSZombie::markChildren):
167         (JSC::JSZombie::put):
168         (JSC::JSZombie::deleteProperty):
169         (JSC::JSZombie::toThisObject):
170         (JSC::JSZombie::toThisString):
171         (JSC::JSZombie::toThisJSString):
172         (JSC::JSZombie::getJSNumber):
173         (JSC::JSZombie::getOwnPropertySlot):
174
175 2009-12-02  Oliver Hunt  <oliver@apple.com>
176
177         Reviewed by Gavin Barraclough.
178
179         Add zombies to JSC
180         https://bugs.webkit.org/show_bug.cgi?id=32103
181
182         Add a compile time flag to make the JSC collector replace "unreachable"
183         objects with zombie objects.  The zombie object is a JSCell subclass that
184         ASSERTs on any attempt to use the JSCell methods.  In addition there are
185         a number of additional assertions in bottleneck code to catch zombie usage
186         as quickly as possible.
187
188         Grrr. Argh. Brains.
189
190         * JavaScriptCore.xcodeproj/project.pbxproj:
191         * interpreter/Register.h:
192         (JSC::Register::Register):
193         * runtime/ArgList.h:
194         (JSC::MarkedArgumentBuffer::append):
195         (JSC::ArgList::ArgList):
196         * runtime/Collector.cpp:
197         (JSC::Heap::destroy):
198         (JSC::Heap::sweep):
199         * runtime/Collector.h:
200         * runtime/JSCell.h:
201         (JSC::JSCell::isZombie):
202         (JSC::JSValue::isZombie):
203         * runtime/JSValue.h:
204         (JSC::JSValue::decode):
205         (JSC::JSValue::JSValue):
206         * wtf/Platform.h:
207
208 2009-12-01  Jens Alfke  <snej@chromium.org>
209
210         Reviewed by Darin Adler.
211
212         Added variants of find/contains/add that allow a foreign key type to be used.
213         This will allow AtomicString-keyed maps to be queried by C string without
214         having to create a temporary AtomicString (see HTTPHeaderMap.)
215         The code for this is adapted from the equivalent in HashSet.h.
216
217         * wtf/HashMap.h:
218         (WTF::HashMap::find):
219         (WTF::HashMap::contains):
220         (WTF::HashMap::add):
221         * wtf/HashSet.h: Changed "method" to "function member" in a comment.
222
223 2009-12-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
224
225         Revert 51551 because it broke GTK+.
226
227         * wtf/Platform.h:
228
229 2009-11-30  Gavin Barraclough  <barraclough@apple.com>
230
231         Windows Build fix.  Reviewed by NOBODY.
232
233         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
234
235 2009-11-24  Gavin Barraclough  <barraclough@apple.com>
236
237         Reviewed by Geoff Garen.
238
239         Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
240
241         WebCore presently has to explicitly specify the world before entering into JSC,
242         which is a little fragile (particularly since property access via a
243         getter/setter might invoke execution). Instead derive the current world from
244         the lexical global object.
245         
246         Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
247
248         * API/JSBase.cpp:
249         (JSEvaluateScript):
250         * API/JSObjectRef.cpp:
251         (JSObjectCallAsFunction):
252         * JavaScriptCore.exp:
253         * runtime/JSGlobalData.cpp:
254         * runtime/JSGlobalData.h:
255
256 2009-11-30  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
257
258         Reviewed by Kenneth Rohde Christiansen.
259
260         [Qt] Remove obsolete PLATFORM(KDE) code
261         https://bugs.webkit.org/show_bug.cgi?id=31958
262
263         KDE is now using unpatched QtWebKit.
264
265         * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
266         * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 
267         section that is guarded with it.
268
269 2009-11-30  Jan-Arve Sæther  <jan-arve.saether@nokia.com>
270
271         Reviewed by Simon Hausmann.
272
273         [Qt] Fix compilation with win32-icc
274
275         The Intel compiler does not support the __has_trivial_constructor type
276         trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
277         reason for that is that the Intel Compiler depends on the Microsoft
278         Platform SDK, and in order to try to be "fully" MS compatible it will
279         "pretend" to be the same MS compiler as was shipped with the MS PSDK.
280         (Thus, compiling with win32-icc with VC8 SDK will make the source code
281         "think" the compiler at hand supports this type trait).
282
283         * wtf/TypeTraits.h:
284
285 2009-11-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
286
287         Reviewed by Eric Seidel.
288
289         [Qt] Mac build has JIT disabled
290         https://bugs.webkit.org/show_bug.cgi?id=31828
291
292         * wtf/Platform.h: Enable JIT for Qt Mac builds
293
294 2009-11-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
295
296         Reviewed by Eric Seidel.
297
298         Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
299         https://bugs.webkit.org/show_bug.cgi?id=31943
300
301         * runtime/MarkStack.h:
302         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
303
304 2009-11-28  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
305
306         Reviewed by Gavin Barraclough.
307
308         https://bugs.webkit.org/show_bug.cgi?id=31930
309
310         Seems a typo. We don't need ~270k memory to determine the vptrs.
311
312         * runtime/JSGlobalData.cpp:
313         (JSC::VPtrSet::VPtrSet):
314
315 2009-11-27  Shinichiro Hamaji  <hamaji@chromium.org>
316
317         Unreviewed. 
318
319         Move GOwnPtr* from wtf to wtf/gtk
320         https://bugs.webkit.org/show_bug.cgi?id=31793
321
322         Build fix for chromium after r51423.
323         Exclude gtk directory from chromium build.
324
325         * JavaScriptCore.gyp/JavaScriptCore.gyp:
326
327 2009-11-25  Oliver Hunt  <oliver@apple.com>
328
329         Reviewed by Gavin Barraclough.
330
331         Incorrect behaviour of jneq_null in the interpreter
332         https://bugs.webkit.org/show_bug.cgi?id=31901
333
334         Correct the logic of jneq_null.  This is already covered by existing tests.
335
336         * interpreter/Interpreter.cpp:
337         (JSC::Interpreter::privateExecute):
338
339 2009-11-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
340
341         Reviewed by Oliver Hunt.
342
343         Move GOwnPtr* from wtf to wtf/gtk
344         https://bugs.webkit.org/show_bug.cgi?id=31793
345
346         * GNUmakefile.am: Change the path for GOwnPtr.*.
347         * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
348           GOwnPtr.cpp from the exclude list.
349         * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
350         * wscript: Remove GOwnPtr.cpp from the exclude list.
351         * wtf/GOwnPtr.cpp: Removed.
352         * wtf/GOwnPtr.h: Removed.
353         * wtf/Threading.h: Change the path for GOwnPtr.h.
354         * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
355         * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
356         * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
357
358 2009-11-24  Dmitry Titov  <dimich@chromium.org>
359
360         Reviewed by Eric Seidel.
361
362         Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
363         https://bugs.webkit.org/show_bug.cgi?id=31444
364
365         * Configurations/FeatureDefines.xcconfig:
366         * wtf/Platform.h:
367
368 2009-11-24  Chris Marrin  <cmarrin@apple.com>
369
370         Reviewed by Simon Fraser.
371
372         Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
373         https://bugs.webkit.org/show_bug.cgi?id=27314
374
375         * wtf/Platform.h:
376
377 2009-11-24  Jason Smith  <dark.panda@gmail.com>
378
379         Reviewed by Alexey Proskuryakov.
380
381         RegExp#exec's returned Array-like object behaves differently from
382         regular Arrays
383         https://bugs.webkit.org/show_bug.cgi?id=31689
384
385         * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
386         values are added to the returned RegExpMatchesArray
387
388 2009-11-24  Oliver Hunt  <oliver@apple.com>
389
390         Reviewed by Alexey Proskuryakov.
391
392         JSON.stringify performance on undefined is very poor
393         https://bugs.webkit.org/show_bug.cgi?id=31839
394
395         Switch from a UString to a Vector<UChar> when building
396         the JSON string, allowing us to safely remove the substr-copy
397         we otherwise did when unwinding an undefined property.
398
399         Also turns out to be a ~5% speedup on stringification.
400
401         * runtime/JSONObject.cpp:
402         (JSC::Stringifier::StringBuilder::append):
403         (JSC::Stringifier::stringify):
404         (JSC::Stringifier::Holder::appendNextProperty):
405
406 2009-11-24  Mark Rowe  <mrowe@apple.com>
407
408         Fix production builds where the source tree may be read-only.
409
410         * JavaScriptCore.xcodeproj/project.pbxproj:
411
412 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
413
414         Reviewed by Kenneth Rohde Christiansen.
415
416         Include "config.h" to meet Coding Style Guidelines
417         https://bugs.webkit.org/show_bug.cgi?id=31792
418
419         * wtf/unicode/UTF8.cpp:
420         * wtf/unicode/glib/UnicodeGLib.cpp:
421         * wtf/unicode/wince/UnicodeWince.cpp:
422
423 2009-11-23  Geoffrey Garen  <ggaren@apple.com>
424
425         Reviewed by Oliver Hunt.
426
427         Streamlined some Math functions where we expect or know the result not
428         to be representable as an int.
429         
430         SunSpider says 0.6% faster.
431
432         * runtime/JSNumberCell.h:
433         (JSC::JSValue::JSValue):
434         * runtime/JSValue.h:
435         (JSC::JSValue::):
436         (JSC::jsDoubleNumber):
437         (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
438         and skipping the "can I encode this as an int?" check, avoiding the
439         overhead of int <-> double roundtripping and double <-> double comparison
440         and branching.
441
442         * runtime/MathObject.cpp:
443         (JSC::mathProtoFuncACos):
444         (JSC::mathProtoFuncASin):
445         (JSC::mathProtoFuncATan):
446         (JSC::mathProtoFuncATan2):
447         (JSC::mathProtoFuncCos):
448         (JSC::mathProtoFuncExp):
449         (JSC::mathProtoFuncLog):
450         (JSC::mathProtoFuncRandom):
451         (JSC::mathProtoFuncSin):
452         (JSC::mathProtoFuncSqrt):
453         (JSC::mathProtoFuncTan): For these functions, which we expect or know
454         to produce results not representable as ints, call jsDoubleNumber instead
455         of jsNumber.
456
457 2009-11-23  Mark Rowe  <mrowe@apple.com>
458
459         Unreviewed. Unbreak the regression tests after r51329.
460
461         * API/JSBase.cpp:
462         (JSEvaluateScript): Null-check clientData before dereferencing it.
463         * API/JSObjectRef.cpp:
464         (JSObjectCallAsFunction): Ditto.
465
466 2009-11-23  Gavin Barraclough  <barraclough@apple.com>
467
468         Reviewed by Geoff Garen.
469
470         Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
471
472         Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
473         and for this to automagically cause execution to take place in the world associated with the
474         global object associated with the ExecState (JSContextRef) passed.  However this is not how
475         things work - the world must be explicitly set within WebCore.
476
477         Making this work just for API calls to evaluate & call will be a far from perfect solution,
478         since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
479         A better solution would be to make this all work automagically all throughout WebCore, but this
480         will require more refactoring.
481
482         Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
483         to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
484         tape, and should be removed once the current world no longer needs to be explicitly tracked.
485
486         * API/JSBase.cpp:
487         (JSEvaluateScript):
488         * API/JSObjectRef.cpp:
489         (JSObjectCallAsFunction):
490         * JavaScriptCore.exp:
491         * runtime/JSGlobalData.cpp:
492         (JSC::JSGlobalData::ClientData::beginningExecution):
493         (JSC::JSGlobalData::ClientData::completedExecution):
494         * runtime/JSGlobalData.h:
495
496 2009-11-23  Steve Block  <steveblock@google.com>
497
498         Reviewed by Dmitry Titov.
499
500         Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
501         https://bugs.webkit.org/show_bug.cgi?id=31807
502
503         * wtf/android: Added.
504         * wtf/android/MainThreadAndroid.cpp: Added.
505         (WTF::timeoutFired):
506         (WTF::initializeMainThreadPlatform):
507         (WTF::scheduleDispatchFunctionsOnMainThread):
508
509 2009-11-23  Alexey Proskuryakov  <ap@apple.com>
510
511         Reviewed by Brady Eidson.
512
513         https://bugs.webkit.org/show_bug.cgi?id=31748
514         Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
515
516         * JavaScriptCore.exp: Export callOnMainThreadAndWait.
517
518 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
519
520         Reviewed by Kenneth Rohde Christiansen.
521
522         [Symbian] Fix lastIndexOf() for Symbian
523         https://bugs.webkit.org/show_bug.cgi?id=31773
524
525         Symbian soft floating point library has problems with operators
526         comparing NaN to numbers. Without a workaround lastIndexOf() 
527         function does not work.
528
529         Patch developed by David Leong.
530
531         * runtime/StringPrototype.cpp:
532         (JSC::stringProtoFuncLastIndexOf):Add an extra test 
533         to check for NaN for Symbian.
534
535 2009-11-23  Steve Block  <steveblock@google.com>
536
537         Reviewed by Eric Seidel.
538
539         Android port lacks implementation of atomicIncrement and atomicDecrement.
540         https://bugs.webkit.org/show_bug.cgi?id=31715
541
542         * wtf/Threading.h: Modified.
543         (WTF::atomicIncrement): Added Android implementation.
544         (WTF::atomicDecrement): Added Android implementation.
545
546 2009-11-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
547
548         Unreviewed.
549
550         [Qt] Sort source lists and remove obsolete comments 
551         from the build system.
552
553         * JavaScriptCore.pri:
554
555 2009-11-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
556
557         Reviewed by Eric Seidel.
558
559         [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
560         https://bugs.webkit.org/show_bug.cgi?id=31753
561
562         * wtf/Platform.h:
563
564 2009-11-19  Steve Block  <steveblock@google.com>
565
566         Android port lacks configuration in Platform.h and config.h.
567         https://bugs.webkit.org/show_bug.cgi?id=31671
568
569         * wtf/Platform.h: Modified. Added Android-specific configuration.
570
571 2009-11-19  Alexey Proskuryakov  <ap@apple.com>
572
573         Reviewed by Darin Adler.
574
575         https://bugs.webkit.org/show_bug.cgi?id=31690
576         Make SocketStreamHandleCFNet work on Windows
577
578         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
579         * wtf/MainThread.cpp:
580         (WTF::FunctionWithContext::FunctionWithContext):
581         (WTF::dispatchFunctionsFromMainThread):
582         (WTF::callOnMainThreadAndWait):
583         * wtf/MainThread.h:
584         Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
585
586 2009-11-19  Dmitry Titov  <dimich@chromium.org>
587
588         Reviewed by David Levin.
589
590         isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
591         https://bugs.webkit.org/show_bug.cgi?id=31693
592
593         * wtf/ThreadingPthreads.cpp:
594         (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
595         (WTF::isMainThread): Ditto.
596
597 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
598
599         Reviewed by Darin Adler.
600
601         Remove HAVE(STRING_H) guard from JavaScriptCore
602         https://bugs.webkit.org/show_bug.cgi?id=31668
603
604         * config.h:
605         * runtime/UString.cpp:
606
607 2009-11-19  Dumitru Daniliuc  <dumi@chromium.org>
608
609         Reviewed by Dmitry Titov.
610
611         Fixing a bug in MessageQueue::removeIf() that leads to an
612         assertion failure.
613
614         https://bugs.webkit.org/show_bug.cgi?id=31657
615
616         * wtf/MessageQueue.h:
617         (WTF::MessageQueue::removeIf):
618
619 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
620
621         Reviewed by Darin Adler.
622
623         Remove HAVE(FLOAT_H) guard
624         https://bugs.webkit.org/show_bug.cgi?id=31661
625
626         JavaScriptCore has a dependency on float.h, there is
627         no need to guard float.h.
628
629         * runtime/DatePrototype.cpp: Remove include directive 
630         for float.h as it is included in MathExtras.h already.
631         * runtime/Operations.cpp: Ditto.
632         * runtime/UString.cpp: Ditto.
633         * wtf/dtoa.cpp: Ditto.
634         * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
635         * wtf/Platform.h: Ditto.
636
637 2009-11-19  Thiago Macieira <thiago.macieira@nokia.com>
638
639         Reviewed by Simon Hausmann.
640
641         Build fix for 32-bit Sparc machines: these machines are big-endian.
642
643         * wtf/Platform.h:
644
645 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
646
647         Reviewed by Kenneth Rohde Christiansen.
648
649         [Qt] Remove support for Qt v4.3 or older versions
650         https://bugs.webkit.org/show_bug.cgi?id=29469
651
652         * JavaScriptCore.pro:
653         * jsc.pro:
654         * wtf/unicode/qt4/UnicodeQt4.h:
655
656 2009-11-18  Kent Tamura  <tkent@chromium.org>
657
658         Reviewed by Darin Adler.
659
660         Move UString::from(double) implementation to new
661         WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
662         code will use it.
663         https://bugs.webkit.org/show_bug.cgi?id=31330
664
665         - Introduce new function createRep(const char*, unsigned) and
666           UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
667         - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
668           or Infinity.
669
670         No new tests because this doesn't change the behavior.
671
672         * JavaScriptCore.exp:
673         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
674         * runtime/UString.cpp:
675         (JSC::createRep):
676         (JSC::UString::UString):
677         (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
678         * runtime/UString.h:
679         * wtf/dtoa.cpp:
680         (WTF::dtoa): Fix a bug about rve.
681         (WTF::append): A helper for doubleToStringInJavaScriptFormat().
682         (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
683         * wtf/dtoa.h:
684
685 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
686
687         Reviewed by Kenneth Rohde Christiansen.
688
689         [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
690         https://bugs.webkit.org/show_bug.cgi?id=31643
691
692         * JavaScriptCore.pro:
693
694 2009-11-18  Nate Chapin  <japhet@chromium.org>
695
696         Reviewed by Darin Fisher.
697
698         Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
699
700         https://bugs.webkit.org/show_bug.cgi?id=31648
701
702         * JavaScriptCore.gyp/JavaScriptCore.gyp:
703
704 2009-11-18  Thiago Macieira <thiago.macieira@nokia.com>
705
706         Reviewed by Gavin Barraclough.
707
708         [Qt] Implement symbol hiding for JSC's JIT functions.
709
710         These functions are implemented directly in assembly, so they need the
711         proper directives to enable/disable visibility. On ELF systems, it's
712         .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
713         Windows, it's not necessary since you have to explicitly export. I
714         also implemented the AIX idiom, though it's unlikely anyone will
715         implement AIX/POWER JIT.
716         https://bugs.webkit.org/show_bug.cgi?id=30864
717
718         * jit/JITStubs.cpp:
719
720 2009-11-18  Oliver Hunt  <oliver@apple.com>
721
722         Reviewed by Alexey Proskuryakov.
723
724         Interpreter may do an out of range access when throwing an exception in the profiler.
725         https://bugs.webkit.org/show_bug.cgi?id=31635
726
727         Add bounds check.
728
729         * interpreter/Interpreter.cpp:
730         (JSC::Interpreter::throwException):
731
732 2009-11-18  Gabor Loki  <loki@inf.u-szeged.hu>
733
734         Reviewed by Darin Adler.
735
736         Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
737         https://bugs.webkit.org/show_bug.cgi?id=31631
738
739         * jit/ExecutableAllocator.h:
740         (JSC::ExecutableAllocator::cacheFlush):
741
742 2009-11-18  Harald Fernengel  <harald.fernengel@nokia.com>
743
744         Reviewed by Simon Hausmann.
745
746         [Qt] Fix detection of linux-g++
747
748         Never use "linux-g++*" to check for linux-g++, since this will break embedded
749         builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
750         g++ on linux mkspec.
751
752         * JavaScriptCore.pri:
753
754 2009-11-17  Jon Honeycutt  <jhoneycutt@apple.com>
755
756         Add JSContextRefPrivate.h to list of copied files.
757
758         Reviewed by Mark Rowe.
759
760         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
761
762 2009-11-17  Martin Robinson  <martin.james.robinson@gmail.com>
763
764         Reviewed by Adam Barth.
765
766         [GTK] Style cleanup for GOwnPtr
767         https://bugs.webkit.org/show_bug.cgi?id=31506
768
769         Remove forward declaration in GOwnPtr and do some style cleanup.
770
771         * wtf/GOwnPtr.cpp:
772         * wtf/GOwnPtr.h:
773         (WTF::GOwnPtr::GOwnPtr):
774         (WTF::GOwnPtr::~GOwnPtr):
775         (WTF::GOwnPtr::get):
776         (WTF::GOwnPtr::release):
777         (WTF::GOwnPtr::outPtr):
778         (WTF::GOwnPtr::set):
779         (WTF::GOwnPtr::clear):
780         (WTF::GOwnPtr::operator*):
781         (WTF::GOwnPtr::operator->):
782         (WTF::GOwnPtr::operator!):
783         (WTF::GOwnPtr::operator UnspecifiedBoolType):
784         (WTF::GOwnPtr::swap):
785         (WTF::swap):
786         (WTF::operator==):
787         (WTF::operator!=):
788         (WTF::getPtr):
789         (WTF::freeOwnedGPtr):
790
791 2009-11-17  Oliver Hunt  <oliver@apple.com>
792
793         Reviewed by Maciej Stachowiak.
794
795         Incorrect use of JavaScriptCore API in DumpRenderTree
796         https://bugs.webkit.org/show_bug.cgi?id=31577
797
798         Add assertions to the 'toJS' functions to catch mistakes like
799         this early.  Restructure existing code which blindly passed potentially
800         null values to toJS when forwarding exceptions so that a null check is
801         performed first.
802
803         * API/APICast.h:
804         (toJS):
805         (toJSForGC):
806         * API/JSCallbackObjectFunctions.h:
807         (JSC::::getOwnPropertySlot):
808         (JSC::::put):
809         (JSC::::deleteProperty):
810         (JSC::::construct):
811         (JSC::::hasInstance):
812         (JSC::::call):
813         (JSC::::toNumber):
814         (JSC::::toString):
815         (JSC::::staticValueGetter):
816         (JSC::::callbackGetter):
817         * API/tests/testapi.c: Fix errors in the API tester.
818         (MyObject_getProperty):
819         (MyObject_convertToType):
820         (EvilExceptionObject_convertToType):
821
822 2009-11-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
823
824         Reviewed by Gavin Barraclough.
825
826         https://bugs.webkit.org/show_bug.cgi?id=31050
827
828         Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
829         failed on a CortexA8 CPU, but not on a simulator; and
830         JITCall.cpp modifications was somehow not committed to mainline.
831
832         * assembler/ARMAssembler.h:
833         (JSC::ARMAssembler::fmrs_r):
834         * assembler/MacroAssemblerARM.h:
835         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
836         * jit/JITCall.cpp:
837         (JSC::JIT::compileOpCall):
838
839 2009-11-16  Joerg Bornemann  <joerg.bornemann@trolltech.com>
840
841         Reviewed by Simon Hausmann.
842
843         Fix Qt build on Windows CE 6.
844
845         * JavaScriptCore.pri: Add missing include path.
846         * wtf/Platform.h: Include ce_time.h for Windows CE 6.
847
848 2009-11-13  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
849
850         Reviewed by Gavin Barraclough.
851
852         https://bugs.webkit.org/show_bug.cgi?id=31050
853
854         Adding optimization support for mode JSVALUE32_64
855         on ARM systems.
856
857         * jit/JIT.h:
858         * jit/JITCall.cpp:
859         (JSC::JIT::compileOpCall):
860         * jit/JITPropertyAccess.cpp:
861         (JSC::JIT::emit_op_method_check):
862         (JSC::JIT::compileGetByIdHotPath):
863         (JSC::JIT::compileGetByIdSlowCase):
864         (JSC::JIT::emit_op_put_by_id):
865
866 2009-11-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
867
868         Reviewed by Gavin Barraclough.
869
870         https://bugs.webkit.org/show_bug.cgi?id=31050
871
872         Adding JSVALUE32_64 support for ARM (but not turning it
873         on by default). All optimizations must be disabled, since
874         this patch is only the first of a series of patches.
875
876         During the work, a lot of x86 specific code revealed and
877         made platform independent.
878         See revisions: 50531 50541 50593 50594 50595
879
880         * assembler/ARMAssembler.h:
881         (JSC::ARMAssembler::):
882         (JSC::ARMAssembler::fdivd_r):
883         * assembler/MacroAssemblerARM.h:
884         (JSC::MacroAssemblerARM::lshift32):
885         (JSC::MacroAssemblerARM::neg32):
886         (JSC::MacroAssemblerARM::rshift32):
887         (JSC::MacroAssemblerARM::branchOr32):
888         (JSC::MacroAssemblerARM::set8):
889         (JSC::MacroAssemblerARM::setTest8):
890         (JSC::MacroAssemblerARM::loadDouble):
891         (JSC::MacroAssemblerARM::divDouble):
892         (JSC::MacroAssemblerARM::convertInt32ToDouble):
893         (JSC::MacroAssemblerARM::zeroDouble):
894         * jit/JIT.cpp:
895         * jit/JIT.h:
896         * jit/JITOpcodes.cpp:
897         (JSC::JIT::privateCompileCTIMachineTrampolines):
898         * jit/JITStubs.cpp:
899         * wtf/StdLibExtras.h:
900
901 2009-11-13  Dominik Röttsches  <dominik.roettsches@access-company.com>
902
903         Reviewed by Eric Seidel.
904
905         Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
906         https://bugs.webkit.org/show_bug.cgi?id=31468
907
908         Adding isAlphanumeric abstraction, required
909         by TextBoundaries.cpp.
910
911         * wtf/unicode/glib/UnicodeGLib.h:
912         (WTF::Unicode::isAlphanumeric):
913         * wtf/unicode/icu/UnicodeIcu.h:
914         (WTF::Unicode::isAlphanumeric):
915
916 2009-11-13  Norbert Leser  <norbert.leser&nokia.com>
917
918         Reviewed by Eric Seidel.
919
920         Added macros for USERINCLUDE paths within symbian blocks
921         to guarantee inclusion of respective header files from local path
922         first (to avoid clashes with same names of header files in system include path).
923
924         * JavaScriptCore.pri:
925
926 2009-11-13  Oliver Hunt  <oliver@apple.com>
927
928         Reviewed by Geoff Garen.
929
930         JSValueProtect and JSValueUnprotect don't protect API wrapper values
931         https://bugs.webkit.org/show_bug.cgi?id=31485
932
933         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
934         does not attempt to to strip out API wrapper objects.
935
936         * API/APICast.h:
937         (toJSForGC):
938         * API/JSValueRef.cpp:
939         (JSValueProtect):
940         (JSValueUnprotect):
941         * API/tests/testapi.c:
942         (makeGlobalNumberValue):
943         (main):
944
945 2009-11-13  İsmail Dönmez  <ismail@namtrac.org>
946
947         Reviewed by Antti Koivisto.
948
949         Fix typo, ce_time.cpp should be ce_time.c
950
951         * JavaScriptCore.pri:
952
953 2009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
954
955         Reviewed by Adam Barth.
956
957         Calculate the time offset only if we were able to parse
958         the date string. This saves an IPC in Chromium for
959         invalid date strings.
960         https://bugs.webkit.org/show_bug.cgi?id=31416
961
962         * wtf/DateMath.cpp:
963         (WTF::parseDateFromNullTerminatedCharacters):
964         (JSC::parseDateFromNullTerminatedCharacters):
965
966 2009-11-12  Oliver Hunt  <oliver@apple.com>
967
968         Rollout r50896 until i can work out why it causes failures.
969
970         * bytecompiler/BytecodeGenerator.cpp:
971         (JSC::BytecodeGenerator::emitReturn):
972         * interpreter/Interpreter.cpp:
973         (JSC::Interpreter::execute):
974         * parser/Nodes.cpp:
975         (JSC::EvalNode::emitBytecode):
976
977 2009-11-12  Steve Falkenburg  <sfalken@apple.com>
978
979         Reviewed by Stephanie Lewis.
980
981         Remove LIBRARY directive from def file to fix Debug_All target.
982
983         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
984
985 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
986
987         Rubber-stamped by Holger Freyther.
988
989         Revert r50204, since it makes DRT crash on 32 bits release builds
990         for GTK+.
991
992         * wtf/FastMalloc.h:
993
994 2009-11-12  Oliver Hunt  <oliver@apple.com>
995
996         Reviewed by Gavin Barraclough.
997
998         Start unifying entry logic for function and eval code.
999
1000         Eval now uses a ret instruction to end execution, and sets up
1001         a callframe more in line with what we do for function entry.
1002
1003         * bytecompiler/BytecodeGenerator.cpp:
1004         (JSC::BytecodeGenerator::emitReturn):
1005         * interpreter/Interpreter.cpp:
1006         (JSC::Interpreter::execute):
1007         * parser/Nodes.cpp:
1008         (JSC::EvalNode::emitBytecode):
1009
1010 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
1011
1012         Reviewed by Kenneth Rohde Christiansen.
1013
1014         [Qt] Disable pthread_setname_np.
1015
1016         This allows Qt builds on Mac from 10.6 to run on earlier version
1017         where this symbol is not present.
1018         https://bugs.webkit.org/show_bug.cgi?id=31403
1019
1020         * wtf/Platform.h:
1021
1022 2009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
1023
1024         Reviewed by Kenneth Rohde Christiansen.
1025
1026         [Qt] Fix linking on Linux 32-bit.
1027
1028         It was missing the ".text" directive at the top of the file,
1029         indicating that code would follow. Without it, the assembler created
1030         "NOTYPE" symbols, which would result in linker errors.
1031         https://bugs.webkit.org/show_bug.cgi?id=30863
1032
1033         * jit/JITStubs.cpp:
1034
1035 2009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1036
1037         Reviewed by Alexey Proskuryakov.
1038
1039         Refactor multiple JavaScriptCore threads
1040         https://bugs.webkit.org/show_bug.cgi?id=31328
1041
1042         Remove the id field from the PlatformThread structure 
1043         as it is not used.
1044
1045         * runtime/Collector.cpp:
1046         (JSC::getCurrentPlatformThread):
1047         (JSC::suspendThread):
1048         (JSC::resumeThread):
1049         (JSC::getPlatformThreadRegisters):
1050
1051 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
1052
1053         Linux build fix: Added an #include for UINT_MAX.
1054
1055         * runtime/WeakRandom.h:
1056
1057 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
1058
1059         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
1060
1061         * JavaScriptCore.xcodeproj/project.pbxproj:
1062
1063 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
1064
1065         Reviewed by Gavin "avGni arBalroguch" Barraclough.
1066
1067         Faster Math.random, based on GameRand.
1068         
1069         SunSpider says 1.4% faster.
1070
1071         * GNUmakefile.am:
1072         * JavaScriptCore.gypi:
1073         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1074         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
1075
1076         * runtime/JSGlobalData.cpp:
1077         (JSC::JSGlobalData::JSGlobalData):
1078         * runtime/JSGlobalData.h: Use an object to track random number generation
1079         state, initialized to the current time.
1080
1081         * runtime/MathObject.cpp:
1082         (JSC::MathObject::MathObject):
1083         (JSC::mathProtoFuncRandom): Use the new hotness.
1084
1085         * runtime/WeakRandom.h: Added.
1086         (JSC::WeakRandom::WeakRandom):
1087         (JSC::WeakRandom::get):
1088         (JSC::WeakRandom::advance): The new hotness.
1089
1090 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
1091
1092         Reviewed by Oliver Hunt.
1093
1094         Imported the v8 DST cache.
1095         
1096         SunSpider says 1.5% faster.
1097
1098         * runtime/JSGlobalData.cpp:
1099         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
1100         other date data.
1101
1102         * runtime/JSGlobalData.h:
1103         (JSC::DSTOffsetCache::DSTOffsetCache):
1104         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
1105
1106         * wtf/DateMath.cpp:
1107         (WTF::calculateDSTOffsetSimple):
1108         (WTF::calculateDSTOffset):
1109         (WTF::parseDateFromNullTerminatedCharacters):
1110         (JSC::getDSTOffset):
1111         (JSC::gregorianDateTimeToMS):
1112         (JSC::msToGregorianDateTime):
1113         (JSC::parseDateFromNullTerminatedCharacters):
1114         * wtf/DateMath.h: The imported code for probing and updating the cache.
1115
1116 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
1117
1118         Reviewed by Oliver Hunt.
1119
1120         Fixed an edge case that could cause the engine not to notice a timezone
1121         change.
1122         
1123         No test because this case would require manual intervention to change
1124         the timezone during the test.
1125         
1126         SunSpider reports no change.
1127
1128         * runtime/DateInstanceCache.h:
1129         (JSC::DateInstanceCache::DateInstanceCache):
1130         (JSC::DateInstanceCache::reset): Added a helper function for resetting
1131         this cache. Also, shrank the cache, since we'll be resetting it often.
1132
1133         * runtime/JSGlobalData.cpp:
1134         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
1135         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
1136         timezone update check.)
1137
1138 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
1139
1140         Reviewed by Sam Weinig.
1141
1142         Some manual inlining and constant propogation in Date code.
1143         
1144         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
1145         says some previously evident stalls are now gone.
1146
1147         * runtime/DateConstructor.cpp:
1148         (JSC::callDate):
1149         * runtime/DateConversion.cpp:
1150         (JSC::formatTime):
1151         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
1152
1153         * runtime/DateConversion.h:
1154         * runtime/DateInstance.cpp:
1155         (JSC::DateInstance::calculateGregorianDateTime):
1156         (JSC::DateInstance::calculateGregorianDateTimeUTC):
1157         * runtime/DateInstance.h:
1158         (JSC::DateInstance::gregorianDateTime):
1159         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
1160         a UTC and non-UTC variant, and split each variant into a fast inline
1161         case and a slow out-of-line case.
1162
1163         * runtime/DatePrototype.cpp:
1164         (JSC::formatLocaleDate):
1165         (JSC::dateProtoFuncToString):
1166         (JSC::dateProtoFuncToUTCString):
1167         (JSC::dateProtoFuncToISOString):
1168         (JSC::dateProtoFuncToDateString):
1169         (JSC::dateProtoFuncToTimeString):
1170         (JSC::dateProtoFuncGetFullYear):
1171         (JSC::dateProtoFuncGetUTCFullYear):
1172         (JSC::dateProtoFuncToGMTString):
1173         (JSC::dateProtoFuncGetMonth):
1174         (JSC::dateProtoFuncGetUTCMonth):
1175         (JSC::dateProtoFuncGetDate):
1176         (JSC::dateProtoFuncGetUTCDate):
1177         (JSC::dateProtoFuncGetDay):
1178         (JSC::dateProtoFuncGetUTCDay):
1179         (JSC::dateProtoFuncGetHours):
1180         (JSC::dateProtoFuncGetUTCHours):
1181         (JSC::dateProtoFuncGetMinutes):
1182         (JSC::dateProtoFuncGetUTCMinutes):
1183         (JSC::dateProtoFuncGetSeconds):
1184         (JSC::dateProtoFuncGetUTCSeconds):
1185         (JSC::dateProtoFuncGetTimezoneOffset):
1186         (JSC::setNewValueFromTimeArgs):
1187         (JSC::setNewValueFromDateArgs):
1188         (JSC::dateProtoFuncSetYear):
1189         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
1190
1191 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
1192
1193         Build fix: export a new symbol.
1194
1195         * JavaScriptCore.exp:
1196         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1197
1198 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
1199
1200         Reviewed by Sam "Home Wrecker" Weinig.
1201
1202         Added a tiny cache for Date parsing.
1203         
1204         SunSpider says 1.2% faster.
1205
1206         * runtime/DateConversion.cpp:
1207         (JSC::parseDate): Try to reuse the last parsed Date, if present.
1208
1209         * runtime/JSGlobalData.cpp:
1210         (JSC::JSGlobalData::resetDateCache):
1211         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
1212         this code to make resetting the date cache easier.
1213
1214         * runtime/JSGlobalObject.h:
1215         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
1216         refactoring.
1217
1218         * wtf/DateMath.cpp:
1219         (JSC::parseDateFromNullTerminatedCharacters):
1220         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
1221
1222 2009-11-09  Oliver Hunt  <oliver@apple.com>
1223
1224         Reviewed by Gavin Barraclough.
1225
1226         Can cache prototype lookups on uncacheable dictionaries.
1227         https://bugs.webkit.org/show_bug.cgi?id=31198
1228
1229         Replace fromDictionaryTransition with flattenDictionaryObject and
1230         flattenDictionaryStructure.  This change is necessary as we need to
1231         guarantee that our attempt to convert away from a dictionary structure
1232         will definitely succeed, and in some cases this requires mutating the
1233         object storage itself.
1234
1235         * interpreter/Interpreter.cpp:
1236         (JSC::Interpreter::tryCacheGetByID):
1237         * jit/JITStubs.cpp:
1238         (JSC::JITThunks::tryCacheGetByID):
1239         (JSC::DEFINE_STUB_FUNCTION):
1240         * runtime/BatchedTransitionOptimizer.h:
1241         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
1242         * runtime/JSObject.h:
1243         (JSC::JSObject::flattenDictionaryObject):
1244         * runtime/Operations.h:
1245         (JSC::normalizePrototypeChain):
1246         * runtime/Structure.cpp:
1247         (JSC::Structure::flattenDictionaryStructure):
1248         (JSC::comparePropertyMapEntryIndices):
1249         * runtime/Structure.h:
1250
1251 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1252
1253         Not reviewed, build fix.
1254
1255         Remove extra character from r50701.
1256
1257         * JavaScriptCore.pri:
1258
1259 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1260
1261         Not reviewed, build fix.
1262
1263         Revert r50695 because it broke QtWebKit (clean builds).
1264
1265         * JavaScriptCore.pri:
1266
1267 2009-11-09  Norbert Leser  <norbert.leser@nokia.com>
1268
1269         Reviewed by Kenneth Rohde Christiansen.
1270
1271         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
1272         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
1273         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
1274
1275         * JavaScriptCore.pri:
1276
1277 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1278
1279         Reviewed by Kenneth Rohde Christiansen.
1280
1281         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
1282         https://bugs.webkit.org/show_bug.cgi?id=31040
1283
1284         * interpreter/Interpreter.cpp:
1285         (JSC::Interpreter::privateExecute):
1286
1287 2009-11-08  David Levin  <levin@chromium.org>
1288
1289         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
1290
1291         * wtf/DateMath.cpp:
1292         (WTF::parseDateFromNullTerminatedCharacters):
1293         (JSC::gregorianDateTimeToMS):
1294         (JSC::msToGregorianDateTime):
1295         (JSC::parseDateFromNullTerminatedCharacters):
1296         * wtf/DateMath.h:
1297         (JSC::GregorianDateTime::GregorianDateTime):
1298
1299 2009-11-08  David Levin  <levin@chromium.org>
1300
1301         Reviewed by NOBODY (chromium build fix).
1302         
1303         Hopefully, the last build fix.
1304
1305         Create better separation in DateMath about the JSC
1306         and non-JSC portions. Also, only expose the non-JSC
1307         version in the exports.
1308
1309         * JavaScriptCore.exp:
1310         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1311         * wtf/DateMath.cpp:
1312         (WTF::parseDateFromNullTerminatedCharacters):
1313         (JSC::getUTCOffset):
1314         (JSC::gregorianDateTimeToMS):
1315         (JSC::msToGregorianDateTime):
1316         (JSC::parseDateFromNullTerminatedCharacters):
1317         * wtf/DateMath.h:
1318         (JSC::gmtoffset):
1319
1320 2009-11-08  David Levin  <levin@chromium.org>
1321
1322         Reviewed by NOBODY (chromium build fix).
1323
1324         For the change in DateMath.
1325
1326         * config.h:
1327         * wtf/DateMath.cpp:
1328
1329 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
1330
1331         Windows build fix: export some symbols.
1332
1333         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1334
1335 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
1336
1337         Build fix: updated export file.
1338
1339         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1340
1341 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
1342
1343         Build fix: added some #includes.
1344
1345         * wtf/CurrentTime.h:
1346         * wtf/DateMath.h:
1347
1348 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
1349
1350         Reviewed by Oliver Hunt.
1351         
1352         https://bugs.webkit.org/show_bug.cgi?id=31197
1353         Implemented a timezone cache not based on Mac OS X's notify_check API.
1354         
1355         If the VM calculates the local timezone offset from UTC, it caches the
1356         result until the end of the current VM invocation. (We don't want to cache
1357         forever, because the user's timezone may change over time.)
1358         
1359         This removes notify_* overhead on Mac, and, more significantly, removes
1360         OS time and date call overhead on non-Mac platforms.
1361
1362         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
1363         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
1364
1365         * JavaScriptCore.exp:
1366
1367         * interpreter/CachedCall.h:
1368         (JSC::CachedCall::CachedCall):
1369         * interpreter/Interpreter.cpp:
1370         (JSC::Interpreter::execute):
1371         * runtime/JSGlobalObject.h:
1372         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
1373         DynamicGlobalObjectScope constructor responsible for checking whether a
1374         dynamicGlobalObject has already been set. This eliminated some duplicate
1375         client code, and allowed me to avoid adding even more duplicate client
1376         code. Made DynamicGlobalObjectScope responsible for resetting the
1377         local timezone cache upon first entry to the VM.
1378
1379         * runtime/DateConstructor.cpp:
1380         (JSC::constructDate):
1381         (JSC::callDate):
1382         (JSC::dateParse):
1383         (JSC::dateUTC):
1384         * runtime/DateConversion.cpp:
1385         (JSC::parseDate):
1386         * runtime/DateConversion.h:
1387         * runtime/DateInstance.cpp:
1388         (JSC::DateInstance::gregorianDateTime):
1389         * runtime/DateInstance.h:
1390         * runtime/DateInstanceCache.h:
1391         * runtime/DatePrototype.cpp:
1392         (JSC::setNewValueFromTimeArgs):
1393         (JSC::setNewValueFromDateArgs):
1394         (JSC::dateProtoFuncSetYear):
1395         * runtime/InitializeThreading.cpp:
1396         (JSC::initializeThreadingOnce):
1397         * runtime/JSGlobalData.cpp:
1398         (JSC::JSGlobalData::JSGlobalData):
1399         * runtime/JSGlobalData.h:
1400         * wtf/DateMath.cpp:
1401         (WTF::getCurrentUTCTime):
1402         (WTF::getCurrentUTCTimeWithMicroseconds):
1403         (WTF::getLocalTime):
1404         (JSC::getUTCOffset): Use the new cache. Also, see below.
1405         (JSC::gregorianDateTimeToMS):
1406         (JSC::msToGregorianDateTime):
1407         (JSC::initializeDates):
1408         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
1409         accounts for the local timezone offset, to accomodate our new caching API,
1410         and a (possibly misguided) caller in WebCore. Also, see below.
1411         * wtf/DateMath.h:
1412         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
1413         DateMath.* into the JSC namespace. The code needed to move so it could
1414         naturally interact with ExecState and JSGlobalData to support caching.
1415         Logically, it seemed right to move it, too, since this code is not really
1416         as low-level as the WTF namespace might imply -- it implements a set of
1417         date parsing and conversion quirks that are finely tuned to the JavaScript
1418         language. Also removed the Mac OS X notify_* infrastructure.
1419         
1420         * wtf/CurrentTime.h:
1421         (WTF::currentTimeMS):
1422         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
1423         it to make it consistent with WTF's currentTime function.
1424
1425 2009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
1426
1427         Unreviewed trivial buildfix after r50595.
1428
1429         Rename the remaining rshiftPtr calls to rshift32
1430
1431         * jit/JITArithmetic.cpp:
1432         (JSC::JIT::emit_op_rshift):
1433         * jit/JITInlineMethods.h:
1434         (JSC::JIT::emitFastArithImmToInt):
1435
1436 2009-11-06  Gavin Barraclough  <barraclough@apple.com>
1437
1438         Reviewed by Oliver Hunt.
1439
1440         Tidy up the shift methods on the macro-assembler interface.
1441
1442         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
1443         Instead defined that all shifts are masked to this range.  This makes a lot of
1444         practical sense, both since having undefined behaviour is not particularly
1445         desirable, and because this behaviour is commonly required (particularly since
1446         it is required bt ECMA-262 for shifts).
1447
1448         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
1449         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
1450         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
1451         on x86-64, which uses JSVALUE64!)
1452
1453         * assembler/MacroAssembler.h:
1454         * assembler/MacroAssemblerARM.h:
1455         (JSC::MacroAssemblerARM::lshift32):
1456         (JSC::MacroAssemblerARM::rshift32):
1457         * assembler/MacroAssemblerARMv7.h:
1458         (JSC::MacroAssemblerARMv7::lshift32):
1459         (JSC::MacroAssemblerARMv7::rshift32):
1460         * assembler/MacroAssemblerX86_64.h:
1461         * jit/JITArithmetic.cpp:
1462         (JSC::JIT::emit_op_lshift):
1463         (JSC::JIT::emit_op_rshift):
1464
1465 2009-11-05  Gavin Barraclough  <barraclough@apple.com>
1466
1467         Rubber Stamped by Oliver Hunt.
1468
1469         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
1470
1471         * jit/JITInlineMethods.h:
1472         (JSC::JIT::emitPutJITStubArg):
1473         (JSC::JIT::emitPutJITStubArgConstant):
1474         (JSC::JIT::emitGetJITStubArg):
1475         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
1476         * jit/JITStubCall.h:
1477         (JSC::JITStubCall::JITStubCall):
1478         (JSC::JITStubCall::getArgument):
1479         * jit/JITStubs.h:
1480
1481 2009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
1482
1483         Reviewed by Gavin Barraclough.
1484
1485         https://bugs.webkit.org/show_bug.cgi?id=31159
1486         Fix branchDouble behaviour on ARM THUMB2 JIT.
1487
1488         The x86 branchDouble behaviour is reworked, and all JIT
1489         ports should follow the x86 port. See bug 31104 and 31151
1490
1491         This patch contains a fix for the traditional ARM port
1492
1493         * assembler/ARMAssembler.h:
1494         (JSC::ARMAssembler::):
1495         (JSC::ARMAssembler::fmrs_r):
1496         (JSC::ARMAssembler::ftosid_r):
1497         * assembler/MacroAssemblerARM.h:
1498         (JSC::MacroAssemblerARM::):
1499         (JSC::MacroAssemblerARM::branchDouble):
1500         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
1501
1502 2009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
1503
1504         Reviewed by Eric Seidel.
1505
1506         Removed the "this is part of the KDE project" comments from 
1507         all *.h, *.cpp, *.idl, and *.pm files.
1508         
1509         https://bugs.webkit.org/show_bug.cgi?id=31167
1510         
1511         The maintenance and architecture page in the project wiki lists
1512         this as a task.
1513         
1514         This change includes no changes or additions to test cases 
1515         since the change affects only comments.
1516         
1517         * wtf/wince/FastMallocWince.h:
1518
1519 2009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
1520
1521         Reviewed by Gavin Barraclough.
1522
1523         Use ARMv7 specific encoding for immediate constants on ARMv7 target
1524         https://bugs.webkit.org/show_bug.cgi?id=31060
1525
1526         * assembler/ARMAssembler.cpp:
1527         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
1528         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
1529         (JSC::ARMAssembler::moveImm): Ditto.
1530         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
1531         instructions or a PC relative load.
1532         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
1533         encoded as an immediate constant.
1534         (JSC::ARMAssembler::):
1535         (JSC::ARMAssembler::movw_r): 16-bit immediate load
1536         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
1537         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
1538         movw_r and mowt_r
1539
1540 2009-11-04  Mark Mentovai  <mark@chromium.org>
1541
1542         Reviewed by Mark Rowe.
1543
1544         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
1545         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
1546         consider the deployment target; the BUILDING_ON_ macros consider the
1547         headers being built against.
1548
1549         * wtf/Platform.h:
1550
1551 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
1552
1553         Reviewed by Oliver Hunt.
1554
1555         https://bugs.webkit.org/show_bug.cgi?id=31151
1556         Fix branchDouble behaviour on ARM THUMB2 JIT.
1557
1558         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
1559         for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
1560         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
1561         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
1562         ARMv7Assembler::ConditionLS, whereas they should be using
1563         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
1564
1565         Fix these, and fill out the missing DoubleConditions.
1566
1567         * assembler/MacroAssemblerARMv7.h:
1568         (JSC::MacroAssemblerARMv7::):
1569         (JSC::MacroAssemblerARMv7::branchDouble):
1570
1571 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
1572
1573         Rubber Stamped by Oliver Hunt.
1574
1575         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
1576         implementation was generic, worked perfectly, just needed turning on).
1577
1578         * jit/JITOpcodes.cpp:
1579         * wtf/Platform.h:
1580
1581 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
1582
1583         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
1584
1585         Add a missing assert to the ARMv7 JIT.
1586
1587         * assembler/ARMv7Assembler.h:
1588         (JSC::ARMThumbImmediate::ARMThumbImmediate):
1589
1590 2009-11-04  Mark Rowe  <mrowe@apple.com>
1591
1592         Rubber-stamped by Oliver Hunt.
1593
1594         Remove bogus op_ prefix on dumped version of three opcodes.
1595
1596         * bytecode/CodeBlock.cpp:
1597         (JSC::CodeBlock::dump):
1598
1599 2009-11-04  Mark Rowe  <mrowe@apple.com>
1600
1601         Reviewed by Sam Weinig.
1602
1603         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
1604
1605         We do this by having the registerName function return information about the constant if the register
1606         number corresponds to a constant.  This requires that registerName, and several functions that call it,
1607         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
1608         ExecState also needs to be threaded down through these functions so that it can be passed on to
1609         constantName when needed.
1610
1611         * bytecode/CodeBlock.cpp:
1612         (JSC::constantName):
1613         (JSC::CodeBlock::registerName):
1614         (JSC::CodeBlock::printUnaryOp):
1615         (JSC::CodeBlock::printBinaryOp):
1616         (JSC::CodeBlock::printConditionalJump):
1617         (JSC::CodeBlock::printGetByIdOp):
1618         (JSC::CodeBlock::printPutByIdOp):
1619         (JSC::CodeBlock::dump):
1620         * bytecode/CodeBlock.h:
1621         (JSC::CodeBlock::isConstantRegisterIndex):
1622
1623 2009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
1624
1625         Reviewed by Alexey Proskuryakov.
1626
1627         https://bugs.webkit.org/show_bug.cgi?id=30647
1628         Solaris build failure due to strnstr.
1629
1630         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
1631
1632 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
1633
1634         Reviewed by Oliver Hunt.
1635
1636         https://bugs.webkit.org/show_bug.cgi?id=31104
1637         Refactor x86-specific behaviour out of the JIT.
1638
1639         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
1640         - Refactor double to int conversion out into the MacroAssembler.
1641         - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement.
1642         - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify.
1643
1644         * assembler/MacroAssemblerARM.h:
1645         (JSC::MacroAssemblerARM::):
1646         * assembler/MacroAssemblerARMv7.h:
1647         (JSC::MacroAssemblerARMv7::):
1648         * assembler/MacroAssemblerX86Common.h:
1649         (JSC::MacroAssemblerX86Common::):
1650         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
1651         (JSC::MacroAssemblerX86Common::branchDouble):
1652         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
1653         * jit/JITArithmetic.cpp:
1654         (JSC::JIT::emitBinaryDoubleOp):
1655         (JSC::JIT::emit_op_div):
1656         (JSC::JIT::emitSlow_op_jnless):
1657         (JSC::JIT::emitSlow_op_jnlesseq):
1658         * jit/JITOpcodes.cpp:
1659         (JSC::JIT::emit_op_jfalse):
1660
1661 2009-11-04  Mark Mentovai  <mark@chromium.org>
1662
1663         Reviewed by Eric Seidel.
1664
1665         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
1666         to be set as needed only in wtf/Platform.h.
1667
1668         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1669
1670 2009-11-02  Oliver Hunt  <oliver@apple.com>
1671
1672         Reviewed by Gavin Barraclough.
1673
1674         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
1675         https://bugs.webkit.org/show_bug.cgi?id=31045
1676
1677         Add guards to prevent caching of prototype chain lookups with dictionaries at the
1678         head of the chain.  Also add a few tighter assertions to cached prototype lookups
1679         to catch this in future.
1680
1681         * interpreter/Interpreter.cpp:
1682         (JSC::Interpreter::tryCacheGetByID):
1683         (JSC::Interpreter::privateExecute):
1684         * jit/JITStubs.cpp:
1685         (JSC::JITThunks::tryCacheGetByID):
1686
1687 2009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1688
1689         Reviewed by Darin Adler.
1690
1691         PLATFORM(CF) should be set when building for Qt on Darwin
1692         https://bugs.webkit.org/show_bug.cgi?id=23671
1693
1694         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
1695         platforms are defined.
1696
1697 2009-11-02  Dmitry Titov  <dimich@chromium.org>
1698
1699         Reviewed by David Levin.
1700
1701         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
1702         https://bugs.webkit.org/show_bug.cgi?id=30612
1703
1704         * wtf/MessageQueue.h:
1705         (WTF::MessageQueue::alwaysTruePredicate):
1706         (WTF::MessageQueue::~MessageQueue):
1707         (WTF::MessageQueue::append):
1708         (WTF::MessageQueue::appendAndCheckEmpty):
1709         (WTF::MessageQueue::prepend):
1710         (WTF::MessageQueue::waitForMessage):
1711         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
1712         (WTF::MessageQueue::tryGetMessage):
1713         (WTF::MessageQueue::removeIf):
1714         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
1715         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
1716         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
1717
1718         * wtf/Threading.cpp:
1719         (WTF::createThread):
1720         Superficial change to trigger rebuild of JSC project on Windows,
1721         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
1722
1723 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
1724
1725         Reviewed by Oliver Hunt.
1726
1727         Fixed failing layout test: restore a special case I accidentally deleted.
1728
1729         * runtime/DatePrototype.cpp:
1730         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
1731         that is NaN, reset the date to 0 *and* then apply the change; don't just
1732         reset the date to 0.
1733
1734 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
1735
1736         Windows build fix: update for object-to-pointer change.
1737
1738         * runtime/DatePrototype.cpp:
1739         (JSC::formatLocaleDate):
1740
1741 2009-10-29  Geoffrey Garen  <ggaren@apple.com>
1742
1743         Reviewed by Darin Adler.
1744
1745         https://bugs.webkit.org/show_bug.cgi?id=30942
1746         Use pointers instead of copies to pass GregorianDateTime objects around.
1747         
1748         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
1749         speedup on date-format-tofte.
1750
1751         * runtime/DateInstance.cpp:
1752         (JSC::DateInstance::gregorianDateTime):
1753         * runtime/DateInstance.h:
1754         * runtime/DatePrototype.cpp:
1755         (JSC::formatLocaleDate):
1756         (JSC::dateProtoFuncToString):
1757         (JSC::dateProtoFuncToUTCString):
1758         (JSC::dateProtoFuncToISOString):
1759         (JSC::dateProtoFuncToDateString):
1760         (JSC::dateProtoFuncToTimeString):
1761         (JSC::dateProtoFuncGetFullYear):
1762         (JSC::dateProtoFuncGetUTCFullYear):
1763         (JSC::dateProtoFuncToGMTString):
1764         (JSC::dateProtoFuncGetMonth):
1765         (JSC::dateProtoFuncGetUTCMonth):
1766         (JSC::dateProtoFuncGetDate):
1767         (JSC::dateProtoFuncGetUTCDate):
1768         (JSC::dateProtoFuncGetDay):
1769         (JSC::dateProtoFuncGetUTCDay):
1770         (JSC::dateProtoFuncGetHours):
1771         (JSC::dateProtoFuncGetUTCHours):
1772         (JSC::dateProtoFuncGetMinutes):
1773         (JSC::dateProtoFuncGetUTCMinutes):
1774         (JSC::dateProtoFuncGetSeconds):
1775         (JSC::dateProtoFuncGetUTCSeconds):
1776         (JSC::dateProtoFuncGetTimezoneOffset):
1777         (JSC::setNewValueFromTimeArgs):
1778         (JSC::setNewValueFromDateArgs):
1779         (JSC::dateProtoFuncSetYear):
1780         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
1781         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
1782
1783 2009-10-30  Zoltan Horvath  <zoltan@webkit.org>
1784
1785         Reviewed by Darin Adler.
1786
1787         Allow custom memory allocation control for JavaScriptCore's ListHashSet
1788         https://bugs.webkit.org/show_bug.cgi?id=30853
1789
1790         Inherits ListHashSet class from FastAllocBase because it is
1791         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
1792
1793         * wtf/ListHashSet.h:
1794
1795 2009-10-30  Oliver Hunt  <oliver@apple.com>
1796
1797         Reviewed by Gavin Barraclough.
1798
1799         Regression: crash enumerating properties of an object with getters or setters
1800         https://bugs.webkit.org/show_bug.cgi?id=30948
1801
1802         Add a guard to prevent us trying to cache property enumeration on
1803         objects with getters or setters.
1804
1805         * runtime/JSPropertyNameIterator.cpp:
1806         (JSC::JSPropertyNameIterator::create):
1807
1808 2009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
1809
1810         Reviewed by Eric Seidel.
1811
1812         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
1813
1814         Bug 28420 -  Implement HTML5 <ruby> rendering
1815         (https://bugs.webkit.org/show_bug.cgi?id=28420)
1816  
1817         No new tests (no functional change).
1818
1819         * Configurations/FeatureDefines.xcconfig:
1820
1821 2009-10-29  Oliver Hunt  <oliver@apple.com>
1822
1823         Reviewed by Maciej Stachowiak.
1824
1825         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
1826         https://bugs.webkit.org/show_bug.cgi?id=30947
1827         <rdar://problem/7348833>
1828
1829         The logic for flagging that a structure has non-enumerable properties
1830         was in addPropertyWithoutTransition, rather than in the core Structure::put
1831         method.  Despite this I was unable to produce a testcase that caused
1832         the failure that etrade was experiencing, but the new assertion in
1833         getEnumerablePropertyNames triggers on numerous layout tests without
1834         the fix, so in effecti all for..in enumeration in any test ends up
1835         doing the required consistency check.
1836
1837         * runtime/Structure.cpp:
1838         (JSC::Structure::addPropertyWithoutTransition):
1839         (JSC::Structure::put):
1840         (JSC::Structure::getEnumerablePropertyNames):
1841         (JSC::Structure::checkConsistency):
1842
1843 2009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
1844
1845         Reviewed by Gavin Barraclough.
1846
1847         Add cacheFlush support for Thumb-2 on Linux
1848         https://bugs.webkit.org/show_bug.cgi?id=30865
1849
1850         * jit/ExecutableAllocator.h:
1851         (JSC::ExecutableAllocator::cacheFlush):
1852
1853 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
1854
1855         Reviewed by Oliver Hunt.
1856
1857         JSC JIT on ARMv7 cannot link jumps >16Mb range
1858         https://bugs.webkit.org/show_bug.cgi?id=30891
1859
1860         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
1861         In the cases where the jump would fall within a relative jump range, use a relative jump.
1862
1863         * JavaScriptCore.xcodeproj/project.pbxproj:
1864         * assembler/ARMv7Assembler.h:
1865         (JSC::ARMv7Assembler::~ARMv7Assembler):
1866         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
1867         (JSC::ARMv7Assembler::):
1868         (JSC::ARMv7Assembler::executableCopy):
1869         (JSC::ARMv7Assembler::linkJump):
1870         (JSC::ARMv7Assembler::relinkJump):
1871         (JSC::ARMv7Assembler::setInt32):
1872         (JSC::ARMv7Assembler::isB):
1873         (JSC::ARMv7Assembler::isBX):
1874         (JSC::ARMv7Assembler::isMOV_imm_T3):
1875         (JSC::ARMv7Assembler::isMOVT):
1876         (JSC::ARMv7Assembler::isNOP_T1):
1877         (JSC::ARMv7Assembler::isNOP_T2):
1878         (JSC::ARMv7Assembler::linkJumpAbsolute):
1879         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
1880         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
1881         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
1882         * assembler/MacroAssemblerARMv7.h:
1883         (JSC::MacroAssemblerARMv7::makeJump):
1884         (JSC::MacroAssemblerARMv7::makeBranch):
1885         * jit/JIT.h:
1886         * wtf/Platform.h:
1887
1888 2009-10-28  Oliver Hunt  <oliver@apple.com>
1889
1890         Reviewed by Geoff Garen.
1891
1892         Improve for..in enumeration performance
1893         https://bugs.webkit.org/show_bug.cgi?id=30887
1894
1895         Improve indexing of an object with a for..in iterator by
1896         identifying cases where get_by_val is being used with a iterator
1897         as the subscript and replace it with a new get_by_pname
1898         bytecode.  get_by_pname then optimizes lookups that directly access
1899         the base object.
1900
1901         * bytecode/CodeBlock.cpp:
1902         (JSC::CodeBlock::dump):
1903         * bytecode/Opcode.h:
1904         * bytecompiler/BytecodeGenerator.cpp:
1905         (JSC::BytecodeGenerator::emitGetByVal):
1906         * bytecompiler/BytecodeGenerator.h:
1907         (JSC::BytecodeGenerator::pushOptimisedForIn):
1908         (JSC::BytecodeGenerator::popOptimisedForIn):
1909         * interpreter/Interpreter.cpp:
1910         (JSC::Interpreter::privateExecute):
1911         * jit/JIT.cpp:
1912         (JSC::JIT::privateCompileMainPass):
1913         (JSC::JIT::privateCompileSlowCases):
1914         * jit/JIT.h:
1915         * jit/JITPropertyAccess.cpp:
1916         (JSC::JIT::compileGetDirectOffset):
1917         (JSC::JIT::emit_op_get_by_pname):
1918         (JSC::JIT::emitSlow_op_get_by_pname):
1919         * parser/Nodes.cpp:
1920         (JSC::ForInNode::emitBytecode):
1921         * runtime/JSObject.h:
1922         * runtime/JSPropertyNameIterator.cpp:
1923         (JSC::JSPropertyNameIterator::create):
1924         * runtime/JSPropertyNameIterator.h:
1925         (JSC::JSPropertyNameIterator::getOffset):
1926         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1927         * runtime/JSValue.h:
1928         (JSC::JSValue::):
1929         * runtime/Structure.cpp:
1930         (JSC::Structure::addPropertyTransition):
1931         (JSC::Structure::changePrototypeTransition):
1932         (JSC::Structure::despecifyFunctionTransition):
1933         (JSC::Structure::addAnonymousSlotsTransition):
1934         (JSC::Structure::getterSetterTransition):
1935         (JSC::Structure::toDictionaryTransition):
1936         (JSC::Structure::addPropertyWithoutTransition):
1937           Track the existence (or not) of non-enumerable properties.
1938         * runtime/Structure.h:
1939         (JSC::Structure::propertyStorageCapacity):
1940         (JSC::Structure::propertyStorageSize):
1941         (JSC::Structure::hasNonEnumerableProperties):
1942         (JSC::Structure::hasAnonymousSlots):
1943
1944 2009-10-28  Dmitry Titov  <dimich@chromium.org>
1945
1946         Not reviewed, attemp to fix Windows build.
1947
1948         Touch the cpp file to cause recompile.
1949
1950         * wtf/Threading.cpp:
1951         (WTF::threadEntryPoint):
1952
1953 2009-10-28  Dmitry Titov  <dimich@chromium.org>
1954
1955         Reviewed by David Levin.
1956
1957         https://bugs.webkit.org/show_bug.cgi?id=30805
1958         Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
1959         Existing Database tests cover this since Database removes tasks when it is stopped.
1960
1961         * wtf/MessageQueue.h:
1962         (WTF::::removeIf):
1963
1964 2009-10-28  Afonso R. Costa Jr.  <afonso.costa@openbossa.org>
1965
1966         Reviewed by Oliver Hunt.
1967
1968         [Qt] Enable YARR when YARR_JIT is enabled
1969         https://bugs.webkit.org/show_bug.cgi?id=30730
1970
1971         When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
1972         be toggled also.
1973
1974         * JavaScriptCore.pri:
1975
1976 2009-10-24  Martin Robinson  <martin.james.robinson@gmail.com>
1977
1978         Reviewed by Oliver Hunt.
1979
1980         Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
1981
1982         strict-aliasing warnings in JSFunction.h
1983         https://bugs.webkit.org/show_bug.cgi?id=27869
1984
1985         * runtime/JSFunction.h:
1986         (JSC::JSFunction::nativeFunction):
1987         (JSC::JSFunction::scopeChain):
1988         (JSC::JSFunction::setScopeChain):
1989         (JSC::JSFunction::setNativeFunction):
1990
1991 2009-10-28  Jan-Arve Sæther <jan-arve.saether@nokia.com>
1992
1993         Reviewed by Tor Arne Vestbø.
1994
1995         Build-fix for 64-bit Windows
1996
1997         * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
1998
1999 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
2000
2001         Reviewed by NOBODY (build fix!).
2002
2003         * jit/JIT.h:
2004
2005 2009-10-26  Holger Hans Peter Freyther  <zecke@selfish.org>
2006
2007         Rubber-stamped by Darin Adler.
2008
2009         Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
2010         https://bugs.webkit.org/show_bug.cgi?id=30769
2011
2012         When using -fvisibility=hidden to hide all internal symbols by default
2013         the malloc symbols will be hidden as well. For memory instrumentation
2014         it is needed to provide an instrumented version of these symbols and
2015         override the normal routines and by changing the visibility back to
2016         default this becomes possible.
2017
2018         The only other solution would be to use system malloc instead of the
2019         TCmalloc implementation but this will not allow to analyze memory
2020         behavior with the default allocator.
2021
2022         * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
2023
2024 2009-10-27  Gavin Barraclough  <barraclough@apple.com>
2025
2026         Rubber Stamped by Samuel Q. Weinig.
2027
2028         Make the asserts protecting the offsets in the JIT more descriptive.
2029
2030         * jit/JIT.h:
2031         * jit/JITCall.cpp:
2032         (JSC::JIT::compileOpCall):
2033         * jit/JITPropertyAccess.cpp:
2034         (JSC::JIT::emit_op_method_check):
2035         (JSC::JIT::compileGetByIdHotPath):
2036         (JSC::JIT::compileGetByIdSlowCase):
2037         (JSC::JIT::emit_op_put_by_id):
2038
2039 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
2040
2041         Reviewed by Sam Weinig.
2042
2043         A little bit of refactoring in the date code.
2044
2045         * JavaScriptCore.exp: Don't export this unused symbol.
2046
2047         * runtime/DateConstructor.cpp:
2048         (JSC::constructDate):
2049
2050         * runtime/DateInstance.cpp:
2051         (JSC::DateInstance::DateInstance):
2052         * runtime/DateInstance.h: Removed some unused functions. Changed the default
2053         constructor to ensure that a DateInstance is always initialized.
2054
2055         * runtime/DatePrototype.cpp:
2056         (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
2057         since it now requires one.
2058
2059         * wtf/DateMath.cpp:
2060         (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
2061         output will require it. Otherwise, our offset is 0.
2062
2063 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
2064
2065         Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
2066
2067         * JavaScriptCore.xcodeproj/project.pbxproj:
2068
2069 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
2070
2071         Build fix: re-readded this file.
2072
2073         * runtime/DateInstanceCache.h: Added.
2074         (JSC::DateInstanceData::create):
2075         (JSC::DateInstanceData::DateInstanceData):
2076         (JSC::DateInstanceCache::DateInstanceCache):
2077         (JSC::DateInstanceCache::add):
2078         (JSC::DateInstanceCache::lookup):
2079
2080 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
2081
2082         Reviewed by Darin Adler and Oliver Hunt.
2083
2084         https://bugs.webkit.org/show_bug.cgi?id=30800
2085         Cache recently computed date data.
2086         
2087         SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
2088
2089         * GNUmakefile.am:
2090         * JavaScriptCore.gypi:
2091         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2092         * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
2093
2094         * runtime/DateInstance.cpp:
2095         (JSC::DateInstance::DateInstance):
2096         (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
2097
2098         * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
2099         of a "cache cache".
2100
2101         * runtime/DatePrototype.cpp:
2102         (JSC::formatLocaleDate):
2103         (JSC::dateProtoFuncToString):
2104         (JSC::dateProtoFuncToUTCString):
2105         (JSC::dateProtoFuncToISOString):
2106         (JSC::dateProtoFuncToDateString):
2107         (JSC::dateProtoFuncToTimeString):
2108         (JSC::dateProtoFuncGetFullYear):
2109         (JSC::dateProtoFuncGetUTCFullYear):
2110         (JSC::dateProtoFuncToGMTString):
2111         (JSC::dateProtoFuncGetMonth):
2112         (JSC::dateProtoFuncGetUTCMonth):
2113         (JSC::dateProtoFuncGetDate):
2114         (JSC::dateProtoFuncGetUTCDate):
2115         (JSC::dateProtoFuncGetDay):
2116         (JSC::dateProtoFuncGetUTCDay):
2117         (JSC::dateProtoFuncGetHours):
2118         (JSC::dateProtoFuncGetUTCHours):
2119         (JSC::dateProtoFuncGetMinutes):
2120         (JSC::dateProtoFuncGetUTCMinutes):
2121         (JSC::dateProtoFuncGetSeconds):
2122         (JSC::dateProtoFuncGetUTCSeconds):
2123         (JSC::dateProtoFuncGetTimezoneOffset):
2124         (JSC::setNewValueFromTimeArgs):
2125         (JSC::setNewValueFromDateArgs):
2126         (JSC::dateProtoFuncSetYear):
2127         (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
2128         can access the DateInstanceCache.
2129
2130         * runtime/JSGlobalData.h: Keep a DateInstanceCache.
2131
2132 2009-10-27  James Robinson  <jamesr@chromium.org>
2133
2134         Reviewed by Darin Fisher.
2135
2136         Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
2137
2138         Chromium uses a different method to calculate the current time than is used in
2139         JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
2140         function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
2141         See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
2142
2143         https://bugs.webkit.org/show_bug.cgi?id=30833
2144
2145         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2146         * wtf/CurrentTime.cpp:
2147
2148 2009-10-27  Peter Varga  <pvarga@inf.u-szeged.hu>
2149
2150         Rubber-stamped by Tor Arne Vestbø.
2151
2152         Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
2153         alternative.
2154
2155         * yarr/RegexInterpreter.cpp:
2156         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
2157         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
2158         (JSC::Yarr::ByteCompiler::emitDisjunction):
2159         * yarr/RegexJIT.cpp:
2160         (JSC::Yarr::RegexGenerator::generateDisjunction):
2161
2162 2009-10-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2163
2164         Reviewed by Darin Adler.
2165
2166         Make .rc files compile on Windows without depending on MFC headers
2167         https://bugs.webkit.org/show_bug.cgi?id=30750
2168
2169         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
2170         winresrc.h because it exists even when MFC is not installed, and is
2171         all that's needed here.
2172
2173 2009-10-26  Gabor Loki  <loki@inf.u-szeged.hu>
2174
2175         Reviewed by Gavin Barraclough.
2176
2177         The thunkReturnAddress is on JITStackFrame on ARM JIT as well
2178         https://bugs.webkit.org/show_bug.cgi?id=30782
2179
2180         Move the thunkReturnAddress from top of the stack into the JITStackFrame
2181         structure. This is a requirement for JSValue32_64 support on ARM.
2182
2183         * assembler/MacroAssemblerARM.h:
2184         (JSC::MacroAssemblerARM::ret): Return with link register
2185         (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
2186         * jit/JIT.h: Remove unused ctiReturnRegister
2187         * jit/JITInlineMethods.h: Same as ARMv7
2188         (JSC::JIT::restoreArgumentReference): Ditto.
2189         (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
2190         * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
2191         * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
2192         small trampoline functions which handle return addresses for each
2193         CTI_STUB_FUNCTION.
2194         * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
2195         (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
2196         * yarr/RegexJIT.cpp:
2197         (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
2198
2199 2009-10-26  Steve Block  <steveblock@google.com>
2200
2201         Reviewed by Darin Adler.
2202
2203         Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
2204         https://bugs.webkit.org/show_bug.cgi?id=30713
2205
2206         * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
2207         * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
2208         * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
2209
2210 2009-10-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2211
2212         Reviewed by Holger Freyther.
2213
2214         [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
2215         https://bugs.webkit.org/show_bug.cgi?id=30476
2216
2217         Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
2218         to jsc.exe.
2219
2220         * jsc.pro:
2221
2222 2009-10-23  Steve Block  <steveblock@google.com>
2223
2224         Reviewed by Dmitry Titov.
2225
2226         Fixes a leak in createThreadInternal on Android.
2227         https://bugs.webkit.org/show_bug.cgi?id=30698
2228
2229         * wtf/ThreadingPthreads.cpp: Modified.
2230         (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
2231
2232 2009-10-22  Geoffrey Garen  <ggaren@apple.com>
2233
2234         Reviewed by Alexey Proskuryakov.
2235
2236         Fixed ASSERT when opening Safari's Caches window while the Web Inspector
2237         is open.
2238
2239         * runtime/Collector.cpp:
2240         (JSC::typeName): Added two new types to the type name list in the Collector.
2241         These types have been around for a while, but nobody remembered to consider them here.
2242
2243         * runtime/JSCell.h:
2244         (JSC::JSCell::isPropertyNameIterator):
2245         * runtime/JSPropertyNameIterator.h:
2246         (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
2247         a way to tell if a cell is a JSPropertyNameIterator.
2248
2249 2009-10-22  Steve Falkenburg  <sfalken@apple.com>
2250
2251         Reviewed by Jon Honeycutt.
2252
2253         https://bugs.webkit.org/show_bug.cgi?id=30686
2254         Remove debug-specific def file.
2255         Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
2256         that target is only used internally, maintaining two files just to
2257         suppress a single link warning isn't worthwhile.
2258
2259         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2260         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
2261
2262 2009-10-21  Jon Honeycutt  <jhoneycutt@apple.com>
2263
2264         <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
2265         <rdar://problem/7270314> After halting a transparent PluginView on
2266         Windows, the transparency is applied twice
2267
2268         Reviewed by Dan Bernstein.
2269
2270         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2271         Export WTF::deleteOwnedPtr(HDC).
2272
2273         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2274         Ditto.
2275
2276 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
2277
2278         Windows build fix: updated variable name.
2279
2280         * runtime/DatePrototype.cpp:
2281         (JSC::formatLocaleDate):
2282
2283 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
2284
2285         Reviewed by Mark Rowe.
2286
2287         * jit/JITOpcodes.cpp:
2288         (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
2289         size of a JSValue because m_jsStrings is an array of JSValues.
2290
2291 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
2292
2293         Reviewed by Mark Rowe.
2294
2295         Fixed a 64-bit regression caused by the fix for
2296         https://bugs.webkit.org/show_bug.cgi?id=30570.
2297
2298         * jit/JITOpcodes.cpp:
2299         (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
2300         64-bit pointers are eight bytes long.
2301
2302 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
2303
2304         Reviewed by Sam Weinig.
2305
2306         Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
2307         caller doesn't need to supply the DateInstance's own internal value to
2308         the DateInstance.
2309
2310         * runtime/DateInstance.cpp:
2311         (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
2312
2313         * runtime/DateInstance.h:
2314         * runtime/DatePrototype.cpp:
2315         (JSC::formatLocaleDate):
2316         (JSC::dateProtoFuncToString):
2317         (JSC::dateProtoFuncToUTCString):
2318         (JSC::dateProtoFuncToISOString):
2319         (JSC::dateProtoFuncToDateString):
2320         (JSC::dateProtoFuncToTimeString):
2321         (JSC::dateProtoFuncToLocaleString):
2322         (JSC::dateProtoFuncToLocaleDateString):
2323         (JSC::dateProtoFuncToLocaleTimeString):
2324         (JSC::dateProtoFuncGetTime):
2325         (JSC::dateProtoFuncGetFullYear):
2326         (JSC::dateProtoFuncGetUTCFullYear):
2327         (JSC::dateProtoFuncToGMTString):
2328         (JSC::dateProtoFuncGetMonth):
2329         (JSC::dateProtoFuncGetUTCMonth):
2330         (JSC::dateProtoFuncGetDate):
2331         (JSC::dateProtoFuncGetUTCDate):
2332         (JSC::dateProtoFuncGetDay):
2333         (JSC::dateProtoFuncGetUTCDay):
2334         (JSC::dateProtoFuncGetHours):
2335         (JSC::dateProtoFuncGetUTCHours):
2336         (JSC::dateProtoFuncGetMinutes):
2337         (JSC::dateProtoFuncGetUTCMinutes):
2338         (JSC::dateProtoFuncGetSeconds):
2339         (JSC::dateProtoFuncGetUTCSeconds):
2340         (JSC::dateProtoFuncGetTimezoneOffset):
2341         (JSC::setNewValueFromTimeArgs):
2342         (JSC::setNewValueFromDateArgs):
2343         (JSC::dateProtoFuncSetYear):
2344         (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
2345
2346 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
2347
2348         Reviewed by Geoffrey Garen.
2349
2350         The op_next_pname should use 4 bytes addressing mode in case of JSValue32
2351         https://bugs.webkit.org/show_bug.cgi?id=30570
2352
2353         * jit/JITOpcodes.cpp:
2354         (JSC::JIT::emit_op_next_pname):
2355
2356 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
2357
2358         Reviewed by Oliver Hunt.
2359
2360         Move OverridesMarkChildren flag from DatePrototype to its parent class
2361         https://bugs.webkit.org/show_bug.cgi?id=30372
2362
2363         * runtime/DateInstance.h:
2364         (JSC::DateInstance::createStructure):
2365         * runtime/DatePrototype.h:
2366
2367 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
2368
2369         Reviewed by Oliver Hunt.
2370
2371         Tightened up some put_by_id_transition code generation.
2372         https://bugs.webkit.org/show_bug.cgi?id=30539
2373
2374         * jit/JIT.h:
2375         * jit/JITPropertyAccess.cpp:
2376         (JSC::JIT::testPrototype):
2377         (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
2378         checks or read Structures and prototypes from objects: they're all known
2379         constants at compile time.
2380
2381 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
2382
2383         Reviewed by Sam Weinig.
2384
2385         Added a private API for getting a global context from a context, for
2386         clients who want to preserve a context for a later callback.
2387
2388         * API/APICast.h:
2389         (toGlobalRef): Added an ASSERT, since this function is used more often
2390         than before.
2391
2392         * API/JSContextRef.cpp:
2393         * API/JSContextRefPrivate.h: Added. The new API.
2394
2395         * API/tests/testapi.c:
2396         (print_callAsFunction):
2397         (main): Test the new API.
2398
2399         * JavaScriptCore.exp:
2400         * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
2401
2402 2009-10-17  Geoffrey Garen  <ggaren@apple.com>
2403
2404         Reviewed by Oliver Hunt.
2405         
2406         Tightened up some instanceof code generation.
2407         https://bugs.webkit.org/show_bug.cgi?id=30488
2408
2409         * jit/JITOpcodes.cpp:
2410         (JSC::JIT::emit_op_instanceof):
2411         (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 
2412         cell type checks and ImplementsDefaultHasIntance checks implicitly
2413         supersede object type checks.
2414
2415 2009-10-18  Kwang Yul Seo  <skyul@company100.net>
2416
2417         Reviewed by Darin Adler.
2418
2419         Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
2420         https://bugs.webkit.org/show_bug.cgi?id=30474
2421
2422         stricmp and strnicmp are deprecated beginning in Visual
2423         C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
2424
2425         * wtf/StringExtras.h:
2426         (strncasecmp):
2427         (strcasecmp):
2428
2429 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
2430
2431         Build fix: apparently we shouldn't export those symbols?
2432
2433         * JavaScriptCore.exp:
2434
2435 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
2436
2437         Build fix: export some symbols.
2438
2439         * JavaScriptCore.exp:
2440
2441 2009-10-16  Oliver Hunt  <oliver@apple.com>
2442
2443         Reviewed by Gavin Barraclough.
2444
2445         structure typeinfo flags should be inherited.
2446         https://bugs.webkit.org/show_bug.cgi?id=30468
2447
2448         Add StructureFlag constant to the various JSC classes and use
2449         it for the TypeInfo construction.  This allows us to simply
2450         accumulate flags by basing each classes StructureInfo on its parents.
2451
2452         * API/JSCallbackConstructor.h:
2453         (JSC::JSCallbackConstructor::createStructure):
2454         * API/JSCallbackFunction.h:
2455         (JSC::JSCallbackFunction::createStructure):
2456         * API/JSCallbackObject.h:
2457         (JSC::JSCallbackObject::createStructure):
2458         * debugger/DebuggerActivation.h:
2459         (JSC::DebuggerActivation::createStructure):
2460         * runtime/Arguments.h:
2461         (JSC::Arguments::createStructure):
2462         * runtime/BooleanObject.h:
2463         (JSC::BooleanObject::createStructure):
2464         * runtime/DatePrototype.h:
2465         (JSC::DatePrototype::createStructure):
2466         * runtime/FunctionPrototype.h:
2467         (JSC::FunctionPrototype::createStructure):
2468         * runtime/GlobalEvalFunction.h:
2469         (JSC::GlobalEvalFunction::createStructure):
2470         * runtime/InternalFunction.h:
2471         (JSC::InternalFunction::createStructure):
2472         * runtime/JSActivation.h:
2473         (JSC::JSActivation::createStructure):
2474         * runtime/JSArray.h:
2475         (JSC::JSArray::createStructure):
2476         * runtime/JSByteArray.cpp:
2477         (JSC::JSByteArray::createStructure):
2478         * runtime/JSByteArray.h:
2479         * runtime/JSFunction.h:
2480         (JSC::JSFunction::createStructure):
2481         * runtime/JSGlobalObject.h:
2482         (JSC::JSGlobalObject::createStructure):
2483         * runtime/JSNotAnObject.h:
2484         (JSC::JSNotAnObject::createStructure):
2485         * runtime/JSONObject.h:
2486         (JSC::JSONObject::createStructure):
2487         * runtime/JSObject.h:
2488         (JSC::JSObject::createStructure):
2489         * runtime/JSStaticScopeObject.h:
2490         (JSC::JSStaticScopeObject::createStructure):
2491         * runtime/JSVariableObject.h:
2492         (JSC::JSVariableObject::createStructure):
2493         * runtime/JSWrapperObject.h:
2494         (JSC::JSWrapperObject::createStructure):
2495         * runtime/MathObject.h:
2496         (JSC::MathObject::createStructure):
2497         * runtime/NumberConstructor.h:
2498         (JSC::NumberConstructor::createStructure):
2499         * runtime/NumberObject.h:
2500         (JSC::NumberObject::createStructure):
2501         * runtime/RegExpConstructor.h:
2502         (JSC::RegExpConstructor::createStructure):
2503         * runtime/RegExpObject.h:
2504         (JSC::RegExpObject::createStructure):
2505         * runtime/StringObject.h:
2506         (JSC::StringObject::createStructure):
2507         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2508         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2509
2510 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
2511
2512         Reviewed by Oliver Hunt.
2513         
2514         Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
2515         in JSPropertyNameIterator; inline more code.
2516
2517         1.024x as fast on SunSpider (fasta: 1.43x as fast).
2518
2519         * bytecode/CodeBlock.cpp:
2520         (JSC::CodeBlock::dump):
2521         * bytecode/Opcode.h:
2522         * bytecompiler/BytecodeGenerator.cpp:
2523         (JSC::BytecodeGenerator::emitGetPropertyNames):
2524         (JSC::BytecodeGenerator::emitNextPropertyName):
2525         * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
2526         op_get_pnames and op_next_pname so that we can track iteration state
2527         in the register file instead of in the JSPropertyNameIterator. (To be
2528         cacheable, the JSPropertyNameIterator must be stateless.)
2529
2530         * interpreter/Interpreter.cpp:
2531         (JSC::Interpreter::tryCachePutByID):
2532         (JSC::Interpreter::tryCacheGetByID): Updated for rename to
2533         "normalizePrototypeChain" and removal of "isCacheable". 
2534
2535         (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
2536         iteration state tracking.
2537
2538         * jit/JIT.cpp:
2539         (JSC::JIT::privateCompileMainPass):
2540         * jit/JIT.h:
2541         * jit/JITOpcodes.cpp:
2542         (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
2543         iteration state tracking.
2544
2545         (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
2546
2547         * jit/JITStubs.cpp:
2548         (JSC::JITThunks::tryCachePutByID):
2549         (JSC::JITThunks::tryCacheGetByID): Updated for rename to
2550         "normalizePrototypeChain" and removal of "isCacheable". 
2551
2552         (JSC::DEFINE_STUB_FUNCTION):
2553         * jit/JITStubs.h:
2554         (JSC::): Added has_property and to_object stubs. Removed op_next_pname
2555         stub, since has_property is all we need anymore.
2556
2557         * parser/Nodes.cpp:
2558         (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
2559         iteration state tracking.
2560
2561         * runtime/JSCell.h:
2562         * runtime/JSObject.cpp:
2563         (JSC::JSObject::getPropertyNames): Don't do caching at this layer
2564         anymore, since we don't create a JSPropertyNameIterator at this layer.
2565
2566         * runtime/JSPropertyNameIterator.cpp:
2567         (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
2568         (JSC::JSPropertyNameIterator::get):  Updated for in-RegisterFile
2569         iteration state tracking.
2570         (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
2571
2572         * runtime/JSPropertyNameIterator.h:
2573         (JSC::JSPropertyNameIterator::size):
2574         (JSC::JSPropertyNameIterator::setCachedStructure):
2575         (JSC::JSPropertyNameIterator::cachedStructure):
2576         (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
2577         (JSC::JSPropertyNameIterator::cachedPrototypeChain):
2578         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2579         (JSC::Structure::setEnumerationCache): Don't store iteration state in
2580         a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
2581         Structure.
2582
2583         * runtime/JSValue.h:
2584         (JSC::asCell):
2585         * runtime/MarkStack.h: Make those mischievous #include gods happy.
2586
2587         * runtime/ObjectConstructor.cpp:
2588
2589         * runtime/Operations.h:
2590         (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
2591         to normalizePrototypeChain, since it changes dictionary prototypes to
2592         non-dictionary objects.
2593
2594         * runtime/PropertyNameArray.cpp:
2595         (JSC::PropertyNameArray::add):
2596         * runtime/PropertyNameArray.h:
2597         (JSC::PropertyNameArrayData::PropertyNameArrayData):
2598         (JSC::PropertyNameArray::data):
2599         (JSC::PropertyNameArray::size):
2600         (JSC::PropertyNameArray::begin):
2601         (JSC::PropertyNameArray::end): Simplified some code here to help with
2602         current and future refactoring.
2603
2604         * runtime/Protect.h:
2605         * runtime/Structure.cpp:
2606         (JSC::Structure::~Structure):
2607         (JSC::Structure::addPropertyWithoutTransition):
2608         (JSC::Structure::removePropertyWithoutTransition): No need to clear
2609         the enumeration cache with adding / removing properties without
2610         transition. It is an error to add / remove properties without transition
2611         once an object has been observed, and we can ASSERT to catch that.
2612
2613         * runtime/Structure.h:
2614         (JSC::Structure::enumerationCache): Changed the enumeration cache to
2615         hold a JSPropertyNameIterator.
2616
2617         * runtime/StructureChain.cpp:
2618         * runtime/StructureChain.h:
2619         (JSC::StructureChain::head): Removed StructureChain::isCacheable because
2620         it was wrong-headed in two ways: (1) It gave up when a prototype was a
2621         dictionary, but instead we want un-dictionary heavily accessed
2622         prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
2623         a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
2624         is only releavant to for-in caching.
2625
2626 2009-10-16  Steve Falkenburg  <sfalken@apple.com>
2627
2628         Reviewed by Adam Roben.
2629
2630         Add a Debug_All configuration to build entire stack as debug.
2631         Change Debug_Internal to:
2632         - stop using _debug suffix for all WebKit/Safari binaries
2633         - not use _debug as a DLL naming suffix
2634         - use non-debug C runtime lib.
2635
2636         * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
2637         * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
2638         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
2639         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
2640         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
2641         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
2642         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
2643         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
2644
2645 2009-10-16  Oliver Hunt  <oliver@apple.com>
2646
2647         Reviewed by Gavin Barraclough.
2648
2649         Make typeinfo flags default to false
2650         https://bugs.webkit.org/show_bug.cgi?id=30372
2651
2652         Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
2653         flag.
2654
2655         * API/JSCallbackConstructor.h:
2656         (JSC::JSCallbackConstructor::createStructure):
2657         * API/JSCallbackObject.h:
2658         (JSC::JSCallbackObject::createStructure):
2659         * debugger/DebuggerActivation.h:
2660         (JSC::DebuggerActivation::createStructure):
2661         * runtime/Arguments.h:
2662         (JSC::Arguments::createStructure):
2663         * runtime/BooleanObject.h:
2664         (JSC::BooleanObject::createStructure):
2665         * runtime/DatePrototype.h:
2666         (JSC::DatePrototype::createStructure):
2667         * runtime/FunctionPrototype.h:
2668         (JSC::FunctionPrototype::createStructure):
2669         * runtime/GlobalEvalFunction.h:
2670         (JSC::GlobalEvalFunction::createStructure):
2671         * runtime/JSAPIValueWrapper.h:
2672         (JSC::JSAPIValueWrapper::createStructure):
2673         * runtime/JSActivation.h:
2674         (JSC::JSActivation::createStructure):
2675         * runtime/JSArray.h:
2676         (JSC::JSArray::createStructure):
2677         * runtime/JSByteArray.cpp:
2678         (JSC::JSByteArray::createStructure):
2679         * runtime/JSFunction.h:
2680         (JSC::JSFunction::createStructure):
2681         * runtime/JSGlobalObject.h:
2682         (JSC::JSGlobalObject::createStructure):
2683         * runtime/JSNotAnObject.h:
2684         (JSC::JSNotAnObject::createStructure):
2685         * runtime/JSONObject.h:
2686         (JSC::JSONObject::createStructure):
2687         * runtime/JSObject.cpp:
2688         (JSC::JSObject::getPropertyNames):
2689         * runtime/JSObject.h:
2690         (JSC::JSObject::createStructure):
2691         * runtime/JSStaticScopeObject.h:
2692         (JSC::JSStaticScopeObject::createStructure):
2693         * runtime/JSTypeInfo.h:
2694         (JSC::TypeInfo::overridesGetPropertyNames):
2695         * runtime/JSVariableObject.h:
2696         (JSC::JSVariableObject::createStructure):
2697         * runtime/JSWrapperObject.h:
2698         (JSC::JSWrapperObject::createStructure):
2699         * runtime/MathObject.h:
2700         (JSC::MathObject::createStructure):
2701         * runtime/NumberConstructor.h:
2702         (JSC::NumberConstructor::createStructure):
2703         * runtime/NumberObject.h:
2704         (JSC::NumberObject::createStructure):
2705         * runtime/RegExpConstructor.h:
2706         (JSC::RegExpConstructor::createStructure):
2707         * runtime/RegExpObject.h:
2708         (JSC::RegExpObject::createStructure):
2709         * runtime/StringObject.h:
2710         (JSC::StringObject::createStructure):
2711         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2712         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2713         * runtime/StructureChain.cpp:
2714         (JSC::StructureChain::isCacheable):
2715
2716 2009-10-16  Kevin Ollivier  <kevino@theolliviers.com>
2717
2718         wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion 
2719         structure differs.
2720
2721         * wtf/Platform.h:
2722
2723 2009-10-16  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2724
2725         Reviewed by Simon Hausmann.
2726
2727         [Qt] Implement ExecutableAllocator for Symbian
2728         https://bugs.webkit.org/show_bug.cgi?id=29946
2729
2730         Tested with YARR JIT enabled for Symbian; 
2731         This patch does not (yet) enable YARR JIT by default.
2732
2733         * JavaScriptCore.pri:
2734         * jit/ExecutableAllocator.h:
2735         * jit/ExecutableAllocatorSymbian.cpp: Added.
2736         (JSC::ExecutableAllocator::intializePageSize):
2737         (JSC::ExecutablePool::systemAlloc):
2738         (JSC::ExecutablePool::systemRelease):
2739
2740 2009-10-15  Oliver Hunt  <oliver@apple.com>
2741
2742         Reviewed by Darin Adler.
2743
2744         Make typeinfo flags default to false
2745         https://bugs.webkit.org/show_bug.cgi?id=30372
2746
2747         Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
2748
2749         * API/JSCallbackConstructor.h:
2750         (JSC::JSCallbackConstructor::createStructure):
2751         * API/JSCallbackFunction.h:
2752         (JSC::JSCallbackFunction::createStructure):
2753         * API/JSCallbackObject.h:
2754         (JSC::JSCallbackObject::createStructure):
2755         * debugger/DebuggerActivation.h:
2756         (JSC::DebuggerActivation::createStructure):
2757         * runtime/Arguments.h:
2758         (JSC::Arguments::createStructure):
2759         * runtime/BooleanObject.h:
2760         (JSC::BooleanObject::createStructure):
2761         * runtime/DatePrototype.h:
2762         (JSC::DatePrototype::createStructure):
2763         * runtime/FunctionPrototype.h:
2764         (JSC::FunctionPrototype::createStructure):
2765         * runtime/GetterSetter.h:
2766         (JSC::GetterSetter::createStructure):
2767         * runtime/GlobalEvalFunction.h:
2768         (JSC::GlobalEvalFunction::createStructure):
2769         * runtime/InternalFunction.h:
2770         (JSC::InternalFunction::createStructure):
2771         * runtime/JSAPIValueWrapper.h:
2772         (JSC::JSAPIValueWrapper::createStructure):
2773         * runtime/JSActivation.h:
2774         (JSC::JSActivation::createStructure):
2775         * runtime/JSArray.h:
2776         (JSC::JSArray::createStructure):
2777         (JSC::MarkStack::markChildren):
2778         * runtime/JSByteArray.cpp:
2779         (JSC::JSByteArray::createStructure):
2780         * runtime/JSFunction.h:
2781         (JSC::JSFunction::createStructure):
2782         * runtime/JSGlobalObject.h:
2783         (JSC::JSGlobalObject::createStructure):
2784         * runtime/JSNotAnObject.h:
2785         (JSC::JSNotAnObject::createStructure):
2786         * runtime/JSNumberCell.h:
2787         (JSC::JSNumberCell::createStructure):
2788         * runtime/JSONObject.h:
2789         (JSC::JSONObject::createStructure):
2790         * runtime/JSObject.h:
2791         (JSC::JSObject::createStructure):
2792         * runtime/JSPropertyNameIterator.h:
2793         (JSC::JSPropertyNameIterator::createStructure):
2794         * runtime/JSStaticScopeObject.h:
2795         (JSC::JSStaticScopeObject::createStructure):
2796         * runtime/JSString.h:
2797         (JSC::JSString::createStructure):
2798         * runtime/JSTypeInfo.h:
2799         (JSC::TypeInfo::overridesMarkChildren):
2800         * runtime/JSVariableObject.h:
2801         (JSC::JSVariableObject::createStructure):
2802         * runtime/JSWrapperObject.h:
2803         (JSC::JSWrapperObject::createStructure):
2804         * runtime/MathObject.h:
2805         (JSC::MathObject::createStructure):
2806         * runtime/NumberConstructor.h:
2807         (JSC::NumberConstructor::createStructure):
2808         * runtime/NumberObject.h:
2809         (JSC::NumberObject::createStructure):
2810         * runtime/RegExpConstructor.h:
2811         (JSC::RegExpConstructor::createStructure):
2812         * runtime/RegExpObject.h:
2813         (JSC::RegExpObject::createStructure):
2814         * runtime/StringObject.h:
2815         (JSC::StringObject::createStructure):
2816         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2817         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2818
2819 2009-10-14  Oliver Hunt  <oliver@apple.com>
2820
2821         Reviewed by Geoff Garen.
2822
2823         Make typeinfo flags default to false
2824         https://bugs.webkit.org/show_bug.cgi?id=30372
2825         
2826         Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
2827
2828         * API/JSCallbackConstructor.h:
2829         (JSC::JSCallbackConstructor::createStructure):
2830         * API/JSCallbackFunction.h:
2831         (JSC::JSCallbackFunction::createStructure):
2832         * API/JSCallbackObject.h:
2833         (JSC::JSCallbackObject::createStructure):
2834         * debugger/DebuggerActivation.h:
2835         (JSC::DebuggerActivation::createStructure):
2836         * jit/JITStubs.cpp:
2837         (JSC::DEFINE_STUB_FUNCTION):
2838         * runtime/Arguments.h:
2839         (JSC::Arguments::createStructure):
2840         * runtime/BooleanObject.h:
2841         (JSC::BooleanObject::createStructure):
2842         * runtime/DatePrototype.h:
2843         (JSC::DatePrototype::createStructure):
2844         * runtime/FunctionPrototype.h:
2845         (JSC::FunctionPrototype::createStructure):
2846         * runtime/GlobalEvalFunction.h:
2847         (JSC::GlobalEvalFunction::createStructure):
2848         * runtime/InternalFunction.h:
2849         (JSC::InternalFunction::createStructure):
2850         * runtime/JSActivation.h:
2851         (JSC::JSActivation::createStructure):
2852         * runtime/JSArray.h:
2853         (JSC::JSArray::createStructure):
2854         * runtime/JSByteArray.cpp:
2855         (JSC::JSByteArray::createStructure):
2856         * runtime/JSFunction.h:
2857         (JSC::JSFunction::createStructure):
2858         * runtime/JSGlobalObject.h:
2859         (JSC::JSGlobalObject::createStructure):
2860         * runtime/JSNumberCell.h:
2861         (JSC::JSNumberCell::createStructure):
2862         * runtime/JSONObject.h:
2863         (JSC::JSONObject::createStructure):
2864         * runtime/JSObject.h:
2865         (JSC::JSObject::createStructure):
2866         (JSC::JSCell::fastGetOwnPropertySlot):
2867         * runtime/JSStaticScopeObject.h:
2868         (JSC::JSStaticScopeObject::createStructure):
2869         * runtime/JSString.h:
2870         (JSC::JSString::createStructure):
2871         * runtime/JSTypeInfo.h:
2872         (JSC::TypeInfo::overridesGetOwnPropertySlot):
2873         * runtime/JSVariableObject.h:
2874         (JSC::JSVariableObject::createStructure):
2875         * runtime/JSWrapperObject.h:
2876         (JSC::JSWrapperObject::createStructure):
2877         * runtime/MathObject.h:
2878         (JSC::MathObject::createStructure):
2879         * runtime/NumberConstructor.h:
2880         (JSC::NumberConstructor::createStructure):
2881         * runtime/NumberObject.h:
2882         (JSC::NumberObject::createStructure):
2883         * runtime/RegExpConstructor.h:
2884         (JSC::RegExpConstructor::createStructure):
2885         * runtime/RegExpObject.h:
2886         (JSC::RegExpObject::createStructure):
2887         * runtime/StringObject.h:
2888         (JSC::StringObject::createStructure):
2889         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2890         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2891
2892 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
2893 2009-10-14  Darin Adler  <darin@apple.com>
2894
2895         Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
2896         can build on Windows.
2897
2898         * wtf/MathExtras.h: Added llround and llroundf for Windows.
2899
2900 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
2901
2902         wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
2903
2904         * wtf/Platform.h:
2905
2906 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2907
2908         Reviewed by Simon Hausmann.
2909
2910         Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
2911         https://bugs.webkit.org/show_bug.cgi?id=30278
2912
2913         Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
2914         from the make system into common code.
2915
2916         * wtf/Platform.h:
2917
2918 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2919
2920         Reviewed by Darin Adler.
2921
2922         ARM compiler does not understand reinterpret_cast<void*>
2923         https://bugs.webkit.org/show_bug.cgi?id=29034
2924
2925         Change reinterpret_cast<void*> to regular C style (void*) cast 
2926         for the ARM RVCT compiler.
2927
2928         * assembler/MacroAssemblerCodeRef.h:
2929         (JSC::FunctionPtr::FunctionPtr): 
2930         * jit/JITOpcodes.cpp: Cast to FunctionPtr first 
2931            instead of directly casting to reinterpret_cast
2932         * jit/JITStubCall.h: Ditto + change the type of m_stub
2933           from void* to FunctionPtr.
2934         (JSC::JITStubCall::JITStubCall): 
2935         (JSC::JITStubCall::call):
2936         * jit/JITStubs.cpp: Ditto.
2937         (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
2938
2939 2009-10-11  Oliver Hunt  <oliver@apple.com>
2940
2941         Re-enable the JIT.
2942
2943         * wtf/Platform.h:
2944
2945 2009-10-10  Oliver Hunt  <oliver@apple.com>
2946
2947         Reviewed by Maciej Stachowiak.
2948
2949         Support for String.trim(), String.trimLeft() and String.trimRight() methods
2950         https://bugs.webkit.org/show_bug.cgi?id=26590
2951
2952         Implement trim, trimLeft, and trimRight
2953
2954         * runtime/StringPrototype.cpp:
2955         (JSC::isTrimWhitespace):
2956            Our normal string whitespace function does not include U+200B which
2957            is needed for compatibility with mozilla's implementation of trim.
2958            U+200B does not appear to be expected according to spec, however I am
2959            choosing to be lax, and match mozilla behavior so have added this
2960            exception.
2961         (JSC::trimString):
2962
2963 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
2964
2965         Reviewed by Oliver Hunt.
2966
2967         Eliminated some legacy bytecode weirdness.
2968         
2969         Use vPC[x] subscripting instead of ++vPC to access instruction operands.
2970         This is simpler, and often more efficient.
2971
2972         To support this, and to remove use of hard-coded offsets in bytecode and
2973         JIT code generation and dumping, calculate jump offsets from the beginning
2974         of an instruction, rather than the middle or end.
2975         
2976         Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
2977         opcodes.
2978         
2979         SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
2980         mode.
2981
2982         * bytecode/CodeBlock.cpp:
2983         (JSC::printConditionalJump):
2984         (JSC::CodeBlock::dump):
2985         * bytecompiler/BytecodeGenerator.cpp:
2986         (JSC::BytecodeGenerator::emitJump):
2987         (JSC::BytecodeGenerator::emitJumpIfTrue):
2988         (JSC::BytecodeGenerator::emitJumpIfFalse):
2989         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2990         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2991         (JSC::BytecodeGenerator::emitComplexJumpScopes):
2992         (JSC::BytecodeGenerator::emitJumpScopes):
2993         (JSC::BytecodeGenerator::emitNextPropertyName):
2994         (JSC::BytecodeGenerator::emitCatch):
2995         (JSC::BytecodeGenerator::emitJumpSubroutine):
2996         (JSC::prepareJumpTableForImmediateSwitch):
2997         (JSC::prepareJumpTableForCharacterSwitch):
2998         (JSC::prepareJumpTableForStringSwitch):
2999         (JSC::BytecodeGenerator::endSwitch):
3000         * bytecompiler/Label.h:
3001         (JSC::Label::setLocation):
3002         (JSC::Label::bind):
3003         * interpreter/Interpreter.cpp:
3004         (JSC::Interpreter::resolve):
3005         (JSC::Interpreter::resolveSkip):
3006         (JSC::Interpreter::resolveGlobal):
3007         (JSC::Interpreter::resolveBase):
3008         (JSC::Interpreter::resolveBaseAndProperty):
3009         (JSC::Interpreter::createExceptionScope):
3010         (JSC::Interpreter::privateExecute):
3011         * interpreter/Interpreter.h:
3012         * jit/JIT.cpp:
3013         (JSC::JIT::privateCompile):
3014         * jit/JITArithmetic.cpp:
3015         (JSC::JIT::emit_op_jnless):
3016         (JSC::JIT::emitSlow_op_jnless):
3017         (JSC::JIT::emit_op_jnlesseq):
3018         (JSC::JIT::emitSlow_op_jnlesseq):
3019         (JSC::JIT::emitBinaryDoubleOp):
3020         * jit/JITOpcodes.cpp:
3021         (JSC::JIT::emit_op_jmp):
3022         (JSC::JIT::emit_op_loop):
3023         (JSC::JIT::emit_op_loop_if_less):
3024         (JSC::JIT::emitSlow_op_loop_if_less):
3025         (JSC::JIT::emit_op_loop_if_lesseq):
3026         (JSC::JIT::emitSlow_op_loop_if_lesseq):
3027         (JSC::JIT::emit_op_loop_if_true):
3028         (JSC::JIT::emitSlow_op_loop_if_true):
3029         (JSC::JIT::emit_op_jfalse):
3030         (JSC::JIT::emitSlow_op_jfalse):
3031         (JSC::JIT::emit_op_jtrue):
3032         (JSC::JIT::emitSlow_op_jtrue):
3033         (JSC::JIT::emit_op_jeq_null):
3034         (JSC::JIT::emit_op_jneq_null):
3035         (JSC::JIT::emit_op_jneq_ptr):
3036         (JSC::JIT::emit_op_jsr):
3037         (JSC::JIT::emit_op_next_pname):
3038         (JSC::JIT::emit_op_jmp_scopes):
3039
3040 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
3041
3042         Reviewed by Sam Weinig.
3043
3044         Migrated some code that didn't belong out of Structure.
3045         
3046         SunSpider says maybe 1.03x faster.
3047
3048         * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
3049         a Structure's prototype the direct responsility of the object using it.
3050         (Giving Structure a mark function was misleading because it implied that
3051         all live structures get marked during GC, when they don't.)
3052         
3053         * runtime/JSGlobalObject.cpp:
3054         (JSC::markIfNeeded):
3055         (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
3056         on the global object. Maybe this wasn't necessary, but now we don't have
3057         to wonder.
3058
3059         * runtime/JSObject.cpp:
3060         (JSC::JSObject::getPropertyNames):
3061         (JSC::JSObject::getOwnPropertyNames):
3062         (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
3063         * runtime/JSObject.h:
3064         (JSC::JSObject::markChildrenDirect):
3065         * runtime/PropertyNameArray.h:
3066         * runtime/Structure.cpp:
3067         * runtime/Structure.h:
3068         (JSC::Structure::setEnumerationCache):
3069         (JSC::Structure::enumerationCache): Moved property name gathering code
3070         from Structure to JSObject because having a Structure iterate its JSObject
3071         was a layering violation. A JSObject is implemented using a Structure; not
3072         the other way around.
3073
3074 2009-10-09  Mark Rowe  <mrowe@apple.com>
3075
3076         Attempt to fix the GTK release build.
3077
3078         * GNUmakefile.am: Include Grammar.cpp in release builds now that
3079         AllInOneFile.cpp is gone.
3080
3081 2009-10-09  Gabor Loki  <loki@inf.u-szeged.hu>
3082
3083         Rubber-stamped by Eric Seidel.
3084
3085         Add ARM JIT support for Gtk port (disabled by default)
3086         https://bugs.webkit.org/show_bug.cgi?id=30228
3087
3088         * GNUmakefile.am:
3089
3090 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3091
3092         Tiger build fix: added a few more variable initializations.
3093
3094         * runtime/StringPrototype.cpp:
3095         (JSC::stringProtoFuncReplace):
3096         (JSC::stringProtoFuncSearch):
3097
3098 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3099
3100         Qt build fix: added missing #include.
3101
3102         * jsc.cpp:
3103
3104 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3105
3106         Tiger build fix: initialize variable whose initialization the compiler
3107         can't otherwise figure out.
3108
3109         * runtime/RegExpObject.cpp:
3110         (JSC::RegExpObject::match):
3111
3112 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3113
3114         Windows build fix: updated exports.
3115
3116         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3117         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3118
3119 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3120
3121         Tiger build fix: fixed file name case.
3122
3123         * JavaScriptCore.xcodeproj/project.pbxproj:
3124
3125 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
3126
3127         Reviewed by Maciej Stachowiak.
3128
3129         At long last, I pronounce the death of AllInOneFile.cpp.
3130         
3131         SunSpider reports a 1.01x speedup.
3132
3133         * AllInOneFile.cpp: Removed.
3134         * GNUmakefile.am:
3135         * JavaScriptCore.exp:
3136         * JavaScriptCore.gypi:
3137         * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
3138         to compilation stages.
3139
3140         * parser/Grammar.y:
3141         * parser/Lexer.cpp:
3142         * parser/Lexer.h:
3143         (JSC::jscyylex):
3144         * runtime/ArrayConstructor.cpp:
3145         (JSC::constructArrayWithSizeQuirk):
3146         * runtime/Collector.h:
3147         * runtime/JSCell.cpp:
3148         (JSC::JSCell::operator new):
3149         * runtime/JSCell.h:
3150         (JSC::JSCell::operator new):
3151         * runtime/JSGlobalObject.cpp:
3152         (JSC::JSGlobalObject::operator new):
3153         * runtime/JSNumberCell.h:
3154         (JSC::JSNumberCell::operator new):
3155         * runtime/JSString.cpp:
3156         * runtime/JSString.h:
3157         (JSC::jsString):
3158         (JSC::jsSubstring):
3159         (JSC::jsOwnedString):
3160         * runtime/RegExpConstructor.cpp:
3161         * runtime/RegExpConstructor.h:
3162         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
3163         (JSC::RegExpConstructorPrivate::lastOvector):
3164         (JSC::RegExpConstructorPrivate::tempOvector):
3165         (JSC::RegExpConstructorPrivate::changeLastOvector):
3166         (JSC::RegExpConstructor::performMatch):
3167         * runtime/StringPrototype.cpp:
3168         (JSC::stringProtoFuncMatch):
3169         * yarr/RegexJIT.cpp:
3170         * yarr/RegexJIT.h:
3171         (JSC::Yarr::executeRegex): Inlined a few things that Shark said
3172         were hot, on the presumption that AllInOneFile.cpp used to inline them
3173         automatically.
3174
3175 2009-10-08  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3176
3177         Reviewed by Gavin Barraclough.
3178
3179         Fix for JIT'ed op_call instructions (evals, constructs, etc.)
3180         when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
3181
3182         https://bugs.webkit.org/show_bug.cgi?id=30201
3183
3184         * jit/JITCall.cpp:
3185         (JSC::JIT::compileOpCall):
3186
3187 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
3188
3189         Windows build fix: removed no longer exported symbol.
3190
3191         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3192         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3193
3194 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
3195
3196         Reviewed by Oliver Hunt.
3197
3198         Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
3199         thread, permanently slowing down JavaScript
3200         
3201         Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
3202         since WebCore no longer uses it.
3203
3204         * JavaScriptCore.exp:
3205         * runtime/Collector.cpp:
3206         (JSC::Heap::protect):
3207         (JSC::Heap::unprotect):
3208         (JSC::Heap::markProtectedObjects):
3209         (JSC::Heap::protectedGlobalObjectCount):
3210         (JSC::Heap::protectedObjectCount):
3211         (JSC::Heap::protectedObjectTypeCounts):
3212         * runtime/Collector.h:
3213
3214 2009-10-07  Zoltan Horvath  <zoltan@webkit.org>
3215
3216         Reviewed by Darin Adler.
3217
3218         Allow custom memory allocation control for JavaScriptCore's IdentifierArena
3219         https://bugs.webkit.org/show_bug.cgi?id=30158
3220
3221         Inherits IdentifierArena class from FastAllocBase because it has been
3222         instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
3223
3224         * parser/ParserArena.h:
3225
3226 2009-10-07  Adam Roben  <aroben@apple.com>
3227
3228         Export DateInstance::info in a way that works on Windows
3229
3230         Fixes <http://webkit.org/b/30171>
3231         fast/dom/Window/window-postmessage-clone.html fails on Windows
3232
3233         Reviewed by Anders Carlsson.
3234
3235         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3236         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3237         Removed the export of DateInstance::info from here.
3238
3239         * runtime/DateInstance.h: Use JS_EXPORTDATA to export
3240         DateInstance::info, which is the required way of exporting data on
3241         Windows.
3242
3243 2009-10-07  Jørgen Lind  <jorgen.lind@nokia.com>
3244
3245         Reviewed by Simon Hausmann.
3246
3247         When enabling or disabling the JIT through .qmake.cache, make sure
3248         to also toggle ENABLE_YARR_JIT.
3249
3250         * JavaScriptCore.pri:
3251
3252 2009-10-06  Priit Laes  <plaes@plaes.org>
3253
3254         Reviewed by Gavin Barraclough.
3255
3256         Linking fails with "relocation R_X86_64_PC32 against symbol
3257         `cti_vm_throw'"
3258         https://bugs.webkit.org/show_bug.cgi?id=28422
3259
3260         * jit/JITStubs.cpp:
3261         Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
3262         in text segment causing relocation errors on amd64 architecture.
3263         Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
3264
3265 2009-10-06  Oliver Hunt  <oliver@apple.com>
3266
3267         Windows linking fix
3268
3269         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3270         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3271
3272 2009-10-06  Oliver Hunt  <oliver@apple.com>
3273
3274         Reviewed by NOBODY (build fix).
3275
3276         Windows build fix.
3277
3278         * runtime/DateInstance.cpp:
3279
3280 2009-10-05  Oliver Hunt  <oliver@apple.com>
3281
3282         Reviewed by Gavin Barraclough.
3283
3284         It should be possible to post (clone) built-in JS objects to Workers
3285         https://bugs.webkit.org/show_bug.cgi?id=22878
3286
3287         Expose helpers to throw correct exceptions during object graph walk
3288         used for cloning and add a helper function to create Date instances
3289         without going through the JS Date constructor function.
3290
3291         * JavaScriptCore.exp:
3292         * JavaScriptCore.xcodeproj/project.pbxproj:
3293         * runtime/DateInstance.cpp:
3294         (JSC::DateInstance::DateInstance):
3295         * runtime/DateInstance.h:
3296         * runtime/ExceptionHelpers.cpp:
3297         (JSC::createTypeError):
3298         * runtime/ExceptionHelpers.h:
3299
3300 2009-10-06  David Levin  <levin@chromium.org>
3301
3302         Reviewed by Oliver Hunt.
3303
3304         StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
3305         https://bugs.webkit.org/show_bug.cgi?id=30095
3306
3307         * wtf/CrossThreadRefCounted.h:
3308         Removed an unused function and assert improvement.
3309         (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
3310         (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
3311         (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
3312         (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
3313         non-threadsafe operation, add an assert that the class is owned by the current thread.
3314
3315 2009-10-05  Kevin Ollivier  <kevino@theolliviers.com>
3316
3317         wx build fix. Add Symbian files to the list of excludes.
3318
3319         * wscript:
3320
3321 2009-10-05  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
3322
3323         Reviewed by Simon Hausmann.
3324
3325         [Qt] Remove precompiled header from JavaScriptCore compilation to
3326         prevent qmake warning during autonomous compilation.
3327         https://bugs.webkit.org/show_bug.cgi?id=30069
3328
3329         * JavaScriptCore.pro:
3330
3331 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
3332
3333         Reviewed by Sam Weinig.
3334
3335         Removed the concept of a "fast access cutoff" in arrays, because it
3336         punished some patterns of array access too much, and made things too
3337         complex for inlining in some cases.
3338         
3339         1.3% speedup on SunSpider.
3340
3341         * jit/JITOpcodes.cpp:
3342         (JSC::JIT::emitSlow_op_get_by_val):
3343         (JSC::JIT::emitSlow_op_put_by_val):
3344         * jit/JITPropertyAccess.cpp:
3345         (JSC::JIT::emit_op_get_by_val):
3346         (JSC::JIT::emitSlow_op_get_by_val):
3347         (JSC::JIT::emit_op_put_by_val):
3348         (JSC::JIT::emitSlow_op_put_by_val):
3349         * jit/JITStubs.cpp:
3350         * jit/JITStubs.h:
3351         (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
3352         getting / putting from / to an array. Inline putting past the end of
3353         the array.
3354
3355         * runtime/JSArray.cpp:
3356         (JSC::JSArray::JSArray):
3357         (JSC::JSArray::getOwnPropertySlot):
3358         (JSC::JSArray::getOwnPropertyDescriptor):
3359         (JSC::JSArray::put):
3360         (JSC::JSArray::putSlowCase):
3361         (JSC::JSArray::deleteProperty):
3362         (JSC::JSArray::getOwnPropertyNames):
3363         (JSC::JSArray::increaseVectorLength):
3364         (JSC::JSArray::setLength):
3365         (JSC::JSArray::pop):
3366         (JSC::JSArray::push):
3367         (JSC::JSArray::sort):
3368         (JSC::JSArray::fillArgList):
3369         (JSC::JSArray::copyToRegisters):
3370         (JSC::JSArray::compactForSorting):
3371         (JSC::JSArray::checkConsistency):
3372         * runtime/JSArray.h:
3373         (JSC::JSArray::canGetIndex):
3374         (JSC::JSArray::canSetIndex):
3375         (JSC::JSArray::setIndex):
3376         (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
3377         replaced with checks for JSValue() to detect reads and writes from / to
3378         uninitialized parts of the array.
3379
3380 2009-10-02  Jonni Rainisto  <jonni.rainisto@nokia.com>
3381
3382         Reviewed by Darin Adler.
3383
3384         Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
3385         https://bugs.webkit.org/show_bug.cgi?id=29956
3386
3387         * wtf/RandomNumber.cpp:
3388         (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
3389
3390 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
3391
3392         Reviewed by Sam Weinig.
3393
3394         Take one branch instead of two to test for JSValue().
3395         
3396         1.1% SunSpider speedup.
3397
3398         * jit/JITCall.cpp:
3399         (JSC::JIT::compileOpCall):
3400         * jit/JITOpcodes.cpp:
3401         (JSC::JIT::emit_op_to_jsnumber):
3402         (JSC::JIT::emit_op_create_arguments):
3403         * jit/JITPropertyAccess.cpp:
3404         (JSC::JIT::emitSlow_op_get_by_val):
3405         (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
3406         of testing for the cell tag with a 0 payload.
3407
3408         * runtime/JSValue.cpp:
3409         (JSC::JSValue::description): Added support for dumping the new empty value,
3410         and deleted values, in debug builds.
3411
3412         * runtime/JSValue.h:
3413         (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
3414
3415         (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
3416         tag, to avoid having two different c++ versions of null / empty.
3417
3418         (JSC::JSValue::operator bool): Test for the empty value tag, instead
3419         of testing for the cell tag with a 0 payload.
3420
3421 2009-10-02  Steve Falkenburg  <sfalken@apple.com>
3422
3423         Reviewed by Mark Rowe.
3424
3425         <https://bugs.webkit.org/show_bug.cgi?id=29989>
3426         Safari version number shouldn't be exposed in WebKit code
3427         
3428         For a WebKit version of 532.3.4:
3429         Product version is: 5.32.3.4 (was 4.0.3.0)
3430         File version is: 5.32.3.4 (was 4.532.3.4)
3431
3432         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
3433
3434 2009-10-02  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
3435
3436         Rubber-stamped by Simon Hausmann.
3437
3438         Fix the Qt on Mac OS X build.
3439
3440         * wtf/FastMalloc.cpp:
3441
3442 2009-10-02  Jørgen Lind  <jorgen.lind@nokia.com>
3443
3444         Reviewed by Simon Hausmann.
3445
3446         Allow enabling and disabling of the JIT through a qmake variable.
3447
3448         Qt's configure may set this variable through .qmake.cache if a
3449         commandline option is given and/or the compile test for hwcap.h
3450         failed/succeeded.
3451
3452         * JavaScriptCore.pri:
3453
3454 2009-10-01  Mark Rowe  <mrowe@apple.com>
3455
3456         Fix the Tiger build.  Don't unconditionally enable 3D canvas as it is not supported on Tiger.
3457
3458         * Configurations/FeatureDefines.xcconfig:
3459
3460 2009-10-01  Yongjun Zhang  <yongjun.zhang@nokia.com>
3461
3462         Reviewed by Darin Adler.
3463
3464         https://bugs.webkit.org/show_bug.cgi?id=29187
3465
3466         Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
3467         bug regarding templated classes.
3468
3469         The compiler bug is reported at:
3470         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
3471
3472         The change will be reverted when the above bug is fixed in winscw compiler.
3473
3474         * wtf/ListRefPtr.h:
3475         (WTF::::~ListRefPtr):
3476
3477 2009-10-01  Zoltan Horvath  <zoltan@webkit.org>
3478
3479         Reviewed by Simon Hausmann.
3480
3481         [Qt] Allow custom memory allocation control for the whole JavaScriptCore
3482         https://bugs.webkit.org/show_bug.cgi?id=27029
3483
3484         Since in JavaScriptCore almost every class which has been instantiated by operator new is
3485         inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
3486         when USE_SYSTEM_MALLOC=0.
3487
3488         Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
3489         (It's needed for the functionality of TCmalloc.)
3490
3491         Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
3492
3493         * JavaScriptCore.pri:
3494         * wtf/FastMalloc.cpp:
3495         (WTF::sleep):
3496         * wtf/FastMalloc.h:
3497
3498 2009-09-30  Gabor Loki  <loki@inf.u-szeged.hu>
3499
3500         Reviewed by George Staikos.
3501
3502         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
3503         https://bugs.webkit.org/show_bug.cgi?id=29122
3504
3505         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
3506         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
3507         when Thumb-2 instruction set is the required target. The
3508         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
3509         case where the code is common the PLATFORM(ARM) have to be used.
3510
3511         Modified by George Wright  <gwright@rim.com> to correctly work
3512         with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
3513         compiler macros, as well as adding readability changes.
3514
3515         * wtf/Platform.h:
3516
3517 2009-09-30  Oliver Hunt  <oliver@apple.com>
3518
3519         Reviewed by Geoff Garen.
3520
3521         Devirtualise array toString conversion
3522
3523         Tweak the implementation of Array.prototype.toString to have a fast path
3524         when acting on a true JSArray.
3525
3526         * runtime/ArrayPrototype.cpp:
3527         (JSC::arrayProtoFuncToString):
3528
3529 2009-09-30  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
3530
3531         Reviewed by Geoffrey Garen.
3532
3533         Buildfix for platforms using JSVALUE32.
3534         https://bugs.webkit.org/show_bug.cgi?id=29915
3535
3536         After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
3537         Also removed unreachable code.
3538
3539         * jit/JITArithmetic.cpp:
3540         (JSC::JIT::emit_op_add):
3541          - Declaration of "OperandTypes types" moved before first use.
3542          - Typos fixed: dst modified to result, regT2 added.
3543          - Unreachable code removed.
3544         (JSC::JIT::emitSlow_op_add):
3545          - Missing declaration of "OperandTypes types" added.
3546
3547 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
3548
3549         Reviewed by Simon Hausmann.
3550
3551         Reduce heap size on Symbian from 64MB to 8MB.
3552
3553         This is not a perfect fix, it requires more fine tuning.
3554         But this makes it possible again to debug in the emulator,
3555         which is more important in order to be able to fix other
3556         run-time issues.
3557
3558         * runtime/Collector.h:
3559
3560 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
3561
3562         Reviewed by Simon Hausmann.
3563
3564         Fix CRASH() macro for Symbian build.
3565
3566         * wtf/Assertions.h: Added missing }
3567
3568 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
3569
3570         Reviewed by Gavin Barraclough.
3571
3572         Inlined a few math operations.
3573         
3574         ~1% SunSpider speedup.
3575
3576         * jit/JIT.h:
3577         * jit/JITArithmetic.cpp:
3578         (JSC::JIT::compileBinaryArithOpSlowCase):
3579         (JSC::JIT::emitSlow_op_add):
3580         (JSC::JIT::emitSlow_op_mul):
3581         (JSC::JIT::emit_op_sub):
3582         (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
3583         a constant int and a double.
3584
3585 2009-09-28  Oliver Hunt  <oliver@apple.com>
3586
3587         Reviewed by Gavin Barraclough.
3588
3589         Tidy up codeblock sampler
3590         https://bugs.webkit.org/show_bug.cgi?id=29836
3591
3592         Some rather simple refactoring of codeblock sampler so that
3593         it's easier for us to use it to find problems in non-jsc
3594         environments
<