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