e2e148f19b60da1a871fe7609cdd5ddfd1740bff
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2009-09-11  Oliver Hunt  <oliver@apple.com>
2
3         Reviewed by Sam Weinig.
4
5         getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
6         https://bugs.webkit.org/show_bug.cgi?id=29214
7
8         Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
9         This flag is used to make sure that caching of the property name data is safe.
10
11         * API/JSCallbackConstructor.h:
12         (JSC::JSCallbackConstructor::createStructure):
13         * debugger/DebuggerActivation.h:
14         (JSC::DebuggerActivation::createStructure):
15         * runtime/BooleanObject.h:
16         (JSC::BooleanObject::createStructure):
17         * runtime/DatePrototype.h:
18         (JSC::DatePrototype::createStructure):
19         * runtime/FunctionPrototype.h:
20         (JSC::FunctionPrototype::createStructure):
21         * runtime/JSONObject.h:
22         (JSC::JSONObject::createStructure):
23         * runtime/JSObject.h:
24         (JSC::JSObject::createStructure):
25         * runtime/JSTypeInfo.h:
26         (JSC::TypeInfo::hasDefaultGetPropertyNames):
27         * runtime/JSVariableObject.h:
28         (JSC::JSVariableObject::createStructure):
29         * runtime/JSWrapperObject.h:
30         (JSC::JSWrapperObject::createStructure):
31         * runtime/MathObject.h:
32         (JSC::MathObject::createStructure):
33         * runtime/NumberConstructor.h:
34         (JSC::NumberConstructor::createStructure):
35         * runtime/NumberObject.h:
36         (JSC::NumberObject::createStructure):
37         * runtime/RegExpConstructor.h:
38         (JSC::RegExpConstructor::createStructure):
39         * runtime/RegExpObject.h:
40         (JSC::RegExpObject::createStructure):
41         * runtime/StructureChain.cpp:
42         (JSC::StructureChain::isCacheable):
43
44 2009-09-11  Alexey Proskuryakov  <ap@webkit.org>
45
46         Reviewed by Geoff Garen.
47
48         https://bugs.webkit.org/show_bug.cgi?id=29207
49         Add checks for using WebCore JS context on secondary threads
50
51         * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
52         * runtime/JSGlobalData.h:
53         Added a new mainThreadOnly flag that WebCore would set.
54
55         * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
56         so this is a good place to check that the API isn't used form a wrong thread.
57
58 2009-09-11  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
59
60         Reviewed by Simon Hausmann.
61
62         Compiling JavaScriptCore on sparc 64 with gcc fails.
63
64         ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
65         however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
66
67         The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
68         a mutex instead when compiling for sparc 64 with gcc.
69
70         https://bugs.webkit.org/show_bug.cgi?id=29175
71
72         * wtf/Platform.h:
73         __sparc64__ is not defined on all OS.
74         Uses instead: __sparc__ && __arch64__ || __sparcv9
75         * wtf/Threading.h:
76
77 2009-09-11  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
78
79         Reviewed by Simon Hausmann.
80
81         Fix compile error on Windows7(64Bit) with latest SDK.
82
83         Added the missing include file.
84
85         * runtime/UString.cpp:
86
87 2009-09-11  Joerg Bornemann  <joerg.bornemann@trolltech.com>
88
89         Reviewed by Simon Hausmann.
90
91         Qt/Windows CE compile fix, include the executable allocator and
92         markstack implementation in the windows build.
93
94         * JavaScriptCore.pri:
95
96 2009-09-08  John Abd-El-Malek  <jam@chromium.org>
97
98         Reviewed by Dimitri Glazkov.
99
100         Remove unneeded define for ActiveX.
101         https://bugs.webkit.org/show_bug.cgi?id=29054
102
103         * wtf/Platform.h:
104
105 2009-09-10  Mark Rowe  <mrowe@apple.com>
106
107         Rubber-stamped by Sam Weinig.
108
109         Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
110
111         * Configurations/FeatureDefines.xcconfig:
112
113 2009-09-10  Fumitoshi Ukai  <ukai@chromium.org>
114
115         Reviewed by Alexey Proskuryakov.
116
117         Export WTF::tryFastMalloc used in WebSocketChannel.
118         https://bugs.webkit.org/show_bug.cgi?id=28038
119
120         * JavaScriptCore.exp:
121         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
122         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
123
124 2009-09-10  Oliver Hunt  <oliver@apple.com>
125
126         Reviewed by NOBODY (Build fix).
127
128         Make StructureTransitionTable use an enum for the PtrAndFlags member
129         used for the single transition slot optimisation.
130
131         * runtime/StructureTransitionTable.h:
132         (JSC::StructureTransitionTable::StructureTransitionTable):
133         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
134         (JSC::StructureTransitionTable::):
135
136 2009-09-10  Oliver Hunt  <oliver@apple.com>
137
138         Reviewed by Geoff Garen.
139
140         Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization
141         https://bugs.webkit.org/show_bug.cgi?id=29141
142
143         Make StructureTransitionTable encapsulate the single transition slot optimization.
144
145         * runtime/Structure.cpp:
146         (JSC::Structure::Structure):
147         (JSC::Structure::~Structure):
148         (JSC::Structure::addPropertyTransitionToExistingStructure):
149         (JSC::Structure::addPropertyTransition):
150         (JSC::Structure::addPropertyWithoutTransition):
151         (JSC::Structure::removePropertyWithoutTransition):
152         (JSC::Structure::hasTransition):
153         * runtime/Structure.h:
154         (JSC::StructureTransitionTable::contains):
155         (JSC::StructureTransitionTable::get):
156         (JSC::StructureTransitionTable::hasTransition):
157         (JSC::StructureTransitionTable::reifySingleTransition):
158         * runtime/StructureTransitionTable.h:
159         (JSC::StructureTransitionTable::StructureTransitionTable):
160         (JSC::StructureTransitionTable::~StructureTransitionTable):
161         (JSC::StructureTransitionTable::remove):
162         (JSC::StructureTransitionTable::add):
163         (JSC::StructureTransitionTable::table):
164         (JSC::StructureTransitionTable::singleTransition):
165         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
166         (JSC::StructureTransitionTable::setSingleTransition):
167         (JSC::StructureTransitionTable::setTransitionTable):
168         (JSC::StructureTransitionTable::):
169         * wtf/PtrAndFlags.h:
170         (WTF::PtrAndFlags::PtrAndFlags):
171
172 2009-09-10  Zoltan Horvath  <zoltan@webkit.org>
173
174         Reviewed by Darin Adler.
175
176         Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet
177         https://bugs.webkit.org/show_bug.cgi?id=25930
178
179         FastAllocBase has been extended with fastDeleteSkippingDestructor function which
180         releases memory without destructor call. fastDeleteAllValues has been implemented 
181         similar as deleteAllValues but it uses fastDelete function to release memory.
182
183         * wtf/FastAllocBase.h:
184         (WTF::fastDeleteSkippingDestructor):
185         * wtf/HashSet.h:
186         (WTF::fastDeleteAllValues):
187
188 2009-09-10  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
189
190         Reviewed by Darin Adler.
191
192         ARM compiler does not understand GCC visibility attribute
193         https://bugs.webkit.org/show_bug.cgi?id=29079
194
195         * API/JSBase.h: Make the test more specific to hit only
196         the GCC compiler
197
198 2009-09-10  Adam Barth  <abarth@webkit.org>
199
200         Unreviewed revert of the previous change.  It broke the tests.
201
202         * wtf/dtoa.cpp:
203         (WTF::dtoa):
204
205 2009-09-10  Ben Laurie  <benl@google.com>
206
207         Reviewed by Adam Barth.
208
209         <https://bugs.webkit.org/show_bug.cgi?id=26836>
210
211         If dtoa was given a small buffer and the number was either infinite or
212         NaN, then the buffer would be overflowed.
213
214         * wtf/dtoa.cpp:
215
216 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
217
218         Reviewed by Darin Adler.
219
220         Change reinterpret_cast to static_cast in r48212.
221
222         * jit/ExecutableAllocator.h:
223         (JSC::ExecutableAllocator::cacheFlush):
224
225 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
226
227         Reviewed by Darin Adler.
228
229         Remove WTF_PLATFORM_FORCE_PACK as it is no longer used
230         https://bugs.webkit.org/show_bug.cgi?id=29066
231
232         * wtf/Platform.h:
233
234 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
235
236         Reviewed by Ariya Hidayat.
237
238         Implement flushing the instruction cache for Symbian
239         https://bugs.webkit.org/show_bug.cgi?id=29075
240
241         * jit/ExecutableAllocator.h:
242         (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush
243         the instruction cache on Symbian
244
245 2009-09-09  Kent Hansen  <khansen@trolltech.com>
246
247         Reviewed by Darin Adler.
248
249         https://bugs.webkit.org/show_bug.cgi?id=29024
250         Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL
251
252         These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler.
253
254         * JavaScriptCore.gypi:
255         * JavaScriptCore.xcodeproj/project.pbxproj:
256         * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h.
257         * runtime/Structure.h:
258         * runtime/TypeInfo.h: Removed.
259
260 2009-09-08  Oliver Hunt  <oliver@apple.com>
261
262         Reviewed by Maciej Stachowiak.
263
264         JSON.stringify(Date) loses the milliseconds information
265         https://bugs.webkit.org/show_bug.cgi?id=29063
266
267         Make sure we include milliseconds in the output of toISOString.
268
269         * runtime/DatePrototype.cpp:
270         (JSC::dateProtoFuncToISOString):
271
272 2009-09-08  Kevin Ollivier  <kevino@theolliviers.com>
273
274         wx build fix, generate derived sources earlier in order to make sure
275         they're found by the build system when generating the list of sources to build.
276
277         * wscript:
278
279 2009-09-08  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
280
281         Reviewed by Simon Hausmann.
282
283         Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined
284         https://bugs.webkit.org/show_bug.cgi?id=29011
285
286         * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for 
287         atomicIncrement and atomicDecrement
288
289 2009-09-07  Zoltan Horvath  <zoltan@webkit.org>
290
291         Reviewed by Darin Adler.
292
293         Allow custom memory allocation control in Yarr's RegexInterpreter
294         https://bugs.webkit.org/show_bug.cgi?id=29025
295
296         Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has
297         been instantiated by 'new':
298
299         class ByteDisjunction
300         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462
301
302         struct BytecodePattern
303         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279
304
305         * yarr/RegexInterpreter.h:
306
307 2009-09-07  Drew Wilson  <atwilson@google.com>
308
309         Reverting r48121 to fix Windows build errors.
310
311         * JavaScriptCore.exp:
312
313 2009-09-07  Drew Wilson  <atwilson@google.com>
314
315         Reviewed by David Levin.
316
317         Enable SHARED_WORKERS by default
318         https://bugs.webkit.org/show_bug.cgi?id=28959
319
320         * Configurations/FeatureDefines.xcconfig:
321
322 2009-09-07  Fumitoshi Ukai  <ukai@chromium.org>
323
324         Reviewed by Alexey Proskuryakov.
325
326         Export WTF::tryFastMalloc used in WebSocketChannel.
327         https://bugs.webkit.org/show_bug.cgi?id=28038
328
329         * JavaScriptCore.exp:
330
331 2009-09-04  Oliver Hunt  <oliver@apple.com>
332
333         Reviewed by NOBODY (Build fix).
334
335         Fix windows export files
336
337         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
338         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
339
340 2009-09-04  Oliver Hunt  <oliver@apple.com>
341
342         Reviewed by Gavin Barraclough.
343
344         [[ToString]] conversion should use the actual toString function for String objects.
345
346         Remove incorrect specialisations of toString conversions on StringObject.
347
348         * JavaScriptCore.exp:
349         * runtime/StringObject.cpp:
350         * runtime/StringObject.h:
351
352 2009-09-04  Steve Falkenburg  <sfalken@apple.com>
353
354         Windows build fix.
355
356         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export.
357         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export.
358
359 2009-09-04  Steve Falkenburg  <sfalken@apple.com>
360
361         Windows build fix.
362
363         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export.
364         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export.
365
366 2009-09-04  Darin Adler  <darin@apple.com>
367
368         Reviewed by Geoff Garen.
369
370         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
371         https://bugs.webkit.org/show_bug.cgi?id=28909
372
373         Part two.
374
375         Make some improvements to garbage collection code:
376
377             1) Create a runtime assertion that catches any classes that
378                override markChildren but have the HasDefaultMark bit set.
379             2) Remove checks of the mark bit outside the MarkStack::append
380                function; they are redundant.
381             3) Improve the efficiency of the asObject and asArray functions
382                when called on JSCell* to avoid a round trip to JSValue.
383             4) Make more callers use the checked asCell and asObject
384                casting functions rather than unchecked casts.
385             5) Removed the JSCell::marked function and other GC-related
386                functions because these operations are no longer things that
387                code other than the core GC code needs to do directly. Fixed
388                callers that were calling them.
389
390         * runtime/Collector.cpp:
391         (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain.
392         (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark
393         bit and call to MarkStack::drain.
394         (JSC::Heap::collect): Removed unneeded checks of the mark bit and also
395         changed call to SmallStrings::mark to call markChildren instead to match
396         the rest of the objects.
397         (JSC::typeName): Removed unneeded cast to JSObject*.
398
399         * runtime/JSArray.h:
400         (JSC::asArray): Added an overload for JSCell* and changed the JSValue
401         version to call it. Removed some unneeded casts.
402         (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in
403         a header, and if not marked inline this could lead to linking problems.
404         (JSC::MarkStack::markChildren): Added. This helper function is used by
405         the drain function to avoid repating code. Also added the code here to
406         check fro default mark violations in debug code. If a markChildren
407         function adds something to the mark stack, but the type info claimed
408         hasDefaultMark was true, then we will get an assertion now. Also fixed
409         the assertion about the mark bit to use the Heap function directly
410         because we don't have a JSCell::marked function any more.
411         (JSC::MarkStack::drain): Changed a local variable from "v" to "value",
412         and from "currentCell" to "cell". Changed to call markChildren in two
413         places instead of repeating a chain of if statements twice. Changed
414         code that reads and writes the mark bit to use Heap::isCellMarked and
415         Heap::markCell so we can eliminate the JSCell::marked and
416         JSCell::markCellDirect functions.
417
418         * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member
419         functions. Added a comment explaining that asCell should be deprecated
420         in favor of the JSValue asCell member function.
421         (JSC::MarkStack::append): Added the assertion that catches callers
422         that have set the HasDefaultMark bit incorrectly. Changed
423         code that reads and writes the mark bit to use Heap::isCellMarked and
424         Heap::markCell so we can eliminate the JSCell::marked and
425         JSCell::markCellDirect functions. Moved the overload of
426         MarkStack::append for JSValue here so it can call through to the cell
427         version. The old version had a copy of all the code instead, but that
428         repeated the conversion from JSValue to JSCell* and the check for
429         whether a value is a cell multiple times.
430         (JSC::Structure::markAggregate): Moved this function here to avoid
431         dependencies for Structure.h, since this calls MarkStack::append.
432
433         * runtime/JSObject.cpp:
434         (JSC::JSObject::markChildren): Added code to clear
435         m_isCheckingForDefaultMarkViolation so the marking done by JSObject
436         doesn't trigger the assertion.
437
438         * runtime/JSValue.h: Moved some stray includes that were outside the
439         header guard inside it. Not sure how that happened! Removed the
440         GC-related member functions markChildren, hasChildren, marked, and
441         markDirect.
442
443         * runtime/JSWrapperObject.h: Made markChildren private.
444         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
445         HasDefaultMark bit was set.
446
447         * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and
448         initialized it to false. Moved the append function body from here to
449         JSCell.h. Added a declaration of a private markChildren function used
450         inside the drain function.
451
452         * runtime/SmallStrings.cpp:
453         (JSC::SmallStrings::markChildren): Changed the name and style of this
454         function to match other functions. This allows us to share the normal
455         mark stack code path.
456
457         * runtime/SmallStrings.h: Changed the name and interface of mark to
458         the more-normal markChildren style.
459
460         * runtime/Structure.h: Moved the body of markAggregate into the
461         JSCell.h to avoid a circular dependency with JSCell.h.
462
463 2009-09-04  Darin Adler  <darin@apple.com>
464
465         Reviewed by Geoff Garen.
466
467         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
468         https://bugs.webkit.org/show_bug.cgi?id=28909
469
470         Part one.
471
472         Make some improvements to garbage collection code:
473
474             1) Fix the two classes that had the default mark bit set but
475                should not.
476             2) Remove checks of the mark bit outside the MarkStack::append
477                function; they are redundant.
478             3) Make more callers use the checked asCell and asObject
479                casting functions rather than unchecked casts.
480             4) Removed some GC-related functions because these operations are
481                no longer things that code other than the core GC code needs
482                to do directly. Fixed callers that were calling them.
483
484         * bytecode/CodeBlock.cpp:
485         (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
486         bit before calling MarkStack::append.
487
488         * interpreter/Register.h: Removed unneeded marked and markChildren
489         functions.
490
491         * jit/JITStubs.cpp:
492         (op_eq): Removed unneeded assertions, instead using checked casting
493         functions such as asObject.
494
495         * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
496
497         * runtime/GetterSetter.cpp:
498         (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
499
500         * runtime/GlobalEvalFunction.h:
501         (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
502         HasDefaultMark bit was set.
503
504         * runtime/JSCell.cpp:
505         (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
506
507         * runtime/JSObject.h:
508         (JSC::asObject): Added an overload for JSCell* and changed the JSValue
509         version to call it.
510         (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
511
512         * runtime/JSWrapperObject.h: Made markChildren private.
513         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
514         HasDefaultMark bit was set. Later we may want to optimize this for
515         wrapper types that never have cells in their internal values, but there
516         is no measured performance regression in SunSpider or V8 doing this
517         all the time.
518
519         * runtime/MarkStack.cpp: Tweaked formatting.
520
521 2009-09-04  Kevin Ollivier  <kevino@theolliviers.com>
522
523         wx build fix. Switch USE_ defines over to the compiler so that they can be
524         checked by files not including config.h (like WebCorePrefix.h).
525
526         * wtf/Platform.h:
527
528 2009-09-03  Yong Li  <yong.li@torchmobile.com>
529
530         Reviewed by David Levin.
531
532         Remove unnecessary dependency on unistd.h
533         https://bugs.webkit.org/show_bug.cgi?id=28962
534
535         * runtime/Completion.cpp:
536
537 2009-09-03  Fumitoshi Ukai  <ukai@chromium.org>
538
539         Reviewed by Eric Seidel.
540
541         Add strnstr for Linux and Windows in StringExtras.h
542         https://bugs.webkit.org/show_bug.cgi?id=28901
543
544         * wtf/StringExtras.h:
545         (strnstr):
546
547 2009-09-03  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
548
549         Reviewed by Darin Adler.
550
551         Allow custom memory allocation control for JavaScriptCore's HashEntry class
552         https://bugs.webkit.org/show_bug.cgi?id=27830
553
554         Inherits HashEntry class from FastAllocBase because it has been
555         instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32.
556
557         * runtime/Lookup.h:
558
559 2009-09-02  Gavin Barraclough  <barraclough@apple.com>
560
561         Should crash if JIT code buffer allocation fails.
562
563         https://bugs.webkit.org/show_bug.cgi?id=28926
564         <rdar://problem/7031922>
565
566         * jit/ExecutableAllocatorPosix.cpp:
567         (JSC::ExecutablePool::systemAlloc):
568         * jit/ExecutableAllocatorWin.cpp:
569         (JSC::ExecutablePool::systemAlloc):
570
571 2009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
572
573         waf build fixes for Windows/MSVC.
574
575         * wscript:
576
577 2009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
578
579         Build fix for building on Windows.
580
581         * wtf/ThreadingPthreads.cpp:
582
583 2009-09-02  Norbert Leser  <norbert.leser@nokia.com>
584
585         Reviewed by Eric Seidel.
586
587         Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled
588         
589         RegisterFile constructor currently throws #error when both
590         MMAP and VIRTUALALLOC conditions fail.
591         On any platform that does not provide these features
592         (for instance, Symbian),
593         the fallback should be regular malloc (or fastMalloc).
594         It is functionally equivalent in this case, even though it may
595         have certain drawbacks such as lack of dynamic pre-allocation.
596
597         * interpreter/RegisterFile.cpp:
598         (JSC::RegisterFile::~RegisterFile):
599         * interpreter/RegisterFile.h:
600         (JSC::RegisterFile::RegisterFile):
601
602 2009-08-31  Robert Agoston  <Agoston.Robert@stud.u-szeged.hu>
603
604         Reviewed by Gavin Barraclough.
605
606         Fixed typo.
607         https://bugs.webkit.org/show_bug.cgi?id=28691
608
609         * parser/Parser.h:
610         (JSC::Parser::parse):
611
612 2009-08-27  Oliver Hunt  <oliver@apple.com>
613
614         Reviewed by Maciej Stachowiak.
615
616         JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects
617         https://bugs.webkit.org/show_bug.cgi?id=28797
618
619         Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception
620         checks, and corrected the logic in gap to correctly convert Number and String objects.
621
622         * runtime/JSONObject.cpp:
623         (JSC::unwrapBoxedPrimitive):
624         (JSC::gap):
625         (JSC::Stringifier::Stringifier):
626         (JSC::Stringifier::appendStringifiedValue):
627
628 2009-08-27  Oliver Hunt  <oliver@apple.com>
629
630         Reviewed by Adam Roben.
631
632         JSON.stringify replacer array does not accept values that are not string primitives.
633         https://bugs.webkit.org/show_bug.cgi?id=28788
634
635         Update the JSON stringifier to initialise its replacer array according to the most
636         recent version of the spec.
637
638         * runtime/Identifier.h:
639         (JSC::Identifier::from):
640         * runtime/JSONObject.cpp:
641         (JSC::Stringifier::Stringifier):
642
643 2009-08-27  Alexey Proskuryakov  <ap@apple.com>
644
645         Reviewed by Oliver Hunt.
646
647         https://bugs.webkit.org/show_bug.cgi?id=28753
648         <rdar://problem/7173448> Excessive number of threads (and a crash)
649
650         * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement
651         and return the new value. Also added using directives for these functions, to match
652         te rest of WTF.
653
654 2009-08-27  Brent Fulgham  <bfulgham@webkit.org>
655
656         Reviewed by Adam Roben.
657
658         Link the testapi against CFLite when building the WinCairo port.
659
660         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite
661           target.  Update all targets to inherit from either the
662           JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops
663           file (WinCairo target).
664         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove
665           input file CoreFoundation.lib. This is provided by either the
666           JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file.
667
668 2009-08-27  Steve Falkenburg  <sfalken@apple.com>
669
670         Reviewed by Geoff Garen.
671         
672         Fix Windows-specific crash due to missing memory clearing call.
673         
674         * runtime/Collector.cpp:
675         (JSC::Heap::allocateBlock):
676
677 2009-08-27  Brent Fulgham  <bfulgham@webkit.org>
678
679         Build fix: JavaScriptCore_debug.def missing some exports.  Apple
680         Windows build does not use this file, so it was not noticed previously.
681
682         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
683
684 2009-08-27  Gavin Barraclough  <barraclough@apple.com>
685
686         Reviewed by Oliver Hunt.
687
688         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
689         https://bugs.webkit.org/show_bug.cgi?id=28317
690
691         Missed one, fix part II.
692
693         * assembler/MacroAssemblerX86Common.h:
694         (JSC::MacroAssemblerX86Common::move):
695         * assembler/X86Assembler.h:
696         (JSC::CAN_SIGN_EXTEND_8_32):
697
698 2009-08-27  Oliver Hunt  <oliver@apple.com>
699
700         Reviewed by Adam Roben.
701
702         JSON.stringify replacer array does not accept values that are not string primitives.
703         https://bugs.webkit.org/show_bug.cgi?id=28788
704
705         Update the JSON stringifier to initialise its replacer array according to the most
706         recent version of the spec.
707
708         * runtime/Identifier.h:
709         (JSC::Identifier::from):
710         * runtime/JSONObject.cpp:
711         (JSC::Stringifier::Stringifier):
712
713 2009-08-27  Oliver Hunt  <oliver@apple.com>
714
715         Reviewed by Alexey Proskuryakov.
716
717         JSON parser accepts trailing comma in array literals
718         https://bugs.webkit.org/show_bug.cgi?id=28779
719
720         Update parser to correctly fail if there's a trailing comma.
721
722         * runtime/LiteralParser.cpp:
723         (JSC::LiteralParser::parse):
724
725 2009-08-26  Oliver Hunt  <oliver@apple.com>
726
727         Reviewed by Gavin Barraclough.
728
729         'this' in JSON.parse reviver is the global object
730         https://bugs.webkit.org/show_bug.cgi?id=28752
731
732         This is a technically simple change, we merely update the code for calling
733         the reviver function to pass the correct this object.  Doing so however
734         exposes the holder to arbitrary mutation by the reviver function so it is
735         necessary for us to now guard all property accesses against the possibility
736         of failure.
737
738         * runtime/JSArray.h:
739           JSON needs to delete a property from the array, so we friend its 
740           Walker class so that we can make a non-virtual call to the arrays
741           delete and getOwnPropertySlot methods.
742         * runtime/JSONObject.cpp:
743         (JSC::Walker::callReviver):
744           We need to pass the correct this object
745         (JSC::Walker::walk):
746           Update calls to callReviver, and update property logic logic
747           to correctly handle the holder being mutated by the reviver
748           function.
749
750 2009-08-26  Alice Liu  <alice.liu@apple.com>
751
752         Windows build fix: added some exported symbols
753
754         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
755         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
756
757 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
758
759         Windows build fix: Removed some exported symbols that no longer exist.
760
761         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
762         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
763
764 2009-08-26  Gavin Barraclough  <barraclough@apple.com>
765
766         Reviewed by Olliejver Hunt.
767
768         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
769         https://bugs.webkit.org/show_bug.cgi?id=28317
770
771         We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page,
772         so pointers are never representable as a 32-bit integer, and always have to be represented by
773         a separate immediate load instruction, rather than within the immediate field of an arithmetic
774         or memory operation.
775
776         We explicitly check for a couple of cases where a value might be representable in 32-bit, but
777         these probably never kick in on Mac OS, and only kick in to hose GTK.  Deleting these does not
778         show a performance degradation on SunSpider.  Remove.
779
780         * assembler/MacroAssemblerX86_64.h:
781         (JSC::MacroAssemblerX86_64::storePtr):
782         (JSC::MacroAssemblerX86_64::branchPtr):
783
784 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
785
786         Reviewed by Oliver Hunt.
787
788         A bit of Collector refatoring.
789         
790         SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay).
791
792         * JavaScriptCore.exp:
793
794         * runtime/JSCell.cpp:
795         (JSC::JSCell::toPrimitive):
796         (JSC::JSCell::getPrimitiveNumber):
797         (JSC::JSCell::toBoolean):
798         (JSC::JSCell::toNumber):
799         (JSC::JSCell::toString):
800         (JSC::JSCell::toObject): Removed pure virtual functions from
801         JSCell, so the collector can construct one. This allowed
802         me to remove a bunch of ASSERT_NOT_REACHED throughout the
803         code, too.
804
805         * runtime/JSCell.h:
806         (JSC::JSCell::JSCell): ditto
807         (JSC::Heap::heap): Inlined this function because it's trivial.
808
809         * JavaScriptCore.exp:
810
811         * runtime/Collector.cpp:
812         (JSC::Heap::destroy):
813         (JSC::Heap::allocateBlock):
814         (JSC::Heap::freeBlock):
815         (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since
816         it doesn't actually free the Heap object.
817         (JSC::Heap::heapAllocate):
818         (JSC::Heap::sweep):
819         * runtime/Collector.h: Refactored block allocation and destruction
820         into helper functions.
821         
822         * runtime/GetterSetter.cpp:
823         * runtime/JSAPIValueWrapper.cpp:
824         * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations
825         of pure virtual functions. (See above.)
826
827 === End re-roll-in of r47738:47740 with Windows crash fixed ===
828
829 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
830
831         Build fix: start out with a 32-bit value to avoid a shortening warning.
832
833         * runtime/Collector.cpp:
834         (JSC::Heap::sweep):
835
836 2009-08-24  Geoffrey Garen  <ggaren@apple.com>
837
838         Reviewed by Oliver Hunt.
839
840         Substantially reduced VM thrash in the GC heap.
841         
842         1.08x faster on v8 (1.60x faster on v8-splay).
843         
844         1.40x faster on bench-alloc-nonretained.
845         
846         1.90x faster on bench-alloc-retained.
847         
848         SunSpider says no change.
849         
850         * runtime/Collector.cpp:
851         (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local
852         variables unconditionally after calling collect(), since they may be used
853         even if we don't "goto scan". (In the bug I saw, usedBlocks got out of
854         sync with heap.usedBlocks).
855         (JSC::Heap::sweep): Keep enough free heap space to accomodate 
856         the number of objects we'll allocate before the next GC, plus 25%, for
857         good measure.
858         * runtime/Collector.h: Bumped the block size to 256k. This seems to give
859         the best cache performance, and it prevents us from initiating lots of
860         VM traffic to recover very small chunks of memory.
861
862 === Begin re-roll-in of r47738:47740 with Windows crash fixed ===
863
864 2009-08-25  Drew Wilson  <atwilson@google.com>
865
866         Reviewed by David Levin.
867
868         postMessage() spec now supports sending arrays of ports
869         https://bugs.webkit.org/show_bug.cgi?id=26902
870
871         Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.
872
873         * wtf/VectorTraits.h:
874
875 2009-08-26  Xan Lopez  <xlopez@igalia.com>
876
877         Rubber-stamped by Gustavo Noronha.
878
879         Remove duplicated files from file list.
880
881         * GNUmakefile.am:
882
883 2009-08-26  Oliver Hunt  <oliver@apple.com>
884
885         Reviewed by NOBODY (Build fix).
886
887         More export fixes.
888
889         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
890         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
891
892 2009-08-26  Oliver Hunt  <oliver@apple.com>
893
894         Reviewed by NOBODY (Build fix).
895
896         Hopefully fix all the exports from JSC on windows
897
898         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
899         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
900
901 2009-08-26  Oliver Hunt  <oliver@apple.com>
902
903         Reviewed by NOBODY (Build fixes).
904
905         Forgot I added files to JavaScriptCore. 
906
907         * GNUmakefile.am:
908         * JavaScriptCore.gypi:
909         * JavaScriptCore.pri:
910         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
911         * JavaScriptCoreSources.bkl:
912
913 2009-08-25  Oliver Hunt  <oliver@apple.com>
914
915         Reviewed by Gavin Barraclough.
916
917         [ES5] Implement getOwnPropertyDescriptor
918         https://bugs.webkit.org/show_bug.cgi?id=28724
919
920         Implement the core runtime support for getOwnPropertyDescriptor.
921         This adds a virtual getOwnPropertyDescriptor method to every class
922         that implements getOwnPropertySlot that shadows the behaviour of
923         getOwnPropertySlot.  The alternative would be to make getOwnPropertySlot
924         (or PropertySlots in general) provide property attribute information,
925         but quick testing showed this to be a regression.
926
927         * JavaScriptCore.exp:
928         * JavaScriptCore.xcodeproj/project.pbxproj:
929         * runtime/Arguments.cpp:
930         (JSC::Arguments::getOwnPropertyDescriptor):
931         * runtime/Arguments.h:
932         * runtime/ArrayPrototype.cpp:
933         (JSC::ArrayPrototype::getOwnPropertyDescriptor):
934         * runtime/ArrayPrototype.h:
935         * runtime/CommonIdentifiers.h:
936         * runtime/DatePrototype.cpp:
937         (JSC::DatePrototype::getOwnPropertyDescriptor):
938         * runtime/DatePrototype.h:
939         * runtime/JSArray.cpp:
940         (JSC::JSArray::getOwnPropertyDescriptor):
941         * runtime/JSArray.h:
942         * runtime/JSByteArray.cpp:
943         (JSC::JSByteArray::getOwnPropertyDescriptor):
944         * runtime/JSByteArray.h:
945         * runtime/JSFunction.cpp:
946         (JSC::JSFunction::getOwnPropertyDescriptor):
947         * runtime/JSFunction.h:
948         * runtime/JSGlobalObject.h:
949         (JSC::JSGlobalObject::getOwnPropertyDescriptor):
950         * runtime/JSNotAnObject.cpp:
951         (JSC::JSNotAnObject::getOwnPropertyDescriptor):
952         * runtime/JSNotAnObject.h:
953         * runtime/JSONObject.cpp:
954         (JSC::JSONObject::getOwnPropertySlot):
955         (JSC::JSONObject::getOwnPropertyDescriptor):
956         * runtime/JSONObject.h:
957         * runtime/JSObject.cpp:
958         (JSC::JSObject::getOwnPropertyDescriptor):
959         (JSC::JSObject::getPropertyDescriptor):
960         * runtime/JSObject.h:
961         * runtime/JSString.cpp:
962         (JSC::JSString::getStringPropertyDescriptor):
963         (JSC::JSString::getOwnPropertyDescriptor):
964         * runtime/JSString.h:
965         * runtime/JSVariableObject.cpp:
966         (JSC::JSVariableObject::symbolTableGet):
967         * runtime/JSVariableObject.h:
968         * runtime/Lookup.h:
969         (JSC::getStaticPropertyDescriptor):
970         (JSC::getStaticFunctionDescriptor):
971         (JSC::getStaticValueDescriptor):
972           Add property descriptor equivalents of the lookup
973           table access functions
974
975         * runtime/MathObject.cpp:
976         (JSC::MathObject::getOwnPropertySlot):
977         (JSC::MathObject::getOwnPropertyDescriptor):
978         * runtime/MathObject.h:
979         * runtime/NumberConstructor.cpp:
980         (JSC::NumberConstructor::getOwnPropertyDescriptor):
981         * runtime/NumberConstructor.h:
982         * runtime/ObjectConstructor.cpp:
983         (JSC::ObjectConstructor::ObjectConstructor):
984         (JSC::objectConstructorGetOwnPropertyDescriptor):
985         * runtime/PropertyDescriptor.cpp: Added.
986         (JSC::PropertyDescriptor::writable):
987         (JSC::PropertyDescriptor::enumerable):
988         (JSC::PropertyDescriptor::configurable):
989         (JSC::PropertyDescriptor::hasAccessors):
990         (JSC::PropertyDescriptor::setUndefined):
991         (JSC::PropertyDescriptor::getter):
992         (JSC::PropertyDescriptor::setter):
993         (JSC::PropertyDescriptor::setDescriptor):
994         (JSC::PropertyDescriptor::setAccessorDescriptor):
995         * runtime/PropertyDescriptor.h: Added.
996         (JSC::PropertyDescriptor::PropertyDescriptor):
997         (JSC::PropertyDescriptor::attributes):
998         (JSC::PropertyDescriptor::isValid):
999         (JSC::PropertyDescriptor::value):
1000         * runtime/RegExpConstructor.cpp:
1001         (JSC::RegExpConstructor::getOwnPropertyDescriptor):
1002         * runtime/RegExpConstructor.h:
1003         * runtime/RegExpMatchesArray.h:
1004         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
1005         * runtime/RegExpObject.cpp:
1006         (JSC::RegExpObject::getOwnPropertyDescriptor):
1007         * runtime/RegExpObject.h:
1008         * runtime/StringObject.cpp:
1009         (JSC::StringObject::getOwnPropertyDescriptor):
1010         * runtime/StringObject.h:
1011         * runtime/StringPrototype.cpp:
1012         (JSC::StringPrototype::getOwnPropertyDescriptor):
1013         * runtime/StringPrototype.h:
1014
1015 2009-08-24  Gavin Barraclough  <barraclough@apple.com>
1016
1017         Reviewed by Darin Adler.
1018
1019         How many copies of the parameters do you need?
1020         https://bugs.webkit.org/show_bug.cgi?id=28701
1021
1022         The function parameters in JSC get copied a lot - and unnecessarily so.
1023
1024         Originally this happened due to duplicating FunctionBodyNodes on recompilation,
1025         though the problem has been exacerbated by copying the parameters from the
1026         original function body onto the executable, then back onto the real body that
1027         will be generated (this happens on every function).  And this is all made worse
1028         since the data structures in question are a little ugly - C style arrays of C++
1029         objects containing ref counts, so they need a full copy-construct (rather than
1030         a simple memcpy).
1031
1032         This can all be greatly simplified by just punting the parameters off into
1033         their own ref-counted object, and forgoing all the copying.
1034
1035         ~no performance change, possible slight progression.
1036
1037         * bytecompiler/BytecodeGenerator.cpp:
1038         (JSC::BytecodeGenerator::BytecodeGenerator):
1039         * bytecompiler/BytecodeGenerator.h:
1040         (JSC::BytecodeGenerator::makeFunction):
1041         * parser/Nodes.cpp:
1042         (JSC::FunctionParameters::FunctionParameters):
1043         (JSC::FunctionBodyNode::FunctionBodyNode):
1044         (JSC::FunctionBodyNode::finishParsing):
1045         * parser/Nodes.h:
1046         (JSC::FunctionBodyNode::parameters):
1047         (JSC::FunctionBodyNode::parameterCount):
1048         * runtime/Executable.cpp:
1049         (JSC::FunctionExecutable::~FunctionExecutable):
1050         (JSC::FunctionExecutable::compile):
1051         (JSC::FunctionExecutable::reparseExceptionInfo):
1052         (JSC::FunctionExecutable::fromGlobalCode):
1053         (JSC::FunctionExecutable::paramString):
1054         * runtime/Executable.h:
1055         (JSC::FunctionExecutable::FunctionExecutable):
1056         (JSC::FunctionExecutable::parameterCount):
1057
1058 2009-08-25  Brent Fulgham  <bfulgham@webkit.org>
1059
1060         Reviewed by NOBODY (Buildfix).
1061
1062         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target
1063           that inherits from the debug_wincairo property sheet and therefore
1064           links to the proper debug library.
1065         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target
1066           that inherits from the debug_wincairo property sheet and therefore
1067           links to the proper debug library.
1068
1069 2009-08-25  Chris Marrin  <cmarrin@apple.com>
1070
1071         Reviewed by Simon Fraser.
1072
1073         Export tryFastMalloc for Canvas3D work
1074         https://bugs.webkit.org/show_bug.cgi?id=28018
1075
1076         * JavaScriptCore.exp:
1077
1078 2009-08-25  David Levin  <levin@chromium.org>
1079
1080         Reviewed by Adam Roben.
1081
1082         PLATFORM(CFNETWORK) should be USE(CFNETWORK).
1083         https://bugs.webkit.org/show_bug.cgi?id=28713
1084
1085         * wtf/Platform.h: Added a #define to catch this issue in the
1086         future. The define would generate an error on gcc without the
1087         space in the expansion, but Visual C++ needs the space to cause an error.
1088
1089 2009-08-24  Brent Fulgham  <bfulgham@webkit.org>
1090
1091         Reviewed by Steve Falkenburg.
1092
1093         Revise CFLite Debug build to emit DLL's with _debug label.
1094         https://bugs.webkit.org/show_bug.cgi?id=28695.
1095
1096         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify
1097           Cairo debug build to inherit from new debug_cairo property sheet.
1098         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops:
1099           Modify to look for debug CFLite when in debug build.
1100
1101 2009-08-24  Gavin Barraclough  <barraclough@apple.com>
1102
1103         Reviewed by Oliver Adler & Darin Hunt.
1104
1105         https://bugs.webkit.org/show_bug.cgi?id=28691
1106         Do not retain ScopeNodes outside of parsing
1107         
1108         There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types.
1109
1110         * bytecode/EvalCodeCache.h:
1111         (JSC::EvalCodeCache::get):
1112         * bytecompiler/BytecodeGenerator.cpp:
1113         (JSC::BytecodeGenerator::BytecodeGenerator):
1114         (JSC::BytecodeGenerator::emitNewFunction):
1115         (JSC::BytecodeGenerator::emitNewFunctionExpression):
1116         * bytecompiler/BytecodeGenerator.h:
1117         (JSC::BytecodeGenerator::makeFunction):
1118         * debugger/Debugger.cpp:
1119         (JSC::Debugger::recompileAllJSFunctions):
1120         (JSC::evaluateInGlobalCallFrame):
1121         * debugger/DebuggerCallFrame.cpp:
1122         (JSC::DebuggerCallFrame::evaluate):
1123         * interpreter/Interpreter.cpp:
1124         (JSC::Interpreter::execute):
1125         (JSC::Interpreter::prepareForRepeatCall):
1126         (JSC::Interpreter::privateExecute):
1127         * jit/JITStubs.cpp:
1128         (JSC::DEFINE_STUB_FUNCTION):
1129         * parser/Nodes.cpp:
1130         (JSC::ScopeNodeData::ScopeNodeData):
1131         (JSC::ProgramNode::create):
1132         (JSC::EvalNode::create):
1133         (JSC::FunctionBodyNode::create):
1134         * parser/Nodes.h:
1135         (JSC::ScopeNode::adoptData):
1136         (JSC::FunctionBodyNode::parameterCount):
1137         * parser/Parser.cpp:
1138         * parser/Parser.h:
1139         (JSC::Parser::arena):
1140         (JSC::Parser::Parser):
1141         (JSC::Parser::parse):
1142         * runtime/ArrayPrototype.cpp:
1143         (JSC::isNumericCompareFunction):
1144         (JSC::arrayProtoFuncSort):
1145         * runtime/Completion.cpp:
1146         (JSC::checkSyntax):
1147         (JSC::evaluate):
1148         * runtime/Executable.cpp:
1149         (JSC::FunctionExecutable::~FunctionExecutable):
1150         (JSC::EvalExecutable::compile):
1151         (JSC::ProgramExecutable::checkSyntax):
1152         (JSC::ProgramExecutable::compile):
1153         (JSC::FunctionExecutable::compile):
1154         (JSC::EvalExecutable::generateJITCode):
1155         (JSC::ProgramExecutable::generateJITCode):
1156         (JSC::FunctionExecutable::generateJITCode):
1157         (JSC::FunctionExecutable::reparseExceptionInfo):
1158         (JSC::EvalExecutable::reparseExceptionInfo):
1159         (JSC::FunctionExecutable::recompile):
1160         (JSC::FunctionExecutable::fromGlobalCode):
1161         (JSC::FunctionExecutable::copyParameters):
1162         (JSC::FunctionExecutable::paramString):
1163         * runtime/Executable.h:
1164         (JSC::ScriptExecutable::ScriptExecutable):
1165         (JSC::ScriptExecutable::sourceID):
1166         (JSC::ScriptExecutable::sourceURL):
1167         (JSC::ScriptExecutable::lineNo):
1168         (JSC::ScriptExecutable::lastLine):
1169         (JSC::ScriptExecutable::usesEval):
1170         (JSC::ScriptExecutable::usesArguments):
1171         (JSC::ScriptExecutable::needsActivation):
1172         (JSC::ScriptExecutable::recordParse):
1173         (JSC::EvalExecutable::bytecode):
1174         (JSC::EvalExecutable::jitCode):
1175         (JSC::ProgramExecutable::bytecode):
1176         (JSC::ProgramExecutable::reparseExceptionInfo):
1177         (JSC::ProgramExecutable::jitCode):
1178         (JSC::FunctionExecutable::FunctionExecutable):
1179         (JSC::FunctionExecutable::make):
1180         (JSC::FunctionExecutable::bytecode):
1181         (JSC::FunctionExecutable::isGenerated):
1182         (JSC::FunctionExecutable::name):
1183         (JSC::FunctionExecutable::parameterCount):
1184         (JSC::FunctionExecutable::jitCode):
1185         * runtime/FunctionConstructor.cpp:
1186         (JSC::constructFunction):
1187         * runtime/JSGlobalData.cpp:
1188         (JSC::JSGlobalData::numericCompareFunction):
1189         * runtime/JSGlobalObjectFunctions.cpp:
1190         (JSC::globalFuncEval):
1191
1192 2009-08-24  Darin Adler  <darin@apple.com>
1193
1194         * runtime/ObjectPrototype.cpp:
1195         (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot
1196         to land. Leave out the branch, since we don't need one.
1197
1198 2009-08-24  Darin Adler  <darin@apple.com>
1199
1200         Reviewed by Geoff Garen.
1201
1202         Array index miss case creates a string every time
1203         https://bugs.webkit.org/show_bug.cgi?id=28664
1204
1205         SunSpider test results I saw:
1206
1207             0.5% faster overall
1208             1% faster on crypto-aes
1209             20% faster on crypto-md5
1210             13% faster on crypto-sha1
1211
1212         * runtime/ObjectPrototype.cpp:
1213         (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names
1214         to true.
1215         (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new
1216         property has a name that is the string form of a UInt32.
1217         (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot
1218         if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true.
1219
1220         * runtime/ObjectPrototype.h: Added declarations for the above.
1221
1222 2009-08-24  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
1223
1224         Unreviewed. Fix a typo in my distcheck build fix.
1225
1226         * GNUmakefile.am:
1227
1228 2009-08-23  Gustavo Noronha Silva  <gns@gnome.org>
1229
1230         Unreviewed build fix for make distcheck.
1231
1232         * GNUmakefile.am: Added files required for the build.
1233
1234 2009-08-22  Maciej Stachowiak  <mjs@apple.com>
1235
1236         Reviewed by Mark Rowe.
1237
1238         REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC
1239         https://bugs.webkit.org/show_bug.cgi?id=28655
1240
1241         * runtime/JSFunction.cpp:
1242         (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable.
1243         * wtf/Platform.h:
1244
1245 2009-08-22  Darin Adler  <darin@apple.com>
1246
1247         Fix storage leak from syntax tree arena allocation patch.
1248
1249         * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable
1250         because it has a vector.
1251
1252 2009-08-21  Darin Adler  <darin@apple.com>
1253
1254         Fix Qt build.
1255
1256         * parser/Nodes.cpp:
1257         (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again.
1258         This is used outside Nodes.cpp so can't be inline unless
1259         it is in the header.
1260
1261 2009-08-21  Darin Adler  <darin@apple.com>
1262
1263         Two loose ends from the last commit.
1264
1265         * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h
1266         and create_hash_table project-internal instead of "private".
1267         * runtime/Executable.h: Removed accidentally-added constructor.
1268
1269 2009-08-21  Darin Adler  <darin@apple.com>
1270
1271         Reviewed by Gavin Barraclough.
1272
1273         Syntax tree nodes should use arena allocation
1274         https://bugs.webkit.org/show_bug.cgi?id=25674
1275
1276         Use an actual arena now. 0.6% speedup on SunSpider.
1277
1278         New and improved with 100% less leaking of the universe.
1279
1280         * JavaScriptCore.exp:
1281         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1282         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1283         Removed all exports involving the class FunctionBodyNode, which no
1284         longer needs to be used outside JavaScriptCore.
1285
1286         * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and
1287         Executable.h project-internal instead of "private".
1288
1289         * bytecompiler/BytecodeGenerator.cpp:
1290         (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
1291         contains const Identifier* now.
1292
1293         * parser/Grammar.y: Made identifiers from the lexer be const
1294         Identifier* and updated since VarStack contains const Identifier* now.
1295
1296         * parser/Lexer.cpp:
1297         (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
1298         (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
1299         and changed to call ParserArena.
1300         (JSC::Lexer::clear): Removed the code to manage m_identifiers and
1301         added code to set m_arena to 0.
1302         * parser/Lexer.h: Updated for changes above.
1303
1304         * parser/NodeConstructors.h:
1305         (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
1306         on the arena.
1307         (JSC::ParserArenaDeletable::operator new): Changed to call the
1308         allocateDeletable function on the arena instead of deleteWithArena.
1309         (JSC::PropertyNode::PropertyNode): Added new constructor that makes
1310         numeric identifiers. Some day we might want to optimize this for
1311         integers so it doesn't create a string for each one.
1312         (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
1313         since it's now a const Identifier& so it can't be left uninitialized.
1314         (JSC::BreakNode::BreakNode): Ditto.
1315         (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
1316         to keep track of the statements rather than a separate statement vector.
1317         (JSC::BlockNode::BlockNode): Ditto.
1318         (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
1319
1320         * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
1321         It seemed strangely out of place in the header.
1322         (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
1323         UString as well as Identifier.
1324         (JSC::SourceElements::singleStatement): Added.
1325         (JSC::SourceElements::lastStatement): Added.
1326         (JSC::RegExpNode::emitBytecode): Changed the throwError code to use
1327         the substitution mechanism instead of doing a string append.
1328         (JSC::SourceElements::emitBytecode): Added. Replaces the old
1329         statementListEmitCode function, since we now keep the SourceElements
1330         objects around.
1331         (JSC::BlockNode::lastStatement): Added.
1332         (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
1333         statementListEmitCode.
1334         (JSC::CaseClauseNode::emitBytecode): Added.
1335         (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
1336         instead of statementListEmitCode.
1337         (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
1338         SourceElements* instead of using releaseContentsIntoVector.
1339         (JSC::ScopeNode::emitStatementsBytecode): Added.
1340         (JSC::ScopeNode::singleStatement): Added.
1341         (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
1342         of statementListEmitCode.
1343         (JSC::EvalNode::emitBytecode): Ditto.
1344         (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
1345         insetad of statementListEmitCode and check for the return node using
1346         the new functions.
1347
1348         * parser/Nodes.h: Changed VarStack to store const Identifier* instead
1349         of Identifier and rely on the arena to control lifetime. Added a new
1350         ParserArenaFreeable class. Made ParserArenaDeletable inherit from
1351         FastAllocBase instead of having its own operator new. Base the Node
1352         class on ParserArenaFreeable. Changed the various Node classes
1353         to use const Identifier& instead of Identifier to avoid the need to
1354         call their destructors and allow them to function as "freeable" in the
1355         arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
1356         Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
1357         CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
1358         as a base class since they do not descend from Node. Eliminated the
1359         StatementVector type and instead have various classes use SourceElements*
1360         instead of StatementVector. This prevents those classes from having to
1361         use ParserArenaDeletable to make sure the vector destructor is called.
1362
1363         * parser/Parser.cpp:
1364         (JSC::Parser::parse): Pass the arena to the lexer.
1365
1366         * parser/Parser.h: Added an include of ParserArena.h, which is no longer
1367         included by Nodes.h.
1368         (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the
1369         singleStatement function, since there is no longer any children function.
1370         Removed some unneeded use of RefPtr.
1371
1372         * parser/ParserArena.cpp:
1373         (JSC::ParserArena::ParserArena): Added. Initializes the new members,
1374         m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
1375         (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
1376         since we store only the current pointer and the end of pool pointer.
1377         (JSC::ParserArena::deallocateObjects): Added. Contains the common
1378         memory-deallocation logic used by both the destructor and the
1379         reset function.
1380         (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
1381         (JSC::ParserArena::reset): Ditto. Also added code to zero out the
1382         new structures, and switched to use clear() instead of shrink(0) since
1383         we don't really reuse arenas.
1384         (JSC::ParserArena::makeNumericIdentifier): Added.
1385         (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
1386         is empty.
1387         (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
1388         since this is used only for assertions at the moment.
1389         (JSC::ParserArena::derefWithArena): Make non-inline.
1390
1391         * parser/ParserArena.h: Added an actual arena of "freeable" objects,
1392         ones that don't need destructors to be called. Also added a separate
1393         IdentifierArena object, a segmented vector of identifiers that used
1394         to be in the Lexer.
1395
1396         * runtime/Executable.h: Moved the definition of the
1397         FunctionExecutable::make function here. It can't go in JSFunction.h
1398         since that header has to be used outside JavaScriptCore and so can't
1399         include this, which includes Nodes.h. The function could be moved
1400         elswhere if we don't want to include JSFunction.h in this header, but
1401         for now this seems to be the best place.
1402
1403         * runtime/JSFunction.h: Removed the include of Executable.h and
1404         definition of the FunctionExecutable::make function.
1405
1406         * wtf/FastMalloc.cpp: Fixed an incorrect comment.
1407
1408 2009-08-21  Mark Rowe  <mrowe@apple.com>
1409
1410         Fix the non-JIT build.
1411
1412         * runtime/Executable.cpp:
1413         * runtime/Executable.h:
1414
1415 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
1416
1417         Speculative QuickTime build fix.
1418
1419         * runtime/JSArray.cpp:
1420
1421 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
1422
1423         Speculative QT build fix.
1424
1425         * runtime/StringPrototype.cpp:
1426
1427 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
1428
1429         Reviewed by Oliver Hunt.
1430
1431         Restructure Executable types so that host functions do not hold a FunctionExecutable.
1432         https://bugs.webkit.org/show_bug.cgi?id=28621
1433
1434         All JSFunction objects have a pointer to an Executable*.  This is currently always a
1435         FunctionExecutable, however this has a couple of drawbacks.  Host functions do not
1436         store a range of information that the FunctionExecutable provides (source, name,
1437         CodeBlock & information presently held on the FunctionBodyNode). 
1438
1439         [ * nearly all... see below! ]
1440
1441         Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific
1442         to JS sourced executable types (source, node) into a new subclass (ScriptExecutable),
1443         and create a new NativeExecutable type.  We now provide a new method in JSFunction
1444         to access & downcast to FunctionExecutable, but in doing so we can make an early
1445         check (with an ASSERT) to ensure that the Executable read from a function will only
1446         be treated as a FunctionExecutable (and thus the JS sepcific fields will only be
1447         accessed) if the JSFunction is not a host function.
1448
1449         There is one JSFunction that currently does not have an Executable, which is the
1450         object created to allow us to read out the vtable pointer.  By making this change
1451         we can also add a new Executable type fror this object (VPtrHackExecutable).
1452         Since this means that really all JSFunctions have an Executable we no longer have
1453         to null-check m_executable before us it - particularly in isHostFunction().
1454
1455         This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase
1456         can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase
1457         that might be a FunctionExecutable or a NativeExecutable.  This does now mean that all
1458         ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be
1459         ref-counted, however this seems less-bad than host functions unnecessarily providing
1460         interface to access non-host specific information.
1461
1462         The class hierarcy has changed from this:
1463         
1464         - ExecutableBase
1465             - ProgramExecutable
1466             - EvalExecutable
1467                 - CacheableEvalExecutable (also RefCounted by multiple-inheritance)
1468             - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions)
1469
1470         To this:
1471         
1472         - RefCounted
1473             - ExecutableBase
1474                 - NativeExecutable
1475                 - VPtrHackExecutable
1476                 - ScriptExecutable
1477                     - ProgramExecutable
1478                     - EvalExecutable
1479                     - FunctionExecutable
1480
1481         This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()).
1482
1483         * bytecode/CodeBlock.cpp:
1484         (JSC::CodeBlock::CodeBlock):
1485         * bytecode/CodeBlock.h:
1486         (JSC::CodeBlock::ownerExecutable):
1487         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1488         * bytecode/EvalCodeCache.h:
1489         (JSC::EvalCodeCache::get):
1490         * debugger/Debugger.cpp:
1491         (JSC::Debugger::recompileAllJSFunctions):
1492         * interpreter/CachedCall.h:
1493         (JSC::CachedCall::CachedCall):
1494         * interpreter/Interpreter.cpp:
1495         (JSC::Interpreter::callEval):
1496         (JSC::Interpreter::privateExecute):
1497         * jit/JITStubs.cpp:
1498         (JSC::DEFINE_STUB_FUNCTION):
1499         * profiler/Profiler.cpp:
1500         (JSC::createCallIdentifierFromFunctionImp):
1501         * runtime/Arguments.h:
1502         (JSC::Arguments::getArgumentsData):
1503         (JSC::Arguments::Arguments):
1504         * runtime/Executable.cpp:
1505         (JSC::NativeExecutable::~NativeExecutable):
1506         (JSC::VPtrHackExecutable::~VPtrHackExecutable):
1507         * runtime/Executable.h:
1508         (JSC::ExecutableBase::ExecutableBase):
1509         (JSC::ExecutableBase::~ExecutableBase):
1510         (JSC::ExecutableBase::isHostFunction):
1511         (JSC::NativeExecutable::NativeExecutable):
1512         (JSC::VPtrHackExecutable::VPtrHackExecutable):
1513         (JSC::ScriptExecutable::ScriptExecutable):
1514         (JSC::ScriptExecutable::source):
1515         (JSC::ScriptExecutable::sourceID):
1516         (JSC::ScriptExecutable::sourceURL):
1517         (JSC::ScriptExecutable::lineNo):
1518         (JSC::ScriptExecutable::lastLine):
1519         (JSC::ScriptExecutable::usesEval):
1520         (JSC::ScriptExecutable::usesArguments):
1521         (JSC::ScriptExecutable::needsActivation):
1522         (JSC::EvalExecutable::EvalExecutable):
1523         (JSC::EvalExecutable::create):
1524         (JSC::ProgramExecutable::ProgramExecutable):
1525         (JSC::FunctionExecutable::FunctionExecutable):
1526         * runtime/FunctionPrototype.cpp:
1527         (JSC::functionProtoFuncToString):
1528         * runtime/JSFunction.cpp:
1529         (JSC::JSFunction::JSFunction):
1530         (JSC::JSFunction::~JSFunction):
1531         (JSC::JSFunction::markChildren):
1532         (JSC::JSFunction::getCallData):
1533         (JSC::JSFunction::call):
1534         (JSC::JSFunction::lengthGetter):
1535         (JSC::JSFunction::getConstructData):
1536         (JSC::JSFunction::construct):
1537         * runtime/JSFunction.h:
1538         (JSC::JSFunction::executable):
1539         (JSC::JSFunction::jsExecutable):
1540         (JSC::JSFunction::isHostFunction):
1541
1542 2009-08-20  Oliver Hunt  <oliver@apple.com>
1543
1544         Reviewed by Maciej Stachowiak.
1545
1546         Browser hangs on opening Web Inspector.
1547         https://bugs.webkit.org/show_bug.cgi?id=28438
1548
1549         Code generation needs to be able to walk the entire scopechain in some
1550         cases, however the symbol table used by activations was a member of the
1551         codeblock.  Following recompilation this may no longer exist, leading
1552         to a crash or hang on lookup.
1553
1554         We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
1555         for the CodeBlocks used by function code.  This allows activations to
1556         maintain ownership of a copy of the symbol table even after recompilation so
1557         they can continue to work.
1558
1559         * bytecode/CodeBlock.cpp:
1560         (JSC::CodeBlock::CodeBlock):
1561         * bytecode/CodeBlock.h:
1562         (JSC::CodeBlock::symbolTable):
1563         (JSC::CodeBlock::sharedSymbolTable):
1564         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1565         (JSC::FunctionCodeBlock::FunctionCodeBlock):
1566         (JSC::FunctionCodeBlock::~FunctionCodeBlock):
1567         * interpreter/Interpreter.cpp:
1568         (JSC::Interpreter::retrieveArguments):
1569         * runtime/Executable.cpp:
1570         (JSC::EvalExecutable::generateBytecode):
1571         (JSC::FunctionExecutable::generateBytecode):
1572         (JSC::FunctionExecutable::reparseExceptionInfo):
1573         (JSC::EvalExecutable::reparseExceptionInfo):
1574         * runtime/JSActivation.h:
1575         (JSC::JSActivation::JSActivationData::JSActivationData):
1576         (JSC::JSActivation::JSActivationData::~JSActivationData):
1577         * runtime/SymbolTable.h:
1578
1579 2009-08-20  Xan Lopez  <xlopez@igalia.com>
1580
1581         Add new file to GTK+ build.
1582
1583         * GNUmakefile.am:
1584
1585 2009-08-20  Geoffrey Garen  <ggaren@apple.com>
1586
1587         Reviewed by Maciej Stachowiak.
1588
1589         Added a number => string cache.
1590         
1591         1.07x faster on v8 (1.7x faster on v8-splay).
1592         1.004x faster on SunSpider.
1593
1594         * runtime/JSCell.h: Moved JSValue::toString to JSString.h.
1595         * runtime/JSGlobalData.h: Holds the cache.
1596         * runtime/JSNumberCell.cpp:
1597         (JSC::JSNumberCell::toString):
1598         (JSC::JSNumberCell::toThisString): Removed -0 special case.
1599         UString handles this now, since too many clients were
1600         special-casing it.
1601
1602         * runtime/JSString.h:
1603         (JSC::JSValue::toString): Use the cache when converting
1604         an int or double to string.
1605
1606         * runtime/Operations.h:
1607         (JSC::concatenateStrings): Call toString to take advantage
1608         of the cache.
1609
1610         * runtime/SmallStrings.h:
1611         (JSC::NumericStrings::add):
1612         (JSC::NumericStrings::lookup): The cache.
1613
1614         * runtime/UString.cpp:
1615         (JSC::UString::from): Added -0 special case mentioned above.
1616         Removed appendNumeric because it's mutually exclusive with the
1617         cache.
1618
1619 2009-08-20  Oliver Hunt  <oliver@apple.com>
1620
1621         Reviewed by Gavin Barraclough.
1622
1623         REGRESSION: fast/profiler/call.html is crashing occasionally
1624         https://bugs.webkit.org/show_bug.cgi?id=28476
1625
1626         Using the codeblock for information about how many parameters and
1627         locals a function has is unsafe in certain circumstances.  The
1628         basic scenario is all function code being cleared in response to
1629         the debugger or profiler being enabled, and then an activation is
1630         marked before its associated function is re-executed.
1631
1632         To deal with this scenario we store the variable count of a function
1633         directly in the FunctionExecutable, and then use that information.
1634
1635         * runtime/Arguments.h:
1636         (JSC::Arguments::getArgumentsData):
1637         * runtime/Executable.cpp:
1638         (JSC::FunctionExecutable::generateBytecode):
1639         * runtime/Executable.h:
1640         (JSC::FunctionExecutable::FunctionExecutable):
1641         (JSC::FunctionExecutable::variableCount):
1642         * runtime/JSActivation.cpp:
1643         (JSC::JSActivation::markChildren):
1644
1645 2009-08-20  Gavin Barraclough  <barraclough@apple.com>
1646
1647         Reviewed by Oliver Hunt.
1648
1649         Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect
1650         <bug lost in the great bug disasteroony of 08/20/09!>
1651
1652         The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match
1653         the argument number used within the stub functions in JITStubs.cpp, but it doesn't.
1654
1655         Firstly, all the numbers changed when we added a void* 'reserved' as the first slot
1656         (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to
1657         peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number
1658         of machine words, and on 32_64 build the argument slots to stub functions are two
1659         words wide).
1660
1661         * jit/JIT.h:
1662         * jit/JITCall.cpp:
1663         (JSC::JIT::compileOpCallSetupArgs):
1664         (JSC::JIT::compileOpConstructSetupArgs):
1665         (JSC::JIT::compileOpCallVarargsSetupArgs):
1666         (JSC::JIT::compileOpCall):
1667         * jit/JITInlineMethods.h:
1668         (JSC::JIT::emitPutJITStubArg):
1669         (JSC::JIT::emitPutJITStubArgConstant):
1670         (JSC::JIT::emitGetJITStubArg):
1671         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
1672         * jit/JITOpcodes.cpp:
1673         (JSC::JIT::privateCompileCTIMachineTrampolines):
1674         * jit/JITPropertyAccess.cpp:
1675         (JSC::JIT::privateCompilePutByIdTransition):
1676
1677 2009-08-20  Oliver Hunt  <oliver@apple.com>
1678
1679         Reviewed by Geoff Garen.
1680
1681         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
1682         https://bugs.webkit.org/show_bug.cgi?id=28332
1683
1684         Follow up style fixes that were missed in review.
1685
1686         * runtime/Structure.cpp:
1687         (JSC::Structure::hasTransition):
1688         * runtime/Structure.h:
1689         (JSC::Structure::get):
1690         (JSC::StructureTransitionTable::contains):
1691         * runtime/StructureTransitionTable.h:
1692         (JSC::StructureTransitionTable::add):
1693
1694 2009-08-20  Oliver Hunt  <oliver@apple.com>
1695
1696         Add new exports to windows jsc build
1697
1698         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1699         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1700
1701 2009-08-20  Oliver Hunt  <oliver@apple.com>
1702
1703         Reviewed by Gavin Barraclough.
1704
1705         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
1706         https://bugs.webkit.org/show_bug.cgi?id=28332
1707
1708         The method check optimisation made transitions aware of the value being
1709         assigned when a transition was assigning a function.  This had the side
1710         effect of making every assignment of a function expression result in a
1711         new transition, and thus a new Structure.  The net result of this is that
1712         the common JS idiom of
1713
1714             function MyObject() {
1715                 this.myFunction = function(...){...};
1716             }
1717             new MyObject();
1718
1719         Will produce a unique structure on every iteration, meaning that all
1720         caching is defeated and there is a significant amount of structure churn.
1721
1722         The fix is to return the transition to its original form where it is
1723         keyed off a property name + attributes tuple, but have each transition
1724         support an optional transition on a specific value.
1725
1726         * JavaScriptCore.exp:
1727         * runtime/JSObject.h:
1728         (JSC::JSObject::putDirectInternal):
1729         * runtime/Structure.cpp:
1730         (JSC::Structure::~Structure):
1731         (JSC::Structure::addPropertyTransitionToExistingStructure):
1732         (JSC::Structure::addPropertyTransition):
1733         (JSC::Structure::hasTransition):
1734         * runtime/Structure.h:
1735         (JSC::Structure::transitionedFor):
1736         (JSC::Structure::hasTransition):
1737         (JSC::Structure::):
1738         (JSC::StructureTransitionTable::contains):
1739         (JSC::StructureTransitionTable::get):
1740         * runtime/StructureTransitionTable.h:
1741         (JSC::StructureTransitionTableHashTraits::emptyValue):
1742         (JSC::StructureTransitionTable::hasTransition):
1743         (JSC::StructureTransitionTable::remove):
1744         (JSC::StructureTransitionTable::add):
1745
1746 2009-08-20  Gavin Barraclough  <barraclough@apple.com>
1747
1748         Reviewed by Oliver Hunt.
1749
1750         Remove FunctionCodeBlock.
1751         https://bugs.webkit.org/show_bug.cgi?id=28502
1752
1753         These only exist to allow JIT code to dereference properties off the
1754         CodeBlock for any callee, regardless of whether it is a host function.
1755
1756         Instead just use the FunctionExecutable.  Copy the m_parameters field
1757         from the CodeBlock into the Executable, and use this to distinguish
1758         between host functions, functions that have been bytecompiled, and
1759         functions that have not.
1760
1761         m_parameters is moved to ExecutableBase rather than FunctionExecutable
1762         so that (as a separate change) we can move make a separate class of
1763         executable for host code, which is not devived from FunctionExecutable
1764         (host code does not feature any of the properties that normal executable
1765         do and will provide, such as source, attributes, and a parsed name).
1766
1767         1% win on v8 tests, 0.5% on sunspider.
1768
1769         * bytecode/CodeBlock.cpp:
1770         (JSC::CodeBlock::derefStructures):
1771         (JSC::CodeBlock::refStructures):
1772         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
1773         (JSC::CodeBlock::handlerForBytecodeOffset):
1774         (JSC::CodeBlock::lineNumberForBytecodeOffset):
1775         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
1776         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
1777         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
1778         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
1779         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
1780         * bytecode/CodeBlock.h:
1781         (JSC::):
1782         (JSC::CodeBlock::source):
1783         (JSC::CodeBlock::sourceOffset):
1784         (JSC::CodeBlock::evalCodeCache):
1785         (JSC::CodeBlock::createRareDataIfNecessary):
1786         
1787             remove NativeCodeBlocks and the NativeCode code type.
1788         
1789         * jit/JIT.cpp:
1790         (JSC::JIT::linkCall):
1791
1792             Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock.
1793
1794         * jit/JITCall.cpp:
1795         (JSC::JIT::compileOpCallInitializeCallFrame):
1796         (JSC::JIT::compileOpCallSetupArgs):
1797         (JSC::JIT::compileOpCallVarargsSetupArgs):
1798         (JSC::JIT::compileOpConstructSetupArgs):
1799         (JSC::JIT::compileOpCallVarargs):
1800         (JSC::JIT::compileOpCall):
1801         (JSC::JIT::compileOpCallSlowCase):
1802
1803             Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0.
1804
1805         * jit/JITOpcodes.cpp:
1806         (JSC::JIT::privateCompileCTIMachineTrampolines):
1807
1808             Rewrite call trampolines to not use the CodeBlock.
1809
1810         * jit/JITStubs.cpp:
1811         (JSC::DEFINE_STUB_FUNCTION):
1812
1813             Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock.
1814
1815         * runtime/Executable.cpp:
1816         (JSC::FunctionExecutable::generateBytecode):
1817         (JSC::FunctionExecutable::recompile):
1818         (JSC::FunctionExecutable::FunctionExecutable):
1819         * runtime/Executable.h:
1820         (JSC::ExecutableBase::):
1821         (JSC::ExecutableBase::ExecutableBase):
1822         (JSC::FunctionExecutable::isHostFunction):
1823
1824             Add m_numParameters.
1825
1826         * runtime/JSFunction.cpp:
1827         (JSC::JSFunction::~JSFunction):
1828
1829             Only call generatedBytecode() on JSFunctions non-host FunctionExecutables.
1830
1831 2009-08-20  Yongjun Zhang  <yongjun.zhang@nokia.com>
1832
1833         Reviewed by Eric Seidel.
1834
1835         https://bugs.webkit.org/show_bug.cgi?id=28054
1836        
1837         Use a helper function to work around winscw compiler forward declaration bug
1838         regarding templated classes.
1839
1840         Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler
1841         work with the default UnSpecifiedBoolType() operator, which removes the winscw
1842         specific bool cast hack.
1843
1844         * wtf/PassRefPtr.h:
1845         (WTF::derefIfNotNull):
1846         (WTF::PassRefPtr::~PassRefPtr):
1847
1848 2009-08-19  Yong Li  <yong.li@torchmobile.com>
1849
1850         Reviewed by Gavin Barraclough.
1851
1852         Change namespace ARM to ARMRegisters
1853         X86 to X86Registers to avoid conflict with macros
1854         https://bugs.webkit.org/show_bug.cgi?id=28428
1855
1856         * assembler/ARMAssembler.cpp:
1857         * assembler/ARMAssembler.h:
1858         * assembler/ARMv7Assembler.h:
1859         * assembler/MacroAssemblerARM.h:
1860         * assembler/MacroAssemblerARMv7.h:
1861         * assembler/MacroAssemblerX86Common.h:
1862         * assembler/MacroAssemblerX86_64.h:
1863         * assembler/X86Assembler.h:
1864         * jit/JIT.h:
1865         * jit/JITArithmetic.cpp:
1866         * jit/JITInlineMethods.h:
1867         * jit/JITOpcodes.cpp:
1868         * wrec/WRECGenerator.cpp:
1869         * wrec/WRECGenerator.h:
1870         * yarr/RegexJIT.cpp:
1871
1872 2009-08-19  Oliver Hunt  <oliver@apple.com>
1873
1874         Reviewed by Gavin Barraclough.
1875
1876         Devirtualise marking
1877         https://bugs.webkit.org/show_bug.cgi?id=28294
1878
1879         We actually need to mark the value in a number object if we're using the
1880         32bit number representation.
1881
1882         * runtime/NumberObject.h:
1883         (JSC::NumberObject::createStructure):
1884
1885 2009-08-19  Gavin Barraclough  <barraclough@apple.com>
1886
1887         Reviewed by Darin Adler.
1888
1889          We probably shouldn't be keeping the AST for eval nodes around forevar.
1890         https://bugs.webkit.org/show_bug.cgi?id=28469
1891
1892         EvalNodes don't destroyData() (delete their parser data) since they need to hold onto
1893         their varStack.  Copy a list of variable onto EvalCodeBlock, and this can go away.
1894
1895         * bytecode/CodeBlock.h:
1896         (JSC::EvalCodeBlock::variable):
1897         (JSC::EvalCodeBlock::numVariables):
1898         (JSC::EvalCodeBlock::adoptVariables):
1899         * bytecompiler/BytecodeGenerator.cpp:
1900         (JSC::BytecodeGenerator::BytecodeGenerator):
1901         * interpreter/Interpreter.cpp:
1902         (JSC::Interpreter::execute):
1903         * parser/Nodes.h:
1904         * runtime/Executable.cpp:
1905         (JSC::EvalExecutable::generateBytecode):
1906         * runtime/Executable.h:
1907
1908 2009-08-19  Jungshik Shin  <jshin@chromium.org>
1909
1910         Reviewed by Darin Adler.
1911
1912         http://bugs.webkit.org/show_bug.cgi?id=28441
1913
1914         Fix a build issue with ICU 4.2 or later on Windows with Visual C++. 
1915         Instead of defining all isXXX and toupper/tolower as 
1916           WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h,
1917         #define them to be different by prepending 'WTF_...ASCIIType_h' with
1918         the originial names like 'toupper_WTF_...ASCIIType_h'. 
1919
1920         * wtf/DisallowCType.h:
1921
1922 2009-08-18  Oliver Hunt  <oliver@apple.com>
1923
1924         Reviewed by Gavin Barraclough.
1925
1926         Assigning a function to an object should always use the existing transition, even if the transition is not specialized
1927         https://bugs.webkit.org/show_bug.cgi?id=28442
1928
1929         Check for an unspecialized transition as an alternative to always failing if specialisation does not match.
1930
1931         * runtime/Structure.cpp:
1932         (JSC::Structure::addPropertyTransitionToExistingStructure):
1933
1934 2009-08-18  Dirk Schulze  <krit@webkit.org>
1935
1936         Reviewed by Oliver Hunt.
1937
1938         Added additional getter to ByteArray with an unsigned char as return.
1939         ByteArray can take unsigned char directly now.
1940
1941         * wtf/ByteArray.h:
1942         (WTF::ByteArray::set):
1943         (WTF::ByteArray::get):
1944
1945 2009-08-18  Peter Kasting  <pkasting@google.com>
1946
1947         Reviewed by Eric Seidel.
1948
1949         https://bugs.webkit.org/show_bug.cgi?id=28415
1950         Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
1951         have it.
1952
1953         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
1954         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
1955         
1956 2009-08-18  Xan Lopez  <xlopez@igalia.com>
1957
1958         Try to fix the GTK+ build.
1959
1960         * GNUmakefile.am:
1961
1962 2009-08-17  Gavin Barraclough  <barraclough@apple.com>
1963
1964         Reviewed by Sam Weinig.
1965
1966         No, silly runtime, AST nodes are not for you.
1967
1968         We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
1969         the runtime, which means that these nodes must be persisted outside of the
1970         arena, contain both parser & runtime data, etc.  This is all a bit of a mess.
1971
1972         Move functionality into a new FunctionExecutable class.
1973
1974         * API/JSCallbackFunction.cpp:
1975         * API/JSObjectRef.cpp:
1976         * JavaScriptCore.exp:
1977         * JavaScriptCore.xcodeproj/project.pbxproj:
1978         * bytecode/CodeBlock.cpp:
1979         (JSC::CodeBlock::CodeBlock):
1980         (JSC::CodeBlock::markAggregate):
1981         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
1982         (JSC::CodeBlock::lineNumberForBytecodeOffset):
1983         (JSC::CodeBlock::shrinkToFit):
1984         * bytecode/CodeBlock.h:
1985         (JSC::CodeBlock::getBytecodeIndex):
1986         (JSC::CodeBlock::discardBytecode):
1987         (JSC::CodeBlock::instructionCount):
1988         (JSC::CodeBlock::getJITCode):
1989         (JSC::CodeBlock::executablePool):
1990         (JSC::CodeBlock::ownerExecutable):
1991         (JSC::CodeBlock::extractExceptionInfo):
1992         (JSC::CodeBlock::addFunctionDecl):
1993         (JSC::CodeBlock::functionDecl):
1994         (JSC::CodeBlock::numberOfFunctionDecls):
1995         (JSC::CodeBlock::addFunctionExpr):
1996         (JSC::CodeBlock::functionExpr):
1997         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1998         (JSC::ProgramCodeBlock::ProgramCodeBlock):
1999         (JSC::EvalCodeBlock::EvalCodeBlock):
2000         (JSC::FunctionCodeBlock::FunctionCodeBlock):
2001         (JSC::NativeCodeBlock::NativeCodeBlock):
2002         * bytecode/EvalCodeCache.h:
2003         * bytecode/SamplingTool.cpp:
2004         (JSC::SamplingTool::doRun):
2005         * bytecompiler/BytecodeGenerator.cpp:
2006         (JSC::BytecodeGenerator::BytecodeGenerator):
2007         (JSC::BytecodeGenerator::emitNewFunction):
2008         (JSC::BytecodeGenerator::emitNewFunctionExpression):
2009         * bytecompiler/BytecodeGenerator.h:
2010         * debugger/Debugger.cpp:
2011         (JSC::Debugger::recompileAllJSFunctions):
2012         * interpreter/CachedCall.h:
2013         (JSC::CachedCall::CachedCall):
2014         * interpreter/CallFrameClosure.h:
2015         * interpreter/Interpreter.cpp:
2016         (JSC::Interpreter::unwindCallFrame):
2017         (JSC::Interpreter::throwException):
2018         (JSC::Interpreter::execute):
2019         (JSC::Interpreter::prepareForRepeatCall):
2020         (JSC::Interpreter::debug):
2021         (JSC::Interpreter::privateExecute):
2022         (JSC::Interpreter::retrieveLastCaller):
2023         * interpreter/Interpreter.h:
2024         * jit/JIT.cpp:
2025         (JSC::JIT::privateCompile):
2026         * jit/JIT.h:
2027         (JSC::JIT::compile):
2028         * jit/JITOpcodes.cpp:
2029         (JSC::JIT::privateCompileCTIMachineTrampolines):
2030         (JSC::JIT::emit_op_new_func):
2031         (JSC::JIT::emit_op_new_func_exp):
2032         * jit/JITStubs.cpp:
2033         (JSC::DEFINE_STUB_FUNCTION):
2034         * jit/JITStubs.h:
2035         (JSC::):
2036         * parser/Nodes.cpp:
2037         (JSC::FunctionBodyNode::reparseDataIfNecessary):
2038         * parser/Nodes.h:
2039         (JSC::EvalNode::partialDestroyData):
2040         * parser/Parser.h:
2041         * profiler/ProfileGenerator.cpp:
2042         * profiler/Profiler.cpp:
2043         (JSC::Profiler::createCallIdentifier):
2044         (JSC::createCallIdentifierFromFunctionImp):
2045         * runtime/Arguments.h:
2046         (JSC::Arguments::getArgumentsData):
2047         (JSC::Arguments::Arguments):
2048         (JSC::JSActivation::copyRegisters):
2049         * runtime/ArrayPrototype.cpp:
2050         (JSC::isNumericCompareFunction):
2051         * runtime/CallData.h:
2052         (JSC::):
2053         * runtime/Collector.cpp:
2054         (JSC::Heap::collect):
2055         * runtime/ConstructData.h:
2056         (JSC::):
2057         * runtime/ExceptionHelpers.cpp:
2058         (JSC::createUndefinedVariableError):
2059         (JSC::createInvalidParamError):
2060         (JSC::createNotAConstructorError):
2061         (JSC::createNotAFunctionError):
2062         (JSC::createNotAnObjectError):
2063         * runtime/Executable.cpp: Added.
2064         (JSC::EvalExecutable::generateBytecode):
2065         (JSC::ProgramExecutable::generateBytecode):
2066         (JSC::FunctionExecutable::generateBytecode):
2067         (JSC::EvalExecutable::generateJITCode):
2068         (JSC::ProgramExecutable::generateJITCode):
2069         (JSC::FunctionExecutable::generateJITCode):
2070         (JSC::FunctionExecutable::isHostFunction):
2071         (JSC::FunctionExecutable::markAggregate):
2072         (JSC::FunctionExecutable::reparseExceptionInfo):
2073         (JSC::EvalExecutable::reparseExceptionInfo):
2074         (JSC::FunctionExecutable::recompile):
2075         (JSC::FunctionExecutable::FunctionExecutable):
2076         * runtime/Executable.h:
2077         (JSC::ExecutableBase::~ExecutableBase):
2078         (JSC::ExecutableBase::ExecutableBase):
2079         (JSC::ExecutableBase::source):
2080         (JSC::ExecutableBase::sourceID):
2081         (JSC::ExecutableBase::lastLine):
2082         (JSC::ExecutableBase::usesEval):
2083         (JSC::ExecutableBase::usesArguments):
2084         (JSC::ExecutableBase::needsActivation):
2085         (JSC::ExecutableBase::astNode):
2086         (JSC::ExecutableBase::generatedJITCode):
2087         (JSC::ExecutableBase::getExecutablePool):
2088         (JSC::EvalExecutable::EvalExecutable):
2089         (JSC::EvalExecutable::bytecode):
2090         (JSC::EvalExecutable::varStack):
2091         (JSC::EvalExecutable::evalNode):
2092         (JSC::EvalExecutable::jitCode):
2093         (JSC::ProgramExecutable::ProgramExecutable):
2094         (JSC::ProgramExecutable::reparseExceptionInfo):
2095         (JSC::ProgramExecutable::bytecode):
2096         (JSC::ProgramExecutable::programNode):
2097         (JSC::ProgramExecutable::jitCode):
2098         (JSC::FunctionExecutable::FunctionExecutable):
2099         (JSC::FunctionExecutable::name):
2100         (JSC::FunctionExecutable::bytecode):
2101         (JSC::FunctionExecutable::generatedBytecode):
2102         (JSC::FunctionExecutable::usesEval):
2103         (JSC::FunctionExecutable::usesArguments):
2104         (JSC::FunctionExecutable::parameterCount):
2105         (JSC::FunctionExecutable::paramString):
2106         (JSC::FunctionExecutable::isGenerated):
2107         (JSC::FunctionExecutable::body):
2108         (JSC::FunctionExecutable::jitCode):
2109         (JSC::FunctionExecutable::createNativeThunk):
2110         * runtime/FunctionConstructor.cpp:
2111         (JSC::constructFunction):
2112         * runtime/FunctionPrototype.cpp:
2113         (JSC::functionProtoFuncToString):
2114         * runtime/JSActivation.cpp:
2115         (JSC::JSActivation::JSActivation):
2116         (JSC::JSActivation::markChildren):
2117         (JSC::JSActivation::isDynamicScope):
2118         (JSC::JSActivation::argumentsGetter):
2119         * runtime/JSActivation.h:
2120         (JSC::JSActivation::JSActivationData::JSActivationData):
2121         * runtime/JSFunction.cpp:
2122         (JSC::JSFunction::isHostFunction):
2123         (JSC::JSFunction::JSFunction):
2124         (JSC::JSFunction::~JSFunction):
2125         (JSC::JSFunction::markChildren):
2126         (JSC::JSFunction::getCallData):
2127         (JSC::JSFunction::call):
2128         (JSC::JSFunction::lengthGetter):
2129         (JSC::JSFunction::getConstructData):
2130         (JSC::JSFunction::construct):
2131         * runtime/JSFunction.h:
2132         (JSC::JSFunction::executable):
2133         (JSC::FunctionExecutable::make):
2134         * runtime/JSGlobalData.cpp:
2135         (JSC::JSGlobalData::JSGlobalData):
2136         (JSC::JSGlobalData::numericCompareFunction):
2137         * runtime/JSGlobalData.h:
2138
2139 2009-08-17  Mark Rowe  <mrowe@apple.com>
2140
2141         Reviewed by Darin Adler.
2142
2143         Fix 300,000+ leaks seen during the regression tests.
2144
2145         EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
2146         While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
2147         To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
2148         refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
2149         now uses CacheableEvalExecutable::create and avoids the leak.
2150
2151         * bytecode/EvalCodeCache.h:
2152         (JSC::EvalCodeCache::get):
2153         * interpreter/Interpreter.cpp:
2154         (JSC::Interpreter::callEval):
2155         * runtime/Executable.h:
2156         (JSC::CacheableEvalExecutable::create):
2157         (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
2158
2159 2009-08-17  Oliver Hunt  <oliver@apple.com>
2160
2161         RS=Mark Rowe.
2162
2163         REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
2164         https://bugs.webkit.org/show_bug.cgi?id=28341
2165         <rdar://problem/7145615>
2166
2167         Reverting r47292.  Alas Prototype.js breaks with Arguments inheriting
2168         from Array as ES5 attempted.  Prototype.js defines $A in terms of a 
2169         function it places on (among other global objects) the Array prototype,
2170         thus breaking $A for arrays.
2171
2172         * runtime/Arguments.h:
2173         (JSC::Arguments::Arguments):
2174         * runtime/JSGlobalObject.cpp:
2175         (JSC::JSGlobalObject::reset):
2176         (JSC::JSGlobalObject::markChildren):
2177         * runtime/JSGlobalObject.h:
2178         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2179         * runtime/ObjectPrototype.cpp:
2180         (JSC::ObjectPrototype::ObjectPrototype):
2181         * runtime/ObjectPrototype.h:
2182         * tests/mozilla/ecma_3/Function/arguments-001.js:
2183
2184 2009-08-17  Peter Kasting  <pkasting@google.com>
2185
2186         Reviewed by Steve Falkenburg.
2187
2188         https://bugs.webkit.org/show_bug.cgi?id=27323
2189         Only add Cygwin to the path when it isn't already there.  This avoids
2190         causing problems for people who purposefully have non-Cygwin versions of
2191         executables like svn in front of the Cygwin ones in their paths.
2192
2193         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2194         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
2195         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
2196         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2197         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
2198
2199 2009-08-17  Xan Lopez  <xlopez@igalia.com>
2200
2201         Reviewed by Mark Rowe.
2202
2203         Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
2204
2205         * wtf/FastMalloc.cpp:
2206         (WTF::fastMalloc):
2207         (WTF::fastCalloc):
2208         (WTF::fastRealloc):
2209
2210 2009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
2211
2212         Reviewed by Mark Rowe.
2213
2214         Fix crash on ./ecma_2/RegExp/exec-002.js.
2215         https://bugs.webkit.org/show_bug.cgi?id=28353
2216
2217         Change the order of freeParenthesesDisjunctionContext and
2218         popParenthesesDisjunctionContext on all call sites as the pop
2219         method is accessing backTrack->lastContext which is the context
2220         that is about to be freed.
2221
2222         * yarr/RegexInterpreter.cpp:
2223         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
2224         (JSC::Yarr::Interpreter::backtrackParentheses):
2225
2226 2009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
2227
2228         Reviewed by Mark Rowe.
2229
2230         https://bugs.webkit.org/show_bug.cgi?id=28352
2231
2232         Fix coding style violations. Use m_ for C++ class members. Remove
2233         trailing whitespace on empty lines.
2234
2235         * yarr/RegexInterpreter.cpp:
2236         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
2237         (JSC::Yarr::Interpreter::tryConsumeCharacter):
2238         (JSC::Yarr::Interpreter::tryConsumeBackReference):
2239         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
2240         (JSC::Yarr::Interpreter::backtrackParentheses):
2241         (JSC::Yarr::ByteCompiler::ByteCompiler):
2242         (JSC::Yarr::ByteCompiler::compile):
2243         (JSC::Yarr::ByteCompiler::checkInput):
2244         (JSC::Yarr::ByteCompiler::assertionBOL):
2245         (JSC::Yarr::ByteCompiler::assertionEOL):
2246         (JSC::Yarr::ByteCompiler::assertionWordBoundary):
2247         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
2248         (JSC::Yarr::ByteCompiler::atomCharacterClass):
2249         (JSC::Yarr::ByteCompiler::atomBackReference):
2250         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
2251         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
2252         (JSC::Yarr::ByteCompiler::popParenthesesStack):
2253         (JSC::Yarr::ByteCompiler::closeAlternative):
2254         (JSC::Yarr::ByteCompiler::closeBodyAlternative):
2255         (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
2256         (JSC::Yarr::ByteCompiler::regexBegin):
2257         (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
2258         (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
2259         (JSC::Yarr::ByteCompiler::emitDisjunction):
2260
2261 2009-08-15  Mark Rowe  <mrowe@apple.com>
2262
2263         Fix the build with JIT disabled.
2264
2265         * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
2266         * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
2267         NativeFunctionWrapper is when the JIT is disabled.
2268
2269 2009-08-15  Adam Bergkvist  <adam.bergkvist@ericsson.com>
2270
2271         Reviewed by Sam Weinig.
2272
2273         Added ENABLE_EVENTSOURCE flag.
2274         https://bugs.webkit.org/show_bug.cgi?id=14997
2275
2276         * Configurations/FeatureDefines.xcconfig:
2277
2278 2009-08-14  Gavin Barraclough  <barraclough@apple.com>
2279
2280         * parser/Parser.h:
2281         (JSC::EvalExecutable::parse):
2282         (JSC::ProgramExecutable::parse):
2283         * runtime/Executable.h:
2284
2285 2009-08-14  Gavin Barraclough  <barraclough@apple.com>
2286
2287         Reviewed by Oliver Hunt.
2288
2289         Remove AST nodes from use within the Runtime (outside of parsing), stage 1
2290         https://bugs.webkit.org/show_bug.cgi?id=28330
2291
2292         Remove the EvalNode and ProgramNode from use in the runtime.  They still exist
2293         after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
2294         and are also still reachable behind CodeBlock::m_ownerNode.
2295
2296         The next step will be to beat back FunctionBodyNode in the same fashion.
2297         Then remove the usage via CodeBlock, then only construct these nodes only on
2298         demand during bytecode generation.
2299
2300         * JavaScriptCore.xcodeproj/project.pbxproj:
2301         * bytecode/CodeBlock.h:
2302         (JSC::GlobalCodeBlock::GlobalCodeBlock):
2303         (JSC::GlobalCodeBlock::~GlobalCodeBlock):
2304         (JSC::ProgramCodeBlock::ProgramCodeBlock):
2305         (JSC::EvalCodeBlock::EvalCodeBlock):
2306         (JSC::FunctionCodeBlock::FunctionCodeBlock):
2307         (JSC::NativeCodeBlock::NativeCodeBlock):
2308         * bytecode/EvalCodeCache.h:
2309         (JSC::EvalCodeCache::get):
2310         * debugger/Debugger.cpp:
2311         (JSC::evaluateInGlobalCallFrame):
2312         * debugger/DebuggerCallFrame.cpp:
2313         (JSC::DebuggerCallFrame::evaluate):
2314         * interpreter/Interpreter.cpp:
2315         (JSC::Interpreter::callEval):
2316         (JSC::Interpreter::execute):
2317         * interpreter/Interpreter.h:
2318         * parser/Nodes.cpp:
2319         (JSC::FunctionBodyNode::createNativeThunk):
2320         (JSC::FunctionBodyNode::generateBytecode):
2321         (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
2322         * parser/Parser.h:
2323         (JSC::Parser::parse):
2324         (JSC::Parser::reparse):
2325         (JSC::Parser::parseFunctionFromGlobalCode):
2326         (JSC::::parse):
2327         * runtime/Completion.cpp:
2328         (JSC::checkSyntax):
2329         (JSC::evaluate):
2330         * runtime/Error.cpp:
2331         (JSC::throwError):
2332         * runtime/Error.h:
2333         * runtime/Executable.h: Added.
2334         (JSC::TemplateExecutable::TemplateExecutable):
2335         (JSC::TemplateExecutable::markAggregate):
2336         (JSC::TemplateExecutable::sourceURL):
2337         (JSC::TemplateExecutable::lineNo):
2338         (JSC::TemplateExecutable::bytecode):
2339         (JSC::TemplateExecutable::jitCode):
2340         (JSC::EvalExecutable::EvalExecutable):
2341         (JSC::ProgramExecutable::ProgramExecutable):
2342         * runtime/FunctionConstructor.cpp:
2343         (JSC::constructFunction):
2344         * runtime/FunctionConstructor.h:
2345         * runtime/JSGlobalData.cpp:
2346         (JSC::JSGlobalData::numericCompareFunction):
2347         * runtime/JSGlobalObject.cpp:
2348         (JSC::JSGlobalObject::~JSGlobalObject):
2349         (JSC::JSGlobalObject::markChildren):
2350         * runtime/JSGlobalObject.h:
2351         (JSC::JSGlobalObject::codeBlocks):
2352         * runtime/JSGlobalObjectFunctions.cpp:
2353         (JSC::globalFuncEval):
2354
2355 2009-08-14  Darin Adler  <darin@apple.com>
2356
2357         Reviewed by Sam Weinig.
2358
2359         Rename the confusing isObject(<class>) to inherits(<class>).
2360         It still works on non-objects, returning false.
2361
2362         * runtime/ArrayConstructor.cpp:
2363         (JSC::arrayConstructorIsArray): Removed unneeded isObject call
2364         and updated remaining isObject call to new name, inherits.
2365
2366         * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
2367         but more importantly, made it non-virtual (it was already inline)
2368         so it is now as fast as JSObject::inherits was.
2369
2370         * runtime/JSObject.h: Removed inherits function since the one
2371         in the base class is fine as-is. Also made various JSCell functions
2372         that should not be called on JSObject uncallable by making them
2373         both private and not implemented.
2374         (JSC::JSCell::inherits): Updated name.
2375         (JSC::JSValue::inherits): Ditto.
2376
2377         * debugger/Debugger.cpp:
2378         (JSC::Debugger::recompileAllJSFunctions):
2379         * interpreter/Interpreter.cpp:
2380         (JSC::Interpreter::unwindCallFrame):
2381         * runtime/ArrayPrototype.cpp:
2382         (JSC::arrayProtoFuncToString):
2383         (JSC::arrayProtoFuncToLocaleString):
2384         (JSC::arrayProtoFuncConcat):
2385         * runtime/BooleanPrototype.cpp:
2386         (JSC::booleanProtoFuncToString):
2387         (JSC::booleanProtoFuncValueOf):
2388         * runtime/DateConstructor.cpp:
2389         (JSC::constructDate):
2390         * runtime/DatePrototype.cpp:
2391         (JSC::dateProtoFuncToString):
2392         (JSC::dateProtoFuncToUTCString):
2393         (JSC::dateProtoFuncToISOString):
2394         (JSC::dateProtoFuncToDateString):
2395         (JSC::dateProtoFuncToTimeString):
2396         (JSC::dateProtoFuncToLocaleString):
2397         (JSC::dateProtoFuncToLocaleDateString):
2398         (JSC::dateProtoFuncToLocaleTimeString):
2399         (JSC::dateProtoFuncGetTime):
2400         (JSC::dateProtoFuncGetFullYear):
2401         (JSC::dateProtoFuncGetUTCFullYear):
2402         (JSC::dateProtoFuncToGMTString):
2403         (JSC::dateProtoFuncGetMonth):
2404         (JSC::dateProtoFuncGetUTCMonth):
2405         (JSC::dateProtoFuncGetDate):
2406         (JSC::dateProtoFuncGetUTCDate):
2407         (JSC::dateProtoFuncGetDay):
2408         (JSC::dateProtoFuncGetUTCDay):
2409         (JSC::dateProtoFuncGetHours):
2410         (JSC::dateProtoFuncGetUTCHours):
2411         (JSC::dateProtoFuncGetMinutes):
2412         (JSC::dateProtoFuncGetUTCMinutes):
2413         (JSC::dateProtoFuncGetSeconds):
2414         (JSC::dateProtoFuncGetUTCSeconds):
2415         (JSC::dateProtoFuncGetMilliSeconds):
2416         (JSC::dateProtoFuncGetUTCMilliseconds):
2417         (JSC::dateProtoFuncGetTimezoneOffset):
2418         (JSC::dateProtoFuncSetTime):
2419         (JSC::setNewValueFromTimeArgs):
2420         (JSC::setNewValueFromDateArgs):
2421         (JSC::dateProtoFuncSetYear):
2422         (JSC::dateProtoFuncGetYear):
2423         * runtime/FunctionPrototype.cpp:
2424         (JSC::functionProtoFuncToString):
2425         * runtime/JSActivation.cpp:
2426         (JSC::JSActivation::argumentsGetter):
2427         * runtime/JSValue.h:
2428         * runtime/RegExpConstructor.cpp:
2429         (JSC::constructRegExp):
2430         * runtime/RegExpPrototype.cpp:
2431         (JSC::regExpProtoFuncTest):
2432         (JSC::regExpProtoFuncExec):
2433         (JSC::regExpProtoFuncCompile):
2434         (JSC::regExpProtoFuncToString):
2435         * runtime/ScopeChain.cpp:
2436         (JSC::ScopeChain::localDepth):
2437         * runtime/StringPrototype.cpp:
2438         (JSC::stringProtoFuncReplace):
2439         (JSC::stringProtoFuncToString):
2440         (JSC::stringProtoFuncMatch):
2441         (JSC::stringProtoFuncSearch):
2442         (JSC::stringProtoFuncSplit):
2443         Updated to new name, inherits, from old name, isObject.
2444
2445 2009-07-31  Harald Fernengel  <harald.fernengel@nokia.com>
2446
2447         Reviewed by Simon Hausmann.
2448
2449         Adding QNX as a platform. Currently only tested with Qt.
2450
2451         https://bugs.webkit.org/show_bug.cgi?id=27885
2452
2453         * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
2454           since QNX doesn't have the pthread _nt functions
2455         * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
2456           defines
2457         * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
2458
2459 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
2460
2461         Reviewed by Simon Hausmann.
2462
2463         Currently generic ARM and ARMv7 platforms work only with JSVALUE32
2464         https://bugs.webkit.org/show_bug.cgi?id=28300
2465
2466         * wtf/Platform.h:
2467
2468 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
2469
2470         Reviewed by Simon Hausmann.
2471
2472         Enable JIT on ARM for QT by default
2473         https://bugs.webkit.org/show_bug.cgi?id=28259
2474
2475         * wtf/Platform.h:
2476
2477 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
2478
2479         Reviewed by Simon Hausmann.
2480
2481         Enable YARR_JIT on ARM for QT by default
2482         https://bugs.webkit.org/show_bug.cgi?id=28259
2483
2484         * wtf/Platform.h:
2485
2486 2009-08-14  Oliver Hunt  <oliver@apple.com>
2487
2488         Reviewed by Gavin Barraclough.
2489
2490         [ES5] Arguments object should inherit from Array
2491         https://bugs.webkit.org/show_bug.cgi?id=28298
2492
2493         Make the Arguments object conform to the behaviour specified in ES5.
2494         The simple portion of this is to make Arguments use Array.prototype
2495         as its prototype rather than Object.prototype.
2496
2497         The spec then requires us to set instance.constructor to the pristine
2498         Object constructor, and instance.toString and instance.toLocaleString
2499         to the pristine versions from Object.prototype.  To do this we now 
2500         make the ObjectPrototype constructor return its toString and
2501         toLocaleString functions (similar to the call and apply functions
2502         from FunctionPrototype).
2503
2504         Oddly enough this reports itself as a slight win, but given the code
2505         isn't hit in the tests that claim to have improved I put this down to
2506         code motion.
2507
2508         * runtime/Arguments.h:
2509         (JSC::Arguments::Arguments):
2510         (JSC::Arguments::initializeStandardProperties):
2511         * runtime/JSGlobalObject.cpp:
2512         (JSC::JSGlobalObject::reset):
2513         (JSC::JSGlobalObject::markChildren):
2514         * runtime/JSGlobalObject.h:
2515         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2516         (JSC::JSGlobalObject::objectConstructor):
2517         (JSC::JSGlobalObject::objectToStringFunction):
2518         (JSC::JSGlobalObject::objectToLocaleStringFunction):
2519         * runtime/ObjectPrototype.cpp:
2520         (JSC::ObjectPrototype::ObjectPrototype):
2521         * runtime/ObjectPrototype.h:
2522         * tests/mozilla/ecma_3/Function/arguments-001.js:
2523           Update test to new es5 behaviour
2524
2525 2009-08-14  Oliver Hunt  <oliver@apple.com>
2526
2527         Remove MarkStack::drain from the JSC exports file
2528
2529         MarkStack::drain is now marked inline, the including it in the exports file
2530         produces an ld warning
2531
2532         * JavaScriptCore.exp:
2533
2534 2009-08-13  Sam Weinig  <sam@webkit.org>
2535
2536         Reviewed by Oliver Hunt.
2537
2538         Remove accidentally left in debugging statement.
2539
2540         * runtime/JSArray.h:
2541         (JSC::MarkStack::drain):
2542
2543 2009-08-13  Oliver Hunt  <oliver@apple.com>
2544
2545         Reviewed by Maciej Stachowiak.
2546
2547         [ES5] Implement Array.isArray
2548         https://bugs.webkit.org/show_bug.cgi?id=28296
2549
2550         Add support for Array.isArray to the Array constructor
2551
2552         * runtime/ArrayConstructor.cpp:
2553         (JSC::ArrayConstructor::ArrayConstructor):
2554         (JSC::arrayConstructorIsArray):
2555         * runtime/ArrayConstructor.h:
2556         * runtime/CommonIdentifiers.h:
2557         * runtime/JSArray.h:
2558         (JSC::MarkStack::drain):
2559         * runtime/JSGlobalObject.cpp:
2560         (JSC::JSGlobalObject::reset):
2561
2562 2009-08-13  Oliver Hunt  <oliver@apple.com>
2563
2564         Reviewed by NOBODY (Buildfix).
2565
2566         Attempt to fix windows build
2567
2568         * runtime/Collector.cpp:
2569
2570 2009-08-13  Oliver Hunt  <oliver@apple.com>
2571
2572         Reviewed by Maciej Stachowiak.
2573
2574         Devirtualise marking
2575         https://bugs.webkit.org/show_bug.cgi?id=28294
2576
2577         Add a bit to TypeInfo to indicate that an object uses the standard
2578         JSObject::markChildren method.  This allows us to devirtualise marking
2579         of most objects (though a branch is still needed).  We also add a branch
2580         to identify arrays thus devirtualising marking in that case as well.
2581
2582         In order to make the best use of this devirtualisation I've also reworked
2583         the MarkStack::drain() logic to make the iteration more efficient.
2584
2585         * API/JSCallbackConstructor.h:
2586         (JSC::JSCallbackConstructor::createStructure):
2587         * API/JSCallbackFunction.h:
2588         (JSC::JSCallbackFunction::createStructure):
2589         * JavaScriptCore.exp:
2590         * runtime/BooleanObject.h:
2591         (JSC::BooleanObject::createStructure):
2592         * runtime/FunctionPrototype.h:
2593         (JSC::FunctionPrototype::createStructure):
2594         * runtime/InternalFunction.h:
2595         (JSC::InternalFunction::createStructure):
2596         * runtime/JSAPIValueWrapper.h:
2597         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2598         * runtime/JSArray.cpp:
2599         (JSC::JSArray::markChildren):
2600         * runtime/JSArray.h:
2601         (JSC::JSArray::markChildrenDirect):
2602         (JSC::MarkStack::drain):
2603         * runtime/JSByteArray.cpp:
2604         (JSC::JSByteArray::createStructure):
2605         * runtime/JSCell.h:
2606         (JSC::MarkStack::append):
2607         * runtime/JSGlobalData.cpp:
2608         (JSC::JSGlobalData::JSGlobalData):
2609         * runtime/JSNumberCell.h:
2610         (JSC::JSNumberCell::createStructure):
2611         * runtime/JSONObject.h:
2612         (JSC::JSONObject::createStructure):
2613         * runtime/JSObject.cpp:
2614         (JSC::JSObject::markChildren):
2615         * runtime/JSObject.h:
2616         (JSC::JSObject::markChildrenDirect):
2617         (JSC::JSObject::createStructure):
2618         * runtime/JSString.h:
2619         (JSC::JSString::createStructure):
2620         * runtime/JSType.h:
2621         (JSC::):
2622         * runtime/MarkStack.h:
2623         (JSC::MarkStack::MarkStack):
2624         (JSC::MarkStack::MarkSet::MarkSet):
2625         (JSC::MarkStack::MarkStackArray::last):
2626         * runtime/MathObject.h:
2627         (JSC::MathObject::createStructure):
2628         * runtime/NumberConstructor.h:
2629         (JSC::NumberConstructor::createStructure):
2630         * runtime/NumberObject.h:
2631         (JSC::NumberObject::createStructure):
2632         * runtime/RegExpConstructor.h:
2633         (JSC::RegExpConstructor::createStructure):
2634         * runtime/RegExpObject.h:
2635         (JSC::RegExpObject::createStructure):
2636         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2637         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2638         * runtime/TypeInfo.h:
2639         (JSC::TypeInfo::hasDefaultMark):
2640
2641 2009-08-13  Darin Adler  <darin@apple.com>
2642
2643         Reviewed by Mark Rowe.
2644
2645         Some small bits of housekeeping.
2646
2647         * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
2648         project instead of private. Remove JSONObject.lut.h.
2649
2650         * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
2651         * assembler/AssemblerBufferWithConstantPool.h: Ditto.
2652         * bytecompiler/BytecodeGenerator.h: Ditto.
2653
2654         * wtf/SegmentedVector.h: Add a "using" statement as we do
2655         with the other WTF headers.
2656
2657 2009-08-13  Darin Adler  <darin@apple.com>
2658
2659         Fix Tiger build.
2660
2661         * parser/Grammar.y: Use a template function so we can compile
2662         setStatementLocation even if it comes before YYLTYPE is defined.
2663
2664 2009-08-13  Darin Adler  <darin@apple.com>
2665
2666         Reviewed by George Staikos.
2667
2668         Too much use of void* in Grammar.y
2669         https://bugs.webkit.org/show_bug.cgi?id=28287
2670
2671         * parser/Grammar.y: Changed all the helper functions to
2672         take a JSGlobalData* instead of a void*. A couple formatting
2673         tweaks that I missed when breaking this into pieces.
2674
2675 2009-08-13  Darin Adler  <darin@apple.com>
2676
2677         Reviewed by George Staikos.
2678
2679         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
2680
2681         * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
2682         format. Marked a few more functions inline.
2683
2684 2009-08-13  Darin Adler  <darin@apple.com>
2685
2686         Reviewed by George Staikos.
2687
2688         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
2689
2690         * parser/Grammar.y: Pass the number to the PropertyNode instead of
2691         first turning it into an Identifier.
2692
2693         * parser/NodeConstructors.h:
2694         (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
2695         so the code to convert to a string can be here instead of Grammar.y.
2696         * parser/Nodes.h: Ditto.
2697
2698 2009-08-13  Darin Adler  <darin@apple.com>
2699
2700         Reviewed by George Staikos.
2701
2702         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
2703
2704         * parser/Grammar.y: Eliminate the DBG macro.
2705
2706 2009-08-13  Darin Adler  <darin@apple.com>
2707
2708         Reviewed by George Staikos.
2709
2710         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
2711
2712         * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
2713
2714 2009-08-13  Darin Adler  <darin@apple.com>
2715
2716         Reviewed by George Staikos.
2717
2718         George asked me to break the patch from
2719         https://bugs.webkit.org/show_bug.cgi?id=28287
2720         into smaller pieces and land it in stages.
2721
2722         * parser/Grammar.y: Eliminate the LEXER macro.
2723
2724 2009-08-13  Mark Rowe  <mrowe@apple.com>
2725
2726         Try some more to fix the Windows build.
2727
2728         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
2729         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
2730
2731 2009-08-13  Mark Rowe  <mrowe@apple.com>
2732
2733         Try and fix the Windows build.
2734
2735         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
2736         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
2737
2738 2009-08-13  Darin Adler  <darin@apple.com>
2739
2740         Reviewed by David Levin.
2741
2742         JavaScriptCore tweaks to get ready for the parser arena
2743         https://bugs.webkit.org/show_bug.cgi?id=28243
2744
2745         Eliminate dependencies on Nodes.h outside JavaScriptCore,
2746         and cut down on them inside JavaScriptCore.
2747
2748         Change regular expression parsing to use identifiers as
2749         with other strings we parse.
2750
2751         Fix a couple things that are needed to use const Identifier
2752         more, which will be part of the parser arena work.
2753
2754         * JavaScriptCore.exp: Resorted and updated.
2755
2756         * JavaScriptCore.xcodeproj/project.pbxproj: Changed
2757         CollectorHeapIterator.h to be project-internal.
2758
2759         * bytecompiler/BytecodeGenerator.cpp:
2760         (JSC::BytecodeGenerator::emitPushNewScope): Added const.
2761         * bytecompiler/BytecodeGenerator.h: Ditto.
2762
2763         * debugger/Debugger.cpp:
2764         (JSC::Debugger::recompileAllJSFunctions): Moved this function
2765         here from WebCore. Here is better since it uses so many internals.
2766         Removed unimportant optimization for the no listener case.
2767         * debugger/Debugger.h: Ditto. Also removed unneeded include
2768         and tweaked formatting and comments.
2769
2770         * debugger/DebuggerCallFrame.cpp:
2771         (JSC::DebuggerCallFrame::functionName): Call asFunction instead
2772         of doing the unchecked static_cast.
2773         (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
2774
2775         * jit/JITStubs.cpp:
2776         (JSC::op_call_JSFunction): Call isHostFunction on the body rather
2777         than on the JSFunction.
2778         (JSC::vm_lazyLinkCall): Ditto.
2779         (JSC::op_construct_JSConstruct): Ditto.
2780
2781         * parser/Grammar.y: Changed callers to use new scanRegExp with
2782         out arguments instead of relying on state in the Lexer. And
2783         callers that just want to skip a regular expression to use
2784         skipRegExp.
2785
2786         * parser/Lexer.cpp:
2787         (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
2788         add a prefix argument so we can add in the "=" character as needed.
2789         Also rewrote to streamline the logic a bit inspired by suggestions
2790         by David Levin.
2791         (JSC::Lexer::skipRegExp): Added. Version of the function above that
2792         does not actually put the regular expression into a string.
2793         (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
2794         * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
2795         skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
2796
2797         * parser/NodeConstructors.h:
2798         (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
2799         * parser/Nodes.cpp:
2800         (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
2801         m_flags are now Identifier instead of UString.
2802         (JSC::FunctionBodyNode::make): Moved this function here instead
2803         of putting it in the JSFunction.h header.
2804         * parser/Nodes.h: Changed RegExpNode to use Identifier.
2805
2806         * profiler/Profiler.cpp:
2807         (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
2808         on the body instead of on the JSFunction object.
2809         * runtime/FunctionPrototype.cpp:
2810         (JSC::functionProtoFuncToString): Ditto.
2811
2812         * runtime/JSFunction.cpp:
2813         (JSC::JSFunction::isHostFunction): Moved here from header.
2814         (JSC::JSFunction::isHostFunctionNonInline): Added.
2815         (JSC::JSFunction::JSFunction): Removed unneeded initialization of
2816         m_body to 0.
2817         (JSC::JSFunction::setBody): Moved here from header.
2818
2819         * runtime/JSFunction.h: Removed unneeded includes. Moved private
2820         constructor down to the private section. Made virtual functions
2821         private. Removed unneeded overload of setBody and moved the body
2822         of the function into the .cpp file. Changed assertions to use
2823         the non-inline version of isHostFunction.
2824
2825         * runtime/PropertySlot.cpp:
2826         (JSC::PropertySlot::functionGetter): Use asFunction instead
2827         of doing the unchecked static_cast.
2828
2829         * wtf/SegmentedVector.h:
2830         (WTF::SegmentedVector::isEmpty): Added.
2831
2832 2009-08-13  Mark Rowe  <mrowe@apple.com>
2833
2834         Rubber-stamped by Darin Adler.
2835
2836         Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
2837         from within the grammar to prevent these nodes from being leaked.
2838
2839         * parser/Grammar.y:
2840
2841 2009-08-13  Simon Hausmann  <simon.hausmann@nokia.com>
2842
2843         Reviewed by Ariya Hidayat.
2844
2845         Remove the special-case for Qt wrt JSVALUE_32 introduced in
2846         r46709. It must've been a dependency issue on the bot, as
2847         after a manual build all the tests pass on amd64 and ia32.
2848
2849         * wtf/Platform.h:
2850
2851 2009-08-12  Gabor Loki  <loki@inf.u-szeged.hu>
2852
2853         Reviewed by Gavin Barraclough.
2854
2855         Add optimize call and property access support for ARM JIT.
2856         https://bugs.webkit.org/show_bug.cgi?id=24986
2857
2858         For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
2859         END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
2860         space for instructions and constants of the named sequence. This
2861         method is vital for those architecture which are using constant pool.
2862
2863         The 'latePatch' method - which was linked to JmpSrc - is replaced with
2864         a port specific solution (each calls are marked to place their address
2865         on the constant pool).
2866
2867         * assembler/ARMAssembler.cpp:
2868         (JSC::ARMAssembler::linkBranch):
2869         (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
2870         * assembler/ARMAssembler.h:
2871         (JSC::ARMAssembler::JmpSrc::JmpSrc):
2872         (JSC::ARMAssembler::sizeOfConstantPool):
2873         (JSC::ARMAssembler::jmp):
2874         (JSC::ARMAssembler::linkCall):
2875         * assembler/ARMv7Assembler.h:
2876         * assembler/AbstractMacroAssembler.h:
2877         * assembler/AssemblerBufferWithConstantPool.h:
2878         (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
2879         computation of the remaining space.
2880         * assembler/MacroAssemblerARM.h:
2881         (JSC::MacroAssemblerARM::branch32):
2882         (JSC::MacroAssemblerARM::nearCall):
2883         (JSC::MacroAssemblerARM::call):
2884         (JSC::MacroAssemblerARM::branchPtrWithPatch):
2885         (JSC::MacroAssemblerARM::ensureSpace):
2886         (JSC::MacroAssemblerARM::sizeOfConstantPool):
2887         (JSC::MacroAssemblerARM::prepareCall):
2888         * assembler/X86Assembler.h:
2889         * jit/JIT.h:
2890         * jit/JITCall.cpp:
2891         (JSC::JIT::compileOpCall):
2892         * jit/JITInlineMethods.h:
2893         (JSC::JIT::beginUninterruptedSequence):
2894         (JSC::JIT::endUninterruptedSequence):
2895         * jit/JITPropertyAccess.cpp:
2896         (JSC::JIT::emit_op_method_check):
2897         (JSC::JIT::compileGetByIdHotPath):
2898         (JSC::JIT::compileGetByIdSlowCase):
2899         (JSC::JIT::emit_op_put_by_id):
2900
2901 2009-08-12  Gavin Barraclough  <barraclough@apple.com>
2902
2903         Rubber Stamped by Dave Kilzer.
2904
2905         Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
2906
2907         * wtf/Platform.h:
2908
2909 2009-08-12  Gavin Barraclough  <barraclough@apple.com>
2910
2911         Reviewed by Maciej Stachoviak.
2912
2913         Ooops - moved code that had been accidentally added to op_new_func instead of
2914         op_new_func_exp, to where it shoulds be.
2915
2916         * interpreter/Interpreter.cpp:
2917         (JSC::Interpreter::privateExecute):
2918         * wtf/Platform.h:
2919
2920 2009-08-12  Ada Chan  <adachan@apple.com>
2921
2922         Added workaround for the limitation that VirtualFree with MEM_RELEASE
2923         can only accept the base address returned by VirtualAlloc when the region
2924         was reserved and it can only free the entire region, and not a part of it.
2925
2926         Reviewed by Oliver Hunt.
2927
2928         * runtime/MarkStack.h:
2929         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
2930         * runtime/MarkStackWin.cpp:
2931         (JSC::MarkStack::releaseStack):
2932
2933 2009-08-12  Balazs Kelemen  <kelemen.balazs.3@stud.u-szeged.hu>
2934
2935         Reviewed by Ariya Hidayat.
2936
2937         Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
2938         since LLONG_MIN is not defined in standard c++.
2939
2940         * runtime/UString.cpp:
2941         (JSC::UString::from):
2942
2943 2009-08-12  Benjamin Otte  <otte@gnome.org>
2944
2945         Reviewed by Jan Alonzo.
2946
2947         Buildfix for Gtk platforms debug builds.
2948
2949         * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
2950         depending on platform.
2951
2952 2009-08-12  Simon Hausmann  <simon.hausmann@nokia.com>
2953
2954         Prospective build fix for Mac and 32-bit Windows.
2955
2956         * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
2957         (JSC::UString::from): Use %lld instead of %I64d for snprintf
2958         on non-windows platforms.
2959
2960 2009-08-12  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
2961
2962         Reviewed by Simon Hausmann.
2963
2964         Fix compile error on 64Bit Windows, when UString::from
2965         is called with an intptr_t.
2966
2967         Added new UString::From overload with long long parameter.
2968
2969         Thanks to Holger for the long long idea.
2970
2971         * runtime/UString.cpp:
2972         (JSC::UString::from):
2973         * runtime/UString.h:
2974
2975 2009-08-11  Oliver Hunt  <oliver@apple.com>
2976
2977         Reviewed by Mark Rowe.
2978
2979         Minor style fixes.
2980
2981         * runtime/UString.h:
2982         (JSC::UString::Rep::createEmptyBuffer):
2983         * wtf/FastMalloc.h:
2984         (WTF::TryMallocReturnValue::getValue):
2985
2986 2009-08-11  Oliver Hunt  <oliver@apple.com>
2987
2988         Reviewed by Gavin Barraclough.
2989
2990         Make it harder to misuse try* allocation routines
2991         https://bugs.webkit.org/show_bug.cgi?id=27469
2992
2993         Jump through a few hoops to make it much harder to accidentally
2994         miss null-checking of values returned by the try-* allocation
2995         routines.
2996
2997         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2998         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2999         * JavaScriptCore.xcodeproj/project.pbxproj:
3000         * runtime/JSArray.cpp:
3001         (JSC::JSArray::putSlowCase):
3002         (JSC::JSArray::increaseVectorLength):
3003         * runtime/StringPrototype.cpp:
3004         (JSC::stringProtoFuncFontsize):
3005         (JSC::stringProtoFuncLink):
3006         * runtime/UString.cpp:
3007         (JSC::allocChars):
3008         (JSC::reallocChars):
3009         (JSC::expandCapacity):
3010         (JSC::UString::Rep::reserveCapacity):
3011         (JSC::UString::expandPreCapacity):
3012         (JSC::createRep):
3013         (JSC::concatenate):
3014         (JSC::UString::spliceSubstringsWithSeparators):
3015         (JSC::UString::replaceRange):
3016         (JSC::UString::append):
3017         (JSC::UString::operator=):
3018         * runtime/UString.h:
3019         (JSC::UString::Rep::createEmptyBuffer):
3020         * wtf/FastMalloc.cpp:
3021         (WTF::tryFastZeroedMalloc):
3022         (WTF::tryFastMalloc):
3023         (WTF::tryFastCalloc):
3024         (WTF::tryFastRealloc):
3025         (WTF::TCMallocStats::tryFastMalloc):
3026         (WTF::TCMallocStats::tryFastCalloc):
3027         (WTF::TCMallocStats::tryFastRealloc):
3028         * wtf/FastMalloc.h:
3029         (WTF::TryMallocReturnValue::TryMallocReturnValue):
3030         (WTF::TryMallocReturnValue::~TryMallocReturnValue):
3031         (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
3032         (WTF::TryMallocReturnValue::getValue):
3033         * wtf/Platform.h:
3034         * wtf/PossiblyNull.h: Added.
3035         (WTF::PossiblyNull::PossiblyNull):
3036         (WTF::PossiblyNull::~PossiblyNull):
3037         (WTF::::getValue):
3038
3039 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
3040
3041         Reviewed by NOBODY (build fix part deux).
3042
3043         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3044         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3045
3046 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
3047
3048         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3049         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3050
3051 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
3052
3053         Reviewed by Oliver Hunt.
3054
3055         Restrict use of FuncDeclNode & FuncExprNode to the parser.
3056         https://bugs.webkit.org/show_bug.cgi?id=28209
3057
3058         These objects were also being referenced from the CodeBlock.  By changing this
3059         to just retain pointers to FunctionBodyNodes these classes can be restricted to
3060         use during parsing.
3061
3062         No performance impact (or sub-percent progression).
3063
3064         * JavaScriptCore.exp:
3065             Update symbols.
3066
3067         * bytecode/CodeBlock.cpp:
3068         (JSC::CodeBlock::mark):
3069         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
3070         (JSC::CodeBlock::shrinkToFit):
3071         * bytecode/CodeBlock.h:
3072         (JSC::CodeBlock::addFunction):
3073         (JSC::CodeBlock::function):
3074             Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
3075
3076         * bytecompiler/BytecodeGenerator.cpp:
3077         (JSC::BytecodeGenerator::BytecodeGenerator):
3078         (JSC::BytecodeGenerator::addConstant):
3079         (JSC::BytecodeGenerator::emitNewFunction):
3080         (JSC::BytecodeGenerator::emitNewFunctionExpression):
3081         * bytecompiler/BytecodeGenerator.h:
3082             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
3083
3084         * interpreter/Interpreter.cpp:
3085         (JSC::Interpreter::execute):
3086         (JSC::Interpreter::privateExecute):
3087             Update to reflect chnages in CodeBlock.
3088
3089         * jit/JITOpcodes.cpp:
3090         (JSC::JIT::emit_op_new_func_exp):
3091         * jit/JITStubs.cpp:
3092         (JSC::DEFINE_STUB_FUNCTION):
3093         * jit/JITStubs.h:
3094         (JSC::):
3095             Update to reflect chnages in CodeBlock.
3096
3097         * parser/Grammar.y:
3098             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
3099
3100         * parser/NodeConstructors.h:
3101         (JSC::FuncExprNode::FuncExprNode):
3102         (JSC::FuncDeclNode::FuncDeclNode):
3103         * parser/Nodes.cpp:
3104         (JSC::ScopeNodeData::mark):
3105         (JSC::FunctionBodyNode::finishParsing):
3106         * parser/Nodes.h:
3107         (JSC::FunctionBodyNode::ident):
3108             Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
3109
3110         * runtime/JSFunction.h:
3111         (JSC::FunctionBodyNode::make):
3112             Make this method inline (was FuncDeclNode::makeFunction).
3113
3114 2009-08-11  Oliver Hunt  <oliver@apple.com>
3115
3116         Reviewed by Gavin Barraclough.
3117
3118         Native JSON.stringify does not omit functions
3119         https://bugs.webkit.org/show_bug.cgi?id=28117
3120
3121         Objects that are callable should be treated as undefined when
3122         serialising to JSON.
3123
3124         * runtime/JSONObject.cpp:
3125         (JSC::Stringifier::appendStringifiedValue):
3126
3127 2009-08-11  Oliver Hunt  <oliver@apple.com>
3128
3129         Reviewed by Geoff Garen.
3130
3131         REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
3132         https://bugs.webkit.org/show_bug.cgi?id=28169
3133
3134         Handle the case where someone has attempted to shadow a property
3135         on the global object with a constant.
3136
3137         * bytecompiler/BytecodeGenerator.cpp:
3138         (JSC::BytecodeGenerator::constRegisterFor):
3139         * parser/Nodes.cpp:
3140         (JSC::ConstDeclNode::emitCodeSingle):
3141
3142 2009-08-11  John Gregg  <johnnyg@google.com>
3143
3144         Reviewed by Maciej Stachowiak.
3145
3146         Desktop Notifications API
3147         https://bugs.webkit.org/show_bug.cgi?id=25463
3148
3149         Adds ENABLE_NOTIFICATION flag.
3150
3151         * Configurations/FeatureDefines.xcconfig:
3152         * wtf/Platform.h:
3153
3154 2009-08-11  Maxime Simon  <simon.maxime@gmail.com>
3155
3156         Reviewed by Eric Seidel.
3157
3158         Modifications on JavaScriptCore to allow Haiku port.
3159         https://bugs.webkit.org/show_bug.cgi?id=28121
3160
3161         * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
3162         (JSC::currentThreadStackBase): Haiku uses its own threading system.
3163         * wtf/Platform.h: Defining all Haiku platform values.
3164         * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
3165
3166 2009-08-11  Jessie Berlin  <jberlin@apple.com>
3167
3168         Reviewed by Adam Roben.
3169
3170         Fix windows build.
3171
3172         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3173
3174 2009-08-11  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
3175
3176         Reviewed by Tor Arne Vestbø.
3177
3178         Buildfix for Qt-win platforms.
3179
3180         * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
3181
3182 2009-08-10  Oliver Hunt  <oliver@apple.com>
3183
3184         Reviewed by NOBODY (And another build fix).
3185
3186         Add new exports for MSVC
3187
3188         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3189         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3190         * JavaScriptCore.xcodeproj/project.pbxproj:
3191
3192 2009-08-10  Oliver Hunt  <oliver@apple.com>
3193
3194         Reviewed by NOBODY (yet another build fix).
3195
3196         Remove obsolete entries from MSVC exports file
3197
3198         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3199         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3200
3201 2009-08-10  Oliver Hunt  <oliver@apple.com>
3202
3203         Add includes needed for non-allinonefile builds
3204
3205         * runtime/GetterSetter.h:
3206         * runtime/ScopeChain.h:
3207
3208 2009-08-10  Oliver Hunt  <oliver@apple.com>
3209
3210         Fix export file for last build fix
3211
3212         * JavaScriptCore.exp:
3213
3214 2009-08-10  Oliver Hunt  <oliver@apple.com>
3215
3216         Hoist page size initialization into platform specific code.
3217
3218         * jit/ExecutableAllocatorPosix.cpp:
3219         * jit/ExecutableAllocatorWin.cpp:
3220         * runtime/MarkStack.h:
3221         (JSC::MarkStack::pageSize):
3222         * runtime/MarkStackPosix.cpp:
3223         (JSC::MarkStack::initializePagesize):
3224         * runtime/MarkStackWin.cpp:
3225         (JSC::MarkStack::initializePagesize):
3226
3227 2009-08-07  Oliver Hunt  <oliver@apple.com>
3228
3229         Reviewed by Gavin Barraclough.
3230
3231         Stack overflow crash in JavaScript garbage collector mark pass
3232         https://bugs.webkit.org/show_bug.cgi?id=12216
3233
3234         Make the GC mark phase iterative by using an explicit mark stack.
3235         To do this marking any single object is performed in multiple stages
3236           * The object is appended to the MarkStack, this sets the marked
3237             bit for the object using the new markDirect() function, and then
3238             returns
3239           * When the MarkStack is drain()ed the object is popped off the stack
3240             and markChildren(MarkStack&) is called on the object to collect 
3241             all of its children.  drain() then repeats until the stack is empty.
3242
3243         Additionally I renamed a number of methods from 'mark' to 'markAggregate'
3244         in order to make it more clear that marking of those object was not
3245         going to result in an actual recursive mark.
3246
3247         * GNUmakefile.am
3248         * JavaScriptCore.exp:
3249         * JavaScriptCore.gypi:
3250         * JavaScriptCore.pri:
3251         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3252         * JavaScriptCore.xcodeproj/project.pbxproj:
3253         * bytecode/CodeBlock.cpp:
3254         (JSC::CodeBlock::markAggregate):
3255         * bytecode/CodeBlock.h:
3256         * bytecode/EvalCodeCache.h:
3257         (JSC::EvalCodeCache::markAggregate):
3258         * debugger/DebuggerActivation.cpp:
3259         (JSC::DebuggerActivation::markChildren):
3260         * debugger/DebuggerActivation.h:
3261         * interpreter/Register.h:
3262         * interpreter/RegisterFile.h:
3263         (JSC::RegisterFile::markGlobals):
3264         (JSC::RegisterFile::markCallFrames):
3265         * parser/Nodes.cpp:
3266         (JSC::ScopeNodeData::markAggregate):
3267         (JSC::EvalNode::markAggregate):
3268         (JSC::FunctionBodyNode::markAggregate):
3269         * parser/Nodes.h:
3270         (JSC::ScopeNode::markAggregate):
3271         * runtime/ArgList.cpp:
3272         (JSC::MarkedArgumentBuffer::markLists):
3273         * runtime/ArgList.h:
3274         * runtime/Arguments.cpp:
3275         (JSC::Arguments::markChildren):
3276         * runtime/Arguments.h:
3277         * runtime/Collector.cpp:
3278         (JSC::Heap::markConservatively):
3279         (JSC::Heap::markCurrentThreadConservativelyInternal):
3280         (JSC::Heap::markCurrentThreadConservatively):
3281         (JSC::Heap::markOtherThreadConservatively):
3282         (JSC::Heap::markStackObjectsConservatively):
3283         (JSC::Heap::markProtectedObjects):
3284         (JSC::Heap::collect):
3285         * runtime/Collector.h:
3286         * runtime/GetterSetter.cpp:
3287         (JSC::GetterSetter::markChildren):
3288         * runtime/GetterSetter.h:
3289         (JSC::GetterSetter::GetterSetter):
3290         (JSC::GetterSetter::createStructure):
3291         * runtime/GlobalEvalFunction.cpp:
3292         (JSC::GlobalEvalFunction::markChildren):
3293         * runtime/GlobalEvalFunction.h:
3294         * runtime/JSActivation.cpp:
3295         (JSC::JSActivation::markChildren):
3296         * runtime/JSActivation.h:
3297         * runtime/JSArray.cpp:
3298         (JSC::JSArray::markChildren):
3299         * runtime/JSArray.h:
3300         * runtime/JSCell.h:
3301         (JSC::JSCell::markCellDirect):
3302         (JSC::JSCell::markChildren):
3303         (JSC::JSValue::markDirect):
3304         (JSC::JSValue::markChildren):
3305         (JSC::JSValue::hasChildren):
3306         (JSC::MarkStack::append):
3307         (JSC::MarkStack::drain):
3308         * runtime/JSFunction.cpp:
3309         (JSC::JSFunction::markChildren):
3310         * runtime/JSFunction.h:
3311         * runtime/JSGlobalData.cpp:
3312         (JSC::JSGlobalData::JSGlobalData):
3313         * runtime/JSGlobalData.h:
3314         * runtime/JSGlobalObject.cpp:
3315         (JSC::markIfNeeded):
3316         (JSC::JSGlobalObject::markChildren):
3317         * runtime/JSGlobalObject.h:
3318         * runtime/JSNotAnObject.cpp:
3319         (JSC::JSNotAnObject::markChildren):
3320         * runtime/JSNotAnObject.h:
3321         * runtime/JSONObject.cpp:
3322         (JSC::Stringifier::markAggregate):
3323         (JSC::JSONObject::markStringifiers):
3324         * runtime/JSONObject.h:
3325         * runtime/JSObject.cpp:
3326         (JSC::JSObject::markChildren):
3327         (JSC::JSObject::defineGetter):
3328         (JSC::JSObject::defineSetter):
3329         * runtime/JSObject.h:
3330         * runtime/JSPropertyNameIterator.cpp:
3331         (JSC::JSPropertyNameIterator::markChildren):
3332         * runtime/JSPropertyNameIterator.h:
3333         (JSC::JSPropertyNameIterator::createStructure):
3334         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3335         (JSC::JSPropertyNameIterator::create):
3336         * runtime/JSStaticScopeObject.cpp:
3337         (JSC::JSStaticScopeObject::markChildren):
3338         * runtime/JSStaticScopeObject.h:
3339         * runtime/JSType.h:
3340         (JSC::):
3341         * runtime/JSValue.h:
3342         * runtime/JSWrapperObject.cpp:
3343         (JSC::JSWrapperObject::markChildren):
3344         * runtime/JSWrapperObject.h:
3345         * runtime/MarkStack.cpp: Added.
3346         (JSC::MarkStack::compact):
3347         * runtime/MarkStack.h: Added.
3348         (JSC::):
3349         (JSC::MarkStack::MarkStack):
3350         (JSC::MarkStack::append):
3351         (JSC::MarkStack::appendValues):
3352         (JSC::MarkStack::~MarkStack):
3353         (JSC::MarkStack::MarkSet::MarkSet):
3354         (JSC::MarkStack::pageSize):
3355         
3356         MarkStackArray is a non-shrinking, mmap-based vector type
3357         used for storing objects to be marked.
3358         (JSC::MarkStack::MarkStackArray::MarkStackArray):
3359         (JSC::MarkStack::MarkStackArray::~MarkStackArray):
3360         (JSC::MarkStack::MarkStackArray::expand):
3361         (JSC::MarkStack::MarkStackArray::append):
3362         (JSC::MarkStack::MarkStackArray::removeLast):
3363         (JSC::MarkStack::MarkStackArray::isEmpty):
3364         (JSC::MarkStack::MarkStackArray::size):
3365         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
3366         * runtime/MarkStackPosix.cpp: Added.
3367         (JSC::MarkStack::allocateStack):
3368         (JSC::MarkStack::releaseStack):
3369         * runtime/MarkStackWin.cpp: Added.
3370         (JSC::MarkStack::allocateStack):
3371         (JSC::MarkStack::releaseStack):
3372
3373         * runtime/ScopeChain.h:
3374         * runtime/ScopeChainMark.h:
3375         (JSC::ScopeChain::markAggregate):
3376         * runtime/SmallStrings.cpp:
3377         (JSC::SmallStrings::mark):
3378         * runtime/Structure.h:
3379         (JSC::Structure::markAggregate):
3380
3381 2009-08-10  Mark Rowe  <mrowe@apple.com>
3382         
3383         Reviewed by Darin Adler.
3384
3385         Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot.
3386
3387         * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since
3388         we implement the nothrow variants of new and new[].  The nothrow variant of delete is called
3389         explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated
3390         memory being passed to the system allocator to free.
3391
3392 2009-08-10  Jan Michael Alonzo  <jmalonzo@webkit.org>
3393
3394         [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug
3395         section. This file is already part of AllInOneFile in Release builds.
3396
3397         * GNUmakefile.am:
3398
3399 2009-08-10  Darin Adler  <darin@apple.com>
3400
3401         * wtf/FastMalloc.h: Fix build.
3402
3403 2009-08-10  Darin Adler  <darin@apple.com>
3404
3405         Reviewed by Mark Rowe.
3406
3407         FastMalloc.h has cross-platform code but marked as WinCE-only
3408         https://bugs.webkit.org/show_bug.cgi?id=28160
3409
3410         1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is
3411            not platform-specific.
3412         2) The code tried to override operator delete nothrow, which does not exist.
3413         3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code
3414            in FastMalloc.cpp checks only if the macro is defined.
3415
3416         * wtf/FastMalloc.h: See above.
3417         * wtf/FastMalloc.cpp: Ditto.
3418
3419 2009-08-10  Sam Weinig  <sam@webkit.org>
3420
3421         Reviewed by Anders Carlsson.
3422
3423         Fix an annoying indentation issue.
3424
3425         * runtime/DateConstructor.cpp:
3426         (JSC::constructDate):
3427
3428 2009-08-10  Xan Lopez  <xlopez@igalia.com>
3429
3430         Unreviewed build fix.
3431
3432         Add new files to makefile.
3433
3434         * GNUmakefile.am:
3435
3436 2009-08-10  Simon Hausmann  <simon.hausmann@nokia.com>
3437
3438         Fix compilation with the interpreter instead of the JIT by including
3439         PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h.
3440
3441         * runtime/ObjectConstructor.cpp:
3442
3443 2009-08-09  Oliver Hunt  <oliver@apple.com>
3444
3445         Reviewed by George Staikos.
3446
3447         JSON.stringify replacer returning undefined does not omit object properties
3448         https://bugs.webkit.org/show_bug.cgi?id=28118
3449
3450         Correct behaviour of stringify when using a replacer function that returns
3451         undefined.  This is a simple change to move the undefined value check to
3452         after the replacer function is called.  This means that the replacer function
3453         is now called for properties with the value undefined, however i've confirmed
3454         that this behaviour is correct.
3455         
3456         In addition I've made the cyclic object exception have a more useful error
3457         message.
3458
3459         * runtime/JSONObject.cpp:
3460         (JSC::Stringifier::appendStringifiedValue):
3461
3462 2009-08-08  Oliver Hunt  <oliver@apple.com>
3463
3464         Reviewed by Eric Seidel and Sam Weinig.
3465
3466         [ES5] Implement Object.getPrototypeOf
3467         https://bugs.webkit.org/show_bug.cgi?id=28114
3468
3469         Implement getPrototypeOf
3470
3471         * runtime/CommonIdentifiers.h:
3472         * runtime/JSGlobalObject.cpp:
3473         (JSC::JSGlobalObject::reset):
3474         * runtime/ObjectConstructor.cpp:
3475         (JSC::ObjectConstructor::ObjectConstructor):
3476         (JSC::objectConsGetPrototypeOf):
3477         * runtime/ObjectConstructor.h:
3478
3479 2009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3480
3481         Reviewed by Eric Seidel.
3482
3483         Allow custom memory allocation control for Noncopyable class
3484         https://bugs.webkit.org/show_bug.cgi?id=27879
3485
3486         Several classes which are inherited from Noncopyable are instantiated by
3487         operator new, so Noncopyable class has been inherited from FastAllocBase.
3488
3489         * wtf/Noncopyable.h:
3490
3491 2009-08-07  George Staikos <george.staikos@torchmobile.com> 
3492
3493         Reviewed by Eric Seidel.
3494
3495         https://bugs.webkit.org/show_bug.cgi?id=27305
3496         Implement WinCE-specific unicode layer.
3497         Written by George Staikos <george.staikos@torchmobile.com>
3498         with bug fixes by Yong Li <yong.li@torchmobile.com>
3499         refactored by Joe Mason <joe.mason@torchmobile.com> 
3500
3501         * wtf/Platform.h:
3502         * wtf/unicode/Unicode.h:
3503         * wtf/unicode/wince/UnicodeWince.cpp: Added.
3504         (WTF::Unicode::toLower):
3505         (WTF::Unicode::toUpper):
3506         (WTF::Unicode::foldCase):
3507         (WTF::Unicode::isPrintableChar):
3508         (WTF::Unicode::isSpace):
3509         (WTF::Unicode::isLetter):
3510         (WTF::Unicode::isUpper):
3511         (WTF::Unicode::isLower):
3512         (WTF::Unicode::isDigit):
3513         (WTF::Unicode::isPunct):
3514         (WTF::Unicode::toTitleCase):
3515         (WTF::Unicode::direction):
3516         (WTF::Unicode::category):
3517         (WTF::Unicode::decompositionType):
3518         (WTF::Unicode::combiningClass):
3519         (WTF::Unicode::mirroredChar):
3520         (WTF::Unicode::digitValue):
3521         * wtf/unicode/wince/UnicodeWince.h: Added.
3522         (WTF::Unicode::):
3523         (WTF::Unicode::isSeparatorSpace):
3524         (WTF::Unicode::isHighSurrogate):
3525         (WTF::Unicode::isLowSurrogate):
3526         (WTF::Unicode::isArabicChar):
3527         (WTF::Unicode::hasLineBreakingPropertyComplexContext):
3528         (WTF::Unicode::umemcasecmp):
3529         (WTF::Unicode::surrogateToUcs4):
3530
3531 2009-08-07  Yongjun Zhang  <yongjun.zhang@nokia.com>
3532
3533         Reviewed by Eric Seidel.
3534
3535         https://bugs.webkit.org/show_bug.cgi?id=28069
3536
3537         Add inline to help winscw compiler resolve specialized argument in 
3538         templated functions.  
3539
3540         * runtime/LiteralParser.cpp:
3541         (JSC::LiteralParser::Lexer::lexString):
3542
3543 2009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3544
3545         Reviewed by Eric Seidel.
3546
3547         Allow custom memory allocation control for RegExpObjectData struct
3548         http://bugs.webkit.org/show_bug.cgi?id=26750
3549
3550         Inherits RegExpObjectData struct from FastAllocBase because
3551         it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62
3552
3553         * runtime/RegExpObject.h:
3554
3555 2009-08-06  Norbert Leser  <norbert.leser@nokia.com>
3556
3557         Reviewed by Darin Adler.
3558
3559         Updated patch for bug #27059:
3560         Symbian platform always uses little endian encoding,
3561         regardless of compiler.
3562         We need to make sure that we correctly detect EABI architecture
3563         for armv5 targets on Symbian,
3564         where __EABI__ is set but not __ARM_EABI__
3565
3566         * wtf/Platform.h:
3567
3568 2009-08-06  Adam Barth  <abarth@webkit.org>
3569
3570         Unreviewed revert.
3571
3572         http://bugs.webkit.org/show_bug.cgi?id=27879
3573
3574         Revert 46877 because it broke GTK.
3575
3576         * wtf/Noncopyable.h:
3577
3578 2009-08-06  Gavin Barraclough  <barraclough@apple.com>
3579
3580         Reviewed by Oliver Hunt.
3581
3582         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
3583         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
3584
3585         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
3586         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
3587
3588         * bytecode/CodeBlock.cpp:
3589         (JSC::printStructureStubInfo):
3590             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
3591
3592         * bytecode/CodeBlock.h:
3593         (JSC::):
3594         (JSC::CallLinkInfo::seenOnce):
3595         (JSC::CallLinkInfo::setSeen):
3596         (JSC::MethodCallLinkInfo::seenOnce):
3597         (JSC::MethodCallLinkInfo::setSeen):
3598             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
3599
3600         * bytecode/StructureStubInfo.cpp:
3601         (JSC::StructureStubInfo::deref):
3602             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
3603
3604         * bytecode/StructureStubInfo.h:
3605         (JSC::StructureStubInfo::StructureStubInfo):
3606         (JSC::StructureStubInfo::initGetByIdSelf):
3607         (JSC::StructureStubInfo::initGetByIdProto):
3608         (JSC::StructureStubInfo::initGetByIdChain):
3609         (JSC::StructureStubInfo::initGetByIdSelfList):
3610         (JSC::StructureStubInfo::initGetByIdProtoList):
3611         (JSC::StructureStubInfo::initPutByIdTransition):
3612         (JSC::StructureStubInfo::initPutByIdReplace):
3613         (JSC::StructureStubInfo::seenOnce):
3614         (JSC::StructureStubInfo::setSeen):
3615             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
3616
3617         * bytecompiler/BytecodeGenerator.cpp:
3618         (JSC::BytecodeGenerator::emitGetById):
3619         (JSC::BytecodeGenerator::emitPutById):
3620             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
3621
3622         * jit/JIT.cpp:
3623         (JSC::JIT::privateCompileCTIMachineTrampolines):
3624         (JSC::JIT::unlinkCall):
3625             - Remove the "don't lazy link" stage of calls.
3626
3627         * jit/JIT.h:
3628         (JSC::JIT::compileCTIMachineTrampolines):
3629             - Remove the "don't lazy link" stage of calls.
3630
3631         * jit/JITCall.cpp:
3632         (JSC::JIT::compileOpCallSlowCase):
3633             - Remove the "don't lazy link" stage of calls.
3634
3635         * jit/JITStubs.cpp:
3636         (JSC::JITThunks::JITThunks):
3637         (JSC::JITThunks::tryCachePutByID):
3638         (JSC::JITThunks::tryCacheGetByID):
3639         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
3640         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
3641             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
3642
3643         * jit/JITStubs.h:
3644         (JSC::JITThunks::ctiStringLengthTrampoline):
3645         (JSC::JITStubs::):
3646             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
3647
3648         * wtf/PtrAndFlags.h:
3649         (WTF::PtrAndFlags::PtrAndFlags):
3650         (WTF::PtrAndFlags::operator!):
3651         (WTF::PtrAndFlags::operator->):
3652             - Add ! and -> operators, add constuctor with pointer argument.
3653
3654 2009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3655
3656         Reviewed by Adam Barth.
3657
3658         Allow custom memory allocation control for Noncopyable class
3659         https://bugs.webkit.org/show_bug.cgi?id=27879
3660
3661         Several classes which inherited from Noncopyable are instantiated by
3662         operator new, so Noncopyable class has been inherited from FastAllocBase.
3663
3664         * wtf/Noncopyable.h:
3665
3666 2009-08-06  Mark Rowe  <mrowe@apple.com>
3667
3668         Rubber-stamped by Sam Weinig.
3669
3670         Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.
3671
3672         * JavaScriptCore.xcodeproj/project.pbxproj:
3673
3674 2009-08-06  Mark Rowe  <mrowe@apple.com>
3675
3676         Bring a little order to our otherwise out of control lives.
3677
3678         * JavaScriptCore.xcodeproj/project.pbxproj:
3679
3680 2009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3681
3682         Reviewed by Darin Adler.
3683
3684         Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct
3685         https://bugs.webkit.org/show_bug.cgi?id=27877
3686
3687         Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by
3688         'new' in JavaScriptCore/jit/JITStubs.cpp:1229.
3689
3690         * bytecode/Instruction.h:
3691
3692 2009-08-05  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3693
3694         Reviewed by Darin Adler.
3695
3696         Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct
3697         https://bugs.webkit.org/show_bug.cgi?id=27875
3698
3699         Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by
3700         'new' in JavaScriptCore/parser/Nodes.cpp:1848.
3701
3702         * parser/Nodes.h:
3703
3704 2009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3705
3706         Reviewed by Gavin Barraclough.
3707
3708         Add floating point support for generic ARM port.
3709         https://bugs.webkit.org/show_bug.cgi?id=24986
3710
3711         * assembler/ARMAssembler.cpp:
3712         (JSC::ARMAssembler::doubleTransfer):
3713         * assembler/ARMAssembler.h:
3714         (JSC::ARM::):
3715         (JSC::ARMAssembler::):
3716         (JSC::ARMAssembler::faddd_r):
3717         (JSC::ARMAssembler::fsubd_r):
3718         (JSC::ARMAssembler::fmuld_r):
3719         (JSC::ARMAssembler::fcmpd_r):
3720         (JSC::ARMAssembler::fdtr_u):
3721         (JSC::ARMAssembler::fdtr_d):
3722         (JSC::ARMAssembler::fmsr_r):
3723         (JSC::ARMAssembler::fsitod_r):
3724         (JSC::ARMAssembler::fmstat):
3725         * assembler/MacroAssemblerARM.h:
3726         (JSC::MacroAssemblerARM::):
3727         (JSC::MacroAssemblerARM::supportsFloatingPoint):
3728         (JSC::MacroAssemblerARM::loadDouble):
3729         (JSC::MacroAssemblerARM::storeDouble):
3730         (JSC::MacroAssemblerARM::addDouble):
3731         (JSC::MacroAssemblerARM::subDouble):
3732         (JSC::MacroAssemblerARM::mulDouble):
3733         (JSC::MacroAssemblerARM::convertInt32ToDouble):
3734         (JSC::MacroAssemblerARM::branchDouble):
3735         * jit/JIT.h:
3736
3737 2009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
3738
3739         Reviewed by Gavin Barraclough.
3740
3741         Add JIT support for generic ARM port without optimizations.
3742         https://bugs.webkit.org/show_bug.cgi?id=24986
3743
3744         All JIT optimizations are disabled.
3745
3746         Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
3747         Signed off by Gabor Loki <loki@inf.u-szeged.hu>
3748
3749         * assembler/ARMAssembler.cpp:
3750         (JSC::ARMAssembler::baseIndexTransfer32):
3751         * assembler/AbstractMacroAssembler.h:
3752         (JSC::AbstractMacroAssembler::Imm32::Imm32):
3753         * assembler/MacroAssemblerARM.h:
3754         (JSC::MacroAssemblerARM::store32):
3755         (JSC::MacroAssemblerARM::move):
3756         (JSC::MacroAssemblerARM::branch32):
3757         (JSC::MacroAssemblerARM::add32):
3758         (JSC::MacroAssemblerARM::sub32):
3759         (JSC::MacroAssemblerARM::load32):
3760         * bytecode/CodeBlock.h:
3761         (JSC::CodeBlock::getBytecodeIndex):
3762         * jit/JIT.h:
3763         * jit/JITInlineMethods.h:
3764         (JSC::JIT::restoreArgumentReference):
3765         * jit/JITOpcodes.cpp:
3766         * jit/JITStubs.cpp:
3767         * jit/JITStubs.h:
3768         (JSC::JITStackFrame::returnAddressSlot):
3769         * wtf/Platform.h:
3770
3771 2009-08-04  Gavin Barraclough  <barraclough@apple.com>
3772
3773         Rubber Stamped by Oiver Hunt.
3774
3775         Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests.
3776         https://bugs.webkit.org/show_bug.cgi?id=27874
3777
3778         * yarr/RegexInterpreter.cpp:
3779         (JSC::Yarr::Interpreter::allocDisjunctionContext):
3780         (JSC::Yarr::Interpreter::freeDisjunctionContext):
3781         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
3782         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
3783
3784 2009-08-04  Oliver Hunt  <oliver@apple.com>
3785
3786         PPC64 Build fix
3787
3788         * wtf/Platform.h:
3789
3790 2009-08-04  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
3791
3792         Reviewed by Adam Treat
3793
3794         Explicitly include limits.h header when using INT_MAX and INT_MIN
3795
3796         * interpreter/Interpreter.cpp
3797
3798 2009-08-03  Harald Fernengel  <harald.fernengel@nokia.com>
3799
3800         Reviewed by Darin Adler.
3801
3802         Fix compile error for ambigous call to abs()
3803         https://bugs.webkit.org/show_bug.cgi?id=27873
3804
3805         Fix ambiguity in abs(long int) call by calling labs() instead
3806
3807         * wtf/DateMath.cpp: replace call to abs() with labs()
3808
3809 2009-08-03  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
3810
3811         Reviewed by Eric Seidel.
3812
3813         [Qt] Consolidate common gcc flags to WebKit.pri
3814         https://bugs.webkit.org/show_bug.cgi?id=27934
3815
3816         * JavaScriptCore.pro:
3817
3818 2009-08-03  Ada Chan  <adachan@apple.com>
3819
3820         Fixed the Tiger build.
3821
3822         * wtf/FastMalloc.cpp:
3823
3824 2009-08-03  Ada Chan  <adachan@apple.com>
3825
3826         Reviewed by Darin Adler.
3827
3828         Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash.
3829         https://bugs.webkit.org/show_bug.cgi?id=27900
3830
3831         * wtf/FastMalloc.cpp:
3832
3833 2009-08-03  Fumitoshi Ukai  <ukai@chromium.org>
3834
3835         Reviewed by Jan Alonzo.
3836
3837         Fix build break on Gtk/x86_64.
3838         https://bugs.webkit.org/show_bug.cgi?id=27936
3839
3840         Use JSVALUE64 for X86_64 LINUX, except Qt.
3841
3842         * wtf/Platform.h:
3843
3844 2009-08-02  Xan Lopez  <xlopez@igalia.com>
3845
3846         Fix the GTK+ build.
3847
3848         * wtf/Platform.h:
3849
3850 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3851
3852         Reviewed by Sam Weinig.
3853
3854         Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously
3855         crash with it enabled.
3856
3857         * wtf/Platform.h:
3858
3859 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3860
3861         Qt build fix.
3862
3863         Added JSAPIValueWrapper.cpp to the build.
3864
3865         * JavaScriptCore.pri:
3866
3867 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3868
3869         Windows build fix.
3870
3871         Exported symbols for JSAPIValueWrapper.
3872
3873         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3874         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3875
3876 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3877
3878         GTK build fix.
3879
3880         * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start.
3881
3882 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3883
3884         Qt build fix.
3885         
3886         * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX.
3887
3888 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3889
3890         Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject,
3891         and JSImmediate::toThisObject, and removed their exported symbols.
3892
3893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3894         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3895         * runtime/JSImmediate.cpp:
3896         * runtime/JSImmediate.h:
3897
3898 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
3899
3900         Reviewed by Mark Rowe.
3901
3902         Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64).
3903
3904         * wtf/Platform.h:
3905
3906 2009-08-02  Kevin Ollivier  <kevino@theolliviers.com>
3907
3908         Reviewed by Jan Alonzo.
3909
3910         Script for building the JavaScriptCore library for wx.
3911         https://bugs.webkit.org/show_bug.cgi?id=27619
3912
3913         * wscript: Added.
3914
3915 2009-08-02  Yong Li  <yong.li@torchmobile.com>
3916
3917         Reviewed by George Staikos.
3918
3919         DateMath depends on strftime and localtime, which need to be imported manually on WinCE
3920         https://bugs.webkit.org/show_bug.cgi?id=26558
3921
3922         * wtf/DateMath.cpp:
3923
3924 2009-08-01  David Kilzer  <ddkilzer@apple.com>
3925
3926         wtf/Threading.h: added include of Platform.h
3927
3928         Reviewed by Mark Rowe.
3929
3930         * wtf/Threading.h: Added #include "Platform.h" since this header
3931         uses PLATFORM() and other macros.
3932
3933 2009-08-01  Mark Rowe  <mrowe@apple.com>
3934
3935         Rubber-stamped by Oliver Hunt.
3936
3937         Roll out r46668 as it was misinformed.  ScopeChain is only used with placement new.
3938
3939         * runtime/ScopeChain.h:
3940
3941 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3942
3943         Allow custom memory allocation control for JavaScriptCore's HashMap class
3944         http://bugs.webkit.org/show_bug.cgi?id=27871
3945
3946         Inherits HashMap class from FastAllocBase because it has been
3947         instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148.
3948
3949         * wtf/RefPtrHashMap.h:
3950         (WTF::):
3951
3952 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3953
3954         Allow custom memory allocation control for JavaScriptCore's ScopeChain class
3955         https://bugs.webkit.org/show_bug.cgi?id=27834
3956
3957         Inherits ScopeChain class from FastAllocBase because it has been
3958         instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109.
3959
3960         * runtime/ScopeChain.h:
3961
3962 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3963
3964         Reviewed by Darin Adler.
3965
3966         Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct 
3967         https://bugs.webkit.org/show_bug.cgi?id=27833
3968
3969         Inherits RegExpConstructorPrivate class from FastAllocBase because it has been
3970         instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152.
3971
3972         * runtime/RegExpConstructor.cpp:
3973
3974 2009-07-31  Yong Li  <yong.li@torchmobile.com>
3975
3976         Reviewed by George Staikos.
3977
3978         Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER
3979         currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com>
3980         https://bugs.webkit.org/show_bug.cgi?id=27848
3981
3982         * wtf/CurrentTime.cpp:
3983         (WTF::currentSystemTime): get current time with GetCurrentFT
3984         (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount
3985         * wtf/Platform.h:
3986
3987 2009-07-31  Ada Chan  <adachan@apple.com>
3988
3989         Fixes the Windows release-PGO build.
3990
3991         Reviewed by Jon Honeycutt.
3992
3993         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread().
3994         * wtf/FastMalloc.cpp:
3995         (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build.
3996
3997 2009-07-31  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
3998
3999         Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp
4000         https://bugs.webkit.org/show_bug.cgi?id=27874
4001
4002         Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods.
4003
4004         * yarr/RegexInterpreter.cpp:
4005         (JSC::Yarr::Interpreter::allocDisjunctionContext):
4006         (JSC::Yarr::Interpreter::freeDisjunctionContext):
4007         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
4008         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
4009
4010 2009-07-30  Xan Lopez  <xlopez@igalia.com>
4011
4012         Reviewed by Jan Alonzo.
4013
4014         Fix compiler warning.
4015
4016         GCC does not like C++-style comments in preprocessor directives.
4017
4018         * wtf/Platform.h:
4019
4020 2009-07-30  John McCall  <rjmccall@apple.com>
4021
4022         Reviewed by Gavin Barraclough.
4023
4024         Optimize the X86_64 trampolines: avoid the need for filler arguments
4025         and move the stub-args area closer to the stack pointer.
4026
4027         * jit/JIT.h: adjust patch offsets because of slight code-size change 
4028         * jit/JITCode.h:
4029         (JSC::JITCode::execute): don't pass filler args
4030         * jit/JITStubs.cpp:
4031         (ctiTrampoline): (X86_64): push args onto stack, use args directly
4032         (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement
4033         (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement
4034         * jit/JITStubs.h:
4035         (JITStackFrame): (X86_64): move args area earlier
4036         (ctiTrampoline): remove filler args from prototype
4037
4038 2009-07-30  Gavin Barraclough  <barraclough@apple.com>
4039
4040         Temporarily revert r46618 since this is b0rking on Linux.
4041
4042 2009-07-23  Gavin Barraclough  <barraclough@apple.com>
4043
4044         Reviewed by Oliver Hunt.
4045
4046         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
4047         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
4048
4049         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
4050         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
4051
4052         * bytecode/CodeBlock.cpp:
4053         (JSC::printStructureStubInfo):
4054             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
4055
4056         * bytecode/CodeBlock.h:
4057         (JSC::):
4058         (JSC::CallLinkInfo::seenOnce):
4059         (JSC::CallLinkInfo::setSeen):
4060         (JSC::MethodCallLinkInfo::seenOnce):
4061         (JSC::MethodCallLinkInfo::setSeen):
4062             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
4063
4064         * bytecode/StructureStubInfo.cpp:
4065         (JSC::StructureStubInfo::deref):
4066             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
4067
4068         * bytecode/StructureStubInfo.h:
4069         (JSC::StructureStubInfo::StructureStubInfo):
4070         (JSC::StructureStubInfo::initGetByIdSelf):
4071         (JSC::StructureStubInfo::initGetByIdProto):
4072         (JSC::StructureStubInfo::initGetByIdChain):
4073         (JSC::StructureStubInfo::initGetByIdSelfList):
4074         (JSC::StructureStubInfo::initGetByIdProtoList):
4075         (JSC::StructureStubInfo::initPutByIdTransition):
4076         (JSC::StructureStubInfo::initPutByIdReplace):
4077         (JSC::StructureStubInfo::seenOnce):
4078         (JSC::StructureStubInfo::setSeen):
4079             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
4080
4081         * bytecompiler/BytecodeGenerator.cpp:
4082         (JSC::BytecodeGenerator::emitGetById):
4083         (JSC::BytecodeGenerator::emitPutById):
4084             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
4085
4086         * jit/JIT.cpp:
4087         (JSC::JIT::privateCompileCTIMachineTrampolines):
4088         (JSC::JIT::unlinkCall):
4089             - Remove the "don't lazy link" stage of calls.
4090
4091         * jit/JIT.h:
4092         (JSC::JIT::compileCTIMachineTrampolines):
4093             - Remove the "don't lazy link" stage of calls.
4094
4095         * jit/JITCall.cpp:
4096         (JSC::JIT::compileOpCallSlowCase):
4097             - Remove the "don't lazy link" stage of calls.
4098
4099         * jit/JITStubs.cpp:
4100         (JSC::JITThunks::JITThunks):
4101         (JSC::JITThunks::tryCachePutByID):
4102         (JSC::JITThunks::tryCacheGetByID):
4103         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
4104         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
4105             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
4106
4107         * jit/JITStubs.h:
4108         (JSC::JITThunks::ctiStringLengthTrampoline):
4109         (JSC::JITStubs::):
4110             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
4111
4112         * wtf/PtrAndFlags.h:
4113         (WTF::PtrAndFlags::PtrAndFlags):
4114         (WTF::PtrAndFlags::operator!):
4115         (WTF::PtrAndFlags::operator->):
4116             - Add ! and -> operators, add constuctor with pointer argument.
4117
4118 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
4119
4120         Reviewed by Gavin Barraclough.
4121
4122         Fixed failing tests seen on Windows buildbot.
4123
4124         * jit/JITStubs.cpp:
4125         (JSC::DEFINE_STUB_FUNCTION):
4126         * jit/JITStubs.h:
4127         (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result,
4128         regardless of compiler. gcc on mac uses 32-bit values for bool,
4129         but gcc on linux and MSVC on Windows use 8-bit values.
4130
4131 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
4132
4133         Windows build fix: added missing symbols on Windows.
4134
4135         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4136         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4137
4138 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
4139
4140         Windows build fix: removed stale symbols on Windows.
4141
4142         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4143         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4144
4145 === End merge of nitro-extreme branch 2009-07-30 ===
4146
4147 2009-07-20  Geoffrey Garen  <ggaren@apple.com>
4148
4149         Fixed a post-review typo in r46066 that caused tons of test failures.
4150         
4151         SunSpider reports no change.
4152
4153         * runtime/JSArray.cpp:
4154         (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid
4155         uninitialized members at the end.
4156
4157 2009-07-20  Geoffrey Garen  <ggaren@apple.com>
4158
4159         Windows WebKit build fix: Added some missing exports.
4160
4161         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4162         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4163
4164 2009-07-17  Geoffrey Garen  <ggaren@apple.com>
4165
4166         Reviewed by Sam Weinig.
4167
4168         Get the branch working on windows.
4169         https://bugs.webkit.org/show_bug.cgi?id=27391
4170         
4171         SunSpider says 0.3% faster.
4172
4173         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4174         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated
4175         MSVC export lists to fix linker errors.
4176
4177         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed