Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
2
3         Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since
4         PLATFORM(CF) is not defined on Windows.
5         
6         We'll need to enable the GC activity callback some other way, but this
7         change should get the build back to normal.
8
9         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10
11         * runtime/GCActivityCallbackCF.cpp: Make it easier to detect this error
12         in the future with an explicit error message.
13
14 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
15
16         Try to fix Windows build: update .def file.
17
18         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
19
20 2010-08-03  Nathan Lawrence  <nlawrence@apple.com>
21
22         Reviewed by Oliver Hunt.
23
24         https://bugs.webkit.org/show_bug.cgi?id=41318
25         GC should reclaim garbage even when new objects are not being allocated rapidly
26
27         Added a callback in JavaScriptCore that gets triggered after an
28         allocation causes the heap to reset.  This is useful for adding a
29         timer that will trigger garbage collection after the "last" allocation.
30
31         Also needed was to add lock and unlock methods to JSLock that needed
32         only a JSGlobalData object versus an ExecState object.
33
34         * CMakeLists.txt:
35         * GNUmakefile.am:
36         * JavaScriptCore.exp:
37         * JavaScriptCore.gypi:
38         * JavaScriptCore.pro:
39         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
40         * JavaScriptCore.xcodeproj/project.pbxproj:
41         * jit/JITPropertyAccess.cpp:
42         (JSC::JIT::emit_op_put_by_val):
43         * runtime/Collector.cpp:
44         (JSC::Heap::Heap):
45         (JSC::Heap::reset):
46         (JSC::Heap::setActivityCallback):
47         * runtime/Collector.h:
48         * runtime/GCActivityCallback.cpp: Added.
49         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
50         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
51         (JSC::DefaultGCActivityCallback::operator()):
52         * runtime/GCActivityCallback.h: Added.
53         (JSC::GCActivityCallback::~GCActivityCallback):
54         (JSC::GCActivityCallback::operator()):
55         (JSC::GCActivityCallback::GCActivityCallback):
56         (JSC::DefaultGCActivityCallback::create):
57         * runtime/GCActivityCallbackCF.cpp: Added.
58         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
59         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
60         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
61         (JSC::DefaultGCActivityCallback::operator()):
62         * runtime/JSLock.cpp:
63         (JSC::JSLock::JSLock):
64         * runtime/JSLock.h:
65
66 2010-08-02  Kevin Ollivier  <kevino@theolliviers.com>
67
68         [wx] Build fix after removal of need to compile ExecutableAllocatorPosix.cpp
69
70         * wscript:
71
72 2010-08-02  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
73
74         Reviewed by Simon Hausmann.
75
76         [QT] build fix for symbian
77         https://bugs.webkit.org/show_bug.cgi?id=43234
78
79         1) wrong order of passing param's
80         2) static_cast complains on symbian so using reinterpret_cast
81
82         No new tests added. Just a build fix for qt symbian
83
84         * wtf/PageAllocation.cpp:
85         (WTF::PageAllocation::commit):
86         (WTF::PageAllocation::decommit):
87         (WTF::PageAllocation::reserve):
88
89 2010-07-30  Luiz Agostini  <luiz.agostini@openbossa.org>
90
91         Reviewed by Simon Fraser.
92
93         Enabling view modes to all platforms
94         https://bugs.webkit.org/show_bug.cgi?id=37505
95
96         Removing ENABLE_WIDGETS_10_SUPPORT flag.
97
98         As view mode media feature is not part of widget 1.0 specification
99         any more the ENABLE_WIDGETS_10_SUPPORT flag may be removed. The only use
100         of this flag was related to view mode media feature implementation in Qt. 
101
102         * wtf/Platform.h:
103
104 2010-07-30  Andy Estes  <aestes@apple.com>
105
106         Reviewed by David Kilzer.
107
108         Add Xcode support for compiling WebKit against iOS SDKs.
109         https://bugs.webkit.org/show_bug.cgi?id=42796
110
111         * Configurations/Base.xcconfig:
112         * Configurations/DebugRelease.xcconfig:
113         * Configurations/FeatureDefines.xcconfig:
114
115 2010-07-30  Dumitru Daniliuc  <dumi@chromium.org>
116
117         Reviewed by Davin Levin.
118
119         Added a yield() function.
120         https://bugs.webkit.org/show_bug.cgi?id=42843
121
122         * JavaScriptCore.exp:
123         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
124         * wtf/Threading.h:
125         * wtf/ThreadingPthreads.cpp:
126         (WTF::yield):
127         * wtf/ThreadingWin.cpp:
128         (WTF::yield):
129         * wtf/gtk/ThreadingGtk.cpp:
130         (WTF::yield):
131         * wtf/qt/ThreadingQt.cpp:
132         (WTF::yield):
133
134 2010-07-30  Rafael Antognolli  <antognolli@profusion.mobi>
135
136         Reviewed by Antonio Gomes.
137
138         [EFL] Add library version and soname to EFL generated libraries and binary.
139         https://bugs.webkit.org/show_bug.cgi?id=43212
140
141         Add version and soname to libjavascriptcore.so and libwtf.so in case of
142         linking as shared libraries, and version to jsc executable.
143
144         * CMakeLists.txt:
145         * jsc/CMakeLists.txt:
146         * wtf/CMakeLists.txt:
147
148 2010-07-30  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
149
150         Reviewed by Simon Hausmann.
151
152         [QT] build fix for symbian
153         https://bugs.webkit.org/show_bug.cgi?id=43234
154
155         * wtf/PageAllocation.h:
156         (WTF::PageAllocation::PageAllocation):
157
158 2010-07-29  Sheriff Bot  <webkit.review.bot@gmail.com>
159
160         Unreviewed, rolling out r64313.
161         http://trac.webkit.org/changeset/64313
162         https://bugs.webkit.org/show_bug.cgi?id=43233
163
164         Some Chromium bots are not happy with it for some unknown
165         reason. (Requested by dumi on #webkit).
166
167         * JavaScriptCore.exp:
168         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
169         * wtf/Threading.h:
170         * wtf/ThreadingPthreads.cpp:
171         * wtf/ThreadingWin.cpp:
172         * wtf/gtk/ThreadingGtk.cpp:
173         * wtf/qt/ThreadingQt.cpp:
174
175 2010-07-29  Sheriff Bot  <webkit.review.bot@gmail.com>
176
177         Unreviewed, rolling out r64302.
178         http://trac.webkit.org/changeset/64302
179         https://bugs.webkit.org/show_bug.cgi?id=43223
180
181         Assertion is bogus (Requested by olliej on #webkit).
182
183         * assembler/ARMAssembler.cpp:
184         (JSC::ARMAssembler::executableCopy):
185         * assembler/AssemblerBuffer.h:
186         (JSC::AssemblerBuffer::putShortUnchecked):
187         (JSC::AssemblerBuffer::putIntUnchecked):
188         (JSC::AssemblerBuffer::putInt64Unchecked):
189         * jit/JITStubs.cpp:
190         * pcre/pcre_compile.cpp:
191         (jsRegExpCompile):
192         * wtf/FastMalloc.cpp:
193         (WTF::PageHeapAllocator::New):
194         (WTF::TCMalloc_Central_FreeList::Populate):
195         * wtf/MD5.cpp:
196         (WTF::reverseBytes):
197         (WTF::MD5::addBytes):
198         (WTF::MD5::checksum):
199         * wtf/StdLibExtras.h:
200         * wtf/Vector.h:
201         (WTF::VectorBuffer::inlineBuffer):
202         * wtf/qt/StringQt.cpp:
203         (WebCore::String::String):
204
205 2010-07-29  Michael Saboff  <msaboff@apple.com>
206
207         Reviewed by Gavin Barraclough.
208
209         Changed the handling for removing and adding elements at the front
210         of an array.  The code now keeps a bias that indicates the amount of
211         JSValue sized holes are prior to the ArrayStorage block.  This means
212         that shift operations are now memmove's of the header part of
213         the ArrayStorage and unshift operations are similar, but may require a
214         realloc first to create the space.  Similar operations are performed
215         for special cases of splice and slice.
216         Also optimized the new Array(size) case so that we don't allocate and
217         initialize array elements until the JS code starts using elements.
218         The array growth code is slightly more aggressive for initial growth
219         based on size growth of any previous array.
220
221         * Configurations/JavaScriptCore.xcconfig:
222         * jit/JITPropertyAccess.cpp:
223         (JSC::JIT::emit_op_get_by_val):
224         (JSC::JIT::emit_op_put_by_val):
225         (JSC::JIT::privateCompilePatchGetArrayLength):
226         * jit/JITPropertyAccess32_64.cpp:
227         (JSC::JIT::emit_op_get_by_val):
228         (JSC::JIT::emit_op_put_by_val):
229         (JSC::JIT::privateCompilePatchGetArrayLength):
230         * runtime/ArrayPrototype.cpp:
231         (JSC::arrayProtoFuncShift):
232         (JSC::arrayProtoFuncSplice):
233         (JSC::arrayProtoFuncUnShift):
234         * runtime/JSArray.cpp:
235         (JSC::JSArray::JSArray):
236         (JSC::JSArray::~JSArray):
237         (JSC::JSArray::getOwnPropertySlot):
238         (JSC::JSArray::getOwnPropertyDescriptor):
239         (JSC::JSArray::put):
240         (JSC::JSArray::putSlowCase):
241         (JSC::JSArray::deleteProperty):
242         (JSC::JSArray::getOwnPropertyNames):
243         (JSC::JSArray::getNewVectorLength):
244         (JSC::JSArray::increaseVectorLength):
245         (JSC::JSArray::increaseVectorPrefixLength):
246         (JSC::JSArray::setLength):
247         (JSC::JSArray::pop):
248         (JSC::JSArray::push):
249         (JSC::JSArray::shiftCount):
250         (JSC::JSArray::unshiftCount):
251         (JSC::JSArray::sortNumeric):
252         (JSC::JSArray::sort):
253         (JSC::JSArray::fillArgList):
254         (JSC::JSArray::copyToRegisters):
255         (JSC::JSArray::compactForSorting):
256         (JSC::JSArray::subclassData):
257         (JSC::JSArray::setSubclassData):
258         (JSC::JSArray::checkConsistency):
259         * runtime/JSArray.h:
260         (JSC::JSArray::length):
261         (JSC::JSArray::canGetIndex):
262         (JSC::JSArray::getIndex):
263         (JSC::JSArray::setIndex):
264         (JSC::JSArray::uncheckedSetIndex):
265         (JSC::JSArray::arrayStorage):
266         (JSC::JSArray::setArrayStorage):
267         (JSC::JSArray::markChildrenDirect):
268
269 2010-07-29  Michael Saboff  <msaboff@apple.com>
270
271         Reviewed by Darin Adler.
272
273         Changed MINIMUM_CELL_SIZE to be fixed at 64 bytes.
274
275         * runtime/Collector.h:
276
277 2010-07-28  Dumitru Daniliuc  <dumi@chromium.org>
278
279         Reviewed by David Levin.
280
281         Added a yield() function.
282         https://bugs.webkit.org/show_bug.cgi?id=42843
283
284         * JavaScriptCore.exp:
285         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
286         * wtf/Threading.h:
287         * wtf/ThreadingPthreads.cpp:
288         (WTF::yield):
289         * wtf/ThreadingWin.cpp:
290         (WTF::yield):
291         * wtf/gtk/ThreadingGtk.cpp:
292         (WTF::yield):
293         * wtf/qt/ThreadingQt.cpp:
294         (WTF::yield):
295
296 2010-07-29  Michael Saboff  <msaboff@apple.com>
297
298         Reviewed by Oliver Hunt.
299
300         Fixed issue where RegExp greedy jit code loops when no input is
301         consumed.  Changed the code to only loop if some input was consumed,
302         but fall through if we successfully match an alternative that 
303         doesn't consume any input.
304         https://bugs.webkit.org/show_bug.cgi?id=42664
305
306         * yarr/RegexJIT.cpp:
307         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
308
309 2010-07-29  Gabor Loki  <loki@webkit.org>
310
311         Reviewed by Gavin Barraclough.
312
313         Avoid increasing required alignment of target type warning on ARM
314         https://bugs.webkit.org/show_bug.cgi?id=38045
315
316         The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
317         sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
318         increases required alignment of target type warnings.
319         Casting the type of [pointer to Type2] object to void* bypasses the
320         warning.
321
322         * assembler/ARMAssembler.cpp:
323         (JSC::ARMAssembler::executableCopy):
324         * assembler/AssemblerBuffer.h:
325         (JSC::AssemblerBuffer::putShortUnchecked):
326         (JSC::AssemblerBuffer::putIntUnchecked):
327         (JSC::AssemblerBuffer::putInt64Unchecked):
328         * jit/JITStubs.cpp:
329         * pcre/pcre_compile.cpp:
330         (jsRegExpCompile):
331         * wtf/FastMalloc.cpp:
332         (WTF::PageHeapAllocator::New):
333         (WTF::TCMalloc_Central_FreeList::Populate):
334         * wtf/MD5.cpp:
335         (WTF::reverseBytes):
336         (WTF::MD5::addBytes):
337         (WTF::MD5::checksum):
338         * wtf/StdLibExtras.h:
339         (reinterpret_cast_ptr):
340         * wtf/Vector.h:
341         (WTF::VectorBuffer::inlineBuffer):
342         * wtf/qt/StringQt.cpp:
343         (WebCore::String::String):
344
345 2010-07-29  Martin Robinson  <mrobinson@igalia.com>
346
347         Unreviewed build fix.
348
349         Include a missing header in the source list to fix 'make dist.'
350
351         * GNUmakefile.am: Include missing header.
352
353 2010-07-28  Gavin Barraclough  <barraclough@apple.com>
354
355         Reviewed by Darin Adler.
356
357         Bug 43162 - Add support for MADV_FREE to PageAllocation.
358
359         * wtf/PageAllocation.cpp:
360         (WTF::PageAllocation::commit):
361         (WTF::PageAllocation::decommit):
362
363 2010-07-27  Kinuko Yasuda  <kinuko@chromium.org>
364
365         Reviewed by Ojan Vafai.
366
367         Add FILE_SYSTEM build flag for FileSystem API
368         https://bugs.webkit.org/show_bug.cgi?id=42915
369
370         * Configurations/FeatureDefines.xcconfig:
371
372 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
373
374         Temporarily rolling out http://trac.webkit.org/changeset/64177,
375         this seems to give QT ARM/Win a headache (specifically, looks
376         like structure layour differs, objects get too large - 
377         "..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:41:"
378         "error: size of array 'dummyclass_fits_in_cell' is negative").
379
380         * jit/JITPropertyAccess.cpp:
381         (JSC::JIT::emit_op_get_by_val):
382         (JSC::JIT::emit_op_put_by_val):
383         (JSC::JIT::privateCompilePatchGetArrayLength):
384         * jit/JITPropertyAccess32_64.cpp:
385         (JSC::JIT::emit_op_get_by_val):
386         (JSC::JIT::emit_op_put_by_val):
387         (JSC::JIT::privateCompilePatchGetArrayLength):
388         * runtime/ArrayPrototype.cpp:
389         (JSC::arrayProtoFuncShift):
390         (JSC::arrayProtoFuncSplice):
391         (JSC::arrayProtoFuncUnShift):
392         * runtime/JSArray.cpp:
393         (JSC::increasedVectorLength):
394         (JSC::JSArray::JSArray):
395         (JSC::JSArray::~JSArray):
396         (JSC::JSArray::getOwnPropertySlot):
397         (JSC::JSArray::getOwnPropertyDescriptor):
398         (JSC::JSArray::put):
399         (JSC::JSArray::putSlowCase):
400         (JSC::JSArray::deleteProperty):
401         (JSC::JSArray::getOwnPropertyNames):
402         (JSC::JSArray::increaseVectorLength):
403         (JSC::JSArray::setLength):
404         (JSC::JSArray::pop):
405         (JSC::JSArray::push):
406         (JSC::JSArray::sortNumeric):
407         (JSC::JSArray::sort):
408         (JSC::JSArray::fillArgList):
409         (JSC::JSArray::copyToRegisters):
410         (JSC::JSArray::compactForSorting):
411         (JSC::JSArray::subclassData):
412         (JSC::JSArray::setSubclassData):
413         (JSC::JSArray::checkConsistency):
414         * runtime/JSArray.h:
415         (JSC::JSArray::length):
416         (JSC::JSArray::canGetIndex):
417         (JSC::JSArray::getIndex):
418         (JSC::JSArray::setIndex):
419         (JSC::JSArray::uncheckedSetIndex):
420         (JSC::JSArray::markChildrenDirect):
421
422 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
423
424         Speculative build fix for Chromium/Win
425
426         * wtf/Platform.h:
427
428 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
429
430         Oh! that makes more sense!  Maybe C++-style comments are bringing teh bad mojo.
431
432         * wtf/Platform.h:
433
434 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
435
436         Speculative build fix for GTK/64 ... seems to be barfing on a comment o_O
437
438         * wtf/Platform.h:
439
440 2010-07-27  Michael Saboff  <msaboff@apple.com>
441
442         Reviewed by Gavin Barraclough.
443
444         Changed the handling for removing and adding elements at the front
445         of an array.  The code now keeps a bias that indicates the amount of
446         JSValue sized holes are prior to the ArrayStorage block.  This means
447         that shift operations are now memmove's of the header part of
448         the ArrayStorage and unshift operations are similar, but may require a
449         realloc first to create the space.  Similar operations are performed
450         for special cases of splice and slice.
451         Also optimized the new Array(size) case so that we don't allocate and
452         initialize array elements until the JS code starts using elements.
453         The array growth code is slightly more aggressive for initial growth
454         based on size growth of any previous array.
455
456         * Configurations/JavaScriptCore.xcconfig:
457         * jit/JITPropertyAccess.cpp:
458         (JSC::JIT::emit_op_get_by_val):
459         (JSC::JIT::emit_op_put_by_val):
460         (JSC::JIT::privateCompilePatchGetArrayLength):
461         * jit/JITPropertyAccess32_64.cpp:
462         (JSC::JIT::emit_op_get_by_val):
463         (JSC::JIT::emit_op_put_by_val):
464         (JSC::JIT::privateCompilePatchGetArrayLength):
465         * runtime/ArrayPrototype.cpp:
466         (JSC::arrayProtoFuncShift):
467         (JSC::arrayProtoFuncSplice):
468         (JSC::arrayProtoFuncUnShift):
469         * runtime/JSArray.cpp:
470         (JSC::JSArray::JSArray):
471         (JSC::JSArray::~JSArray):
472         (JSC::JSArray::getOwnPropertySlot):
473         (JSC::JSArray::getOwnPropertyDescriptor):
474         (JSC::JSArray::put):
475         (JSC::JSArray::putSlowCase):
476         (JSC::JSArray::deleteProperty):
477         (JSC::JSArray::getOwnPropertyNames):
478         (JSC::JSArray::getNewVectorLength):
479         (JSC::JSArray::increaseVectorLength):
480         (JSC::JSArray::increaseVectorPrefixLength):
481         (JSC::JSArray::setLength):
482         (JSC::JSArray::pop):
483         (JSC::JSArray::push):
484         (JSC::JSArray::shiftCount):
485         (JSC::JSArray::unshiftCount):
486         (JSC::JSArray::sortNumeric):
487         (JSC::JSArray::sort):
488         (JSC::JSArray::fillArgList):
489         (JSC::JSArray::copyToRegisters):
490         (JSC::JSArray::compactForSorting):
491         (JSC::JSArray::subclassData):
492         (JSC::JSArray::setSubclassData):
493         (JSC::JSArray::checkConsistency):
494         * runtime/JSArray.h:
495         (JSC::JSArray::length):
496         (JSC::JSArray::canGetIndex):
497         (JSC::JSArray::getIndex):
498         (JSC::JSArray::setIndex):
499         (JSC::JSArray::uncheckedSetIndex):
500         (JSC::JSArray::arrayStorage):
501         (JSC::JSArray::setArrayStorage):
502         (JSC::JSArray::markChildrenDirect):
503
504 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
505
506         Reviewed by Oliver Hunt.
507
508         Bug 43089 - Cleanup JIT related switched in Platform.h
509
510         The code the enable to JIT checks every permutation of platform & OS individually, but
511         now the JIT is enabled on the majority much all x86/x86-64/ARM/MIPS systems.  It should
512         be cleaner to just enable by default on these platforms, and explicitly disable on configs
513         that don't aren't supported.
514
515         Also, rename ENABLE_JIT_OPTIMIZE_MOD to ENABLE_JIT_USE_SOFT_MODULO.  I always find this
516         confusing since enabling this "optimization" would be possible, but would be a regression
517         on x86/x86-64 systems!  I think it's clearer to reserve "JIT_OPTIMIZE" for compiler
518         technologies applicable to all platforms, and make a more optional behaviour like this a
519         "USE".
520
521         * jit/ExecutableAllocator.h:
522         (JSC::ExecutableAllocator::cacheFlush):
523         * jit/JIT.h:
524         * jit/JITArithmetic.cpp:
525         (JSC::JIT::emit_op_mod):
526         (JSC::JIT::emitSlow_op_mod):
527         * jit/JITArithmetic32_64.cpp:
528         (JSC::JIT::emit_op_mod):
529         (JSC::JIT::emitSlow_op_mod):
530         * jit/JITOpcodes.cpp:
531         (JSC::JIT::privateCompileCTIMachineTrampolines):
532         * jit/JITOpcodes32_64.cpp:
533         (JSC::JIT::privateCompileCTIMachineTrampolines):
534         * wtf/Platform.h:
535
536 2010-07-27  James Robinson  <jamesr@chromium.org>
537
538         Reviewed by Darin Fisher.
539
540         [chromium] Make PLATFORM(CHROMIUM) and not OS(MAC) turn USE(GLES2_RENDERING) on
541         https://bugs.webkit.org/show_bug.cgi?id=43084
542
543         This turns USE(GLES2_RENDERING) on for chromium on windows/linux.  This causes no
544         change in behavior, that's all controlled by ENABLE() macros that are currently off.
545
546         * wtf/Platform.h:
547
548 2010-07-23  Helder Correia  <heldercorreia@codeaurora.org>
549
550         Reviewed by Darin Adler.
551
552         Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
553         failing. For canvas image data manipulation, the values passed should
554         be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
555         to expect wrapping rather than clamping, and add some new checkings.
556         https://bugs.webkit.org/show_bug.cgi?id=40272
557
558         * runtime/JSByteArray.h:
559         (JSC::JSByteArray::setIndex):
560         (JSC::JSByteArray::JSByteArray):
561
562 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
563
564         Reviewed by Oliver Hunt.
565
566         Bug 42621 - Add a bump allocator for the YARR interpreter
567
568         The regex engine requires lifo allocation, however currently uses the general purpose
569         malloc/free memory allocation.  A simple bump pointer allocator should provide a lower
570         overhead allocation solution.
571
572         When using YARR interpreter, 15% progression on v8-regex.
573
574         * JavaScriptCore.xcodeproj/project.pbxproj:
575         * runtime/JSGlobalData.h:
576         * runtime/RegExp.cpp:
577         (JSC::RegExp::compile):
578         * wtf/BumpPointerAllocator.h: Added.
579         (WTF::BumpPointerPool::ensureCapacity):
580         (WTF::BumpPointerPool::alloc):
581         (WTF::BumpPointerPool::dealloc):
582         (WTF::BumpPointerPool::operator new):
583         (WTF::BumpPointerPool::BumpPointerPool):
584         (WTF::BumpPointerPool::create):
585         (WTF::BumpPointerPool::shrink):
586         (WTF::BumpPointerPool::destroy):
587         (WTF::BumpPointerPool::ensureCapacityCrossPool):
588         (WTF::BumpPointerPool::deallocCrossPool):
589         (WTF::BumpPointerAllocator::BumpPointerAllocator):
590         (WTF::BumpPointerAllocator::~BumpPointerAllocator):
591         (WTF::BumpPointerAllocator::startAllocator):
592         (WTF::BumpPointerAllocator::stopAllocator):
593         * yarr/RegexInterpreter.cpp:
594         (JSC::Yarr::Interpreter::allocDisjunctionContext):
595         (JSC::Yarr::Interpreter::freeDisjunctionContext):
596         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
597         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
598         (JSC::Yarr::Interpreter::interpret):
599         (JSC::Yarr::Interpreter::Interpreter):
600         (JSC::Yarr::ByteCompiler::compile):
601         (JSC::Yarr::byteCompileRegex):
602         * yarr/RegexInterpreter.h:
603         (JSC::Yarr::BytecodePattern::BytecodePattern):
604
605 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
606
607         Windows build fix from Chromium/GTK build fix!
608
609         * wtf/PageAllocation.cpp:
610
611 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
612
613         Chromium/GTK build fix
614
615         * wtf/PageAllocation.cpp:
616
617 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
618
619         Build fix for !Mac platforms.
620
621         * Android.mk:
622         * CMakeLists.txt:
623         * GNUmakefile.am:
624         * JavaScriptCore.gypi:
625         * JavaScriptCore.pro:
626         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
627
628 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
629
630         Reviewed by Oliver Hunt.
631
632         Bug 43009 - Abstract out page allocation from executable allocators
633
634         It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
635
636         In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
637         I think this will match current behaviour for the next client we will want to port across (RegisterFile &
638         Collector).
639
640         * CMakeListsEfl.txt:
641         * GNUmakefile.am:
642         * JavaScriptCore.gypi:
643         * JavaScriptCore.pro:
644         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
645         * JavaScriptCore.xcodeproj/project.pbxproj:
646         * jit/ExecutableAllocator.cpp:
647         (JSC::ExecutableAllocator::intializePageSize):
648         (JSC::ExecutablePool::systemAlloc):
649         (JSC::ExecutablePool::systemRelease):
650         (JSC::ExecutableAllocator::isValid):
651         * jit/ExecutableAllocator.h:
652         (JSC::ExecutablePool::ExecutablePool):
653         (JSC::ExecutablePool::poolAllocate):
654         * jit/ExecutableAllocatorFixedVMPool.cpp:
655         (JSC::FixedVMPoolAllocator::release):
656         (JSC::FixedVMPoolAllocator::reuse):
657         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
658         (JSC::FixedVMPoolAllocator::alloc):
659         (JSC::FixedVMPoolAllocator::free):
660         (JSC::FixedVMPoolAllocator::isValid):
661         (JSC::FixedVMPoolAllocator::isWithinVMPool):
662         (JSC::ExecutablePool::systemAlloc):
663         (JSC::ExecutablePool::systemRelease):
664         * jit/ExecutableAllocatorPosix.cpp: Removed.
665         * jit/ExecutableAllocatorSymbian.cpp: Removed.
666         * jit/ExecutableAllocatorWin.cpp: Removed.
667         * wscript:
668         * wtf/PageAllocator.cpp: Added.
669         (WTF::protection):
670         (WTF::PageAllocation::commit):
671         (WTF::PageAllocation::decommit):
672         (WTF::PageAllocator::allocate):
673         (WTF::PageAllocator::reserve):
674         (WTF::PageAllocator::deallocate):
675         (WTF::PageAllocator::pagesize):
676         * wtf/PageAllocator.h: Added.
677         (WTF::PageAllocation::PageAllocation):
678         (WTF::PageAllocation::base):
679         (WTF::PageAllocation::size):
680         (WTF::PageAllocation::chunk):
681         (WTF::PageAllocation::operator!):
682         (WTF::PageAllocator::):
683
684 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
685
686         Rolling out r64097:64100, oops, more b0rked than I relized by my last changes, sorry!
687
688         * CMakeListsEfl.txt:
689         * GNUmakefile.am:
690         * JavaScriptCore.gypi:
691         * JavaScriptCore.pro:
692         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
693         * JavaScriptCore.xcodeproj/project.pbxproj:
694         * jit/ExecutableAllocator.cpp:
695         (JSC::ExecutableAllocator::reprotectRegion):
696         (JSC::ExecutableAllocator::cacheFlush):
697         * jit/ExecutableAllocator.h:
698         (JSC::ExecutablePool::ExecutablePool):
699         (JSC::ExecutablePool::poolAllocate):
700         * jit/ExecutableAllocatorFixedVMPool.cpp:
701         (JSC::FixedVMPoolAllocator::release):
702         (JSC::FixedVMPoolAllocator::reuse):
703         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
704         (JSC::FixedVMPoolAllocator::alloc):
705         (JSC::FixedVMPoolAllocator::free):
706         (JSC::FixedVMPoolAllocator::isValid):
707         (JSC::FixedVMPoolAllocator::isWithinVMPool):
708         (JSC::ExecutablePool::systemAlloc):
709         (JSC::ExecutablePool::systemRelease):
710         * jit/ExecutableAllocatorPosix.cpp: Added.
711         (JSC::ExecutableAllocator::intializePageSize):
712         (JSC::ExecutablePool::systemAlloc):
713         (JSC::ExecutablePool::systemRelease):
714         (JSC::ExecutableAllocator::isValid):
715         * jit/ExecutableAllocatorSymbian.cpp: Added.
716         (JSC::ExecutableAllocator::intializePageSize):
717         (JSC::ExecutablePool::systemAlloc):
718         (JSC::ExecutablePool::systemRelease):
719         (JSC::ExecutableAllocator::isValid):
720         * jit/ExecutableAllocatorWin.cpp: Added.
721         (JSC::ExecutableAllocator::intializePageSize):
722         (JSC::ExecutablePool::systemAlloc):
723         (JSC::ExecutablePool::systemRelease):
724         (JSC::ExecutableAllocator::isValid):
725         * wscript:
726         * wtf/PageAllocation.cpp: Removed.
727         * wtf/PageAllocation.h: Removed.
728
729 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
730
731         Speculative !debug build fix II.
732
733         * wtf/PageAllocation.h:
734         (WTF::PageAllocation::PageAllocation):
735
736 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
737
738         Speculative !debug build fix.
739
740         * wtf/PageAllocation.h:
741         (WTF::PageAllocation::PageAllocation):
742
743 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
744
745         Reviewed by Oliver Hunt.
746
747         Bug 43009 - Abstract out page allocation from executable allocators
748
749         It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
750
751         In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
752         I think this will match current behaviour for the next client we will want to port across (RegisterFile &
753         Collector).
754
755         * CMakeListsEfl.txt:
756         * GNUmakefile.am:
757         * JavaScriptCore.gypi:
758         * JavaScriptCore.pro:
759         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
760         * JavaScriptCore.xcodeproj/project.pbxproj:
761         * jit/ExecutableAllocator.cpp:
762         (JSC::ExecutableAllocator::intializePageSize):
763         (JSC::ExecutablePool::systemAlloc):
764         (JSC::ExecutablePool::systemRelease):
765         (JSC::ExecutableAllocator::isValid):
766         * jit/ExecutableAllocator.h:
767         (JSC::ExecutablePool::ExecutablePool):
768         (JSC::ExecutablePool::poolAllocate):
769         * jit/ExecutableAllocatorFixedVMPool.cpp:
770         (JSC::FixedVMPoolAllocator::release):
771         (JSC::FixedVMPoolAllocator::reuse):
772         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
773         (JSC::FixedVMPoolAllocator::alloc):
774         (JSC::FixedVMPoolAllocator::free):
775         (JSC::FixedVMPoolAllocator::isValid):
776         (JSC::FixedVMPoolAllocator::isWithinVMPool):
777         (JSC::ExecutablePool::systemAlloc):
778         (JSC::ExecutablePool::systemRelease):
779         * jit/ExecutableAllocatorPosix.cpp: Removed.
780         * jit/ExecutableAllocatorSymbian.cpp: Removed.
781         * jit/ExecutableAllocatorWin.cpp: Removed.
782         * wscript:
783         * wtf/PageAllocator.cpp: Added.
784         (WTF::protection):
785         (WTF::PageAllocation::commit):
786         (WTF::PageAllocation::decommit):
787         (WTF::PageAllocator::allocate):
788         (WTF::PageAllocator::reserve):
789         (WTF::PageAllocator::deallocate):
790         (WTF::PageAllocator::pagesize):
791         * wtf/PageAllocator.h: Added.
792         (WTF::PageAllocation::PageAllocation):
793         (WTF::PageAllocation::base):
794         (WTF::PageAllocation::size):
795         (WTF::PageAllocation::chunk):
796         (WTF::PageAllocation::operator!):
797         (WTF::PageAllocator::):
798
799 2009-10-30  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
800
801         Reviewed by Kenneth Rohde Christiansen.
802
803         [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml()
804
805         This ensures that long-running JavaScript (for example due to a modal alert() dialog),
806         will not trigger a deferred load after only 500ms (the default tokenizer delay) while
807         still giving a reasonable timeout (10 seconds) to prevent deadlock.
808
809         https://bugs.webkit.org/show_bug.cgi?id=29381
810
811         * runtime/TimeoutChecker.h: Add getter for the timeout interval
812
813 2010-07-25  Patrick Gansterer  <paroga@paroga.com>
814
815         Reviewed by Kent Tamura.
816
817         [WINCE] Buildfix for JSC in release mode
818         https://bugs.webkit.org/show_bug.cgi?id=42934
819
820         * jsc.cpp: Don't use __try on WinCE.
821
822 2010-07-24  Patrick Gansterer  <paroga@paroga.com>
823
824         Reviewed by Darin Adler.
825
826         [MSVC] Ensure 4 byte alignment on ARM
827         https://bugs.webkit.org/show_bug.cgi?id=42935
828
829         * jit/JITStubs.h: Added #pragma pack(4) around JITStackFrame.
830
831 2010-07-24  Patrick Gansterer  <paroga@paroga.com>
832
833         Reviewed by Darin Adler.
834
835         [WINCE] Cleanup defines in Platform.h
836         https://bugs.webkit.org/show_bug.cgi?id=42933
837
838         * wtf/Platform.h:
839
840 2010-07-23  Rafael Antognolli  <antognolli@profusion.mobi>
841
842         Reviewed by Antonio Gomes.
843
844         [EFL] Cleanup glib support (make it optional)
845         https://bugs.webkit.org/show_bug.cgi?id=42480
846
847         Remove gobject/GRefPtr.cpp if not using soup/glib.
848
849         * wtf/CMakeListsEfl.txt:
850
851 2010-07-23  Patrick Gansterer  <paroga@paroga.com>
852
853         Reviewed by Adam Roben.
854
855         [WINCE] Implement TCSpinLock.
856         https://bugs.webkit.org/show_bug.cgi?id=41792
857
858         Implement the SpinLock with InterlockedExchange from the Windows API.
859
860         * wtf/TCSpinLock.h:
861         (TCMalloc_SpinLock::Lock):
862         (TCMalloc_SpinLock::Unlock):
863         (TCMalloc_SpinLock::IsHeld):
864         (TCMalloc_SpinLock::Init):
865         (TCMalloc_SlowLock):
866
867 2010-07-22  Csaba Osztrogonác  <ossy@webkit.org>
868
869         Unreviewed rolling out r63947 and r63948, because they broke Qt Windows build.
870
871         * jit/JITStubs.cpp:
872         * jit/JITStubs.h:
873
874 2010-07-22  Gavin Barraclough  <barraclough@apple.com>
875
876         Eeeep! r63947 hosed all non-x86 builds!
877
878         * jit/JITStubs.h:
879
880 2010-07-22  Gavin Barraclough  <barraclough@apple.com>
881
882         Reviewed by Oliver Hunt.
883
884         Bug 42818 - [Qt] REGRESSION(63348): jsc is broken
885         Speculative fix, need fastcall conventions on Qt/Win.
886
887         * jit/JITStubs.cpp:
888         * jit/JITStubs.h:
889
890 2010-07-22  Oliver Hunt  <oliver@apple.com>
891
892         Reviewed by Gavin Barraclough.
893
894         Do more constant folding
895         https://bugs.webkit.org/show_bug.cgi?id=42867
896
897         Constant fold a few more operations.  SunSpider says this is
898         a win but I suspect that's just code motion at play.
899
900         * parser/ASTBuilder.h:
901         (JSC::ASTBuilder::makeModNode):
902         (JSC::ASTBuilder::makeURightShiftNode):
903         (JSC::ASTBuilder::makeBitOrNode):
904         (JSC::ASTBuilder::makeBitAndNode):
905         (JSC::ASTBuilder::makeBitXOrNode):
906         (JSC::ASTBuilder::makeBinaryNode):
907
908 2010-07-22  Kent Hansen  <kent.hansen@nokia.com>
909
910         Reviewed by Kent Tamura.
911
912         Error properties of the Global Object are missing the DontEnum attribute
913         https://bugs.webkit.org/show_bug.cgi?id=28771
914
915         Add the attributes to become spec compliant.
916
917         * runtime/JSGlobalObject.cpp:
918         (JSC::JSGlobalObject::reset):
919
920 2010-07-20  Steve Falkenburg  <sfalken@apple.com>
921
922         Reviewed by Adam Roben.
923
924         WebKit on Windows should build optionally with an unversioned ICU DLL
925         https://bugs.webkit.org/show_bug.cgi?id=42722
926         <rdar://problem/8211743> JavaScriptCore needs to link against unversioned ICU
927         
928         Dynamically create a new header, ICUVersion.h, as part of build-generated-files.sh.
929         Header contains a preprocessor define (U_DISABLE_RENAMING) indicating to ICU whether the ICU API
930         should be namespaced with the current ICU version number. Proper value is determined
931         by checking for the presence of libicuuc.lib, the unversioned copy of ICU.
932         
933         To get the proper value for U_DISABLE_RENAMING into all source files, we force
934         the include of ICUVersion.h (our generated header) via the compiler options.
935         
936         Since the versioned and unversioned ICU have different filenames (libicuuc.lib vs icuuc.lib)
937         we copy the ICU lib to an intermediate location under obj with a common name. This
938         allows us to link properly with either without adding a new build configuration.
939
940         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
941         Copy ICU libs into a common location with a common name.
942         Add additional library search path to pick up icu lib.
943         Change ICU library filename specified to linker.
944         Add forced include of ICUVersion.h.
945         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Generate ICUVersion.h
946         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Add forced include of ICUVersion.h.
947         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
948         Copy ICU libs into a common location with a common name.
949         Add additional library search path to pick up icu lib.
950         Change ICU library filename specified to linker.
951         Add forced include of ICUVersion.h.
952         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
953         Copy ICU libs into a common location with a common name.
954         Add additional library search path to pick up icu lib.
955         Change ICU library filename specified to linker.
956         Add forced include of ICUVersion.h.
957
958 2010-07-20  Steve Falkenburg  <sfalken@apple.com>
959
960         Re-save vsprops files after no-op edits in Visual Studio
961         to fix manual edit issues.
962
963 2010-07-20  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
964
965         Reviewed by Steve Block.
966
967         Need to be able to configure Geolocation policy regarding user permissions
968         https://bugs.webkit.org/show_bug.cgi?id=42068
969
970         If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
971         by default 
972
973         * wtf/Platform.h:
974         
975 2010-07-20  Sheriff Bot  <webkit.review.bot@gmail.com>
976
977         Unreviewed, rolling out r63742.
978         http://trac.webkit.org/changeset/63742
979         https://bugs.webkit.org/show_bug.cgi?id=42641
980
981         Broke Leopard Intel build. (Requested by bbandix on #webkit).
982
983         * wtf/Platform.h:
984
985 2010-07-20  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
986
987         Reviewed by Steve Block.
988
989         Need to be able to configure Geolocation policy regarding user permissions
990         https://bugs.webkit.org/show_bug.cgi?id=42068
991
992         If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
993         by default 
994
995         * wtf/Platform.h:
996         
997 2010-07-19  Dirk Schulze  <krit@webkit.org>
998
999         Reviewed by Nikolas Zimmermann.
1000
1001         SVG CleanUp of SVGPathData parsing
1002         https://bugs.webkit.org/show_bug.cgi?id=41410
1003
1004         Added piOverTwo to MathExtras.
1005
1006         * wtf/MathExtras.h:
1007
1008 2010-07-19  Mike Moretti  <mike.moretti@nokia.com>
1009
1010         Reviewed by Laszlo Gombos.
1011
1012         [Symbian] Build fix after r63404.
1013
1014         Implement isValid() function for the Symbian executable allocator.
1015
1016         * jit/ExecutableAllocatorSymbian.cpp:
1017         (JSC::ExecutableAllocator::isValid):
1018
1019 2010-07-19  Chris Marrin  <cmarrin@apple.com>
1020
1021         Reviewed by Darin Adler.
1022
1023         https://bugs.webkit.org/show_bug.cgi?id=42118
1024         Disable WebGL on Leopard for now. 
1025
1026         LayoutTests fail on some graphics hardware on Leopard because one of the features we use,
1027         GL_ARB_framebuffer_object, is not universally available in Leopard like it is in
1028         SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a
1029         software OpenGL driver on machines without this support.
1030
1031         * Configurations/FeatureDefines.xcconfig:
1032
1033 2010-07-16  Darin Adler  <darin@apple.com>
1034
1035         Reviewed by Sam Weinig.
1036
1037         Use OwnPtr for CodeBlock objects
1038         https://bugs.webkit.org/show_bug.cgi?id=42490
1039
1040         * runtime/Executable.cpp:
1041         (JSC::EvalExecutable::EvalExecutable): Moved this here and made it non-inline.
1042         Eliminated the code that used to initialize the raw pointer since it's now
1043         an OwnPtr.
1044         (JSC::EvalExecutable::~EvalExecutable): Removed the explicit delete here.
1045         (JSC::ProgramExecutable::ProgramExecutable): Ditto.
1046         (JSC::ProgramExecutable::~ProgramExecutable): Ditto.
1047         (JSC::FunctionExecutable::FunctionExecutable): Ditto.
1048         (JSC::FunctionExecutable::~FunctionExecutable): Ditto.
1049         (JSC::EvalExecutable::compileInternal): Added use of adoptPtr and get.
1050         (JSC::ProgramExecutable::compileInternal): Ditto.
1051         (JSC::FunctionExecutable::compileForCallInternal): Ditto.
1052         (JSC::FunctionExecutable::compileForConstructInternal): Ditto.
1053         (JSC::FunctionExecutable::recompile): Use clear instead of delete followed
1054         by assignment of 0.
1055
1056         * runtime/Executable.h: Moved constructors to the cpp file and changed
1057         raw pointers to OwnPtr.
1058
1059 2010-07-19  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
1060
1061         Reviewed by Kenneth Rohde Christiansen.
1062
1063         [EFL] Fix build on 64-bit systems. According to
1064         JavaScriptCore/wtf/Platform.h, x86_64 uses fixed allocator, which
1065         needs jit/ExecutableAllocatorFixedVMPool.cpp to be included in build
1066         system.
1067         https://bugs.webkit.org/show_bug.cgi?id=42559
1068
1069         * CMakeListsEfl.txt: add missing file for x86_64.
1070
1071 2010-07-16  Leandro Pereira  <leandro@profusion.mobi>
1072
1073         [EFL] Unreviewed build system cleanup.
1074
1075         Move ExecutableAllocator{FixedVMPool,Posix,Symbian,Win}.cpp from
1076         root CMakeLists.txt to the platform CMakeLists.txt.
1077
1078         * CMakeLists.txt:
1079         * CMakeListsEfl.txt: Add ExecutableAllocatorPosix.cpp.
1080
1081 2010-07-16  Oliver Hunt  <oliver@apple.com>
1082
1083         Reviewed by Geoffrey Garen.
1084
1085         ES5 allows use of reserved words as IdentifierName
1086         https://bugs.webkit.org/show_bug.cgi?id=42471
1087
1088         Modify the lexer to allow us to avoid identifying reserved
1089         words in those contexts where they are valid identifiers, and
1090         we know it's safe.  Additionally tag the reserved word tokens
1091         so we can easily identify them in those cases where we can't
1092         guarantee that we've skipped reserved word identification.
1093
1094         * parser/JSParser.cpp:
1095         (JSC::JSParser::next):
1096         (JSC::JSParser::parseProperty):
1097         (JSC::JSParser::parseMemberExpression):
1098         * parser/JSParser.h:
1099         (JSC::):
1100         * parser/Lexer.cpp:
1101         (JSC::Lexer::lex):
1102         * parser/Lexer.h:
1103         (JSC::Lexer::):
1104
1105 2010-07-16  Anders Carlsson  <andersca@apple.com>
1106
1107         Reviewed by Sam Weinig.
1108
1109         clang++ build fixes for JavaScriptCore and WebCore
1110         https://bugs.webkit.org/show_bug.cgi?id=42478
1111
1112         * runtime/RegExpKey.h:
1113         (JSC::operator==):
1114         Move the RegExpKey equals operator into the JSC namespace so it can be found by ADL.
1115
1116 2010-07-16  Anders Carlsson  <andersca@apple.com>
1117
1118         Reviewed by David Levin.
1119
1120         Really add WARN_UNUSED_RESULT to leakRef
1121         https://bugs.webkit.org/show_bug.cgi?id=42464
1122
1123         * wtf/PassRefPtr.h:
1124         (WTF::PassRefPtr::):
1125         (WTF::NonNullPassRefPtr::):
1126         Put the WARN_UNUSED_RESULT attribute at the right place.
1127
1128         * wtf/RetainPtr.h:
1129         (WTF::RetainPtr::releaseRef):
1130         Remove WARN_UNUSED_RESULT here for now, it leads to two warnings that need
1131         to be fixed first.
1132
1133 2010-07-15  Victor Wang  <victorw@chromium.org>
1134
1135         Reviewed by David Levin.
1136
1137         [Chromium] Disable c4291 for chromium windows multi dll build.
1138
1139         https://bugs.webkit.org/show_bug.cgi?id=42177
1140
1141         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1142
1143 2010-07-15  Geoffrey Garen  <ggaren@apple.com>
1144
1145         Reviewed by Maciej Stachowiak.
1146
1147         Crash entering mail.yahoo.com
1148         https://bugs.webkit.org/show_bug.cgi?id=42394
1149     
1150         * bytecompiler/BytecodeGenerator.cpp:
1151         (JSC::BytecodeGenerator::argumentNumberFor): Added a NULL check. If the
1152         identifier we're resolving is not a local variable, registerFor returns
1153         NULL.
1154
1155         * bytecompiler/NodesCodegen.cpp:
1156         (JSC::FunctionBodyNode::emitBytecode): Unrelated to the crash, but I
1157         noticed this while working on it: No need to NULL-check returnNode,
1158         since an early return has already done so.
1159
1160 2010-07-15  Martin Robinson  <mrobinson@igalia.com>
1161
1162         Reviewed by Oliver Hunt.
1163
1164         [GTK] Simplify the distribution step
1165         https://bugs.webkit.org/show_bug.cgi?id=42414
1166
1167         * GNUmakefile.am: Add extra dist files directly to EXTRA_DIST instead
1168         of adding them by proxy via javascriptcore_dist. Sort the EXTRA_DIST list.
1169         Refer to create_hash_table and create_regexp_tables directly, as is the
1170         behavior with other code generation scripts.
1171
1172 2010-07-15  Oliver Hunt  <oliver@apple.com>
1173
1174         Reviewed by Geoff Garen.
1175
1176         Fix dumping of op_put_by_id.
1177
1178         * bytecode/CodeBlock.cpp:
1179         (JSC::CodeBlock::printPutByIdOp):
1180
1181 2010-07-15  Zoltan Herczeg  <zherczeg@webkit.org>
1182
1183         Reviewed by Darin Adler.
1184
1185         Refactoring some parts of the lexer
1186         https://bugs.webkit.org/show_bug.cgi?id=41845
1187
1188         This patch is a precursor of refactoring the identifier
1189         parsing, which currently slows down the lexer, and not
1190         ready for landing. This patch contains those sources,
1191         which does not slow down the lexer (mainly style changes).
1192
1193         SunSpider: no change (529.4ms to 528.7ms)
1194         --parse-only: no change (31.0ms to 31.2ms)
1195
1196         * parser/Lexer.cpp:
1197         (JSC::isIdentStart): using typesOfASCIICharacters to determine
1198              whether the current character is in identifier start
1199         (JSC::isIdentPart): using typesOfASCIICharacters to determine
1200              whether the current character is in identifier part
1201         (JSC::Lexer::parseString): style fix
1202         (JSC::Lexer::lex): removing the else after the main which
1203              which reduces code duplication
1204
1205 2010-07-15  Mark Rowe  <mrowe@apple.com>
1206
1207         Update the sorting in the Xcode project files.
1208
1209         * JavaScriptCore.xcodeproj/project.pbxproj:
1210
1211 2010-07-14  Oliver Hunt  <oliver@apple.com>
1212
1213         Reviewed by Gavin Barraclough.
1214
1215         Make sure that mixed interpreter/jit builds don't try to use the jit if the allocator fails
1216         https://bugs.webkit.org/show_bug.cgi?id=42310
1217
1218         Add some null checks to deal with the Fixed VM allocator failing
1219         to get the requested executable region, delay the creation of the
1220         JITStubs in JSGlobalData until after we know whether we're using
1221         the JIT.
1222
1223         * jit/ExecutableAllocator.h:
1224         (JSC::ExecutableAllocator::ExecutableAllocator):
1225         (JSC::ExecutableAllocator::poolForSize):
1226         * jit/ExecutableAllocatorFixedVMPool.cpp:
1227         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
1228         (JSC::FixedVMPoolAllocator::alloc):
1229         (JSC::FixedVMPoolAllocator::free):
1230         (JSC::FixedVMPoolAllocator::isValid):
1231         (JSC::ExecutableAllocator::isValid):
1232         (JSC::ExecutablePool::systemAlloc):
1233         (JSC::ExecutablePool::systemRelease):
1234         * jit/ExecutableAllocatorPosix.cpp:
1235         (JSC::ExecutableAllocator::isValid):
1236         * jit/ExecutableAllocatorWin.cpp:
1237         (JSC::ExecutableAllocator::isValid):
1238         * jit/JIT.cpp:
1239         (JSC::JIT::linkCall):
1240         (JSC::JIT::linkConstruct):
1241         * jit/JIT.h:
1242         (JSC::JIT::compileCTIMachineTrampolines):
1243         (JSC::JIT::compileCTINativeCall):
1244         * jit/JITArithmetic.cpp:
1245         (JSC::JIT::emit_op_mod):
1246         * jit/JITArithmetic32_64.cpp:
1247         (JSC::JIT::emit_op_mod):
1248         * jit/JITCall.cpp:
1249         (JSC::JIT::compileOpCallVarargs):
1250         (JSC::JIT::compileOpCall):
1251         (JSC::JIT::compileOpCallSlowCase):
1252         * jit/JITCall32_64.cpp:
1253         (JSC::JIT::compileOpCallVarargs):
1254         (JSC::JIT::compileOpCall):
1255         (JSC::JIT::compileOpCallSlowCase):
1256         * jit/JITOpcodes.cpp:
1257         (JSC::JIT::privateCompileCTINativeCall):
1258         * jit/JITStubs.cpp:
1259         (JSC::JITThunks::JITThunks):
1260         (JSC::JITThunks::tryCacheGetByID):
1261         (JSC::JITThunks::hostFunctionStub):
1262         * jit/ThunkGenerators.cpp:
1263         (JSC::charCodeAtThunkGenerator):
1264         (JSC::charAtThunkGenerator):
1265         (JSC::fromCharCodeThunkGenerator):
1266         (JSC::sqrtThunkGenerator):
1267         (JSC::powThunkGenerator):
1268         * runtime/Executable.h:
1269         (JSC::NativeExecutable::create):
1270         * runtime/JSGlobalData.cpp:
1271         (JSC::JSGlobalData::JSGlobalData):
1272         (JSC::JSGlobalData::getHostFunction):
1273         * runtime/JSGlobalData.h:
1274         (JSC::JSGlobalData::getCTIStub):
1275         * yarr/RegexJIT.cpp:
1276         (JSC::Yarr::jitCompileRegex):
1277
1278 2010-07-14  Gavin Barraclough  <barraclough@apple.com>
1279
1280         Speculative Qt/Windows build fix.
1281
1282         * jit/JITStubs.h:
1283
1284 2010-07-14  Gavin Barraclough  <barraclough@apple.com>
1285
1286         Reviewed by Oliver Hunt.
1287
1288         https://bugs.webkit.org/show_bug.cgi?id=42280
1289         JIT_STUB_ARGUMENT_VA_LIST is only slowing us down! Remove it!
1290
1291         * jit/JIT.h:
1292         * jit/JITInlineMethods.h:
1293         (JSC::JIT::restoreArgumentReferenceForTrampoline):
1294         * jit/JITStubs.cpp:
1295         * jit/JITStubs.h:
1296         * wtf/Platform.h:
1297
1298 2010-07-14  Oliver Hunt  <oliver@apple.com>
1299
1300         RS=Geoff Garen.
1301
1302         Guard the CF path of interpreter vs. jit selection with PLATFORM(CF)
1303
1304         This allows the code to work on windows as well.  Also unifies the
1305         environment variable with the preference name.
1306
1307         * runtime/JSGlobalData.cpp:
1308         (JSC::JSGlobalData::JSGlobalData):
1309
1310 2010-07-14  Oliver Hunt  <oliver@apple.com>
1311
1312         Reviewed by Don Melton.
1313
1314         Crash when trying to enable JIT and Interpreter in a single build.
1315
1316         CFPreferences code added at the last minute failed to account for
1317         the preference not being present and then attempted to CFRelease
1318         a null value.
1319
1320         * runtime/JSGlobalData.cpp:
1321         (JSC::JSGlobalData::JSGlobalData):
1322
1323 2010-07-14  Zoltan Herczeg  <zherczeg@webkit.org>
1324
1325         Reviewed by Darin Adler.
1326
1327         Change indentations in the lexer
1328         https://bugs.webkit.org/show_bug.cgi?id=41845
1329
1330         This patch fixes an old, indentation error comes from kjs,
1331         as webkit has a different style rule for switches, and change
1332         the indentation of the main switch, which is a temporary
1333         style error. This change makes easier to see the behavioural
1334         changes in the follow-up patch.
1335
1336         No behavioural changes.
1337
1338         * parser/Lexer.cpp:
1339         (JSC::singleEscape):
1340         (JSC::Lexer::lex):
1341
1342 2010-07-13  Sheriff Bot  <webkit.review.bot@gmail.com>
1343
1344         Unreviewed, rolling out r63262.
1345         http://trac.webkit.org/changeset/63262
1346         https://bugs.webkit.org/show_bug.cgi?id=42229
1347
1348         broke Windows compile (Requested by bweinstein on #webkit).
1349
1350         * API/tests/testapi.c:
1351         (assertEqualsAsCharactersPtr):
1352         (main):
1353         * testapi.pro: Removed.
1354
1355 2010-07-13  Oliver Hunt  <oliver@apple.com>
1356
1357         Reviewed by Gavin Barraclough.
1358
1359         ES5 requires BOMs to be treated as whitespace
1360         https://bugs.webkit.org/show_bug.cgi?id=42218
1361
1362         Add BOM character to the Lexer's definition of whitespace,
1363         and remove the logic that dealt with stripping BOMs and
1364         caching the cleaned string.
1365
1366         * parser/Lexer.h:
1367         (JSC::Lexer::isWhiteSpace):
1368         * parser/SourceProvider.h:
1369         (JSC::UStringSourceProvider::create):
1370         (JSC::UStringSourceProvider::UStringSourceProvider):
1371         * wtf/text/StringImpl.h:
1372
1373 2010-07-13  Andreas Kling  <andreas.kling@nokia.com>
1374
1375         Reviewed by Darin Adler.
1376
1377         Avoid slow-path for put() in Array.splice()
1378         https://bugs.webkit.org/show_bug.cgi?id=41920
1379
1380         Defer creation of the returned array until its final size is known
1381         to avoid growing it while adding elements.
1382
1383         * runtime/JSArray.cpp:
1384         (JSC::JSArray::JSArray): Add two modes of creation, CreateInitialized (old)
1385         and CreateCompact (which should only be used when constructing arrays whose
1386         size and contents are known at the time of creation.)
1387         (JSC::JSArray::setLength): Skip first consistency check if in CreateCompact
1388         initialization mode. (Only applies to non-empty arrays.)
1389         (JSC::JSArray::checkConsistency): Build fix (JSValue::type() is gone)
1390         * runtime/JSArray.h:
1391         (JSC::JSArray::uncheckedSetIndex): Added for fast initialization of compact
1392         arrays. Does no bounds or other sanity checking.
1393         * runtime/ArrayPrototype.cpp:
1394         (JSC::arrayProtoFuncSplice): Optimized creation of the returned JSArray.
1395         * runtime/ArrayConstructor.cpp:
1396         (JSC::constructArrayWithSizeQuirk): Pass CreateInitialized to ctor.
1397         * runtime/JSGlobalObject.h:
1398         (JSC::constructEmptyArray): Pass CreateInitialized to ctor.
1399         * runtime/RegExpConstructor.cpp:
1400         (JSC::RegExpMatchesArray::RegExpMatchesArray): Pass CreateInitialized to ctor.
1401
1402 2010-07-13  Gavin Barraclough  <barraclough@apple.com>
1403
1404         Reviewed by Oliver Hunt.
1405
1406         Bug 42207 - Clean up interface to compile executables, always check for exceptions
1407
1408         Presently interface to compile executable is inconsistent between eval/program and
1409         function code, and is error prone in allowing a caller to byte compile without JIT
1410         compiling an executable (we rely on all executables with codeblocks having JIT code).
1411         Unify on an interface where all compilation is performed by a single compile (with
1412         ForCall|ForConstruct variants) method, and make all clients check for errors.
1413
1414         * interpreter/Interpreter.cpp:
1415         (JSC::Interpreter::unwindCallFrame):
1416         (JSC::Interpreter::execute):
1417         (JSC::Interpreter::executeCall):
1418         (JSC::Interpreter::executeConstruct):
1419         (JSC::Interpreter::prepareForRepeatCall):
1420         (JSC::Interpreter::privateExecute):
1421         * jit/JITStubs.cpp:
1422         (JSC::DEFINE_STUB_FUNCTION):
1423         * parser/Parser.h:
1424         (JSC::Parser::isFunctionBodyNode):
1425         (JSC::Parser::parse):
1426         * runtime/ArrayPrototype.cpp:
1427         (JSC::isNumericCompareFunction):
1428         * runtime/ExceptionHelpers.cpp:
1429         (JSC::createStackOverflowError):
1430         * runtime/ExceptionHelpers.h:
1431         * runtime/Executable.cpp:
1432         (JSC::EvalExecutable::compileInternal):
1433         (JSC::ProgramExecutable::checkSyntax):
1434         (JSC::ProgramExecutable::compileInternal):
1435         (JSC::FunctionExecutable::compileForCallInternal):
1436         (JSC::FunctionExecutable::compileForConstructInternal):
1437         (JSC::FunctionExecutable::reparseExceptionInfo):
1438         (JSC::EvalExecutable::reparseExceptionInfo):
1439         (JSC::FunctionExecutable::fromGlobalCode):
1440         * runtime/Executable.h:
1441         (JSC::EvalExecutable::compile):
1442         (JSC::EvalExecutable::generatedBytecode):
1443         (JSC::EvalExecutable::generatedJITCode):
1444         (JSC::ProgramExecutable::compile):
1445         (JSC::ProgramExecutable::generatedBytecode):
1446         (JSC::ProgramExecutable::generatedJITCode):
1447         (JSC::FunctionExecutable::generatedBytecode):
1448         (JSC::FunctionExecutable::compileForCall):
1449         (JSC::FunctionExecutable::compileForConstruct):
1450         (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
1451         * runtime/FunctionConstructor.cpp:
1452         (JSC::constructFunction):
1453         * runtime/JSActivation.cpp:
1454         (JSC::JSActivation::argumentsGetter):
1455         * runtime/JSGlobalData.h:
1456         (JSC::JSGlobalData::canUseJIT):
1457
1458 2010-07-13  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1459
1460         Reviewed by Oliver Hunt.
1461
1462         testapi.c depends on the Core Foundation.
1463         https://bugs.webkit.org/show_bug.cgi?id=40058
1464
1465         Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it
1466         to compile in Qt environments.
1467
1468         All tests should work except for the JSStringCreateWithCharacters() function,
1469         because its tests depend on Core Foundation specific functions.
1470
1471         * API/tests/testapi.c:
1472         (testJSStringRefCF): moved CoreFoundation specific tests to this function.
1473         (main): The moves plus some minor tweaks.
1474         * testapi.pro: Added.
1475
1476 2010-07-13  Gavin Barraclough  <barraclough@apple.com>
1477
1478         Reviewed by Oliver Hunt.
1479
1480         Bug 42182 - Change how numeric compare functions are detected
1481
1482         There are three problems with the current mechanism:
1483           * It requires that a function executable be bytecode compiled without
1484             being JIT generated (in order to copy the bytecode from the numeric
1485             compare function).  This is a problem since we have an invariant when
1486             running with the JIT that functions are never bytecode compiled without
1487             also being JIT generated (after checking the codeblock we assume the
1488             function has JIT code).  To help maintain this invariant 
1489           * This implementation will prevent us from experimenting with alternate
1490             compilation paths which do not compile via bytecode.
1491           * It doesn't work.  Functions passing more than two arguments will match
1492             if they are comparing their last two arguments, not the first two.
1493             Generally the mapping back from bytecode to semantics may be more
1494             complex then initially expected.
1495
1496         * bytecompiler/BytecodeGenerator.cpp:
1497         (JSC::BytecodeGenerator::generate):
1498         (JSC::BytecodeGenerator::setIsNumericCompareFunction):
1499         (JSC::BytecodeGenerator::argumentNumberFor):
1500         * bytecompiler/BytecodeGenerator.h:
1501         * bytecompiler/NodesCodegen.cpp:
1502         (JSC::BlockNode::singleStatement):
1503         (JSC::FunctionBodyNode::emitBytecode):
1504         * parser/Nodes.h:
1505         (JSC::ExpressionNode::isSubtract):
1506         (JSC::BinaryOpNode::lhs):
1507         (JSC::BinaryOpNode::rhs):
1508         (JSC::SubNode::isSubtract):
1509         (JSC::ReturnNode::value):
1510         * runtime/JSGlobalData.cpp:
1511         (JSC::JSGlobalData::JSGlobalData):
1512         * runtime/JSGlobalData.h:
1513
1514 2010-07-12  Oliver Hunt  <oliver@apple.com>
1515
1516         Reviewed by Gavin Barraclough.
1517
1518         REGRESSION: Crash at JSC::JIT::privateCompile(JSC::MacroAssemblerCodePtr*)
1519         https://bugs.webkit.org/show_bug.cgi?id=41763
1520
1521         There are two parts to this patch, the first is to fix the actual
1522         problem.  When calling copyStringWithoutBOMs on a string we know
1523         to contain BOMs we return a value indicating that there are no
1524         BOMs.
1525
1526         The second part of this fix is simply to harden the path that
1527         led to a crash when parsing failed.
1528
1529         * jit/JITOpcodes.cpp:
1530         (JSC::JIT::privateCompileCTIMachineTrampolines):
1531         * jit/JITOpcodes32_64.cpp:
1532         (JSC::JIT::privateCompileCTIMachineTrampolines):
1533         * jit/JITStubs.cpp:
1534         (JSC::DEFINE_STUB_FUNCTION):
1535            Harden compilation stubs against parser failure.
1536         * parser/Lexer.cpp:
1537         (JSC::Lexer::sourceCode):
1538            Add assertions to ensure that subranges into a source provider
1539            are always actually braces.  Hopefully this should catch similar
1540            failures in future.  These assertions fire on existing tests
1541            without this fix.
1542         * runtime/Executable.h:
1543         (JSC::FunctionExecutable::tryJitCodeForCall):
1544         (JSC::FunctionExecutable::tryJitCodeForConstruct):
1545         * wtf/text/StringImpl.h:
1546         (WebCore::StringImpl::copyStringWithoutBOMs):
1547            Make copyStringWithBOMs do the right thing.
1548
1549 2010-07-13  Gabor Loki  <loki@webkit.org>
1550
1551         Reviewed by Gavin Barraclough.
1552
1553         Fix the constant encoding in data transfer instructions on ARM
1554         https://bugs.webkit.org/show_bug.cgi?id=42166
1555
1556         The getImm function is designed to produce modified immediate constant
1557         for data processing instructions. It should not be used to encode
1558         any constant for data transfer. In the current situation there is no
1559         way to use any immediate constant for data transfer. So, the moveImm
1560         function is the desired method to pass the offset value to the data
1561         transfer instructions.
1562
1563         Reported by Jacob Bramley.
1564
1565         * assembler/ARMAssembler.cpp:
1566         (JSC::ARMAssembler::dataTransfer32):
1567         * assembler/MacroAssemblerARM.h:
1568         (JSC::MacroAssemblerARM::call32):
1569
1570 2010-07-09  Darin Adler  <darin@apple.com>
1571
1572         Reviewed by Geoffrey Garen.
1573
1574         String to number coercion is not spec compliant
1575         https://bugs.webkit.org/show_bug.cgi?id=31349
1576
1577         ToNumber should ignore NBSP (\u00a0)
1578         https://bugs.webkit.org/show_bug.cgi?id=25490
1579
1580         * runtime/JSGlobalObjectFunctions.cpp:
1581         (JSC::parseIntOverflow): Added a version that works on UChar.
1582         * runtime/JSGlobalObjectFunctions.h: Ditto.
1583
1584         * runtime/UString.cpp:
1585         (JSC::isInfinity): Added helper functions.
1586         (JSC::UString::toDouble): Use isStrWhiteSpace instead of
1587         isSASCIISpace to define what we should skip. Got rid of the
1588         code that used CString and UTF8String, instead processing the
1589         UChar of the string directly, except for when we call strtod.
1590         For strtod, use our own home-grown conversion function that
1591         does not try to do any UTF-16 processing. Tidied up the logic
1592         a bit as well.
1593
1594 2010-07-12  Martin Robinson  <mrobinson@igalia.com>
1595
1596         Reviewed by Xan Lopez.
1597
1598         [GTK] make dist is broken because of missing headers and other miscellaneous reasons
1599         https://bugs.webkit.org/show_bug.cgi?id=42107
1600
1601         * GNUmakefile.am: Add missing header to the sources list.
1602
1603 2010-07-12  Adam Roben  <aroben@apple.com>
1604
1605         Stop generating stripped symbols for Release builds
1606
1607         It turns out we can strip the symbols after-the-fact using PDBCopy.
1608
1609         Fixes <http://webkit.org/b/42085>.
1610
1611         Reviewed by Steve Falkenburg.
1612
1613         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1614         Removed the pre-link event, which just created the public\sym
1615         directory.
1616
1617 2010-07-12  Anders Carlsson  <andersca@apple.com>
1618
1619         Reviewed by Dan Bernstein.
1620
1621         Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions
1622         https://bugs.webkit.org/show_bug.cgi?id=42086
1623
1624         * wtf/OwnPtr.h:
1625         * wtf/PassOwnPtr.h:
1626         * wtf/PassRefPtr.h:
1627         (WTF::PassRefPtr::releaseRef):
1628         (WTF::NonNullPassRefPtr::leakRef):
1629         (WTF::NonNullPassRefPtr::releaseRef):
1630         * wtf/RetainPtr.h:
1631         (WTF::RetainPtr::releaseRef):
1632
1633 2010-07-10  Oliver Hunt  <oliver@apple.com>
1634
1635         Reviewed by Maciej Stachowiak.
1636
1637         HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled
1638         https://bugs.webkit.org/show_bug.cgi?id=42039
1639
1640         Separate the existence of computed goto support in the compiler
1641         from whether or not we are using the interpreter.  All the current
1642         HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like
1643         the option of using it elsewhere.  The interpreter now uses
1644         ENABLE(COMPUTED_GOTO_INTERPRETER) 
1645
1646         * bytecode/Instruction.h:
1647         (JSC::Instruction::Instruction):
1648         * bytecode/Opcode.h:
1649         * interpreter/Interpreter.cpp:
1650         (JSC::Interpreter::Interpreter):
1651         (JSC::Interpreter::isOpcode):
1652         (JSC::Interpreter::privateExecute):
1653         * interpreter/Interpreter.h:
1654         (JSC::Interpreter::getOpcode):
1655         (JSC::Interpreter::getOpcodeID):
1656         * wtf/Platform.h:
1657
1658 2010-07-10  Oliver Hunt  <oliver@apple.com>
1659
1660         Reviewed by Gavin Barraclough.
1661
1662         Remove switches from inner expression loops in the parser
1663         https://bugs.webkit.org/show_bug.cgi?id=42035
1664
1665         Use bitmasks and flags on the token types to identify unary and
1666         binary operators, rather than switching on the token type to
1667         identify them.
1668
1669         * parser/JSParser.cpp:
1670         (JSC::isUnaryOp):
1671         (JSC::JSParser::isBinaryOperator):
1672         * parser/JSParser.h:
1673         (JSC::):
1674
1675 2010-07-09  Leon Clarke  <leonclarke@google.com>
1676
1677         Reviewed by Adam Barth.
1678
1679         add support for link prefetching
1680         https://bugs.webkit.org/show_bug.cgi?id=3652
1681
1682         * Configurations/FeatureDefines.xcconfig:
1683
1684 2010-07-09  Oliver Hunt  <oliver@apple.com>
1685
1686         Reviewed by Darin Adler.
1687
1688         Tidy up lexer token ids
1689         https://bugs.webkit.org/show_bug.cgi?id=42014
1690
1691         Stop using character literals to identify single character tokens
1692         and instead use symbolic names for all tokens.
1693
1694         * parser/ASTBuilder.h:
1695         (JSC::ASTBuilder::makeBinaryNode):
1696         * parser/JSParser.cpp:
1697         (JSC::JSParser::consume):
1698         (JSC::JSParser::match):
1699         (JSC::JSParser::autoSemiColon):
1700         (JSC::JSParser::JSParser):
1701         (JSC::JSParser::parseProgram):
1702         (JSC::JSParser::allowAutomaticSemicolon):
1703         (JSC::JSParser::parseDoWhileStatement):
1704         (JSC::JSParser::parseWhileStatement):
1705         (JSC::JSParser::parseVarDeclarationList):
1706         (JSC::JSParser::parseConstDeclarationList):
1707         (JSC::JSParser::parseForStatement):
1708         (JSC::JSParser::parseReturnStatement):
1709         (JSC::JSParser::parseWithStatement):
1710         (JSC::JSParser::parseSwitchStatement):
1711         (JSC::JSParser::parseSwitchClauses):
1712         (JSC::JSParser::parseSwitchDefaultClause):
1713         (JSC::JSParser::parseTryStatement):
1714         (JSC::JSParser::parseDebuggerStatement):
1715         (JSC::JSParser::parseStatement):
1716         (JSC::JSParser::parseFormalParameters):
1717         (JSC::JSParser::parseFunctionInfo):
1718         (JSC::JSParser::parseExpressionOrLabelStatement):
1719         (JSC::JSParser::parseIfStatement):
1720         (JSC::JSParser::parseExpression):
1721         (JSC::JSParser::parseAssignmentExpression):
1722         (JSC::JSParser::parseConditionalExpression):
1723         (JSC::isUnaryOp):
1724         (JSC::JSParser::isBinaryOperator):
1725         (JSC::JSParser::parseBinaryExpression):
1726         (JSC::JSParser::parseProperty):
1727         (JSC::JSParser::parseObjectLiteral):
1728         (JSC::JSParser::parseStrictObjectLiteral):
1729         (JSC::JSParser::parseArrayLiteral):
1730         (JSC::JSParser::parsePrimaryExpression):
1731         (JSC::JSParser::parseArguments):
1732         (JSC::JSParser::parseMemberExpression):
1733         (JSC::JSParser::parseUnaryExpression):
1734         * parser/JSParser.h:
1735         (JSC::):
1736         * parser/Lexer.cpp:
1737         (JSC::):
1738         (JSC::Lexer::lex):
1739         * parser/Lexer.h:
1740
1741 2010-07-09  Gavin Barraclough  <barraclough@apple.com>
1742
1743         Reviewed by Oliver Hunt.
1744
1745         Bug 42015 - Enable JSValue32_64 on ARMv7
1746
1747         * Configurations/JavaScriptCore.xcconfig:
1748         * jit/JIT.h:
1749         * jit/JITStubs.cpp:
1750         * wtf/Platform.h:
1751
1752 2010-07-09  Kenneth Russell  <kbr@google.com>
1753
1754         Reviewed by Dimitri Glazkov.
1755
1756         Assertion failure in String::utf8() for certain invalid UTF16 inputs
1757         https://bugs.webkit.org/show_bug.cgi?id=41983
1758
1759         * wtf/text/WTFString.cpp:
1760         (WebCore::String::utf8):
1761          - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8.
1762
1763 2010-07-09  Oliver Hunt  <oliver@apple.com>
1764
1765         Reviewed by Geoffrey Garen.
1766
1767         Remove a couple of excess writes from the lexer
1768         https://bugs.webkit.org/show_bug.cgi?id=41981
1769
1770         Remove a couple of fields from JSTokenInfo, and rename the remaining ones
1771         to something more accurate
1772
1773         * parser/JSParser.cpp:
1774         (JSC::JSParser::next):
1775         (JSC::JSParser::tokenStart):
1776         (JSC::JSParser::tokenLine):
1777         (JSC::JSParser::tokenEnd):
1778         * parser/JSParser.h:
1779         (JSC::JSTokenInfo::JSTokenInfo):
1780         * parser/Lexer.cpp:
1781         (JSC::Lexer::lex):
1782
1783 2010-07-08  Oliver Hunt  <oliver@apple.com>
1784
1785         Reviewed by Sam Weinig.
1786
1787         Property declarations in an object literal should not consider the prototype chain when being added to the new object
1788         https://bugs.webkit.org/show_bug.cgi?id=41929
1789
1790         To fix this all we need to do is ensure that all new properties are
1791         added with putDirect rather than a fully generic call to put.  This
1792         is safe as an object literal is by definition going to produce a
1793         completely normal object.
1794
1795         Rather than duplicating all the put_by_id logic we add an additional
1796         flag to op_put_by_id to indicate it should be using putDirect.  In
1797         the interpreter this adds a runtime branch, but in the jit this is
1798         essentially free as the branch is taken at compile time.  This does
1799         actually improve object literal creation time even in the interpreter
1800         as we no longer need to walk the prototype chain to verify that the
1801         cached put is safe.
1802
1803         We still emit normal put_by_id code when emitting __proto__ as we want
1804         to get the correct handling for changing the prototype.
1805
1806         Sunspider claims this is a 0.7% speedup which is conceivably real due
1807         to the performance improvement in object literals, but I suspect its
1808         really just the result of code motion.
1809
1810         * bytecode/Opcode.h:
1811         * bytecompiler/BytecodeGenerator.cpp:
1812         (JSC::BytecodeGenerator::emitPutById):
1813         (JSC::BytecodeGenerator::emitDirectPutById):
1814         * bytecompiler/BytecodeGenerator.h:
1815         * bytecompiler/NodesCodegen.cpp:
1816         (JSC::PropertyListNode::emitBytecode):
1817         * interpreter/Interpreter.cpp:
1818         (JSC::Interpreter::privateExecute):
1819         * jit/JIT.h:
1820         (JSC::JIT::compilePutByIdTransition):
1821         * jit/JITPropertyAccess.cpp:
1822         (JSC::JIT::emit_op_put_by_id):
1823         (JSC::JIT::emitSlow_op_put_by_id):
1824         (JSC::JIT::privateCompilePutByIdTransition):
1825         (JSC::JIT::patchPutByIdReplace):
1826         * jit/JITPropertyAccess32_64.cpp:
1827         (JSC::JIT::emitSlow_op_put_by_id):
1828         (JSC::JIT::privateCompilePutByIdTransition):
1829         (JSC::JIT::patchPutByIdReplace):
1830         * jit/JITStubs.cpp:
1831         (JSC::JITThunks::tryCachePutByID):
1832         (JSC::DEFINE_STUB_FUNCTION):
1833         * jit/JITStubs.h:
1834         (JSC::):
1835         * runtime/JSGlobalData.cpp:
1836         (JSC::JSGlobalData::JSGlobalData):
1837         * runtime/JSObject.h:
1838         (JSC::JSObject::putDirect):
1839         (JSC::JSValue::putDirect):
1840         * runtime/JSValue.h:
1841
1842 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
1843
1844         Reviewed by Sam Weinig.
1845
1846         String.prototype methods should CheckObjectCoercible (test this is not null or undefined).
1847
1848         * runtime/StringPrototype.cpp:
1849         (JSC::stringProtoFuncCharAt):
1850         (JSC::stringProtoFuncCharCodeAt):
1851         (JSC::stringProtoFuncConcat):
1852         (JSC::stringProtoFuncIndexOf):
1853         (JSC::stringProtoFuncLastIndexOf):
1854         (JSC::stringProtoFuncMatch):
1855         (JSC::stringProtoFuncSearch):
1856         (JSC::stringProtoFuncSlice):
1857         (JSC::stringProtoFuncSplit):
1858         (JSC::stringProtoFuncSubstr):
1859         (JSC::stringProtoFuncSubstring):
1860         (JSC::stringProtoFuncToLowerCase):
1861         (JSC::stringProtoFuncToUpperCase):
1862         (JSC::stringProtoFuncLocaleCompare):
1863         (JSC::trimString):
1864
1865 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
1866
1867         Reviewed by Sam Weinig.
1868
1869         Date.prototype.toJSON takes one argument, report this correctly.
1870
1871         * runtime/DatePrototype.cpp:
1872
1873 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
1874
1875         Reviewed by Sam Weinig.
1876
1877         RegExp's prototype should be an object of type RegExp.
1878
1879         * runtime/RegExpPrototype.cpp:
1880         (JSC::RegExpPrototype::RegExpPrototype):
1881         * runtime/RegExpPrototype.h:
1882
1883 2010-07-08  Oliver Hunt  <oliver@apple.com>
1884
1885         Reviewed by Gavin Barraclough.
1886
1887         JavaScript parser violates ECMA automatic semicolon insertion rule
1888         https://bugs.webkit.org/show_bug.cgi?id=41844
1889
1890         Remove (very) old and bogus logic that automatically inserted a semicolon
1891         at the end of a script's source.
1892
1893         * parser/Lexer.cpp:
1894         (JSC::Lexer::lex):
1895
1896 2010-07-08  Oliver Hunt  <oliver@apple.com>
1897
1898         Reviewed by Anders Carlson.
1899
1900         Tidy up the lexer
1901
1902         Remove some of the old yacc/lex-isms still present in the lexer
1903
1904         * parser/JSParser.h:
1905         (JSC::):
1906         * parser/Lexer.cpp:
1907         (JSC::Lexer::parseString):
1908         (JSC::Lexer::lex):
1909         * parser/Lexer.h:
1910
1911 2010-07-08  Oliver Hunt  <oliver@apple.com>
1912
1913         Reviewed by Gavin Barraclough.
1914
1915         Make object-literal parsing conformant with the spec.
1916         https://bugs.webkit.org/show_bug.cgi?id=41892
1917
1918         Bring our parsing of object literals into conformance with the ES5 spec.
1919         Basically disallow conflicting accessor vs. normal property definitions
1920         The bulk of this patch is just fiddling to maintain performance.
1921
1922         * parser/ASTBuilder.h:
1923         (JSC::ASTBuilder::createGetterOrSetterProperty):
1924         (JSC::ASTBuilder::createProperty):
1925         (JSC::ASTBuilder::getName):
1926         (JSC::ASTBuilder::getType):
1927         * parser/JSParser.cpp:
1928         (JSC::jsParse):
1929         (JSC::JSParser::JSParser):
1930         (JSC::JSParser::parseProperty):
1931         (JSC::JSParser::parseObjectLiteral):
1932         (JSC::JSParser::parseStrictObjectLiteral):
1933         * parser/JSParser.h:
1934         * parser/Lexer.cpp:
1935         (JSC::Lexer::clear):
1936         * parser/Lexer.h:
1937         (JSC::Lexer::currentOffset):
1938         (JSC::Lexer::setOffset):
1939           Add logic to allow us to roll the lexer back in the input stream.
1940         * parser/Nodes.h:
1941         (JSC::PropertyNode::):
1942         (JSC::PropertyNode::type):
1943         * parser/Parser.cpp:
1944         (JSC::Parser::parse):
1945         * parser/SourceProvider.h:
1946         (JSC::SourceProvider::SourceProvider):
1947         (JSC::SourceProvider::isValid):
1948         (JSC::SourceProvider::setValid):
1949           SourceProvider now records whether the input text
1950           has already been validated.
1951         * parser/SyntaxChecker.h:
1952         (JSC::SyntaxChecker::SyntaxChecker):
1953         (JSC::SyntaxChecker::Property::Property):
1954         (JSC::SyntaxChecker::Property::operator!):
1955         (JSC::SyntaxChecker::createProperty):
1956         (JSC::SyntaxChecker::createPropertyList):
1957         (JSC::SyntaxChecker::createGetterOrSetterProperty):
1958           The SyntaxChecker mode now needs to maintain a bit more information
1959           to ensure that we can validate object literals correctly.
1960
1961 2010-07-08  Darin Adler  <darin@apple.com>
1962
1963         * runtime/JSGlobalData.cpp:
1964         (JSC::JSGlobalData::sharedInstance): Fix typo.
1965
1966 2010-07-08  Darin Adler  <darin@apple.com>
1967
1968         Reviewed by Oliver Hunt.
1969
1970         Fix assertion seen on the Leopard buildbot.
1971         The single shared instance of JSGlobalData was not being
1972         adopted after creation.
1973
1974         * runtime/JSGlobalData.cpp:
1975         (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef.
1976
1977 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
1978
1979         Reviewed by Sam Weinig.
1980
1981         BOMs are whitespace.
1982
1983         * runtime/JSGlobalObjectFunctions.cpp:
1984         (JSC::isStrWhiteSpace):
1985
1986 2010-07-08  Martin Robinson  <mrobinson@igalia.com>
1987
1988         Unreviewed.
1989
1990         Try fix the GTK+ build by touching this file.
1991
1992         * jit/ExecutableAllocatorFixedVMPool.cpp:
1993
1994 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
1995
1996         GTK build fix take two.
1997
1998         * GNUmakefile.am:
1999
2000 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
2001
2002         GTK build fix.
2003
2004         * GNUmakefile.am:
2005
2006 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
2007
2008         Reviewed by Sam Weinig.
2009
2010         https://bugs.webkit.org/show_bug.cgi?id=41641
2011
2012         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
2013         other than x86-64 (this may be useful on 32-bit platforms, too).
2014
2015         Simplify ifdefs by dividing into thwo broad allocation strategies
2016         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
2017
2018         Rename constant used in the code to have names descriptive of their purpose,
2019         rather than their specific value on a given platform.
2020
2021         * jit/ExecutableAllocator.cpp:
2022         (JSC::ExecutableAllocator::reprotectRegion):
2023         (JSC::ExecutableAllocator::cacheFlush):
2024         * jit/ExecutableAllocatorFixedVMPool.cpp:
2025         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2026         (JSC::FixedVMPoolAllocator::free):
2027         (JSC::ExecutablePool::systemAlloc):
2028         * jit/ExecutableAllocatorPosix.cpp:
2029         * jit/ExecutableAllocatorSymbian.cpp:
2030         * jit/ExecutableAllocatorWin.cpp:
2031         * wtf/Platform.h:
2032
2033 2010-07-08  Xan Lopez  <xlopez@igalia.com>
2034
2035         Reviewed by Gustavo Noronha.
2036
2037         Silence a few noisy build rules.
2038
2039         * GNUmakefile.am:
2040
2041 2010-07-08  Sheriff Bot  <webkit.review.bot@gmail.com>
2042
2043         Unreviewed, rolling out r62765.
2044         http://trac.webkit.org/changeset/62765
2045         https://bugs.webkit.org/show_bug.cgi?id=41840
2046
2047         All jscore and layout tests crash on Qt bot (Requested by Ossy
2048         on #webkit).
2049
2050         * wtf/FastMalloc.cpp:
2051         (WTF::TCMalloc_PageHeap::initializeScavenger):
2052         (WTF::TCMalloc_PageHeap::signalScavenger):
2053         (WTF::TCMalloc_PageHeap::scavengerThread):
2054
2055 2010-07-08  Andreas Kling  <andreas.kling@nokia.com>
2056
2057         Reviewed by Oliver Hunt.
2058
2059         Interpreter: Crash in op_load_varargs on 64-bit
2060         https://bugs.webkit.org/show_bug.cgi?id=41795
2061
2062         Added missing cast of argCount to int32_t in op_load_varargs.
2063
2064         * interpreter/Interpreter.cpp:
2065         (JSC::Interpreter::privateExecute):
2066
2067 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
2068
2069         Reviewed by Geoffrey Garen.
2070
2071         Make FastMalloc more portable.
2072         https://bugs.webkit.org/show_bug.cgi?id=41790
2073
2074         Use WTF::Mutex instead of pthread_mutex_t and
2075         replace pthread_cond_t with WTF::ThreadCondition.
2076
2077         * wtf/FastMalloc.cpp:
2078         (WTF::TCMalloc_PageHeap::initializeScavenger):
2079         (WTF::TCMalloc_PageHeap::signalScavenger):
2080         (WTF::TCMalloc_PageHeap::scavengerThread):
2081
2082 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
2083
2084         Reviewed by Darin Adler.
2085
2086         Remove needless #include <fcntl.h> from TCSystemAlloc.cpp.
2087         https://bugs.webkit.org/show_bug.cgi?id=41777
2088
2089         * wtf/TCSystemAlloc.cpp:
2090
2091 2010-07-07  Darin Adler  <darin@apple.com>
2092
2093         Fixed build in configurations like PowerPC.
2094
2095         * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h.
2096         * runtime/RegExpObject.cpp: Ditto.
2097         * wtf/SizeLimits.cpp: Changed compile time assertion to work
2098         even on platforms where two bool members do not end up taking
2099         the same size as one int member!
2100
2101 2010-07-07  Oliver Hunt  <oliver@apple.com>
2102
2103         Reviewed by Geoffrey Garen.
2104
2105         Lazy mode of parser allows invalid syntax in object literals.
2106         https://bugs.webkit.org/show_bug.cgi?id=41809
2107
2108         Make the parser itself validate getter and setter syntax rather
2109         than offloading it to the AST builder.
2110
2111         * parser/ASTBuilder.h:
2112         (JSC::ASTBuilder::createGetterOrSetterProperty):
2113         * parser/JSParser.cpp:
2114         (JSC::JSParser::parseProperty):
2115
2116 2010-07-07  Dumitru Daniliuc  <dumi@chromium.org>
2117
2118         Reviewed by Adam Roben.
2119
2120         Revert r62689.
2121         https://bugs.webkit.org/show_bug.cgi?id=41804
2122
2123         * runtime/Collector.cpp:
2124         (JSC::Heap::freeBlocks):
2125
2126 2010-07-07  Adam Barth  <abarth@webkit.org>
2127
2128         Reviewed by Sam Weinig.
2129
2130         Add reverseFind to Vector and deploy in HTML5 parser
2131         https://bugs.webkit.org/show_bug.cgi?id=41778
2132
2133         This method seems generally useful.  I'm slightly surprised we don't
2134         have it already.
2135
2136         * wtf/Vector.h:
2137         (WTF::::reverseFind):
2138
2139 2010-07-07  Darin Adler  <darin@apple.com>
2140
2141         Reviewed by Adam Barth.
2142
2143         Turn on adoptRef assertion for RefCounted
2144         https://bugs.webkit.org/show_bug.cgi?id=41547
2145
2146         * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other
2147         WTF headers should use "" includes; consistent in most WTF headers.
2148         Added a call to relaxAdoptionRequirement.
2149
2150         * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED.
2151         Added relaxAdoptionRequirement.
2152
2153 2010-07-07  Anders Carlsson  <andersca@apple.com>
2154
2155         Try to fix the Windows build.
2156
2157         * runtime/Collector.cpp:
2158         (JSC::Heap::freeBlocks):
2159
2160 2010-07-07  Darin Adler  <darin@apple.com>
2161
2162         Reviewed by Adam Barth.
2163
2164         More OwnPtr work
2165         https://bugs.webkit.org/show_bug.cgi?id=41727
2166
2167         * API/JSCallbackObject.h:
2168         (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr.
2169         * API/JSCallbackObjectFunctions.h:
2170         (JSC::JSCallbackObject::JSCallbackObject): Ditto.
2171         * bytecode/CodeBlock.cpp:
2172         (JSC::CodeBlock::CodeBlock): Ditto.
2173         * bytecode/CodeBlock.h:
2174         (JSC::CodeBlock::createRareDataIfNecessary): Ditto.
2175         * parser/Nodes.cpp:
2176         (JSC::ScopeNode::ScopeNode): Ditto.
2177         * parser/ParserArena.cpp:
2178         (JSC::ParserArena::ParserArena): Ditto.
2179         * runtime/Arguments.h:
2180         (JSC::Arguments::Arguments): Ditto.
2181         * runtime/Executable.cpp:
2182         (JSC::EvalExecutable::compile): Ditto.
2183         (JSC::ProgramExecutable::compile): Ditto.
2184         (JSC::FunctionExecutable::compileForCall): Ditto.
2185         (JSC::FunctionExecutable::compileForConstruct): Ditto.
2186         (JSC::FunctionExecutable::reparseExceptionInfo): Ditto.
2187         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
2188         * runtime/JSArray.cpp:
2189         (JSC::JSArray::sort): Ditto.
2190         * runtime/RegExpConstructor.cpp:
2191         (JSC::RegExpConstructor::RegExpConstructor): Ditto.
2192         * runtime/RegExpObject.cpp:
2193         (JSC::RegExpObject::RegExpObject): Ditto.
2194         * runtime/SmallStrings.cpp:
2195         (JSC::SmallStrings::createSingleCharacterString): Ditto.
2196         (JSC::SmallStrings::singleCharacterStringRep): Ditto.
2197
2198         * wtf/unicode/icu/CollatorICU.cpp:
2199         (WTF::Collator::userDefault): Use adoptPtr.
2200         * yarr/RegexInterpreter.cpp:
2201         (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto.
2202         (JSC::Yarr::ByteCompiler::compile): Ditto.
2203         (JSC::Yarr::ByteCompiler::regexBegin): Ditto.
2204         (JSC::Yarr::byteCompileRegex): Ditto.
2205         * yarr/RegexInterpreter.h:
2206         (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto.
2207
2208 2010-07-07  Darin Adler  <darin@apple.com>
2209
2210         Reviewed by Adam Barth.
2211
2212         Make clear set the pointer to 0 before deletion
2213         https://bugs.webkit.org/show_bug.cgi?id=41727
2214
2215         * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new
2216         value before deleting the old one, including in the set function and the
2217         clear function. This required changing safeDelete.
2218         * wtf/OwnPtr.h: Ditto. Also removed some extra null checks.
2219         * wtf/PassOwnPtr.h: Ditto.
2220
2221         * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new
2222         value before deref'ing the old one in the clear function. Also added a
2223         leakRef function for NonNullPassRefPtr.
2224         * wtf/RefPtr.h: Ditto.
2225
2226         * wtf/gobject/GOwnPtr.h: More of the same.
2227         * wtf/gobject/GRefPtr.h: Ditto.
2228
2229 2010-07-07  Zoltan Herczeg  <zherczeg@webkit.org>
2230
2231         Reviewed by Oliver Hunt.
2232
2233         Refactored string parsing inside the lexer
2234         https://bugs.webkit.org/show_bug.cgi?id=41606
2235
2236         Does not use goto. Although the last sunspider
2237         parse-only tests yields 1.044x speedup, I think the
2238         patch can have a slight improvement at most.
2239
2240         * parser/Lexer.cpp:
2241         (JSC::singleEscape):
2242         (JSC::Lexer::parseString):
2243         (JSC::Lexer::lex):
2244         * parser/Lexer.h:
2245
2246 2010-07-06  Oliver Hunt  <oliver@apple.com>
2247
2248         Reviewed by Maciej Stachowiak.
2249
2250         Make it possible to have both the JIT and Interpreter available in a single build
2251         https://bugs.webkit.org/show_bug.cgi?id=41722
2252
2253         Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible
2254         to have both JIT and INTERPRETER enabled at the same time.  This doesn't add
2255         support for mix mode execution, but it does allow a single build to contain all
2256         the code needed to use either the interpreter or the jit.
2257
2258         If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment
2259         variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter.
2260
2261         This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER),
2262         or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif
2263         #if ENABLE(INTERPRETER), etc.  There are also a few functions that need to be
2264         renamed to resolve return type ambiguity.
2265
2266         * bytecode/CodeBlock.cpp:
2267         (JSC::CodeBlock::~CodeBlock):
2268         (JSC::CodeBlock::shrinkToFit):
2269         * bytecode/CodeBlock.h:
2270         * interpreter/CallFrame.h:
2271         (JSC::ExecState::returnVPC):
2272         * interpreter/Interpreter.cpp:
2273         (JSC::Interpreter::unwindCallFrame):
2274         (JSC::Interpreter::throwException):
2275         (JSC::Interpreter::execute):
2276         (JSC::Interpreter::executeCall):
2277         (JSC::Interpreter::executeConstruct):
2278         (JSC::Interpreter::prepareForRepeatCall):
2279         (JSC::Interpreter::privateExecute):
2280         (JSC::Interpreter::retrieveLastCaller):
2281         * interpreter/Interpreter.h:
2282         * runtime/ArrayPrototype.cpp:
2283         (JSC::isNumericCompareFunction):
2284         * runtime/Executable.cpp:
2285         (JSC::EvalExecutable::generateJITCode):
2286         (JSC::ProgramExecutable::generateJITCode):
2287         (JSC::FunctionExecutable::generateJITCodeForCall):
2288         (JSC::FunctionExecutable::generateJITCodeForConstruct):
2289         (JSC::FunctionExecutable::reparseExceptionInfo):
2290         (JSC::EvalExecutable::reparseExceptionInfo):
2291         * runtime/JSFunction.cpp:
2292         * runtime/JSGlobalData.cpp:
2293         (JSC::JSGlobalData::JSGlobalData):
2294         * runtime/JSGlobalData.h:
2295         (JSC::JSGlobalData::canUseJIT):
2296         * wtf/Platform.h:
2297
2298 2010-07-06  Darin Adler  <darin@apple.com>
2299
2300         Reviewed by Adam Barth.
2301
2302         Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr
2303         https://bugs.webkit.org/show_bug.cgi?id=41320
2304
2305         * bytecode/CodeBlock.cpp:
2306         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment
2307         instead of set since the result of reparseExceptionInfo is now a
2308         PassOwnPtr.
2309
2310         * bytecode/CodeBlock.h: Change extractExceptionInfo to return a
2311         PassOwnPtr instead of a raw pointer.
2312
2313         * runtime/Executable.cpp:
2314         (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr.
2315         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
2316         (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was
2317         in the header before, but it's better to not have it there to reduce
2318         header dependencies. Return a PassOwnPtr.
2319
2320         * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr,
2321         and put it in the private sections of classes other than the base class.
2322
2323         * wtf/MessageQueue.h:
2324         (WTF::MessageQueue::append): Use leakPtr instead of release.
2325         (WTF::MessageQueue::appendAndCheckEmpty): Ditto.
2326         (WTF::MessageQueue::prepend): Ditto.
2327
2328         * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return
2329         a PassOwnPtr rather than a raw pointer. Added a leakPtr function that
2330         returns a raw pointer. Put the constructor that takes a raw pointer and
2331         the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the
2332         new adoptPtr function from PassOwnPtr.h.
2333
2334         * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function
2335         to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr.
2336         Put the constructor and assignment operators that take a raw pointer
2337         into a section guarded by LOOSE_PASS_OWN_PTR.
2338
2339 2010-07-06  Sam Weinig  <sam@webkit.org>
2340
2341         Reviewed by Darin Adler
2342
2343         Update comment in StringExtras.h to be more accurate.
2344
2345         * wtf/StringExtras.h:
2346
2347 2010-07-06  Sheriff Bot  <webkit.review.bot@gmail.com>
2348
2349         Unreviewed, rolling out r62511.
2350         http://trac.webkit.org/changeset/62511
2351         https://bugs.webkit.org/show_bug.cgi?id=41686
2352
2353         Breaks Linux/64bit compilation (Requested by xan_ on #webkit).
2354
2355         * jit/ExecutableAllocator.cpp:
2356         * jit/ExecutableAllocatorFixedVMPool.cpp:
2357         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2358         (JSC::FixedVMPoolAllocator::free):
2359         (JSC::ExecutablePool::systemAlloc):
2360         * jit/ExecutableAllocatorPosix.cpp:
2361         (JSC::ExecutableAllocator::reprotectRegion):
2362         (JSC::ExecutableAllocator::cacheFlush):
2363         * jit/ExecutableAllocatorSymbian.cpp:
2364         * jit/ExecutableAllocatorWin.cpp:
2365         * wtf/Platform.h:
2366
2367 2010-07-05  Gavin Barraclough  <barraclough@apple.com>
2368
2369         Reviewed by Sam Weinig.
2370
2371         https://bugs.webkit.org/show_bug.cgi?id=41641
2372
2373         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
2374         other than x86-64 (this may be useful on 32-bit platforms, too).
2375
2376         Simplify ifdefs by dividing into thwo broad allocation strategies
2377         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
2378
2379         Rename constant used in the code to have names descriptive of their purpose,
2380         rather than their specific value on a given platform.
2381
2382         * jit/ExecutableAllocator.cpp:
2383         (JSC::ExecutableAllocator::reprotectRegion):
2384         (JSC::ExecutableAllocator::cacheFlush):
2385         * jit/ExecutableAllocatorFixedVMPool.cpp:
2386         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2387         (JSC::FixedVMPoolAllocator::free):
2388         (JSC::ExecutablePool::systemAlloc):
2389         * jit/ExecutableAllocatorPosix.cpp:
2390         * jit/ExecutableAllocatorSymbian.cpp:
2391         * jit/ExecutableAllocatorWin.cpp:
2392         * wtf/Platform.h:
2393
2394 2010-07-05  Steve Block  <steveblock@google.com>
2395
2396         Reviewed by Darin Adler.
2397
2398         ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h
2399         https://bugs.webkit.org/show_bug.cgi?id=41594
2400
2401         * wtf/ThreadingPthreads.cpp:
2402
2403 2010-07-04  Mark Rowe  <mrowe@apple.com>
2404
2405         Build fix after r62456.
2406
2407         * interpreter/Interpreter.cpp:
2408         (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent
2409         warnings about comparisons between signed and unsigned types, and attempts to call an overload
2410         of std::min that doesn't exist.
2411
2412 2010-07-02  Sam Weinig  <sam@webkit.org>
2413
2414         Reviewed by Darin Adler.
2415
2416         Patch for https://bugs.webkit.org/show_bug.cgi?id=41553
2417         Make StringExtras.h versions of snprintf and vsnprintf match the unix versions.
2418
2419         - MSVC does not ensure the buffers are null terminated as the unix versions do.
2420
2421         * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes.
2422         * runtime/UString.cpp: Clean up includes.
2423         (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong.
2424         * wtf/StringExtras.h:
2425         (snprintf): Ensure null termination of buffer.
2426         (vsnprintf): Ditto.
2427
2428 2010-07-03  Yong Li  <yoli@rim.com>
2429
2430         Reviewed by Darin Adler.
2431
2432         Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in
2433         the interpreter as well as the JIT.
2434
2435         https://bugs.webkit.org/show_bug.cgi?id=41351
2436         rdar://problem/8142141
2437
2438         * interpreter/Interpreter.cpp:
2439         (JSC::Interpreter::privateExecute): Fix signed integer overflow problem
2440         in op_load_varargs handling. 0xFFFFFFFF was read as -1.
2441
2442 2010-06-26  Jeremy Orlow  <jorlow@chromium.org>
2443
2444         Reviewed by Dumitru Daniliuc.
2445
2446         Support for keys and in-memory storage for IndexedDB
2447         https://bugs.webkit.org/show_bug.cgi?id=41252
2448
2449         Set the role to Private.
2450
2451         * JavaScriptCore.xcodeproj/project.pbxproj:
2452
2453 2010-07-02  Oliver Hunt  <oliver@apple.com>
2454
2455         Reviewed by Geoffrey Garen.
2456
2457         Move BOM handling out of the lexer and parser
2458         https://bugs.webkit.org/show_bug.cgi?id=41539
2459
2460         Doing the BOM stripping in the lexer meant that we could
2461         end up having to strip the BOMs from a source multiple times.
2462         To deal with this we now require all strings provided by
2463         a SourceProvider to already have had the BOMs stripped.
2464         This also simplifies some of the lexer logic.
2465
2466         * parser/Lexer.cpp:
2467         (JSC::Lexer::setCode):
2468         (JSC::Lexer::sourceCode):
2469         * parser/SourceProvider.h:
2470         (JSC::SourceProvider::SourceProvider):
2471         (JSC::UStringSourceProvider::create):
2472         (JSC::UStringSourceProvider::getRange):
2473         (JSC::UStringSourceProvider::UStringSourceProvider):
2474         * wtf/text/StringImpl.h:
2475         (WebCore::StringImpl::copyStringWithoutBOMs):
2476
2477 2010-07-03  Patrick Gansterer  <paroga@paroga.com>
2478
2479         Reviewed by Kent Tamura.
2480
2481         [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar.
2482         https://bugs.webkit.org/show_bug.cgi?id=41411
2483
2484         * wtf/unicode/wince/UnicodeWince.cpp:
2485         (WTF::Unicode::isAlphanumeric):
2486         * wtf/unicode/wince/UnicodeWince.h:
2487         (WTF::Unicode::isArabicChar):
2488
2489 2010-07-03  Kwang Yul Seo  <skyul@company100.net>
2490
2491         Reviewed by Kent Tamura.
2492
2493         [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log.
2494         https://bugs.webkit.org/show_bug.cgi?id=41524
2495
2496         Print "WebKit CRASH" before crashing.
2497
2498         * wtf/Assertions.h:
2499
2500 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
2501
2502         Reviewed by Oliver Hunt.
2503
2504         Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken
2505
2506         This method tried to repatch a LDR (T2) into an ADD (T3) - but it only
2507         repatches the first instruction word.  The layout of the fields in the
2508         second word is different, and also needs repatching.
2509
2510         * assembler/ARMv7Assembler.h:
2511         (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
2512
2513 2010-07-02  Oliver Hunt  <oliver@apple.com>
2514
2515         Reviewed by Gavin Barraclough.
2516
2517         Clamp the number of arguments supported by function.apply
2518         https://bugs.webkit.org/show_bug.cgi?id=41351
2519         <rdar://problem/8142141>
2520
2521         Add clamping logic to function.apply similar to that
2522         enforced by firefox.  We have a smaller clamp than
2523         firefox as our calling convention means that stack
2524         usage is proportional to argument count -- the firefox
2525         limit is larger than you could actually call.
2526
2527         * interpreter/Interpreter.cpp:
2528         (JSC::Interpreter::privateExecute):
2529         * jit/JITStubs.cpp:
2530         (JSC::DEFINE_STUB_FUNCTION):
2531         * runtime/Arguments.h:
2532         (JSC::Arguments::):
2533
2534 2010-07-02  Chao-ying Fu  <fu@mips.com>
2535
2536         Reviewed by Oliver Hunt.
2537
2538         Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS
2539         https://bugs.webkit.org/show_bug.cgi?id=40179
2540
2541         Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL.
2542
2543         * jit/JITOpcodes.cpp:
2544         (JSC::JIT::privateCompileCTINativeCall):
2545         * wtf/Platform.h:
2546
2547 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
2548
2549         Reviewed by Oliver Hunt.
2550
2551         Bug 41552 - Clean up ARMv7 vfp code generation
2552         Emit separate opcode individually, remove magic numbers.
2553
2554         Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned).
2555
2556         * assembler/ARMv7Assembler.h:
2557         (JSC::ARMv7Assembler::):
2558         (JSC::ARMv7Assembler::vadd_F64):
2559         (JSC::ARMv7Assembler::vcmp_F64):
2560         (JSC::ARMv7Assembler::vcvt_F64_S32):
2561         (JSC::ARMv7Assembler::vcvtr_S32_F64):
2562         (JSC::ARMv7Assembler::vdiv_F64):
2563         (JSC::ARMv7Assembler::vldr):
2564         (JSC::ARMv7Assembler::vmov_F64_0):
2565         (JSC::ARMv7Assembler::vmov):
2566         (JSC::ARMv7Assembler::vmrs):
2567         (JSC::ARMv7Assembler::vmul_F64):
2568         (JSC::ARMv7Assembler::vstr):
2569         (JSC::ARMv7Assembler::vsub_F64):
2570         (JSC::ARMv7Assembler::VFPOperand::VFPOperand):
2571         (JSC::ARMv7Assembler::VFPOperand::bits1):
2572         (JSC::ARMv7Assembler::VFPOperand::bits4):
2573         (JSC::ARMv7Assembler::vcvtOp):
2574         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp):
2575         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp):
2576         * assembler/MacroAssemblerARMv7.h:
2577         (JSC::MacroAssemblerARMv7::branchDouble):
2578         * runtime/JSImmediate.h:
2579         (JSC::JSValue::isCell):
2580
2581 2010-07-02  Sheriff Bot  <webkit.review.bot@gmail.com>
2582
2583         Unreviewed, rolling out r62410.
2584         http://trac.webkit.org/changeset/62410
2585         https://bugs.webkit.org/show_bug.cgi?id=41549
2586
2587         accursed last minute changes (Requested by olliej on #webkit).
2588
2589         * parser/Lexer.cpp:
2590         (JSC::Lexer::setCode):
2591         (JSC::Lexer::copyCodeWithoutBOMs):
2592         (JSC::Lexer::sourceCode):
2593         * parser/SourceProvider.h:
2594         (JSC::):
2595         (JSC::SourceProvider::SourceProvider):
2596         (JSC::SourceProvider::hasBOMs):
2597         (JSC::UStringSourceProvider::create):
2598         (JSC::UStringSourceProvider::getRange):
2599         (JSC::UStringSourceProvider::UStringSourceProvider):
2600         * wtf/text/StringImpl.h:
2601
2602 2010-07-02  Sam Weinig  <sam@webkit.org>
2603
2604         Reviewed by Geoffrey Garen.
2605
2606         Patch for https://bugs.webkit.org/show_bug.cgi?id=41548
2607         Use snprintf instead of sprintf everywhere in JavaScriptCore
2608
2609         * runtime/JSGlobalObjectFunctions.cpp:
2610         (JSC::encode):
2611         (JSC::globalFuncEscape):
2612         * runtime/UString.cpp:
2613         (JSC::UString::from):
2614
2615 2010-07-02  Oliver Hunt  <oliver@apple.com>
2616
2617         Reviewed by Geoffrey Garen.
2618
2619         Move BOM handling out of the lexer and parser
2620         https://bugs.webkit.org/show_bug.cgi?id=41539
2621
2622         Doing the BOM stripping in the lexer meant that we could
2623         end up having to strip the BOMs from a source multiple times.
2624         To deal with this we now require all strings provided by
2625         a SourceProvider to already have had the BOMs stripped.
2626         This also simplifies some of the lexer logic.
2627
2628         * parser/Lexer.cpp:
2629         (JSC::Lexer::setCode):
2630         (JSC::Lexer::sourceCode):
2631         * parser/SourceProvider.h:
2632         (JSC::SourceProvider::SourceProvider):
2633         (JSC::UStringSourceProvider::create):
2634         (JSC::UStringSourceProvider::getRange):
2635         (JSC::UStringSourceProvider::UStringSourceProvider):
2636         * wtf/text/StringImpl.h:
2637         (WebCore::StringImpl::copyStringWithoutBOMs):
2638
2639 2010-07-02  Renata Hodovan  <reni@inf.u-szeged.hu>
2640
2641         Reviewed by Oliver Hunt.
2642         
2643         [ Updated after rollout. ]
2644
2645         Merged RegExp constructor and RegExp::create methods.
2646         Both functions are called with three parameters and check whether 
2647         flags (the third param) is given or not.
2648         Avoid extra hash lookups in RegExpCache::create by passing a pre-computed
2649         iterator parameter.
2650         https://bugs.webkit.org/show_bug.cgi?id=41055
2651
2652         * runtime/RegExp.cpp:
2653         (JSC::RegExp::RegExp):
2654         * runtime/RegExp.h:
2655         * runtime/RegExpCache.cpp:
2656         (JSC::RegExpCache::lookupOrCreate):
2657         (JSC::RegExpCache::create):
2658         * runtime/RegExpCache.h:
2659
2660 2010-07-02  Martin Robinson  <mrobinson@igalia.com>
2661
2662         Unreviewed. Build fix for GTK+.
2663
2664         Build Lexer.lut.h with the rest of the .lut.h files. Later these should
2665         all probably be moved to DerivedSources.
2666
2667         * GNUmakefile.am:
2668
2669 2010-06-23  Martin Robinson  <mrobinson@igalia.com>
2670
2671         Reviewed by Gustavo Noronha Silva.
2672
2673         [GTK] Separate DerivedSources per-project
2674         https://bugs.webkit.org/show_bug.cgi?id=41109
2675
2676         Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore.
2677
2678         * GNUmakefile.am:
2679
2680 2010-07-02  Peter Varga  <pvarga@inf.u-szeged.hu>
2681
2682         Reviewed by Oliver Hunt.
2683
2684         The alternativeFrameLocation value is wrong in the emitDisjunction function in
2685         case of PatternTerm::TypeParentheticalAssertion. This value needs to be
2686         computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc
2687         memory corruption in some cases.
2688         Layout test added for checking of TypeParentheticalAssertion case.
2689         https://bugs.webkit.org/show_bug.cgi?id=41458
2690
2691         * yarr/RegexInterpreter.cpp:
2692         (JSC::Yarr::ByteCompiler::emitDisjunction):
2693
2694 2010-07-01  Oliver Hunt  <oliver@apple.com>
2695
2696         Reviewed by Maciej Stachowiak.
2697
2698         Add a FixedArray template to encapsulate fixed length arrays
2699         https://bugs.webkit.org/show_bug.cgi?id=41506
2700
2701         This new type is used in place of fixed length C arrays so
2702         that debug builds can guard against attempts to go beyond
2703         the end of the array.
2704
2705         * JavaScriptCore.xcodeproj/project.pbxproj:
2706         * bytecode/Opcode.cpp:
2707         (JSC::OpcodeStats::~OpcodeStats):
2708         * pcre/pcre_compile.cpp:
2709         (calculateCompiledPatternLength):
2710         * runtime/Collector.cpp:
2711         (JSC::Heap::allocateBlock):
2712         (JSC::Heap::allocate):
2713         * runtime/Collector.h:
2714         (JSC::CollectorBitmap::clearAll):
2715         * runtime/CollectorHeapIterator.h:
2716         (JSC::CollectorHeapIterator::operator*):
2717         * runtime/DateInstanceCache.h:
2718         * runtime/JSString.cpp:
2719         (JSC::JSString::replaceCharacter):
2720         * runtime/JSString.h:
2721         (JSC::RopeBuilder::JSStringFinalizerStruct::):
2722         * runtime/NumericStrings.h:
2723         * runtime/RegExpCache.h:
2724         * runtime/SmallStrings.h:
2725         (JSC::SmallStrings::singleCharacterStrings):
2726         * wtf/AVLTree.h:
2727         * wtf/FixedArray.h: Added.
2728         (WTF::FixedArray::operator[]):
2729         (WTF::FixedArray::data):
2730
2731 2010-07-01  Zoltan Herczeg  <zherczeg@webkit.org>
2732
2733         Reviewed by Oliver Hunt.
2734
2735         Improve the main lexer switch by mapping input characters to their type
2736         https://bugs.webkit.org/show_bug.cgi?id=41459
2737
2738         Sunsipder: no change (from 532.9ms to 531.5ms)
2739         SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms)
2740
2741         * parser/Lexer.cpp:
2742         (JSC::):
2743         (JSC::Lexer::lex):
2744
2745 2010-07-01  Sam Weinig  <sam@webkit.org>
2746
2747         Rubber-stamped by Ander Carlsson.
2748
2749         Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard.
2750
2751         * wtf/Platform.h:
2752
2753 2010-07-01  Gavin Barraclough  <barraclough@apple.com>
2754
2755         Reviewed by Oliver Hunt.
2756
2757         Bug 41490 - Add missing operations to MacroAssemblerARMv7
2758         Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed.
2759
2760         * assembler/ARMv7Assembler.h:
2761         (JSC::ARMRegisters::):
2762         (JSC::ARMRegisters::asSingle):
2763         (JSC::ARMRegisters::asDouble):
2764         (JSC::VFPImmediate::VFPImmediate):
2765         (JSC::VFPImmediate::isValid):
2766         (JSC::VFPImmediate::value):
2767         (JSC::ARMv7Assembler::singleRegisterMask):
2768         (JSC::ARMv7Assembler::doubleRegisterMask):
2769         (JSC::ARMv7Assembler::):
2770         (JSC::ARMv7Assembler::add_S):
2771         (JSC::ARMv7Assembler::neg):
2772         (JSC::ARMv7Assembler::orr_S):
2773         (JSC::ARMv7Assembler::sub):
2774         (JSC::ARMv7Assembler::sub_S):
2775         (JSC::ARMv7Assembler::vadd_F64):
2776         (JSC::ARMv7Assembler::vcmp_F64):
2777         (JSC::ARMv7Assembler::vcvt_F64_S32):
2778         (JSC::ARMv7Assembler::vcvtr_S32_F64):
2779         (JSC::ARMv7Assembler::vdiv_F64):
2780         (JSC::ARMv7Assembler::vldr):
2781         (JSC::ARMv7Assembler::vmov_F64_0):
2782         (JSC::ARMv7Assembler::vmov):
2783         (JSC::ARMv7Assembler::vmul_F64):
2784         (JSC::ARMv7Assembler::vstr):
2785         (JSC::ARMv7Assembler::vsub_F64):
2786         (JSC::ARMv7Assembler::vcvt):
2787         (JSC::ARMv7Assembler::vmem):
2788         * assembler/AbstractMacroAssembler.h:
2789         * assembler/MacroAssemblerARM.h:
2790         * assembler/MacroAssemblerARMv7.h:
2791         (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle):
2792         (JSC::MacroAssemblerARMv7::neg32):
2793         (JSC::MacroAssemblerARMv7::loadDouble):
2794         (JSC::MacroAssemblerARMv7::divDouble):
2795         (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
2796         (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
2797         (JSC::MacroAssemblerARMv7::zeroDouble):
2798         (JSC::MacroAssemblerARMv7::branchOr32):
2799         (JSC::MacroAssemblerARMv7::set32):
2800         (JSC::MacroAssemblerARMv7::set8):
2801         * assembler/MacroAssemblerMIPS.h:
2802         * assembler/MacroAssemblerX86Common.h:
2803
2804 2010-07-01  Oliver Hunt  <oliver@apple.com>
2805
2806         Reviewed by Geoff Garen.
2807
2808         Improve reentrancy logic in polymorphic cache stubs
2809         <https://bugs.webkit.org/show_bug.cgi?id=41482>
2810         <rdar://problem/8094380>
2811
2812         Make the polymorphic cache stubs handle reentrancy
2813         better.
2814
2815         * jit/JITStubs.cpp:
2816         (JSC::DEFINE_STUB_FUNCTION):
2817         (JSC::getPolymorphicAccessStructureListSlot):
2818
2819 2010-07-01  Antti Koivisto  <koivisto@iki.fi>
2820
2821         Revert accidental commit.
2822
2823         * runtime/Collector.cpp:
2824         (JSC::Heap::allocateBlock):
2825
2826 2010-06-30  Darin Adler  <darin@apple.com>
2827
2828         Reviewed by Adam Barth.
2829
2830         Add assertion, off by default, for when you forget to do adoptRef
2831         https://bugs.webkit.org/show_bug.cgi?id=41422
2832
2833         * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted
2834         function, called on the pointer by adoptRef, with an empty inline
2835         default version, meant to be overloaded. Unified the inlining
2836         with a macro named REF_DEREF_INLINE to make it clearer what's
2837         going on in the refIfNotNull/derefIfNotNull functions. Renamed
2838         releaseRef to leakRef, but left the old name in for compatibility
2839         for now.
2840
2841         * wtf/RefCounted.h: Added code to require adoption and assert if
2842         you don't call adoptRef. For now, it is turned off because of the
2843         LOOSE_REF_COUNTED define in this header. Later we can turn it on
2844         once we get everything working without asserting.
2845
2846 2010-06-29  Michael Saboff  <msaboff@apple.com>
2847
2848         Reviewed by Darin Adler.
2849
2850         Bug 41238 - RegExp performance slow on Dromaeo benchmark
2851
2852         Other javascript engines appear to cache prior results of regular 
2853         expression operations.
2854
2855         Suggest adding some sort of caching mechanism to regular expression 
2856         processing.
2857
2858         Added a single entry cache of match() results to RegExp class.
2859
2860         Also added performance improvements to UString == operator.
2861         First check the impls for equality.  Then get the length of
2862         each of the non-null impls.  Next check the sizes for equality.
2863         Then check the data for the case of different impls that point 
2864         to the same data (most likely due to substrings from the beginning of
2865         another string).  Lastly we check the underlying data for equality.
2866
2867         * runtime/RegExp.cpp:
2868         (JSC::RegExp::RegExp):
2869         (JSC::RegExp::match):
2870         * runtime/RegExp.h:
2871         * runtime/UString.h:
2872         (JSC::operator==):
2873
2874 2010-06-29  Nathan Lawrence  <nlawrence@apple.com>
2875
2876         Reviewed by Geoffrey Garen.
2877
2878         WTF::HashSet iterators are quasi-mutable.  Changing the value through
2879         dereferencing an iterator will not change the behavior of methods like
2880         contains or find, but will change the behavior of iterating.
2881
2882         * wtf/HashSet.h:
2883         (WTF::::begin):
2884         (WTF::::end):
2885         (WTF::::find):
2886         (WTF::::remove):
2887         * wtf/HashTable.h:
2888
2889 2010-06-29  Martin Robinson  <mrobinson@igalia.com>
2890
2891         Reviewed by Xan Lopez.
2892
2893         [GTK] Clean up the source lists in the GNUMakefile.am files
2894         https://bugs.webkit.org/show_bug.cgi?id=41229
2895
2896         Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate
2897         the source lists.
2898
2899         * GNUmakefile.am:
2900
2901 2010-06-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
2902
2903         Reviewed by Kenneth Rohde Christiansen.
2904
2905         [Qt] Fix QtScript build after QScriptValuePrivate ctor changes
2906         https://bugs.webkit.org/show_bug.cgi?id=41307
2907
2908         * qt/api/qscriptvalue_p.h:
2909         (QScriptValuePrivate::prototype):
2910         * qt/benchmarks/qscriptengine/qscriptengine.pro:
2911
2912 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
2913
2914         Reviewed by Kenneth Rohde Christiansen.
2915
2916         [Qt] QScriptEngine API should contain a newArray function
2917         https://bugs.webkit.org/show_bug.cgi?id=39115
2918
2919         * qt/api/qscriptengine.cpp:
2920         (QScriptEngine::newArray):
2921         * qt/api/qscriptengine.h:
2922         * qt/api/qscriptengine_p.cpp:
2923         (QScriptEnginePrivate::newArray):
2924         * qt/api/qscriptengine_p.h:
2925         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2926         (tst_QScriptEngine::newArray):
2927
2928 2010-06-28  Xan Lopez  <xlopez@igalia.com>
2929
2930         Reviewed by Gustavo Noronha.
2931
2932         Install jsc as jsc-X where X is the major API version to allow
2933         parallel installation of both GTK+ 2.x and 3.x versions.
2934
2935         * GNUmakefile.am:
2936
2937 2010-06-28  John Gregg  <johnnyg@google.com>
2938
2939         Reviewed by Kent Tamura.
2940
2941         add ENABLE_DIRECTORY_UPLOAD build support
2942         https://bugs.webkit.org/show_bug.cgi?id=41100
2943
2944         * Configurations/FeatureDefines.xcconfig:
2945
2946 2010-06-28  Xan Lopez  <xlopez@igalia.com>
2947
2948         Revert to build jsc, since the tests expect this.
2949
2950         * GNUmakefile.am:
2951
2952 2010-06-28  Zoltan Herczeg  <zherczeg@webkit.org>
2953
2954         Reviewed by Oliver Hunt.
2955
2956         Only one character lookahead should be enough for the lexer
2957         https://bugs.webkit.org/show_bug.cgi?id=41213
2958
2959         The lexer had 4 character lookahead before, which required
2960         a complex shifting mechanism. This can be improved by using
2961         only one character lookahead for most decisions, and a
2962         peek() function as a fallback when it is absolutely necessary.
2963
2964         * parser/Lexer.cpp:
2965         (JSC::Lexer::currentCharacter):
2966         (JSC::Lexer::currentOffset):
2967         (JSC::Lexer::setCode):
2968         (JSC::Lexer::shift):
2969         (JSC::Lexer::peek):
2970         (JSC::Lexer::getUnicodeCharacter):
2971         (JSC::Lexer::shiftLineTerminator):
2972         (JSC::Lexer::lastTokenWasRestrKeyword):
2973         (JSC::Lexer::lex):
2974         (JSC::Lexer::scanRegExp):
2975         (JSC::Lexer::skipRegExp):
2976         * parser/Lexer.h:
2977
2978 2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
2979
2980         Unreviewed build fix.
2981
2982         [EFL] Build fix for latest version of Ecore library.
2983         Ecore recently changed return type of callbacks from int to Eina_Bool.
2984
2985         * wtf/efl/MainThreadEfl.cpp:
2986         (WTF::timeoutFired): Return Eina_Bool instead of int.
2987
2988 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
2989
2990         Reviewed by Kenneth Rohde Christiansen.
2991
2992         [Qt] QScriptValue should have API for accessing object properties
2993         https://bugs.webkit.org/show_bug.cgi?id=40903
2994
2995         Make possible to access properties inside QScriptValues. While this
2996         still doesn't support the ResolveLocal parameter, it is already useful
2997         for testing the API.
2998
2999         The tests from upstream QtScript weren't imported since most of them
3000         depend on the setProperty() function as well. A simple test was created.
3001
3002         * qt/api/qscriptvalue.cpp:
3003         (QScriptValue::property):
3004         * qt/api/qscriptvalue.h:
3005         (QScriptValue::):
3006         * qt/api/qscriptvalue_p.h:
3007         (QScriptValuePrivate::property):
3008         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
3009         (tst_QScriptValue::propertySimple):
3010         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
3011
3012 2010-06-28  Xan Lopez  <xlopez@igalia.com>
3013
3014         Reviewed by Gustavo Noronha.
3015
3016         [GTK] Add support for GTK+3
3017         https://bugs.webkit.org/show_bug.cgi?id=41253
3018
3019         Suffix jsc with the API version of the library, so that
3020         libwebkitgtk 1.x and 3.x can install jsc.
3021
3022         * GNUmakefile.am:
3023
3024 2010-06-27  Kwang Yul Seo  <skyul@company100.net>
3025
3026         Reviewed by Kent Tamura.
3027
3028         [BREWMP] Turn ENABLE(SINGLE_THREADED) on.
3029         https://bugs.webkit.org/show_bug.cgi?id=41135
3030
3031         Brew MP does not support preemptive multi-threading.
3032         Disable threading for Brew MP.
3033
3034         * wtf/Platform.h:
3035
3036 2010-06-26  Tony Gentilcore  <tonyg@chromium.org>
3037
3038         Reviewed by Dimitri Glazkov.
3039
3040         Add an ENABLE_WEB_TIMING option for enabling Web Timing support.
3041         https://bugs.webkit.org/show_bug.cgi?id=38924
3042
3043         * Configurations/FeatureDefines.xcconfig:
3044
3045 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
3046
3047         Reviewed by Geoffrey Garen.
3048
3049         We assume in testapi.c that the value aHeapRef refers to will not be
3050         moved.  When we have movable objects, this will not be the case.
3051
3052         * API/tests/testapi.c:
3053         (main):
3054
3055 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
3056
3057         Unreviewed, rolling out r61924.
3058         http://trac.webkit.org/changeset/61924
3059         https://bugs.webkit.org/show_bug.cgi?id=41240
3060
3061         It was rolled out, but cq+ wasn't removed (Requested by Ossy_
3062         on #webkit).
3063
3064         * runtime/RegExp.cpp:
3065         (JSC::RegExp::RegExp):
3066         (JSC::RegExp::create):
3067         * runtime/RegExp.h:
3068         * runtime/RegExpCache.cpp:
3069         (JSC::RegExpCache::lookupOrCreate):
3070         (JSC::RegExpCache::create):
3071         * runtime/RegExpCache.h:
3072
3073 2010-06-25  Renata Hodovan  <reni@inf.u-szeged.hu>
3074
3075         Reviewed by Geoffrey Garen.
3076
3077         Merge RegExp constructor and RegExp::create methods into one.
3078         Both of function are called with tree parameters and check whether 
3079         flags (the third param) is given or not.
3080         Simplify hash lookups in RegExpCache::create with giving them an extra 
3081         iterator parameter.
3082         https://bugs.webkit.org/show_bug.cgi?id=41055
3083
3084         * runtime/RegExp.cpp:
3085         (JSC::RegExp::RegExp):
3086         * runtime/RegExp.h:
3087         * runtime/RegExpCache.cpp:
3088         (JSC::RegExpCache::lookupOrCreate):
3089         (JSC::RegExpCache::create):
3090         * runtime/RegExpCache.h:
3091
3092 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3093
3094         Reviewed by Simon Hausmann.
3095
3096         Introduce QtScript benchmarks.
3097
3098         The QtScript performance should be tested regularly. The patch introduces
3099         micro benchmarks for existing API.
3100
3101         [Qt] Performance of the QtScript API is not tested.
3102         https://bugs.webkit.org/show_bug.cgi?id=40911
3103
3104         * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri.
3105         * qt/benchmarks/benchmarks.pro: Added.
3106         * qt/benchmarks/qscriptengine/qscriptengine.pro: Added.
3107         * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added.
3108         (tst_QScriptEngine::checkSyntax_data):
3109         (tst_QScriptEngine::checkSyntax):
3110         (tst_QScriptEngine::constructor):
3111         (tst_QScriptEngine::evaluateString_data):
3112         (tst_QScriptEngine::evaluateString):
3113         (tst_QScriptEngine::evaluateProgram_data):
3114         (tst_QScriptEngine::evaluateProgram):
3115         (tst_QScriptEngine::newObject):
3116         (tst_QScriptEngine::nullValue):
3117         (tst_QScriptEngine::undefinedValue):
3118         (tst_QScriptEngine::globalObject):
3119         (tst_QScriptEngine::toStringHandle):
3120         * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added.
3121         * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added.
3122         (tst_QScriptValue::tst_QScriptValue):
3123         (tst_QScriptValue::~tst_QScriptValue):
3124         (tst_QScriptValue::values_data):
3125         (tst_QScriptValue::ctorBool):
3126         (tst_QScriptValue::ctorReal):
3127         (tst_QScriptValue::ctorNumber):
3128         (tst_QScriptValue::ctorQString):
3129         (tst_QScriptValue::ctorCString):
3130         (tst_QScriptValue::ctorSpecial):
3131         (tst_QScriptValue::ctorQScriptValue):
3132         (tst_QScriptValue::isValid_data):
3133         (tst_QScriptValue::isValid):
3134         (tst_QScriptValue::isBool_data):
3135         (tst_QScriptValue::isBool):
3136         (tst_QScriptValue::isNumber_data):
3137         (tst_QScriptValue::isNumber):
3138         (tst_QScriptValue::isFunction_data):
3139         (tst_QScriptValue::isFunction):
3140         (tst_QScriptValue::isNull_data):
3141         (tst_QScriptValue::isNull):
3142         (tst_QScriptValue::isString_data):
3143         (tst_QScriptValue::isString):
3144         (tst_QScriptValue::isUndefined_data):
3145         (tst_QScriptValue::isUndefined):
3146         (tst_QScriptValue::isObject_data):
3147         (tst_QScriptValue::isObject):
3148         (tst_QScriptValue::isError_data):
3149         (tst_QScriptValue::isError):
3150         (tst_QScriptValue::toString_data):
3151         (tst_QScriptValue::toString):
3152         (tst_QScriptValue::toNumber_data):
3153         (tst_QScriptValue::toNumber):
3154         (tst_QScriptValue::toBool_data):
3155         (tst_QScriptValue::toBool):
3156         (tst_QScriptValue::toInteger_data):
3157         (tst_QScriptValue::toInteger):
3158         (tst_QScriptValue::toInt32_data):
3159         (tst_QScriptValue::toInt32):
3160         (tst_QScriptValue::toUInt32_data):
3161         (tst_QScriptValue::toUInt32):
3162         (tst_QScriptValue::toUInt16_data):
3163         (tst_QScriptValue::toUInt16):
3164         (tst_QScriptValue::toObject_data):
3165         (tst_QScriptValue::toObject):
3166         (tst_QScriptValue::equals_data):
3167         (tst_QScriptValue::equals):
3168         (tst_QScriptValue::strictlyEquals_data):
3169         (tst_QScriptValue::strictlyEquals):
3170         (tst_QScriptValue::instanceOf_data):
3171         (tst_QScriptValue::instanceOf):
3172
3173 2010-06-25  Oliver Hunt  <oliver@apple.com>
3174
3175         Reviewed by Geoffrey Garen.
3176
3177         Remove old js parser
3178         https://bugs.webkit.org/show_bug.cgi?id=41222
3179
3180         Remove the old yacc parser, this also solves the tiger problem.  Which
3181         was a conflict between yacc generated token values and those in the
3182         custom parser
3183
3184         * Android.mk:
3185         * CMakeLists.txt:
3186         * DerivedSources.make:
3187         * DerivedSources.pro:
3188         * GNUmakefile.am:
3189         * JavaScriptCore.pro:
3190         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3191         * JavaScriptCore.xcodeproj/project.pbxproj:
3192         * parser/Grammar.y: Removed.
3193         * parser/JSParser.cpp:
3194         * parser/JSParser.h:
3195         * parser/Lexer.cpp:
3196         * parser/NodeConstructors.h:
3197         (JSC::Node::Node):
3198         * parser/Parser.cpp:
3199         (JSC::Parser::parse):
3200         * wtf/Platform.h:
3201
3202 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3203
3204         Reviewed by Simon Hausmann.
3205
3206         New QtScript API; setPrototype() and prototype().
3207
3208         This patch implements QScriptValue's prototype accessors.
3209
3210         [Qt] QScriptValue should have accessors to a prototype.
3211         https://bugs.webkit.org/show_bug.cgi?id=39356
3212
3213         * qt/api/qscriptvalue.cpp:
3214         (QScriptValue::prototype):
3215         (QScriptValue::setPrototype):
3216         * qt/api/qscriptvalue.h:
3217         * qt/api/qscriptvalue_p.h:
3218         (QScriptValuePrivate::prototype):
3219         (QScriptValuePrivate::setPrototype):
3220         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
3221         (tst_QScriptValue::getSetPrototype):
3222         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
3223
3224 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
3225
3226         Reviewed by Kenneth Rohde Christiansen.
3227
3228         [CMake] Add option to enable JIT.
3229         JIT is disabled by default, but now it's possible to enable it through
3230         an option to CMake: -DENABLE_JIT will enable it.
3231         https://bugs.webkit.org/show_bug.cgi?id=40936
3232
3233         * CMakeLists.txt: Add missing files and re-sort.
3234
3235 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
3236
3237         Reviewed by Gustavo Noronha Silva.
3238
3239         [CMake] Remove unused variable in EFL build system. It was previously
3240         being used to set the flags of each port but it was superseded by
3241         other flags.
3242         https://bugs.webkit.org/show_bug.cgi?id=40931
3243
3244         * jsc/CMakeLists.txt:
3245
3246 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
3247
3248         Reviewed by Geoffrey Garen.
3249
3250         Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on
3251         sunspider.
3252
3253         * assembler/AssemblerBuffer.h:
3254         (JSC::AssemblerBuffer::AssemblerBuffer):
3255
3256 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
3257
3258         Unreviewed, rolling out r61842.
3259         http://trac.webkit.org/changeset/61842
3260         https://bugs.webkit.org/show_bug.cgi?id=41208
3261
3262         It broke Windows build (Requested by Ossy_ on #webkit).
3263
3264         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3265         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3266         * wtf/OwnPtrCommon.h:
3267         * wtf/brew/OwnPtrBrew.h: Removed.
3268         * wtf/win/OwnPtrWin.h: Removed.
3269
3270 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
3271
3272         Unreviewed, rolling out r61833.
3273         http://trac.webkit.org/changeset/61833
3274         https://bugs.webkit.org/show_bug.cgi?id=41205
3275
3276         It broke Leopard and GTK (Requested by Ossy_ on #webkit).
3277
3278         * runtime/RegExp.cpp:
3279         (JSC::RegExp::RegExp):
3280         (JSC::RegExp::create):
3281         * runtime/RegExp.h:
3282         * runtime/RegExpCache.cpp:
3283         (JSC::RegExpCache::lookupOrCreate):
3284         (JSC::RegExpCache::create):
3285         * runtime/RegExpCache.h:
3286
3287 2010-06-25  Kwang Yul Seo  <skyul@company100.net>
3288
3289         Reviewed by Adam Barth.
3290
3291         Change OwnPtrCommon to include platform-specific headers
3292         https://bugs.webkit.org/show_bug.cgi?id=40279
3293
3294         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
3295         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
3296
3297         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3298         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3299         * wtf/OwnPtrCommon.h:
3300         * wtf/brew/OwnPtrBrew.h: Added.
3301         * wtf/win/OwnPtrWin.h: Added.
3302
3303 2010-06-25  Patrick Gansterer  <paroga@paroga.com>
3304
3305         Reviewed by Darin Adler.
3306
3307         Add the possibility for a head and footer section to create_jit_stubs.
3308         https://bugs.webkit.org/show_bug.cgi?id=36050
3309
3310         * create_jit_stubs:
3311
3312 2010-06-24  Renata Hodovan  <reni@inf.u-szeged.hu>
3313
3314         Reviewed by Geoffrey Garen.
3315
3316         Merge RegExp constructor and RegExp::create methods into one.
3317         Both of function are called with tree parameters and check whether 
3318         flags (the third param) is given or not.
3319         Simplify hash lookups in RegExpCache::create with giving them an extra 
3320         iterator parameter.
3321         https://bugs.webkit.org/show_bug.cgi?id=41055
3322
3323         * runtime/RegExp.cpp:
3324         (JSC::RegExp::RegExp):
3325         * runtime/RegExp.h:
3326         * runtime/RegExpCache.cpp:
3327         (JSC::RegExpCache::lookupOrCreate):
3328         (JSC::RegExpCache::create):
3329         * runtime/RegExpCache.h:
3330
3331 2010-06-24  Oliver Hunt  <oliver@apple.com>
3332
3333         Reviewed by Maciej Stachowiak.
3334
3335         Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64
3336         https://bugs.webkit.org/show_bug.cgi?id=41193
3337
3338         I noticed a use of '+ 4' in some of the 32_64 code paths and realised there
3339         were a few places where endianness was being hardcoded.  This patch fixes
3340         the errors i could find through code inspection.
3341
3342         * jit/JITOpcodes32_64.cpp:
3343         (JSC::JIT::emit_op_resolve_global):
3344         * jit/JITPropertyAccess32_64.cpp:
3345         (JSC::JIT::emit_op_get_by_val):
3346         (JSC::JIT::emit_op_put_by_val):
3347         (JSC::JIT::compileGetDirectOffset):
3348         (JSC::JIT::privateCompilePutByIdTransition):
3349         (JSC::JIT::patchGetByIdSelf):
3350         (JSC::JIT::patchPutByIdReplace):
3351
3352 2010-06-24  Oliver Hunt  <oliver@apple.com>
3353
3354         Build fix
3355
3356         Temporarily get the tiger bot working again by disabling the
3357         new JS parser.  GCC on tiger is miscompiling the parser and
3358         I don't have access to a tiger machine right now.
3359
3360         * wtf/Platform.h:
3361
3362  2010-06-21  Nathan Lawrence  <nlawrence@apple.com>
3363
3364          Reviewed by Geoff Garen.
3365
3366          https://bugs.webkit.org/show_bug.cgi?id=40128
3367          Fixed broken debug functionality.
3368
3369          * interpreter/Interpreter.cpp:
3370          (JSC::Interpreter::dumpRegisters):
3371              Fixed to work with updated call frame.
3372          * runtime/JSImmediate.h:
3373          (JSC::JSValue::isCell):
3374              Added assert for aligned cell.
3375          * runtime/JSValue.cpp:
3376          (JSC::JSValue::description):
3377              Fixed to work with current JSValue implementation.
3378          * runtime/JSZombie.cpp:
3379          (JSC::JSZombie::leakedZombieStructure):
3380              JSombies compile again.
3381
3382 2010-06-24  Leandro Pereira  <leandro@profusion.mobi>
3383
3384         Unreviewed build fix.
3385
3386         * CMakeLists.txt: Add JSParser.cpp.
3387
3388 2010-06-24  Oliver Hunt  <oliver@apple.com>
3389
3390         Reviewed by Maciej Stachowiak.
3391
3392         Single character string replacement may replace too many characters
3393         https://bugs.webkit.org/show_bug.cgi?id=41138
3394         <rdar://problem/8097496>
3395
3396         Simple fix to stop the rope path of single character replacement
3397         once the first replacement occurs.
3398
3399         * runtime/JSString.cpp:
3400         (JSC::JSString::replaceCharacter):
3401
3402 2010-06-24  Gabor Loki  <loki@webkit.org>
3403
3404         Reviewed by Gavin Barraclough.
3405
3406         Fix the length of instruction stream controlled by constant pool
3407         https://bugs.webkit.org/show_bug.cgi?id=40293
3408
3409         The initial/maximum length of instruction stream (m_maxDistance) should
3410         be set when the first constant arrives to the constant pool. Otherwise
3411         the constant pool could be placed into an uninterrupted sequence.
3412
3413         * assembler/AssemblerBufferWithConstantPool.h:
3414         (JSC::):
3415
3416 2010-06-24  Oliver Hunt  <oliver@apple.com>
3417
3418         Reviewed by Gavin Barraclough.
3419
3420         We assume bytecodeOffset will always return a value > 1,
3421         so we adjust the failure case to return 1 instead of 0.
3422
3423         * bytecode/CodeBlock.h:
3424         (JSC::CodeBlock::bytecodeOffset):
3425
3426 2010-06-23  Oliver Hunt  <oliver@apple.com>
3427
3428         Reviewed by Gavin Barraclough.
3429
3430         Custom-written JavaScript parser
3431         https://bugs.webkit.org/show_bug.cgi?id=34019
3432
3433         Implement a recursive descent parser similar to that used by V8 and
3434         SpiderMonkey.  Greater than 2x improvement in SunSpider parsing tests.
3435
3436         The parser consists of a JSParser class that uses a TreeBuilder to actually
3437         build the AST.  There are currently two builders -- the ASTBuilder and
3438         SyntaxChecker which separate the job of building an AST for code generation
3439         and simply checking syntactic correctness.
3440
3441         There's still some less than ideal code remaining in the parser to allow
3442         us to retain the existing lexing code with minimal changes.  We'll tidy
3443         this up at a later date.
3444
3445         * GNUmakefile.am:
3446         * JavaScriptCore.gypi:
3447         * JavaScriptCore.pro:
3448         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3449         * JavaScriptCore.xcodeproj/project.pbxproj:
3450         * parser/ASTBuilder.h: Added.
3451         (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
3452         (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
3453         (JSC::ASTBuilder::ASTBuilder):
3454         (JSC::ASTBuilder::createSourceElements):
3455         (JSC::ASTBuilder::varDeclarations):
3456         (JSC::ASTBuilder::funcDeclarations):
3457         (JSC::ASTBuilder::features):
3458         (JSC::ASTBuilder::numConstants):
3459         (JSC::ASTBuilder::appendToComma):
3460         (JSC::ASTBuilder::createCommaExpr):
3461         (JSC::ASTBuilder::createLogicalNot):
3462         (JSC::ASTBuilder::createUnaryPlus):
3463         (JSC::ASTBuilder::createVoid):
3464         (JSC::ASTBuilder::thisExpr):
3465         (JSC::ASTBuilder::createResolve):
3466         (JSC::ASTBuilder::createObjectLiteral):
3467         (JSC::ASTBuilder::createArray):
3468         (JSC::ASTBuilder::createNumberExpr):
3469         (JSC::ASTBuilder::createString):
3470         (JSC::ASTBuilder::createBoolean):
3471         (JSC::ASTBuilder::createNull):
3472         (JSC::ASTBuilder::createBracketAccess):
3473         (JSC::ASTBuilder::createDotAccess):
3474         (JSC::ASTBuilder::createRegex):
3475         (JSC::ASTBuilder::createNewExpr):
3476         (JSC::ASTBuilder::createConditionalExpr):
3477         (JSC::ASTBuilder::createAssignResolve):
3478         (JSC::ASTBuilder::createFunctionExpr):
3479         (JSC::ASTBuilder::createFunctionBody):
3480         (JSC::ASTBuilder::createGetterOrSetterProperty):
3481         (JSC::ASTBuilder::createArguments):
3482         (JSC::ASTBuilder::createArgumentsList):
3483         (JSC::ASTBuilder::createProperty):
3484         (JSC::ASTBuilder::createPropertyList):
3485         (JSC::ASTBuilder::createElementList):
3486         (JSC::ASTBuilder::createFormalParameterList):
3487         (JSC::ASTBuilder::createClause):
3488         (JSC::ASTBuilder::createClauseList):
3489         (JSC::ASTBuilder::setUsesArguments):
3490         (JSC::ASTBuilder::createFuncDeclStatement):
3491         (JSC::ASTBuilder::createBlockStatement):
3492         (JSC::ASTBuilder::createExprStatement):
3493         (JSC::ASTBuilder::createIfStatement):
3494         (JSC::ASTBuilder::createForLoop):
3495         (JSC::ASTBuilder::createForInLoop):
3496         (JSC::ASTBuilder::createEmptyStatement):
3497         (JSC::ASTBuilder::createVarStatement):
3498         (JSC::ASTBuilder::createReturnStatement):
3499         (JSC::ASTBuilder::createBreakStatement):
3500         (JSC::ASTBuilder::createContinueStatement):
3501         (JSC::ASTBuilder::createTryStatement):
3502         (JSC::ASTBuilder::createSwitchStatement):
3503         (JSC::ASTBuilder::createWhileStatement):
3504         (JSC::ASTBuilder::createDoWhileStatement):
3505         (JSC::ASTBuilder::createLabelStatement):
3506         (JSC::ASTBuilder::createWithStatement):
3507         (JSC::ASTBuilder::createThrowStatement):
3508         (JSC::ASTBuilder::createDebugger):
3509         (JSC::ASTBuilder::createConstStatement):
3510         (JSC::ASTBuilder::appendConstDecl):
3511         (JSC::ASTBuilder::appendStatement):
3512         (JSC::ASTBuilder::addVar):
3513         (JSC::ASTBuilder::combineCommaNodes):
3514         (JSC::ASTBuilder::evalCount):
3515         (JSC::ASTBuilder::appendBinaryExpressionInfo):
3516         (JSC::ASTBuilder::operatorStackPop):
3517         (JSC::ASTBuilder::operatorStackHasHigherPrecedence):
3518         (JSC::ASTBuilder::getFromOperandStack):
3519         (JSC::ASTBuilder::shrinkOperandStackBy):
3520         (JSC::ASTBuilder::appendBinaryOperation):
3521         (JSC::ASTBuilder::operatorStackAppend):
3522         (JSC::ASTBuilder::popOperandStack):
3523         (JSC::ASTBuilder::appendUnaryToken):
3524         (JSC::ASTBuilder::unaryTokenStackLastType):
3525         (JSC::ASTBuilder::unaryTokenStackLastStart):
3526         (JSC::ASTBuilder::unaryTokenStackRemoveLast):
3527         (JSC::ASTBuilder::assignmentStackAppend):
3528         (JSC::ASTBuilder::createAssignment):
3529         (JSC::ASTBuilder::Scope::Scope):
3530         (JSC::ASTBuilder::setExceptionLocation):
3531         (JSC::ASTBuilder::incConstants):
3532         (JSC::ASTBuilder::usesThis):
3533         (JSC::ASTBuilder::usesCatch):
3534         (JSC::ASTBuilder::usesClosures):
3535         (JSC::ASTBuilder::usesArguments):
3536         (JSC::ASTBuilder::usesAssignment):
3537         (JSC::ASTBuilder::usesWith):
3538         (JSC::ASTBuilder::usesEval):
3539         (JSC::ASTBuilder::createNumber):
3540         (JSC::ASTBuilder::makeTypeOfNode):
3541         (JSC::ASTBuilder::makeDeleteNode):
3542         (JSC::ASTBuilder::makeNegateNode):
3543         (JSC::ASTBuilder::makeBitwiseNotNode):
3544         (JSC::ASTBuilder::makeMultNode):
3545         (JSC::ASTBuilder::makeDivNode):
3546         (JSC::ASTBuilder::makeAddNode):
3547         (JSC::ASTBuilder::makeSubNode):
3548         (JSC::ASTBuilder::makeLeftShiftNode):
3549         (JSC::ASTBuilder::makeRightShiftNode):
3550         (JSC::ASTBuilder::makeFunctionCallNode):
3551         (JSC::ASTBuilder::makeBinaryNode):
3552         (JSC::ASTBuilder::makeAssignNode):
3553         (JSC::ASTBuilder::makePrefixNode):
3554         (JSC::ASTBuilder::makePostfixNode):
3555         * parser/JSParser.cpp: Added.
3556         (JSC::JSParser::AllowInOverride::AllowInOverride):
3557         (JSC::JSParser::AllowInOverride::~AllowInOverride):
3558         (JSC::JSParser::token):
3559         (JSC::JSParser::next):
3560         (JSC::JSParser::consume):
3561         (JSC::JSParser::match):
3562         (JSC::JSParser::tokenStart):
3563         (JSC::JSParser::tokenLine):
3564         (JSC::JSParser::tokenEnd):
3565         (JSC::JSParser::):
3566         (JSC::JSParser::autoSemiColon):
3567         (JSC::JSParser::canRecurse):
3568         (JSC::JSParser::lastTokenEnd):
3569         (JSC::jsParse):
3570         (JSC::JSParser::JSParser):
3571         (JSC::JSParser::parseProgram):
3572         (JSC::JSParser::allowAutomaticSemicolon):
3573         (JSC::JSParser::parseSourceElements):
3574         (JSC::JSParser::parseVarDeclaration):
3575         (JSC::JSParser::parseConstDeclaration):
3576         (JSC::JSParser::parseDoWhileStatement):
3577         (JSC::JSParser::parseWhileStatement):
3578         (JSC::JSParser::parseVarDeclarationList):
3579         (JSC::JSParser::parseConstDeclarationList):
3580         (JSC::JSParser::parseForStatement):
3581         (JSC::JSParser::parseBreakStatement):
3582         (JSC::JSParser::parseContinueStatement)