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