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