initial import
[vuplus_webkit] / Source / JavaScriptCore / ChangeLog-2011-02-16
1 2011-02-15  Gavin Barraclough  <barraclough@apple.com>
2
3         Reviewed by Geoff Garen.
4
5         Bug 54524 - Allow JSObject to fully utilize cell's capacity for inline storage.
6
7         Currently JSObject is both directly instantiated for regular JS objects, and
8         derived to implement subtypes. A consequence of this is that we need to ensure
9         that sufficient space from the cell is left unused and available for any data
10         members that will be introduced by subclasses of JSObject. By restructuring
11         the internal storage array out of JSObject we can increase the size in the
12         internal storage for regular objects.
13
14         Add classes JSFinalObject and JSNonFinalObject. JSNonFinalObject retains as
15         much additional capacity as is currently available to allow for data members
16         in subclasses. JSFinalObject utilizes all available space for internal storage,
17         and only allows construction through JSFinalObject::create().
18
19         The additional storage made available in the JSObject means that we need no
20         longer rely on a union of the internal storage with a pointer to storage that
21         is only valid for external storage. This means we can go back to always having
22         a valid pointer to property storage, regardless of whether this is internal or
23         external. This simplifies some cases of access to the array from C code, and
24         significantly simplifies JIT access, since repatching no longer needs to be
25         able to change between a load of the storage pointer / a LEA of the internal
26         storage.
27
28         * API/JSObjectRef.cpp:
29         (JSObjectMake):
30         * assembler/ARMAssembler.h:
31         * assembler/ARMv7Assembler.h:
32         * assembler/AbstractMacroAssembler.h:
33         (JSC::AbstractMacroAssembler::repatchPointer):
34         * assembler/MIPSAssembler.h:
35         * assembler/MacroAssemblerARM.h:
36         * assembler/MacroAssemblerARMv7.h:
37         * assembler/MacroAssemblerMIPS.h:
38         * assembler/MacroAssemblerX86.h:
39         * assembler/MacroAssemblerX86_64.h:
40         * assembler/RepatchBuffer.h:
41         * assembler/X86Assembler.h:
42         * debugger/DebuggerActivation.cpp:
43         (JSC::DebuggerActivation::DebuggerActivation):
44         * debugger/DebuggerActivation.h:
45         * interpreter/Interpreter.cpp:
46         (JSC::Interpreter::privateExecute):
47         * jit/JIT.h:
48         * jit/JITOpcodes.cpp:
49         (JSC::JIT::emit_op_resolve_global):
50         * jit/JITOpcodes32_64.cpp:
51         (JSC::JIT::emit_op_resolve_global):
52         * jit/JITPropertyAccess.cpp:
53         (JSC::JIT::compileGetDirectOffset):
54         (JSC::JIT::emit_op_get_by_pname):
55         (JSC::JIT::compileGetByIdHotPath):
56         (JSC::JIT::emit_op_put_by_id):
57         (JSC::JIT::compilePutDirectOffset):
58         (JSC::JIT::patchGetByIdSelf):
59         (JSC::JIT::patchPutByIdReplace):
60         (JSC::JIT::privateCompileGetByIdProto):
61         (JSC::JIT::privateCompileGetByIdSelfList):
62         (JSC::JIT::privateCompileGetByIdProtoList):
63         (JSC::JIT::privateCompileGetByIdChainList):
64         (JSC::JIT::privateCompileGetByIdChain):
65         * jit/JITPropertyAccess32_64.cpp:
66         (JSC::JIT::compileGetByIdHotPath):
67         (JSC::JIT::emit_op_put_by_id):
68         (JSC::JIT::compilePutDirectOffset):
69         (JSC::JIT::compileGetDirectOffset):
70         (JSC::JIT::patchGetByIdSelf):
71         (JSC::JIT::patchPutByIdReplace):
72         (JSC::JIT::privateCompileGetByIdProto):
73         (JSC::JIT::privateCompileGetByIdSelfList):
74         (JSC::JIT::privateCompileGetByIdProtoList):
75         (JSC::JIT::privateCompileGetByIdChainList):
76         (JSC::JIT::privateCompileGetByIdChain):
77         (JSC::JIT::emit_op_get_by_pname):
78         * jit/JITStubs.cpp:
79         (JSC::DEFINE_STUB_FUNCTION):
80         * runtime/Arguments.h:
81         (JSC::Arguments::Arguments):
82         * runtime/ErrorInstance.cpp:
83         (JSC::ErrorInstance::ErrorInstance):
84         * runtime/ErrorInstance.h:
85         * runtime/ExceptionHelpers.cpp:
86         (JSC::InterruptedExecutionError::InterruptedExecutionError):
87         (JSC::TerminatedExecutionError::TerminatedExecutionError):
88         * runtime/JSArray.cpp:
89         (JSC::JSArray::JSArray):
90         * runtime/JSArray.h:
91         * runtime/JSByteArray.cpp:
92         (JSC::JSByteArray::JSByteArray):
93         * runtime/JSByteArray.h:
94         (JSC::JSByteArray::JSByteArray):
95         * runtime/JSFunction.cpp:
96         (JSC::JSFunction::getOwnPropertySlot):
97         * runtime/JSGlobalData.cpp:
98         (JSC::JSGlobalData::JSGlobalData):
99         * runtime/JSGlobalObject.h:
100         (JSC::constructEmptyObject):
101         * runtime/JSNotAnObject.h:
102         (JSC::JSNotAnObject::JSNotAnObject):
103         * runtime/JSObject.cpp:
104         (JSC::JSObject::createInheritorID):
105         (JSC::JSObject::allocatePropertyStorage):
106         * runtime/JSObject.h:
107         (JSC::JSObject::propertyStorage):
108         (JSC::JSNonFinalObject::JSNonFinalObject):
109         (JSC::JSNonFinalObject::createStructure):
110         (JSC::JSFinalObject::create):
111         (JSC::JSFinalObject::createStructure):
112         (JSC::JSFinalObject::JSFinalObject):
113         (JSC::JSObject::offsetOfInlineStorage):
114         (JSC::constructEmptyObject):
115         (JSC::createEmptyObjectStructure):
116         (JSC::JSObject::JSObject):
117         (JSC::JSObject::~JSObject):
118         (JSC::Structure::isUsingInlineStorage):
119         * runtime/JSObjectWithGlobalObject.cpp:
120         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
121         * runtime/JSObjectWithGlobalObject.h:
122         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
123         * runtime/JSTypeInfo.h:
124         (JSC::TypeInfo::TypeInfo):
125         (JSC::TypeInfo::isVanilla):
126         * runtime/JSVariableObject.h:
127         (JSC::JSVariableObject::JSVariableObject):
128         * runtime/JSWrapperObject.h:
129         (JSC::JSWrapperObject::JSWrapperObject):
130         * runtime/ObjectConstructor.cpp:
131         (JSC::constructObject):
132         * runtime/ObjectPrototype.cpp:
133         (JSC::ObjectPrototype::ObjectPrototype):
134         * runtime/ObjectPrototype.h:
135         * runtime/StrictEvalActivation.cpp:
136         (JSC::StrictEvalActivation::StrictEvalActivation):
137         * runtime/StrictEvalActivation.h:
138         * runtime/Structure.cpp:
139         (JSC::Structure::Structure):
140         (JSC::Structure::growPropertyStorageCapacity):
141
142 2011-02-16  Oliver Hunt  <oliver@apple.com>
143
144         Reviewed by Geoff Garen.
145
146         Incorrect handling of global writes in dynamic contexts
147         https://bugs.webkit.org/show_bug.cgi?id=49383
148
149         * interpreter/Interpreter.cpp:
150         (JSC::Interpreter::privateExecute):
151           Can't use the existing callframe to return an uncaught exception
152           as by definition that callframe has already been torn down.
153         * parser/ASTBuilder.h:
154         (JSC::ASTBuilder::ASTBuilder):
155         (JSC::ASTBuilder::varDeclarations):
156         (JSC::ASTBuilder::funcDeclarations):
157         (JSC::ASTBuilder::features):
158         (JSC::ASTBuilder::numConstants):
159         (JSC::ASTBuilder::createFuncDeclStatement):
160         (JSC::ASTBuilder::addVar):
161         (JSC::ASTBuilder::incConstants):
162         (JSC::ASTBuilder::usesThis):
163         (JSC::ASTBuilder::usesCatch):
164         (JSC::ASTBuilder::usesClosures):
165         (JSC::ASTBuilder::usesArguments):
166         (JSC::ASTBuilder::usesAssignment):
167         (JSC::ASTBuilder::usesWith):
168         (JSC::ASTBuilder::usesEval):
169           Don't need a vector of scopes in the ASTBuilder
170         * runtime/Operations.h:
171         (JSC::resolveBase):
172           In strict mode the optimisation that we use to skip a lookup
173           on the global object is incorrect and lead to us always
174           disallowing global writes when we needed to do a dynamic slot
175           lookup.  Now the strict mode path actually checks for the
176           property.
177
178 2011-02-15  Jon Honeycutt  <jhoneycutt@apple.com>
179
180         Windows build fix for
181         https://bugs.webkit.org/show_bug.cgi?id=54415
182
183         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
184         Remove deleted files.
185
186 2011-02-15  Oliver Hunt  <oliver@apple.com>
187
188         Fix EFL build for
189         https://bugs.webkit.org/show_bug.cgi?id=54415
190
191         * CMakeLists.txt:
192
193 2011-02-14  Oliver Hunt  <oliver@apple.com>
194
195         Reviewed by Gavin Barraclough and Geoff Garen.
196
197         Refactor handles and weak pointers to become nicer and more automatic
198         https://bugs.webkit.org/show_bug.cgi?id=54415
199
200         Move to a true handle based mechanism for GC value protection.  This
201         also allows us to switch to a more sensible behaviour for weak pointers
202         in which weak pointers are automatically updated.
203
204         This allows us to remove the old (and convoluted) that required all
205         objects that may be held by a weak reference to be aware of the reference
206         and manually clear them in their destructors.
207
208         This also adds a few new data types to JSC that we use to efficiently
209         allocate and return the underlying handle storage.
210
211         This patch is largely renaming and removing now unnecessary destructors
212         from objects.
213
214         * API/JSClassRef.cpp:
215         (OpaqueJSClass::create):
216         (OpaqueJSClassContextData::OpaqueJSClassContextData):
217         (OpaqueJSClass::contextData):
218         (OpaqueJSClass::prototype):
219         * API/JSClassRef.h:
220         * CMakeLists.txt:
221         * GNUmakefile.am:
222         * JavaScriptCore.exp:
223         * JavaScriptCore.gypi:
224         * JavaScriptCore.pro:
225         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
226         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
227         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
228         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
229         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
230         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
231         * JavaScriptCore.xcodeproj/project.pbxproj:
232         * collector/handles/Global.h: Added.
233             New Global handle type used to keep gc objects live, even if they're not
234             marked.
235         (JSC::Global::Global):
236         (JSC::Global::~Global):
237         (JSC::Global::set):
238             We can only assign directly to a global from another global.
239             In all other cases we need the JSGlobalData to be provided
240             explicitly so we use a set function.
241         (JSC::Global::operator=):
242         (JSC::Global::clear):
243         (JSC::Global::isHashTableDeletedValue):
244         (JSC::Global::internalSet):
245         * collector/handles/Handle.h: Added.
246             Root "Handle" type used for immutable handles and to provide the basic
247             APIs needed for pointer-like behaviour.
248         (JSC::HandleBase::operator!):
249         (JSC::HandleBase::operator UnspecifiedBoolType*):
250         (JSC::HandleBase::isEmpty):
251         (JSC::HandleBase::HandleBase):
252         (JSC::HandleBase::slot):
253         (JSC::HandleBase::invalidate):
254         (JSC::HandleBase::setSlot):
255         (JSC::HandleTypes::getFromSlot):
256         (JSC::HandleTypes::toJSValue):
257         (JSC::HandleTypes::validateUpcast):
258         (JSC::HandleConverter::operator->):
259         (JSC::HandleConverter::operator*):
260         (JSC::Handle::Handle):
261         (JSC::Handle::get):
262         (JSC::Handle::wrapSlot):
263         (JSC::operator==):
264         (JSC::operator!=):
265         * collector/handles/HandleHeap.cpp: Added.
266             New heap for global handles.
267         (JSC::HandleHeap::HandleHeap):
268         (JSC::HandleHeap::grow):
269         (JSC::HandleHeap::markStrongHandles):
270         (JSC::HandleHeap::updateAfterMark):
271         (JSC::HandleHeap::clearWeakPointers):
272         (JSC::HandleHeap::writeBarrier):
273         * collector/handles/HandleHeap.h: Added.
274         (JSC::HandleHeap::heapFor):
275         (JSC::HandleHeap::toHandle):
276         (JSC::HandleHeap::toNode):
277         (JSC::HandleHeap::allocate):
278         (JSC::HandleHeap::deallocate):
279         (JSC::HandleHeap::makeWeak):
280             Convert a hard handle into weak handle that does not
281             protect the object it points to.
282         (JSC::HandleHeap::makeSelfDestroying):
283             Converts a handle to a weak handle that will be returned
284             to the free list when the referenced object dies.
285         (JSC::HandleHeap::Node::Node):
286         (JSC::HandleHeap::Node::slot):
287         (JSC::HandleHeap::Node::handleHeap):
288         (JSC::HandleHeap::Node::setFinalizer):
289         (JSC::HandleHeap::Node::makeWeak):
290         (JSC::HandleHeap::Node::isWeak):
291         (JSC::HandleHeap::Node::makeSelfDestroying):
292         (JSC::HandleHeap::Node::isSelfDestroying):
293         (JSC::HandleHeap::Node::finalizer):
294         (JSC::HandleHeap::Node::setPrev):
295         (JSC::HandleHeap::Node::prev):
296         (JSC::HandleHeap::Node::setNext):
297         (JSC::HandleHeap::Node::next):
298         * interpreter/Interpreter.cpp:
299         (JSC::Interpreter::Interpreter):
300         * interpreter/Interpreter.h:
301         * interpreter/RegisterFile.cpp:
302         (JSC::RegisterFile::globalObjectCollected):
303         * interpreter/RegisterFile.h:
304         (JSC::RegisterFile::RegisterFile):
305         * runtime/GCHandle.cpp: Removed.
306         * runtime/GCHandle.h: Removed.
307         * runtime/Heap.cpp:
308         (JSC::Heap::Heap):
309         (JSC::Heap::destroy):
310         (JSC::Heap::markRoots):
311         * runtime/Heap.h:
312         (JSC::Heap::allocateGlobalHandle):
313         (JSC::Heap::reportExtraMemoryCost):
314         * runtime/JSGlobalData.cpp:
315         (JSC::JSGlobalData::JSGlobalData):
316         * runtime/JSGlobalData.h:
317         (JSC::JSGlobalData::allocateGlobalHandle):
318         * runtime/JSGlobalObject.cpp:
319         (JSC::JSGlobalObject::~JSGlobalObject):
320         * runtime/JSPropertyNameIterator.cpp:
321         (JSC::JSPropertyNameIterator::create):
322         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
323         * runtime/JSPropertyNameIterator.h:
324         (JSC::JSPropertyNameIterator::createStructure):
325         (JSC::Structure::setEnumerationCache):
326         (JSC::Structure::clearEnumerationCache):
327         * runtime/Protect.h:
328         * runtime/Structure.cpp:
329         (JSC::Structure::~Structure):
330         * runtime/Structure.h:
331         * runtime/WeakGCPtr.h:
332         (JSC::WeakGCPtrBase::get):
333         (JSC::WeakGCPtrBase::clear):
334         (JSC::WeakGCPtrBase::operator!):
335         (JSC::WeakGCPtrBase::operator UnspecifiedBoolType*):
336         (JSC::WeakGCPtrBase::~WeakGCPtrBase):
337         (JSC::WeakGCPtrBase::WeakGCPtrBase):
338         (JSC::WeakGCPtrBase::internalSet):
339         (JSC::LazyWeakGCPtr::LazyWeakGCPtr):
340         (JSC::LazyWeakGCPtr::set):
341         (JSC::WeakGCPtr::WeakGCPtr):
342         (JSC::WeakGCPtr::operator=):
343         * runtime/WriteBarrier.h:
344         * wtf/BlockStack.h: Added.
345         (WTF::::BlockStack):
346         (WTF::::~BlockStack):
347         (WTF::::blocks):
348         (WTF::::grow):
349         (WTF::::shrink):
350         * wtf/SentinelLinkedList.h: Added.
351         (WTF::::SentinelLinkedList):
352         (WTF::::begin):
353         (WTF::::end):
354         (WTF::::push):
355         (WTF::::remove):
356         * wtf/SinglyLinkedList.h: Added.
357         (WTF::::SinglyLinkedList):
358         (WTF::::isEmpty):
359         (WTF::::push):
360         (WTF::::pop):
361
362 2011-02-15  Pratik Solanki  <psolanki@apple.com>
363
364         Move WTF_USE_CFNETWORK to Platform.h
365         https://bugs.webkit.org/show_bug.cgi?id=54168
366
367         Reviewed by Darin Adler.
368
369         * wtf/Platform.h: Define WTF_USE_CFNETWORK for Windows builds.
370
371 2011-02-15  Geoffrey Garen  <ggaren@apple.com>
372
373         Reviewed by Darin Adler.
374
375         Moved MarkedBlock data members to the head of the block
376         https://bugs.webkit.org/show_bug.cgi?id=54482
377         
378         This allows for a variable-sized tail, to accommodate oversized blocks.
379
380         SunSpider reports no change.
381         
382         * runtime/JSCell.h:
383         (JSC::JSCell::MarkedBlock::allocate):
384         * runtime/MarkedBlock.cpp:
385         (JSC::MarkedBlock::destroy):
386         (JSC::MarkedBlock::MarkedBlock):
387         (JSC::MarkedBlock::sweep):
388         * runtime/MarkedBlock.h: Added missing element to the CELLS_PER_BLOCK
389         calculation. This kind of error is why we want to migrate to the system
390         described below.
391
392         (JSC::roundUpToMultipleOf):
393         (JSC::MarkedBlock::firstCell):
394         (JSC::MarkedBlock::cells):
395         (JSC::MarkedBlock::cellNumber): Use subtraction instead of masking to
396         calculate cell number. The mask is no longer correct because the first
397         cell is not at the head of the block.
398
399         (JSC::MarkedBlock::forEach): Replaced m_cells data member with a cells()
400         accessor. We want to use sizeof(MarkedBlock) to calculate the size of the
401         block header, so we can't have an explicit data member to represent the block tail.
402         
403         Also replaced iteration from zero with iteration from startCell(), since
404         the first N cells are now occupied by the header.
405
406         * runtime/MarkedSpace.cpp:
407         (JSC::MarkedSpace::MarkedSpace):
408         (JSC::MarkedSpace::reset): Replaced iteration from zero as above.
409
410 2011-02-15  Chris Rogers  <crogers@google.com>
411
412         Reviewed by Alexey Proskuryakov.
413
414         Fix Mutex::tryLock() on Windows to work properly with PlatformCondition::timedWait()
415         https://bugs.webkit.org/show_bug.cgi?id=54408
416
417         * wtf/ThreadingWin.cpp:
418         (WTF::PlatformCondition::timedWait):
419
420 2011-02-15  Xan Lopez  <xlopez@igalia.com>
421
422         Reviewed by Martin Robinson.
423
424         Remove some dead code in ARMv7
425         https://bugs.webkit.org/show_bug.cgi?id=54461
426
427         * assembler/ARMv7Assembler.h: remove dead code.
428
429 2011-02-14  Geoffrey Garen  <ggaren@apple.com>
430
431         Rubber-stamped by Gavin Barraclough.
432
433         Some MarkedBlock refactoring.
434         
435         Made cells private.
436         
437         Renamed cells => m_cells
438                 marked => m_marks.
439
440         * runtime/JSCell.h:
441         (JSC::JSCell::MarkedBlock::allocate):
442         * runtime/MarkedBlock.cpp:
443         (JSC::MarkedBlock::destroy):
444         (JSC::MarkedBlock::MarkedBlock):
445         (JSC::MarkedBlock::sweep):
446         * runtime/MarkedBlock.h:
447         (JSC::MarkedBlock::isEmpty):
448         (JSC::MarkedBlock::clearMarks):
449         (JSC::MarkedBlock::markCount):
450         (JSC::MarkedBlock::isMarked):
451         (JSC::MarkedBlock::testAndSetMarked):
452         (JSC::MarkedBlock::setMarked):
453         (JSC::MarkedBlock::forEach):
454
455 2011-02-14  Adam Barth  <abarth@webkit.org>
456
457         Reviewed by Eric Seidel.
458
459         Add basic parser for Content Security Policy
460         https://bugs.webkit.org/show_bug.cgi?id=54379
461
462         Add a constructor for copying a Vector into a String.  I suspect there
463         are a number of call sites that are doing this manually that would
464         benefit from being moved to this API.
465
466         * wtf/text/WTFString.h:
467         (WTF::String::String):
468
469 2011-02-14  Pavel Podivilov  <podivilov@chromium.org>
470
471         Reviewed by Yury Semikhatsky.
472
473         Web Inspector: use call frame column to determine execution line in source frame.
474         https://bugs.webkit.org/show_bug.cgi?id=54001
475
476         * wtf/text/TextPosition.h:
477         (WTF::ZeroBasedNumber::convertAsOneBasedInt):
478
479 2011-02-13  Jeremy Moskovich  <jeremy@chromium.org>
480
481         Reviewed by Adam Barth.
482
483         Add a compile-time option to completely disable WebArchive support.
484         https://bugs.webkit.org/show_bug.cgi?id=52712
485
486         Add an ENABLE(WEB_ARCHIVE) compile-time setting and use it for all WebArchive code.
487         Ports Affected:
488             WebArchive support is currently enabled for all ports that define PLATFORM(CF) apart from Qt.
489             This patch preserves this behavior except that it also disables support in the Chromium port.
490
491         * wtf/Platform.h: Add ENABLE_WEB_ARCHIVE definition and turn it off explicitly for Qt & Chromium ports.
492
493 2011-02-13  Cameron Zwarich  <zwarich@apple.com>
494
495         Reviewed by Dan Bernstein.
496
497         Bug 53760 - JSC fails to build with TOT Clang
498         https://bugs.webkit.org/show_bug.cgi?id=53760
499
500         Fix -Woverloaded-virtual warnings. This is also a 6% speedup on the v8 raytrace
501         benchmark; it is nothing-to-noise on everything else.
502
503         * API/JSCallbackObject.h: Remove pointlessly overloaded method.
504         * API/JSCallbackObjectFunctions.h: Ditto.
505         * runtime/Arguments.cpp: 
506         (JSC::Arguments::put): Change signature to match the base class. This implementation
507         was no longer being called by anyone. This wasn't noticed because it is merely an
508         optimization of the base class' implementation.
509         * runtime/Arguments.h: Ditto.
510
511 2011-02-12  Adam Barth  <abarth@webkit.org>
512
513         Reviewed by Mark Rowe.
514
515         Use /dev/urandom as the OSRandomSource on OS(DARWIN)
516         https://bugs.webkit.org/show_bug.cgi?id=54279
517
518         I'm not sure it makes much of a difference whether we use arc4random or
519         /dev/urandom on Mac.  However, there's some aesthetic benefit to using
520         the same underlying API on as many platforms as reasonable.
521
522         * config.h:
523         * wtf/OSRandomSource.cpp:
524         (WTF::cryptographicallyRandomValuesFromOS):
525
526 2011-02-12  Adam Barth  <abarth@webkit.org>
527
528         Reviewed by Kenneth Russell.
529
530         Enable ArrayBuffers by default
531         https://bugs.webkit.org/show_bug.cgi?id=54310
532
533         Export the required functions.
534
535         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
536
537 2011-02-11  Daniel Bates  <dbates@rim.com>
538
539         Reviewed by Geoffrey Garen.
540
541         Remove explicit disable ENABLE_ASSEMBLER_WX_EXCLUSIVE on non-iOS ports
542         https://bugs.webkit.org/show_bug.cgi?id=54107
543         
544         It is unnecessary to explicitly disable ENABLE_ASSEMBLER_WX_EXCLUSIVE
545         by the definition of ENABLE().
546
547         * wtf/Platform.h:
548
549 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
550
551         Not reviewed.
552
553         Randomly touch some build files in the hopes of fixing the Qt build.
554
555         * JavaScriptCore.gypi:
556         * JavaScriptCore.pri:
557         * JavaScriptCore.pro:
558
559 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
560
561         Reviewed by Sam Weinig.
562
563         Garbage collection timer cycles forever, even when nothing is happening
564         https://bugs.webkit.org/show_bug.cgi?id=54320
565         
566         (Rolling back in r78386 with the build fixed.)
567
568         * runtime/GCActivityCallbackCF.cpp:
569         (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make
570         our timer inert after forcing a GC, to avoid GC'ing repeatedly.
571
572 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
573
574         Not reviewed.
575         
576         Used svn merge -r78386:78385 to roll out r78386 because it broke the build.
577
578         * runtime/GCActivityCallbackCF.cpp:
579         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
580
581 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
582
583         Reviewed by Sam Weinig.
584
585         Garbage collection timer cycles forever, even when nothing is happening
586         https://bugs.webkit.org/show_bug.cgi?id=54320
587
588         * runtime/GCActivityCallbackCF.cpp:
589         (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make
590         our timer inert after forcing a GC, to avoid GC'ing repeatedly.
591
592 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
593
594         Try to fix the Windows build: added an exported symbol.
595
596         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
597
598 2011-02-11  Geoffrey Garen  <ggaren@apple.com>
599
600         Reviewed by Oliver Hunt.
601
602         A little more encapsulation for the heap: Removed CollectorHeapIterator
603         https://bugs.webkit.org/show_bug.cgi?id=54298
604         
605         CollectorHeapIterator is a God object that knows the internals of each
606         of the pieces of the heap. This undermines the encapsulation I'm trying
607         to achieve by splitting concepts into different classes.
608         
609         As an alternative, I've given each class a forEach iteration function,
610         which takes a functor as an argument. Now, each class just needs to
611         know how to iterate the things it knows about.
612
613         * GNUmakefile.am:
614         * JavaScriptCore.exp:
615         * JavaScriptCore.gypi:
616         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed CollectorHeapIterator.
617
618         * debugger/Debugger.cpp:
619         (JSC::Recompiler::Recompiler):
620         (JSC::Recompiler::~Recompiler):
621         (JSC::Recompiler::operator()):
622         (JSC::Debugger::recompileAllJSFunctions): Updated to use forEach interface
623         instead of an iterator.
624
625         * runtime/CollectorHeapIterator.h: Removed.
626
627         * runtime/Heap.cpp:
628         (JSC::TypeCounter::TypeCounter):
629         (JSC::TypeCounter::typeName):
630         (JSC::TypeCounter::operator()):
631         (JSC::TypeCounter::take):
632         (JSC::Heap::protectedObjectTypeCounts):
633         (JSC::Heap::objectTypeCounts): Added forEach and removed iterator.
634
635         * runtime/Heap.h:
636         (JSC::Heap::forEach):
637         * runtime/JSGlobalData.cpp:
638         (JSC::Recompiler::operator()):
639         (JSC::JSGlobalData::recompileAllJSFunctions):
640
641         * runtime/MarkedBlock.h:
642         (JSC::MarkedBlock::forEach): Added forEach. Removed friend declaration
643         for CollectorHeapIterator. Now, we can make all our data private and
644         change it without breaking any other classes.
645
646         * runtime/MarkedSpace.cpp:
647         * runtime/MarkedSpace.h:
648         (JSC::MarkedSpace::forEach): Added forEach and removed iterator.
649
650 2011-02-11  Adam Barth  <abarth@webkit.org>
651
652         Reviewed by Andreas Kling.
653
654         CryptographicRandomNumber has its threading ifdefs backwards
655         https://bugs.webkit.org/show_bug.cgi?id=54280
656
657         Turns out we want the mutex when thread is enabled.  :)
658
659         * wtf/CryptographicallyRandomNumber.cpp:
660         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber):
661         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues):
662
663 2011-02-10  Adam Barth  <abarth@webkit.org>
664
665         Reviewed by Eric Seidel.
666
667         WebKit should have a cryptographic RNG
668         https://bugs.webkit.org/show_bug.cgi?id=22049
669
670         Teach JavaScriptCore how to export this function.
671
672         * JavaScriptCore.exp:
673         * JavaScriptCore.xcodeproj/project.pbxproj:
674
675 2011-02-10  Geoffrey Garen  <ggaren@apple.com>
676
677         Reviewed by Sam Weinig.
678
679         A little more encapsulation for MarkedBlock: Made all constants private
680         so clients don't know whether allocations are fixed-sized or not
681         https://bugs.webkit.org/show_bug.cgi?id=54270
682         
683         SunSpider reports no change.
684
685         * runtime/CollectorHeapIterator.h:
686         (JSC::CollectorHeapIterator::advance): Updated for removal of HeapConstants.
687
688         * runtime/Error.cpp: Switched to using ASSERT_CLASS_FITS_IN_CELL, like
689         all other classes.
690
691         * runtime/Heap.cpp:
692         (JSC::Heap::allocate): Updated for removal of HeapConstants.
693         (JSC::Heap::reset): Updated to use size(), instead of calculating size
694         on our own.
695
696         * runtime/Heap.h: Moved the ASSERT here to MarkedBlock, since it enforces
697         on special knowledge of fixed-sizery, which only MarkedBlock is supposed
698         to know about.
699
700         * runtime/JSCell.h:
701         (JSC::JSCell::MarkedBlock::allocate): Updated for removal of HeapConstants.
702         Also changed to reset nextCell to 0 at the end of a block, since that
703         seems more consistent.
704
705         * runtime/JSGlobalData.cpp:
706         (JSC::JSGlobalData::storeVPtrs): Changed to use a fixed array of char.
707         This hard-coded size is a little wonky, but the compiler will tell us
708         if it's ever wrong, so I think it's OK.
709
710         * runtime/MarkedBlock.cpp:
711         (JSC::MarkedBlock::destroy):
712         (JSC::MarkedBlock::MarkedBlock):
713         (JSC::MarkedBlock::sweep): Updated for removal of HeapConstants.
714
715         * runtime/MarkedBlock.h:
716         (JSC::MarkedBlock::isEmpty):
717         (JSC::MarkedBlock::clearMarks):
718         (JSC::MarkedBlock::size):
719         (JSC::MarkedBlock::capacity): Made constants private to this class.
720         Removed HeapConstants. Added size() and capacity() functions.
721
722         * runtime/MarkedSpace.cpp:
723         (JSC::MarkedSpace::allocate):
724         (JSC::MarkedSpace::objectCount):
725         (JSC::MarkedSpace::size):
726         (JSC::MarkedSpace::capacity):
727         * runtime/MarkedSpace.h: Use MarkedBlock helper functions instead of
728         direct knowledge of MarkedBlock internals.
729
730 2011-02-10  Geoffrey Garen  <ggaren@apple.com>
731
732         Reviewed by Sam Weinig.
733
734         A little more encapsulation for MarkedBlock: Made mark bits private
735         https://bugs.webkit.org/show_bug.cgi?id=54264
736         
737         SunSpider reports no change.
738
739         * runtime/Heap.cpp:
740         (JSC::Heap::markRoots):
741         (JSC::Heap::reset): Renamed clearMarkBits => clearMarks, since clients
742         don't need to know that marks are represented as bits. Renamed
743         markedCells => markCount, since clients don't need to know that blocks
744         are split into cells.
745
746         * runtime/MarkedBlock.h:
747         (JSC::MarkedBlock::isEmpty):
748         (JSC::MarkedBlock::clearMarks):
749         (JSC::MarkedBlock::markCount): New helper functions for encapsulating
750         the information clients actually need.
751
752         * runtime/MarkedSpace.cpp:
753         (JSC::MarkedSpace::destroy):
754         (JSC::MarkedSpace::shrink):
755         (JSC::MarkedSpace::clearMarks):
756         (JSC::MarkedSpace::markCount):
757         (JSC::MarkedSpace::objectCount):
758         * runtime/MarkedSpace.h: Use new helper functions instead of accessing
759         MarkedBlock data directly.
760
761 2011-02-10  Michael Saboff  <msaboff@apple.com>
762
763         Reviewed by Geoffrey Garen.
764
765         Cached JavaScript Parser Data Being Left in Memory Cache
766         https://bugs.webkit.org/show_bug.cgi?id=54245
767
768         Added clear method which removes SourceProviderCache items.
769         Cleaned up extraneous whitespace.
770
771         * JavaScriptCore.exp:
772         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
773         * parser/SourceProviderCache.cpp:
774         (JSC::SourceProviderCache::~SourceProviderCache):
775         (JSC::SourceProviderCache::clear):
776         (JSC::SourceProviderCache::byteSize):
777         (JSC::SourceProviderCache::add):
778         * parser/SourceProviderCache.h:
779
780 2011-02-10  Joseph Pecoraro  <joepeck@webkit.org>
781
782         Follow-up fix to r78291. I should pass (int) 0, not '0' to memset. 
783
784         * runtime/GCActivityCallbackCF.cpp:
785         (JSC::DefaultGCActivityCallback::commonConstructor): fix mistaken post-review change.
786
787 2011-02-10  Joseph Pecoraro  <joepeck@webkit.org>
788
789         Reviewed by Geoffrey Garen.
790
791         Make DefaultGCActivityCallback for PLATFORM(CF) Easier to Subclass
792         https://bugs.webkit.org/show_bug.cgi?id=54257
793
794         A subclass may want to specify the CFRunLoop that the Garbage Collection
795         will happen on. It was difficult to manipulate this in a subclass because
796         the current DefaultGCActivityCallback class does this in its constructor.
797         This patch generalizes things a bit more so that a specific run loop can
798         be passed in to the constructor. This makes it so all run loop management
799         can stay in DefaultGCActivityCallback and a subclass can specify any runloop.
800
801         * runtime/GCActivityCallback.h: expose a PLATFORM(CF) constructor that can
802         specify the runloop GC can be scheduled on.
803         * runtime/GCActivityCallbackCF.cpp:
804         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): two constructors,
805         one that specifies the run loop and passes that on to commonConstructor and
806         the old constructor defaults to the current run loop.
807         (JSC::DefaultGCActivityCallback::commonConstructor): do normal construction,
808         adding the timer to the given runloop.
809
810 2011-02-10  Geoffrey Garen  <ggaren@apple.com>
811
812         Reviewed by Oliver Hunt.
813
814         A little more encapsulation for MarkedBlock: Moved allocate() and sweep() into MarkedBlock
815         https://bugs.webkit.org/show_bug.cgi?id=54253
816         
817         SunSpider reports no change.
818
819         * runtime/CollectorHeapIterator.h: Removed DeadObjectIterator, since it
820         is now unused.
821
822         * runtime/Heap.cpp:
823         (JSC::Heap::reset): Moved the call to shrink() here, since it seems a
824         little more clear for MarkedSpace's client to tell it explicitly when to
825         shrink.
826
827         * runtime/JSCell.h:
828         (JSC::JSCell::MarkedBlock::allocate): Split out from MarkedSpace::allocate.
829
830         * runtime/MarkedBlock.cpp:
831         (JSC::MarkedBlock::sweep): Split out from MarkedSpace::sweep, and
832         converted to more directly iterate a MarkedBlock based on knowing its
833         internal structure.
834
835         * runtime/MarkedBlock.h:
836         * runtime/MarkedSpace.cpp:
837         (JSC::MarkedSpace::allocate):
838         (JSC::MarkedSpace::sweep):
839         * runtime/MarkedSpace.h: Split out the code mentioned above.
840
841 2011-02-10  Patrick Gansterer  <paroga@webkit.org>
842
843         Reviewed by Andreas Kling.
844
845         Fix compilation error on OpenBSD
846         https://bugs.webkit.org/show_bug.cgi?id=53766
847
848         Add a HAVE_STRNSTR in Platform.h and define it only on Darwin and FreeBSD.
849
850         * wtf/Platform.h:
851         * wtf/StringExtras.h: Use HAVE(STRNSTR) now.
852
853 2011-02-10  Adam Roben  <aroben@apple.com>
854
855         Print locations of assertions and logs in a way that Visual Studio understands
856
857         With this change, double-clicking one of these locations in Visual Studio's Output Window
858         will focus that line of code in the editor.
859
860         Fixes <http://webkit.org/b/54208> Double-clicking locations of assertions/logs in Visual
861         Studio's Output Window does nothing
862
863         Reviewed by Alexey Proskuryakov.
864
865         * wtf/Assertions.cpp:
866         (printCallSite): Use OS(WINDOWS) instead of the meaningless OS(WIN). When we aren't using
867         the debug CRT (and thus can't call _CrtDbgReport), print the file and line number using the
868         same format that cl.exe uses when it prints compiler errors.
869
870 2011-02-10  Dan Bernstein  <mitz@apple.com>
871
872         LLVM Compiler build fix.
873
874         * runtime/MarkedBlock.cpp:
875         (JSC::MarkedBlock::create):
876
877 2011-02-10  Peter Varga  <pvarga@webkit.org>
878
879         Reviewed by Csaba Osztrogonác.
880
881         Remove PCRE source from trunk
882         https://bugs.webkit.org/show_bug.cgi?id=54188
883
884         * Android.mk:
885         * Android.v8.wtf.mk:
886         * CMakeLists.txt:
887         * DerivedSources.make:
888         * DerivedSources.pro:
889         * GNUmakefile.am:
890         * JavaScriptCore.gypi:
891         * JavaScriptCore.order:
892         * JavaScriptCore.pri:
893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
894         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
895         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
896         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
897         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
898         * JavaScriptCore.xcodeproj/project.pbxproj:
899         * pcre/AUTHORS: Removed.
900         * pcre/COPYING: Removed.
901         * pcre/dftables: Removed.
902         * pcre/pcre.h: Removed.
903         * pcre/pcre.pri: Removed.
904         * pcre/pcre_compile.cpp: Removed.
905         * pcre/pcre_exec.cpp: Removed.
906         * pcre/pcre_internal.h: Removed.
907         * pcre/pcre_tables.cpp: Removed.
908         * pcre/pcre_ucp_searchfuncs.cpp: Removed.
909         * pcre/pcre_xclass.cpp: Removed.
910         * pcre/ucpinternal.h: Removed.
911         * pcre/ucptable.cpp: Removed.
912         * wscript:
913
914 2011-02-10  Patrick Gansterer  <paroga@webkit.org>
915
916         Reviewed by Adam Barth.
917
918         Add randomValuesFromOS for OS(WINDOWS)
919         https://bugs.webkit.org/show_bug.cgi?id=54155
920
921         Use CryptGenRandom for generating cryptographically secure random numbers.
922         This will work on WinCE and MinGW too.
923
924         * config.h:
925         * wtf/OSRandomSource.cpp:
926         (WTF::randomValuesFromOS):
927
928 2011-02-10  Jarred Nicholls  <jarred@sencha.com>
929
930         Reviewed by Adam Barth.
931
932         REGRESSION(r78149): Return value of read() shouldn't be ignored.
933         https://bugs.webkit.org/show_bug.cgi?id=54167
934         
935         stdio read should have its return value handled. Build error in gcc 4.4.5.
936
937         * wtf/OSRandomSource.cpp:
938         (WTF::randomValuesFromOS):
939
940 2011-02-10  Patrick Gansterer  <paroga@webkit.org>
941
942         Reviewed by Adam Barth.
943
944         Rename randomValuesFromOS to cryptographicallyRandomValuesFromOS
945         https://bugs.webkit.org/show_bug.cgi?id=54156
946
947         randomValuesFromOS generates random numbers of cryptographic quality.
948         Make this clear by adding "cryptographically" to the function name.
949
950         * wtf/CryptographicallyRandomNumber.cpp:
951         (WTF::ARC4Stream::ARC4RandomNumberGenerator::stir):
952         * wtf/OSRandomSource.cpp:
953         (WTF::cryptographicallyRandomValuesFromOS):
954         * wtf/OSRandomSource.h:
955
956 2011-02-09  Mark Rowe  <mrowe@apple.com>
957
958         Reviewed by Sam Weinig.
959
960         <rdar://problem/8805364> Malloc zone enumeration code should be safe in the face of errors from the memory reader.
961
962         * wtf/FastMalloc.cpp:
963         (WTF::PageHeapAllocator::recordAdministrativeRegions): Use the new helper function to walk the linked list safely.
964         (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Ditto.
965         (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto.
966         (WTF::TCMallocStats::PageMapFreeObjectFinder::visit): Bail out if the span could not be read.
967         (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit): Ditto.
968         * wtf/MallocZoneSupport.h:
969         (WTF::RemoteMemoryReader::operator()): Remove an assert that is not valid.
970         (WTF::RemoteMemoryReader::nextEntryInLinkedList): Add a helper function for retrieving the next entry in
971         a linked list. It maps a failed read of the remote memory in to a null pointer, which all callers can
972         handle gracefully.
973
974 2011-02-09  Gavin Barraclough  <barraclough@apple.com>
975
976         Reviewed by Sam Weinig.
977
978         Bug 54164 - Optimize global_var accesses on JSVALUE64
979
980         Directly embed the pointer to d->registers, optimize out the load
981         from the variable object, as we do already in JSVALUE32_64.
982
983         This is a ~1.5% win on sunspidey.
984
985         * jit/JIT.cpp:
986         * jit/JIT.h:
987         * jit/JITOpcodes.cpp:
988         (JSC::JIT::emit_op_get_global_var):
989         (JSC::JIT::emit_op_put_global_var):
990         (JSC::JIT::emit_op_get_scoped_var):
991         (JSC::JIT::emit_op_put_scoped_var):
992
993 2011-02-09  Geoffrey Garen  <ggaren@apple.com>
994
995         Reviewed by Oliver Hunt.
996
997         A little more encapsulation for MarkedBlock: Made MarkedBlock responsible
998         for its own initialization and destruction
999         https://bugs.webkit.org/show_bug.cgi?id=54137
1000
1001         * runtime/CollectorHeapIterator.h: Removed ObjectIterator since it is
1002         now unused.
1003
1004         * runtime/JSCell.h: Maded MarkedBlock a friend so it can construct and
1005         destruct JSCells.
1006
1007         * runtime/MarkedBlock.cpp:
1008         (JSC::MarkedBlock::create):
1009         (JSC::MarkedBlock::destroy):
1010         (JSC::MarkedBlock::MarkedBlock): Migrated initialization and destruction
1011         code from MarkedSpace, updating it not to use ObjectIterator. We don't
1012         want to use an abstract iterator since iteration will be unique to each
1013         block in the future.
1014
1015         * runtime/MarkedBlock.h: Made the consructor private and moved it into
1016         the .cpp file because it's big now.
1017
1018         * runtime/MarkedSpace.cpp:
1019         (JSC::MarkedSpace::allocateBlock):
1020         (JSC::MarkedSpace::freeBlock): Migrated code.
1021
1022         * runtime/MarkedSpace.h:
1023         (JSC::CollectorHeap::collectorBlock): Keep a vector of MarkedBlock
1024         pointers instead of aligned allocations -- how MarkedBlocks are allocated
1025         is now an implementation detail of MarkedBlock.
1026
1027 2011-02-09  Adam Barth  <abarth@webkit.org>
1028
1029         Another attempt to fix the Qt Windows build.
1030
1031         * config.h:
1032         * wtf/OSRandomSource.cpp:
1033         (WTF::randomValuesFromOS):
1034
1035 2011-02-09  Adam Barth  <abarth@webkit.org>
1036
1037         Attempt to fix the Qt Windows build.
1038
1039         * wtf/OSRandomSource.cpp:
1040         (WTF::randomValuesFromOS):
1041
1042 2011-02-09  Adam Barth  <abarth@webkit.org>
1043
1044         Reviewed by Eric Seidel.
1045
1046         Add WTF::cryptographicallyRandomNumber
1047         https://bugs.webkit.org/show_bug.cgi?id=54083
1048
1049         Introduce a cryptographically strong random number generator to WTF.
1050         The random number generator is based on arc4random as found in:
1051
1052         http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/arc4random.c?rev=1.22
1053
1054         I've changed to source to WebKit style and abstracted the operating
1055         system interaction to OSRandomSource.  We'll use this functionality to
1056         expose a cryptographically strong random number generator to
1057         JavaScript.
1058
1059         * Android.mk:
1060         * Android.v8.wtf.mk:
1061         * GNUmakefile.am:
1062         * JavaScriptCore.gypi:
1063         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1064         * JavaScriptCore.xcodeproj/project.pbxproj:
1065         * config.h:
1066         * wtf/CMakeLists.txt:
1067         * wtf/CryptographicallyRandomNumber.cpp: Added.
1068         (WTF::initMutexIfNeeded):
1069         (WTF::init):
1070         (WTF::addRandomData):
1071         (WTF::stir):
1072         (WTF::stirIfNeeded):
1073         (WTF::getByte):
1074         (WTF::getWord):
1075         (WTF::cryptographicallyRandomNumber):
1076         (WTF::cryptographicallyRandomValues):
1077         * wtf/CryptographicallyRandomNumber.h: Added.
1078         * wtf/OSRandomSource.cpp: Added.
1079         (WTF::randomValuesFromOS):
1080         * wtf/OSRandomSource.h: Added.
1081         * wtf/wtf.pri:
1082
1083 2011-02-09  Geoffrey Garen  <ggaren@apple.com>
1084
1085         Try to fix the build.
1086
1087         * wtf/Bitmap.h: Include string.h for memset. Not sure why this started
1088         failing now.
1089
1090 2011-02-09  Geoffrey Garen  <ggaren@apple.com>
1091
1092         Reviewed by Sam Weinig.
1093
1094         A tiny bit of encapsulation for MarkedBlock: made its heap data member private
1095         https://bugs.webkit.org/show_bug.cgi?id=54129
1096
1097         * runtime/MarkedBlock.h:
1098         (JSC::MarkedBlock::isCellAligned):
1099         (JSC::MarkedBlock::MarkedBlock):
1100         (JSC::MarkedBlock::heap): Made the heap data member private, and provided
1101         a constructor and an accessor.
1102
1103         * runtime/MarkedSpace.cpp:
1104         (JSC::MarkedSpace::allocateBlock):
1105         * runtime/MarkedSpace.h:
1106         (JSC::MarkedSpace::heap): Use the constructor and accessor.
1107
1108 2011-02-09  Peter Varga  <pvarga@webkit.org>
1109
1110         Reviewed by Gavin Barraclough.
1111
1112         Replace PCRE with Yarr in WebCore
1113         https://bugs.webkit.org/show_bug.cgi?id=53496
1114
1115         * JavaScriptCore.exp:
1116         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1117         * JavaScriptCore.gypi:
1118         * JavaScriptCore.pro:
1119         * JavaScriptCore.xcodeproj/project.pbxproj:
1120         * create_regex_tables:
1121         * runtime/RegExp.cpp:
1122         * wtf/Platform.h:
1123         * yarr/Yarr.h:
1124         * yarr/YarrJIT.cpp:
1125         * yarr/YarrJIT.h:
1126         * yarr/YarrParser.h:
1127         * yarr/YarrPattern.h:
1128         * yarr/YarrSyntaxChecker.h:
1129         * yarr/yarr.pri: Added.
1130
1131 2011-02-08  Geoffrey Garen  <ggaren@apple.com>
1132
1133         Reviewed by Sam Weinig.
1134
1135         Removed some dead code from Heap
1136         https://bugs.webkit.org/show_bug.cgi?id=54064
1137
1138         * runtime/MarkedSpace.cpp: Removed some now-unused constants and
1139         declarations.
1140
1141         (JSC::MarkedSpace::allocate): Removed some ASSERTs that are also ASSERTed
1142         by our caller. Removed redundant typedefs.
1143
1144 2011-02-08  Geoffrey Garen  <ggaren@apple.com>
1145
1146         Reviewed by Sam Weinig.
1147
1148         Use a vector to track blocks in the Heap, instead of hand-rolled vector-like code
1149         https://bugs.webkit.org/show_bug.cgi?id=54062
1150         
1151         SunSpider reports no change.
1152
1153         * runtime/CollectorHeapIterator.h:
1154         (JSC::CollectorHeapIterator::isValid):
1155         (JSC::CollectorHeapIterator::isLive): Updated for new mark invariant: To
1156         know if an object is live, you just need to test its mark bit.
1157
1158         * runtime/MarkedSpace.cpp:
1159         (JSC::MarkedSpace::MarkedSpace): Moved waterMark and highWaterMark from
1160         CollectorHeap into MarkedSpace, since they're global state. Removed call
1161         to memset since CollectorHeap is a true class with its own constructor now.
1162
1163         (JSC::MarkedSpace::destroy): Change uses of m_heap.usedBlocks to
1164         m_heap.blocks.size(), and m_heap.numBlocks to m_heap.blocks.capacity().
1165
1166         (JSC::MarkedSpace::allocateBlock):
1167         (JSC::MarkedSpace::freeBlock): No need to manage our vector manually anymore.
1168
1169         (JSC::MarkedSpace::allocate):
1170         (JSC::MarkedSpace::shrink):
1171         (JSC::MarkedSpace::clearMarkBits):
1172         (JSC::MarkedSpace::markedCells):
1173         (JSC::MarkedSpace::sweep):
1174         (JSC::MarkedSpace::objectCount):
1175         (JSC::MarkedSpace::capacity):
1176         (JSC::MarkedSpace::reset):
1177         (JSC::MarkedSpace::primaryHeapEnd):
1178         * runtime/MarkedSpace.h:
1179         (JSC::CollectorHeap::CollectorHeap):
1180         (JSC::MarkedSpace::highWaterMark):
1181         (JSC::MarkedSpace::setHighWaterMark):
1182         (JSC::MarkedSpace::contains): Same as above.
1183
1184 2011-02-08  Geoffrey Garen  <ggaren@apple.com>
1185
1186         Reviewed by Darin Adler.
1187
1188         Give each MarkedBlock enough mark bits to cover the whole block
1189         https://bugs.webkit.org/show_bug.cgi?id=54029
1190         
1191         SunSpider reports no change.
1192
1193         This simplifies access to mark bits, since any cell-aligned pointer
1194         into a block now has a valid mark bit to test.
1195         
1196         * runtime/MarkedBlock.h: Changed CELLS_PER_BLOCK to account for the extra
1197         mark bits. This happens not to change its actual value.
1198         (JSC::MarkedBlock::cellNumber):
1199         (JSC::MarkedBlock::isMarked):
1200         (JSC::MarkedBlock::testAndSetMarked):
1201         (JSC::MarkedBlock::setMarked): Changed const JSCell* to const void* to
1202         remove a cast from our caller, and to more accurately reflect the fact
1203         that MarkedBlock is agnostic about the types pointed to by the pointers
1204         you pass to it.
1205
1206         (JSC::MarkedBlock::isPossibleCell): Removed a null check. We now consider
1207         the null pointer to be a possible cell with a 0 (impossible) block. This
1208         removes a null check from marking.
1209
1210         * runtime/MarkedSpace.cpp:
1211         * runtime/MarkedSpace.h:
1212         (JSC::MarkedSpace::contains): Simplified the contains check, and inlined
1213         the whole thing, now that it's so simple.
1214
1215 2011-02-08  Daniel Bates  <dbates@rim.com>
1216
1217         Rubber-stamped by Martin Robinson.
1218
1219         Rename enum ProtectionSeting [sic] to ProtectionSetting.
1220
1221         * jit/ExecutableAllocator.cpp:
1222         (JSC::ExecutableAllocator::reprotectRegion):
1223         * jit/ExecutableAllocator.h:
1224
1225 2011-02-08  Balazs Kelemen  <kbalazs@webkit.org>
1226
1227         Reviewed by Andreas Kling.
1228
1229         [Qt] Should not always define USE_SYSTEM_MALLOC
1230         https://bugs.webkit.org/show_bug.cgi?id=54007
1231
1232         * wtf/Platform.h:
1233
1234 2011-02-08  Dan Bernstein  <mitz@apple.com>
1235
1236         Reviewed by Maciej Stachowiak.
1237
1238         LLVM Compiler build fix.
1239
1240         * runtime/WriteBarrier.h:
1241         (JSC::WriteBarrier::WriteBarrier):
1242
1243 2011-02-07  Ryosuke Niwa  <rniwa@webkit.org>
1244
1245         Reviewed by Darin Adler.
1246
1247         JSVariableObject::setRegisters should take PassOwnArrayPtr for registersArray.
1248         https://bugs.webkit.org/show_bug.cgi?id=53902
1249
1250         * runtime/Arguments.h:
1251         (JSC::JSActivation::copyRegisters): Uses OwnArrayPtr<Register> instead of Register*.
1252         * runtime/JSGlobalObject.cpp:
1253         (JSC::JSGlobalObject::copyGlobalsFrom): Ditto.
1254         * runtime/JSGlobalObject.h:
1255         (JSC::JSGlobalObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register*
1256         for registerArray.
1257         * runtime/JSVariableObject.h:
1258         (JSC::JSVariableObject::copyRegisterArray): Returns PassOwnArrayPtr<Register> instead of Register*.
1259         (JSC::JSVariableObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register*
1260         for registerArray.
1261
1262 2011-02-07  Geoffrey Garen  <ggaren@apple.com>
1263
1264         Reviewed by Sam Weinig.
1265
1266         Removed some dead code from Heap
1267         https://bugs.webkit.org/show_bug.cgi?id=53969
1268         
1269         SunSpider reports no change.
1270
1271         * runtime/MarkedSpace.cpp:
1272         (JSC::MarkedSpace::shrink):
1273         (JSC::MarkedSpace::sweep):
1274         * runtime/MarkedSpace.h: Removed resizeBlocks and growBlocks, and
1275         renamed shrinkBlocks to shrink, making it unconditionally shrink as
1276         much as possible.
1277
1278 2011-02-07  Geoffrey Garen  <ggaren@apple.com>
1279
1280         Reviewed by Oliver Hunt.
1281
1282         Simplified the marked space's mark invariant
1283         https://bugs.webkit.org/show_bug.cgi?id=53968
1284         
1285         SunSpider reports no change.
1286         
1287         * runtime/MarkedSpace.cpp:
1288         (JSC::MarkedSpace::allocate): Mark objects when allocating them. This
1289         means that, at all times other than the mark phase, an object is live
1290         if and only if it is marked.
1291
1292         (JSC::MarkedSpace::containsSlowCase): Use the new mark invariant to
1293         simplify testing whether an object is live.
1294
1295 2011-02-07  Beth Dakin  <bdakin@apple.com>
1296
1297         Reviewed by Eric Seidel.
1298
1299         Fix for https://bugs.webkit.org/show_bug.cgi?id=53950
1300         USE_WK_SCROLLBAR_PAINTER in ScrollbarThemeMac should be in
1301         Platform.h instead
1302
1303         * wtf/Platform.h:
1304
1305 2011-02-07  Darin Adler  <darin@apple.com>
1306
1307         Reviewed by Antti Koivisto.
1308
1309         Add built-in decoder for UTF-8 for improved performance
1310         https://bugs.webkit.org/show_bug.cgi?id=53898
1311
1312         * wtf/unicode/UnicodeMacrosFromICU.h: Added U8_MAX_LENGTH and
1313         U8_APPEND_UNSAFE. Also fixed header.
1314
1315 2011-02-07  Adam Roben  <aroben@apple.com>
1316
1317         Delete precompiled headers whenever any .vsprops file changes
1318
1319         Precompiled headers need to be rebuilt if, e.g., an ENABLE_* macro is changed in one of our
1320         .vsprops files. Unfortunately, Visual Studio isn't smart enough to figure this out, so we
1321         give it some assistance by deleting the precompiled headers whenever any .vsprops file
1322         changes.
1323
1324         I also made some drive-by fixes while I was in the area.
1325
1326         Fixes <http://webkit.org/b/53826> react-to-vsprops-changes.py doesn't force precompiled
1327         headers to be rebuilt, but should
1328
1329         Reviewed by David Kilzer.
1330
1331         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stop ignoring the
1332         return code from react-to-vsprops-changes.py so we will notice when errors are introduced.
1333         But skip the script entirely in production builds, where it is both unnecessary and can't
1334         function correctly (due to not having the entire source tree available to it).
1335
1336         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
1337         (main): Removed an extra '*' in the glob for finding manifest files. The extra '*' was
1338         leftover from before we rearranged WebKitBuild in r75138. Moved code to delete an old file
1339         to the new delete_if_older_than function. Added code to delete any precompiled headers older
1340         than the newest .vsprops file.
1341         (delete_if_older_than): Added. Code came from main.
1342
1343 2011-02-07  Antti Koivisto  <antti@apple.com>
1344
1345         Not reviewed.
1346         
1347         ASSERTS_DISABLED -> ASSERT_DISABLED
1348
1349         * wtf/BloomFilter.h:
1350
1351 2011-02-06  Ryosuke Niwa  <rniwa@webkit.org>
1352
1353         Unreviewed; speculative Qt build fix.
1354
1355         * JavaScriptCore.pro:
1356
1357 2011-02-06  Ryosuke Niwa  <rniwa@webkit.org>
1358
1359         Reviewed by Darin Adler.
1360
1361         OwnArraryPtr.h uses deleteOwnedPtr but doesn’t include OwnPtrCommon.h
1362         https://bugs.webkit.org/show_bug.cgi?id=52867
1363
1364         Removed LOOSE_OWN_ARRAY_PTR and OwnArrayPtr<T>::set. Replaced all calls to OwnArrayPtr::set
1365         and loose instantiation of OwnArrayPtr by calls to operator= and adoptArrayPtr. Also removed
1366         OwnArrayPtrCommon.h since PassOwnArrayPtr.h needs to include OwnArrayPtr.h and there is
1367         no point in putting deleteOwnedArrayPtr into a separate header.
1368         
1369         Note: if this patch breaks build, the code is either instiantiating OwnArrayPtr
1370         without calling adoptArrayPtr or calling set on ArrayOwnPtr instead of operator=.
1371
1372         No tests are added since this is a refactoring.
1373
1374         * API/JSStringRefCF.cpp:
1375         (JSStringCreateWithCFString): Calls adoptArrayPtr.
1376         * GNUmakefile.am: Removed OwnArrayPtrCommon.h
1377         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
1378         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
1379         * runtime/Arguments.cpp:
1380         (JSC::Arguments::deleteProperty): Calls adoptArrayPtr.
1381         * runtime/Arguments.h:
1382         (JSC::Arguments::copyRegisters): Ditto.
1383         * runtime/JSPropertyNameIterator.cpp:
1384         (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Ditto.
1385         * runtime/JSVariableObject.h:
1386         (JSC::JSVariableObject::setRegisters): Calls operator= instead of set.
1387         * runtime/StructureChain.cpp:
1388         (JSC::StructureChain::StructureChain): Ditto.
1389         * wtf/CMakeLists.txt:
1390         * wtf/DateMath.h:
1391         (JSC::GregorianDateTime::GregorianDateTime): No longer instnatiates OwnArrayPtr
1392         with a null pointer.
1393         * wtf/OwnArrayPtr.h:
1394         * wtf/OwnArrayPtrCommon.h: Removed.
1395         * wtf/PassOwnArrayPtr.h: No longer includes OwnArrayCommon.h
1396         (WTF::deleteOwnedArrayPtr): Moved from OwnArrayPtrCommon.h
1397
1398 2011-02-06  Antti Koivisto  <antti@apple.com>
1399
1400         Reviewed by Maciej Stachowiak.
1401
1402         Use bloom filter for descendant selector filtering
1403         https://bugs.webkit.org/show_bug.cgi?id=53880
1404         
1405         Implement a bloom filter with k=2 and 8 bit counting.
1406
1407         * GNUmakefile.am:
1408         * JavaScriptCore.gypi:
1409         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1410         * JavaScriptCore.xcodeproj/project.pbxproj:
1411         * wtf/BloomFilter.h: Added.
1412         (WTF::BloomFilter::maximumCount):
1413         (WTF::BloomFilter::BloomFilter):
1414         (WTF::BloomFilter::mayContain):
1415         (WTF::BloomFilter::add):
1416         (WTF::BloomFilter::remove):
1417         (WTF::BloomFilter::firstSlot):
1418         (WTF::BloomFilter::secondSlot):
1419         (WTF::::add):
1420         (WTF::::remove):
1421         (WTF::::clear):
1422         (WTF::::likelyEmpty):
1423         (WTF::::isClear):
1424
1425 2011-02-04  Geoffrey Garen  <ggaren@apple.com>
1426
1427         Reviewed by Oliver Hunt.
1428
1429         Rolled back in r77612 with ASSERT/crash fixed.
1430         https://bugs.webkit.org/show_bug.cgi?id=53759
1431         
1432         Don't shrink the heap to 0 unconditionally. Instead, shrink to 1 if
1433         necessary. For now, the heap assumes that it always has at least one
1434         block live.
1435
1436         * runtime/Heap.cpp:
1437         (JSC::Heap::Heap):
1438         (JSC::Heap::reset):
1439         * runtime/Heap.h:
1440         * runtime/MarkedSpace.cpp:
1441         (JSC::MarkedSpace::allocate):
1442         (JSC::MarkedSpace::shrinkBlocks):
1443         (JSC::MarkedSpace::sweep):
1444         (JSC::MarkedSpace::reset):
1445         * runtime/MarkedSpace.h:
1446         (JSC::MarkedSpace::highWaterMark):
1447         (JSC::MarkedSpace::setHighWaterMark):
1448
1449 2011-02-04  David Kilzer  <ddkilzer@apple.com>
1450
1451         BUILD FIX: REALLY remove the last vestiges of JSVALUE32!
1452
1453         <rdar://problem/8957409> Remove last vestiges of JSVALUE32
1454         <http://webkit.org/b/53779>
1455
1456         * DerivedSources.make: Removed dependency on
1457         JavaScriptCore.JSVALUE32.exp.
1458
1459 2011-02-04  David Kilzer  <ddkilzer@apple.com>
1460
1461         <rdar://problem/8957409> Remove last vestiges of JSVALUE32
1462         <http://webkit.org/b/53779>
1463
1464         Reviewed by Darin Adler.
1465
1466         Support for JSVALUE32 was originaly removed in r70111.
1467
1468         * Configurations/JavaScriptCore.xcconfig: Changed armv6 to use
1469         JavaScriptCore.JSVALUE32_64.exp and ppc64 to use
1470         JavaScriptCore.JSVALUE64.exp to match Platform.h.
1471         * DerivedSources.make: Removed rule for
1472         JavaScriptCore.JSVALUE32.exp.
1473         * JavaScriptCore.JSVALUE32only.exp: Removed.
1474         * JavaScriptCore.xcodeproj/project.pbxproj: Removed references
1475         to JavaScriptCore.JSVALUE32only.exp.
1476
1477 2011-02-04  David Kilzer  <ddkilzer@apple.com>
1478
1479         Use static_cast and other style cleanup in YarrInterpreter.cpp
1480         <http://webkit.org/b/53772>
1481
1482         Reviewed by John Sullivan.
1483
1484         * yarr/YarrInterpreter.cpp:
1485         (JSC::Yarr::Interpreter::InputStream::readChecked): Use
1486         static_cast.
1487         (JSC::Yarr::Interpreter::InputStream::checkInput): Remove
1488         unnecessary else block.
1489         (JSC::Yarr::Interpreter::matchAssertionEOL): Ditto.
1490         (JSC::Yarr::Interpreter::backtrackBackReference): Ditto.
1491         (JSC::Yarr::ByteCompiler::emitDisjunction): Use static_cast.
1492
1493 2011-02-04  Sheriff Bot  <webkit.review.bot@gmail.com>
1494
1495         Unreviewed, rolling out r77625 and r77626.
1496         http://trac.webkit.org/changeset/77625
1497         http://trac.webkit.org/changeset/77626
1498         https://bugs.webkit.org/show_bug.cgi?id=53765
1499
1500         It broke Windows builds (Requested by Ossy_ on #webkit).
1501
1502         * JavaScriptCore.exp:
1503         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1504         * JavaScriptCore.gypi:
1505         * JavaScriptCore.pro:
1506         * JavaScriptCore.xcodeproj/project.pbxproj:
1507         * create_regex_tables:
1508         * runtime/RegExp.cpp:
1509         * wtf/Platform.h:
1510         * yarr/Yarr.h:
1511         * yarr/YarrJIT.cpp:
1512         * yarr/YarrJIT.h:
1513         * yarr/YarrParser.h:
1514         * yarr/YarrPattern.h:
1515         * yarr/YarrSyntaxChecker.h:
1516         * yarr/yarr.pri: Removed.
1517
1518 2011-02-04  Jessie Berlin  <jberlin@apple.com>
1519
1520         Windows build fix. Unreviewed.
1521
1522         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1523
1524 2011-02-04  Peter Varga  <pvarga@webkit.org>
1525
1526         Reviewed by Gavin Barraclough.
1527
1528         Replace PCRE with Yarr in WebCore
1529         https://bugs.webkit.org/show_bug.cgi?id=53496
1530
1531         * JavaScriptCore.exp:
1532         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1533         * JavaScriptCore.gypi:
1534         * JavaScriptCore.pro:
1535         * JavaScriptCore.xcodeproj/project.pbxproj:
1536         * create_regex_tables:
1537         * runtime/RegExp.cpp:
1538         * wtf/Platform.h:
1539         * yarr/Yarr.h:
1540         * yarr/YarrJIT.cpp:
1541         * yarr/YarrJIT.h:
1542         * yarr/YarrParser.h:
1543         * yarr/YarrPattern.h:
1544         * yarr/YarrSyntaxChecker.h:
1545         * yarr/yarr.pri: Added.
1546
1547 2011-02-04  Ilya Tikhonovsky  <loislo@chromium.org>
1548
1549         Unreviewed rollout two patches r77614 and r77612.
1550
1551         REGRESSION: Snow Leopard Intel Release anumber of failing tests.
1552
1553         * runtime/Heap.cpp:
1554         (JSC::Heap::Heap):
1555         (JSC::Heap::reset):
1556         * runtime/Heap.h:
1557         * runtime/MarkedSpace.cpp:
1558         (JSC::MarkedSpace::allocate):
1559         (JSC::MarkedSpace::sweep):
1560         (JSC::MarkedSpace::reset):
1561         * runtime/MarkedSpace.h:
1562
1563 2011-02-04  Geoffrey Garen  <ggaren@apple.com>
1564
1565         Try to fix 32bit build.
1566
1567         * runtime/Heap.cpp:
1568         (JSC::Heap::reset): Use an explicit cast to avoid shortening warnings,
1569         since 1.5 is double (64bit), and the result is size_t (32bit).
1570
1571 2011-02-03  Geoffrey Garen  <ggaren@apple.com>
1572
1573         Reviewed by Cameron Zwarich.
1574
1575         Changed MarkedSpace to delegate grow/shrink decisions to Heap
1576         https://bugs.webkit.org/show_bug.cgi?id=53759
1577         
1578         SunSpider reports no change.
1579         
1580         * runtime/Heap.cpp:
1581         (JSC::Heap::Heap):
1582         (JSC::Heap::reset):
1583         * runtime/Heap.h: Reorganized a few data members for better cache locality.
1584         Added a grow policy.
1585         
1586         * runtime/MarkedSpace.cpp:
1587         (JSC::MarkedSpace::allocate):
1588         (JSC::MarkedSpace::sweep):
1589         (JSC::MarkedSpace::reset): Don't shrink automatically. Instead, wait for
1590         the heap to make an explicit sweep call.
1591
1592         * runtime/MarkedSpace.h:
1593         (JSC::MarkedSpace::highWaterMark):
1594         (JSC::MarkedSpace::setHighWaterMark): Use a watermark to determine how
1595         many bytes to allocate before failing and giving the heap an opportunity
1596         to collect garbage. This also means that we allocate blocks on demand,
1597         instead of ahead of time.
1598
1599 2011-02-03  James Kozianski  <koz@chromium.org>
1600
1601         Reviewed by Dimitri Glazkov.
1602
1603         Add navigator.registerProtocolHandler behind a flag.
1604         https://bugs.webkit.org/show_bug.cgi?id=52609
1605
1606         * Configurations/FeatureDefines.xcconfig:
1607
1608 2011-02-03  Geoffrey Garen  <ggaren@apple.com>
1609
1610         Reviewed by Oliver Hunt.
1611
1612         Not all blocks are freed when the heap is freed (counting is hard!)
1613         https://bugs.webkit.org/show_bug.cgi?id=53732
1614
1615         * runtime/MarkedSpace.cpp:
1616         (JSC::MarkedSpace::destroy): Freeing a block compacts the list, so just
1617         keep freeing block 0 until there are no blocks left.
1618
1619 2011-02-03  Geoffrey Garen  <ggaren@apple.com>
1620
1621         Try to fix the Mac build.
1622
1623         * JavaScriptCore.xcodeproj/project.pbxproj: The new MarkedBlock.h header
1624         needs to be private, not project, so other projects can include headers
1625         that depend on it.
1626
1627 2011-02-03  Geoffrey Garen  <ggaren@apple.com>
1628
1629         Reviewed by Sam Weinig.
1630
1631         Start using MarkedBlock instead of CollectorBlock
1632         https://bugs.webkit.org/show_bug.cgi?id=53693
1633         
1634         SunSpider reports no change.
1635         
1636         * runtime/MarkedBlock.h:
1637         (JSC::MarkedBlock::blockFor):
1638         (JSC::MarkedBlock::setMarked):
1639         (JSC::MarkedBlock::isCellAligned):
1640         (JSC::MarkedBlock::isPossibleCell): Updated for const-ness.
1641
1642         * runtime/MarkedSpace.cpp:
1643         (JSC::MarkedSpace::allocateBlock):
1644         (JSC::MarkedSpace::containsSlowCase):
1645         (JSC::MarkedSpace::clearMarkBits): Updated for const-ness.
1646
1647         * runtime/MarkedSpace.h:
1648         (JSC::CollectorHeap::collectorBlock):
1649         (JSC::MarkedSpace::heap):
1650         (JSC::MarkedSpace::isMarked):
1651         (JSC::MarkedSpace::testAndSetMarked):
1652         (JSC::MarkedSpace::setMarked):
1653         (JSC::MarkedSpace::contains): Switched from CollectorBlock to MarkedBlock,
1654         and deleted dead CollectorBlock-related code.
1655
1656 2011-02-03  Patrick Gansterer  <paroga@webkit.org>
1657
1658         Reviewed by Darin Adler.
1659
1660         Avoid strlen() in AtomicString::fromUTF8
1661         https://bugs.webkit.org/show_bug.cgi?id=50516
1662
1663         Add an overload to calculateStringHashFromUTF8 to get
1664         strlen() of the input data with only one call.
1665
1666         This change shows about 3% performance win on the xml-parser benchmark.
1667
1668         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1669         * wtf/text/AtomicString.cpp:
1670         (WTF::AtomicString::fromUTF8):
1671         * wtf/unicode/UTF8.cpp:
1672         (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal):
1673         (WTF::Unicode::calculateStringHashFromUTF8):
1674         (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
1675         * wtf/unicode/UTF8.h:
1676
1677 2011-02-02  Gavin Barraclough  <barraclough@apple.com>
1678
1679         Windows build fix.
1680
1681         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1682
1683 2011-02-02  Gavin Barraclough  <barraclough@apple.com>
1684
1685         oops, build fix!
1686
1687         * wtf/Assertions.cpp:
1688
1689 2011-02-02  Gavin Barraclough  <barraclough@apple.com>
1690
1691         Reviewed by Sam Weinig.
1692
1693         Bug 53650 - Add a BACKTRACE macro to Assertions.h
1694
1695         Add a BACKTRACE macro to Assertions.h, which will print a backtrace on
1696         debug Mac builds, make CRASH (and thus ASSERT) automatically call this.
1697
1698         * JavaScriptCore.exp:
1699         * wtf/Assertions.cpp:
1700         * wtf/Assertions.h:
1701
1702 2011-02-02  Michael Saboff  <msaboff@apple.com>
1703
1704         Reviewed by Gavin Barraclough.
1705
1706         Improper backtrack of nested non-capturing greedy paren to prior paren
1707         https://bugs.webkit.org/show_bug.cgi?id=53261
1708
1709         A paren that follows a non-capturing greedy paren nested within a 
1710         non-capturing fixed paren was back tracking to the last paren 
1711         processed instead of the immediately prior paren.
1712         Refactored default backtracking of parens to prior paren to work for
1713         both nested (within) and immediately prior (after) parens.
1714
1715         * yarr/YarrJIT.cpp:
1716         (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
1717         (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState):
1718         (JSC::Yarr::YarrGenerator::TermGenerationState::setJumpListToPriorParen):
1719         (JSC::Yarr::YarrGenerator::TermGenerationState::getJumpListToPriorParen):
1720         (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail):
1721         (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode):
1722         (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction):
1723         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
1724         (JSC::Yarr::YarrGenerator::generateDisjunction):
1725
1726 2011-02-02  Jeff Miller  <jeffm@apple.com>
1727
1728         Reviewed by Darin Adler and Steve Falkenburg.
1729
1730         Add DerivedSources.make to some Visual Studio projects
1731         https://bugs.webkit.org/show_bug.cgi?id=53607
1732
1733         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add DerivedSources.make.
1734
1735 2011-02-02  Steve Lacey  <sjl@chromium.org>
1736
1737         Reviewed by Eric Carlson.
1738
1739         Implement basic media statistics on media elements.
1740         https://bugs.webkit.org/show_bug.cgi?id=53322
1741
1742         * Configurations/FeatureDefines.xcconfig:
1743
1744 2011-02-02  Kevin Ollivier  <kevino@theolliviers.com>
1745
1746         [wx] Build fixes for wxWebKit.
1747
1748         * wtf/wx/StringWx.cpp:
1749         (WTF::String::String):
1750
1751 2011-02-01  Geoffrey Garen  <ggaren@apple.com>
1752
1753         Reviewed by Sam Weinig.
1754
1755         A little more Heap refactoring
1756         https://bugs.webkit.org/show_bug.cgi?id=53577
1757         
1758         SunSpider reports no change.
1759         
1760         Split out MarkedBlock into its own file / class.
1761         
1762         Did the following renames:
1763             isCellMarked => isMarked
1764             checkMarkCell => testAndSetMarked
1765             markCell => setMarked
1766             cellOffset => cellNumber
1767             collectorBlock => blockFor
1768
1769         * Android.mk:
1770         * CMakeLists.txt:
1771         * GNUmakefile.am:
1772         * JavaScriptCore.gypi:
1773         * JavaScriptCore.pro:
1774         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1775         * JavaScriptCore.xcodeproj/project.pbxproj:
1776         * runtime/Heap.cpp:
1777         (JSC::WeakGCHandlePool::update):
1778         * runtime/Heap.h:
1779         (JSC::Heap::isMarked):
1780         (JSC::Heap::testAndSetMarked):
1781         (JSC::Heap::setMarked):
1782         * runtime/JSArray.h:
1783         (JSC::MarkStack::markChildren):
1784         (JSC::MarkStack::drain):
1785         * runtime/JSCell.h:
1786         (JSC::JSCell::MarkStack::internalAppend):
1787         * runtime/MarkedBlock.cpp: Added.
1788         * runtime/MarkedBlock.h: Added.
1789         (JSC::MarkedBlock::blockFor):
1790         (JSC::MarkedBlock::cellNumber):
1791         (JSC::MarkedBlock::isMarked):
1792         (JSC::MarkedBlock::testAndSetMarked):
1793         (JSC::MarkedBlock::setMarked):
1794         (JSC::MarkedBlock::isCellAligned):
1795         (JSC::MarkedBlock::isPossibleCell):
1796         * runtime/MarkedSpace.h:
1797         (JSC::MarkedSpace::isMarked):
1798         (JSC::MarkedSpace::testAndSetMarked):
1799         (JSC::MarkedSpace::setMarked):
1800         * runtime/SmallStrings.cpp:
1801         (JSC::isMarked):
1802         * runtime/WeakGCMap.h:
1803         (JSC::WeakGCMap::isValid):
1804         (JSC::::get):
1805         (JSC::::take):
1806         (JSC::::set):
1807
1808 2011-02-02  Sam Weinig  <sam@webkit.org>
1809
1810         Fix windows clean build.
1811
1812         * DerivedSources.make:
1813
1814 2011-02-02  Alejandro G. Castro  <alex@igalia.com>
1815
1816         Reviewed by Martin Robinson.
1817
1818         [GTK] Fix dist compilation
1819         https://bugs.webkit.org/show_bug.cgi?id=53579
1820
1821         * GNUmakefile.am: Added WriteBarrier.h to the sources, it was
1822         added in r77151
1823
1824 2011-02-01  Sheriff Bot  <webkit.review.bot@gmail.com>
1825
1826         Unreviewed, rolling out r77297.
1827         http://trac.webkit.org/changeset/77297
1828         https://bugs.webkit.org/show_bug.cgi?id=53538
1829
1830         caused leopard crashes (Requested by paroga on #webkit).
1831
1832         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1833         * wtf/text/AtomicString.cpp:
1834         (WTF::AtomicString::fromUTF8):
1835         * wtf/unicode/UTF8.cpp:
1836         (WTF::Unicode::calculateStringHashFromUTF8):
1837         * wtf/unicode/UTF8.h:
1838
1839 2011-02-01  Sam Weinig  <sam@webkit.org>
1840
1841         Fix Mac production builds.
1842
1843         * JavaScriptCore.xcodeproj/project.pbxproj:
1844
1845 2011-02-01  Sam Weinig  <sam@webkit.org>
1846
1847         Try to fix the windows build.
1848
1849         * DerivedSources.make:
1850
1851 2011-02-01  Patrick Gansterer  <paroga@webkit.org>
1852
1853         Reviewed by Darin Adler.
1854
1855         Avoid strlen() in AtomicString::fromUTF8
1856         https://bugs.webkit.org/show_bug.cgi?id=50516
1857
1858         Add an overload to calculateStringHashFromUTF8 to get
1859         strlen() of the input data with only one call.
1860
1861         This change shows about 3% performance win on the xml-parser benchmark.
1862
1863         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1864         * wtf/text/AtomicString.cpp:
1865         (WTF::AtomicString::fromUTF8):
1866         * wtf/unicode/UTF8.cpp:
1867         (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal):
1868         (WTF::Unicode::calculateStringHashFromUTF8):
1869         (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
1870         * wtf/unicode/UTF8.h:
1871
1872 2011-02-01  Sam Weinig  <sam@webkit.org>
1873
1874         Reviewed by Beth Dakin.
1875
1876         Part 2 for <rdar://problem/8492788>
1877         Adopt WKScrollbarPainterController
1878
1879         Use header detection to define scrollbar painting controller #define.
1880
1881         * DerivedSources.make:
1882         * JavaScriptCore.xcodeproj/project.pbxproj:
1883
1884 2011-02-01  Geoffrey Garen  <ggaren@apple.com>
1885
1886         Reviewed by Oliver Hunt.
1887
1888         Refactor JSGlobalObject-related tear-down
1889         https://bugs.webkit.org/show_bug.cgi?id=53478
1890         
1891         While investigating crashes caused by r77082, I noticed some strange
1892         destructor-time behaviors. This patch makes them less strange.
1893
1894         * bytecode/CodeBlock.cpp:
1895         (JSC::CodeBlock::CodeBlock):
1896         (JSC::CodeBlock::markAggregate):
1897         * bytecode/CodeBlock.h:
1898         (JSC::CodeBlock::globalObject):
1899         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1900         (JSC::GlobalCodeBlock::~GlobalCodeBlock): Store the set of global code
1901         blocks on the Heap, instead of on independent global objects. The heap
1902         is guaranteed to outlast any GC-owned data structure. The heap is also
1903         a natural place to store objects that needs out-of-band marking, since
1904         the heap is responsible for marking all roots.
1905
1906         * runtime/Heap.cpp:
1907         (JSC::Heap::markRoots):
1908         (JSC::Heap::globalObjectCount):
1909         (JSC::Heap::protectedGlobalObjectCount):
1910         * runtime/Heap.h:
1911         (JSC::Heap::codeBlocks):
1912         * runtime/JSGlobalData.cpp:
1913         (JSC::JSGlobalData::JSGlobalData):
1914         * runtime/JSGlobalData.h:
1915         * runtime/JSGlobalObject.cpp:
1916         (JSC::JSGlobalObject::~JSGlobalObject):
1917         (JSC::JSGlobalObject::init):
1918         (JSC::JSGlobalObject::markChildren):
1919         * runtime/JSGlobalObject.h:
1920         * runtime/MarkedSpace.cpp: Store the set of global objects in a weak map
1921         owned by JSGlobalData, instead of an instrusive circular linked list.
1922         This is simpler, and it avoids destructor-time access between garbage
1923         collected objects, which is hard to get right.
1924
1925         (JSC::MarkedSpace::destroy): Make sure to clear mark bits before tearing
1926         everything down. Otherwise, weak data structures will incorrectly report
1927         that objects pending destruction are still alive.
1928
1929 2011-02-01  Geoffrey Garen  <ggaren@apple.com>
1930
1931         Reviewed by Oliver Hunt.
1932
1933         REGRESSION(77082): GC-related crashes seen: on WebKit2 bot; on GTK 32bit
1934         bot; loading trac pages; typing in search field
1935         https://bugs.webkit.org/show_bug.cgi?id=53519
1936         
1937         The crashes were all caused by failure to run an object's destructor.
1938
1939         * runtime/CollectorHeapIterator.h:
1940         (JSC::ObjectIterator::ObjectIterator): Don't skip forward upon
1941         construction. The iterator class used to do that when it was designed
1942         for prior-to-beginning initialization. I forgot to remove this line
1943         of code when I changed the iterator to normal initialization.
1944         
1945         Skipping forward upon construction was causing the heap to skip running
1946         the destructor for the very first object in a block when destroying the
1947         block. This usually did not crash, since block destruction is rare and
1948         most objects have pretty trivial destructors. However, in the rare case
1949         when the heap would destroy a block whose first object was a global
1950         object or a DOM node, BOOM.
1951
1952 2011-01-31  Oliver Hunt  <oliver@apple.com>
1953
1954         Reviewed by Geoffrey Garen.
1955
1956         Update JSObject storage for new marking API
1957         https://bugs.webkit.org/show_bug.cgi?id=53467
1958
1959         JSObject no longer uses EncodedJSValue for its property storage.
1960         This produces a stream of mechanical changes to PropertySlot and
1961         anonymous storage APIs.
1962
1963         * JavaScriptCore.exp:
1964         * runtime/ArrayPrototype.cpp:
1965         (JSC::ArrayPrototype::ArrayPrototype):
1966         * runtime/BooleanConstructor.cpp:
1967         (JSC::constructBoolean):
1968         (JSC::constructBooleanFromImmediateBoolean):
1969         * runtime/BooleanObject.cpp:
1970         (JSC::BooleanObject::BooleanObject):
1971         * runtime/BooleanObject.h:
1972         * runtime/BooleanPrototype.cpp:
1973         (JSC::BooleanPrototype::BooleanPrototype):
1974         * runtime/DateInstance.cpp:
1975         (JSC::DateInstance::DateInstance):
1976         * runtime/DatePrototype.cpp:
1977         (JSC::DatePrototype::DatePrototype):
1978         * runtime/JSActivation.cpp:
1979         (JSC::JSActivation::getOwnPropertySlot):
1980         * runtime/JSArray.cpp:
1981         (JSC::JSArray::getOwnPropertySlot):
1982         * runtime/JSFunction.cpp:
1983         (JSC::JSFunction::getOwnPropertySlot):
1984         * runtime/JSGlobalObject.h:
1985         (JSC::JSGlobalObject::JSGlobalObject):
1986         * runtime/JSObject.cpp:
1987         (JSC::JSObject::fillGetterPropertySlot):
1988         * runtime/JSObject.h:
1989         (JSC::JSObject::getDirectLocation):
1990         (JSC::JSObject::offsetForLocation):
1991         (JSC::JSObject::putAnonymousValue):
1992         (JSC::JSObject::clearAnonymousValue):
1993         (JSC::JSObject::getAnonymousValue):
1994         (JSC::JSObject::putThisToAnonymousValue):
1995         (JSC::JSObject::locationForOffset):
1996         (JSC::JSObject::inlineGetOwnPropertySlot):
1997         * runtime/JSObjectWithGlobalObject.cpp:
1998         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
1999         * runtime/JSWrapperObject.h:
2000         (JSC::JSWrapperObject::JSWrapperObject):
2001         (JSC::JSWrapperObject::setInternalValue):
2002         * runtime/Lookup.cpp:
2003         (JSC::setUpStaticFunctionSlot):
2004         * runtime/NumberConstructor.cpp:
2005         (JSC::constructWithNumberConstructor):
2006         * runtime/NumberObject.cpp:
2007         (JSC::NumberObject::NumberObject):
2008         (JSC::constructNumber):
2009         * runtime/NumberObject.h:
2010         * runtime/NumberPrototype.cpp:
2011         (JSC::NumberPrototype::NumberPrototype):
2012         * runtime/PropertySlot.h:
2013         (JSC::PropertySlot::getValue):
2014         (JSC::PropertySlot::setValue):
2015         (JSC::PropertySlot::setRegisterSlot):
2016         * runtime/StringObject.cpp:
2017         (JSC::StringObject::StringObject):
2018         * runtime/StringPrototype.cpp:
2019         (JSC::StringPrototype::StringPrototype):
2020         * runtime/WriteBarrier.h:
2021         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
2022
2023 2011-02-01  Daniel Bates  <dbates@rim.com>
2024
2025         Reviewed by Antonio Gomes.
2026
2027         Modify RandomNumberSeed.h to use USE(MERSENNE_TWISTER_19937)
2028         https://bugs.webkit.org/show_bug.cgi?id=53506
2029
2030         Currently, use of the Mersenne Twister pseudorandom number generator
2031         is hardcoded to the Windows CE port. With the passing of bug #53253,
2032         we can generalize support for this PRNG to all ports that use srand(3)
2033         and rand(3), including Windows CE.
2034
2035         * wtf/RandomNumberSeed.h:
2036         (WTF::initializeRandomNumberGenerator):
2037
2038 2011-02-01  Dave Tapuska  <dtapuska@rim.com>
2039
2040         Reviewed by Gavin Barraclough.
2041
2042         MacroAssemblerARM would generate code that did 32bit loads
2043         on addresses that were not aligned. More specifically it would
2044         generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower.
2045         The intended instruction really is ldrb r8,[r1, #7]; ensure we
2046         call load8 instead of load32.
2047
2048         https://bugs.webkit.org/show_bug.cgi?id=46095
2049
2050         * assembler/MacroAssemblerARM.h:
2051         (JSC::MacroAssemblerARM::set32Test32):
2052         (JSC::MacroAssemblerARM::set32Test8):
2053
2054 2011-02-01  Darin Fisher  <darin@chromium.org>
2055
2056         Reviewed by Eric Seidel.
2057
2058         Fix some Visual Studio compiler warnings.
2059         https://bugs.webkit.org/show_bug.cgi?id=53476
2060
2061         * wtf/MathExtras.h:
2062         (clampToInteger):
2063         (clampToPositiveInteger):
2064         * wtf/ThreadingWin.cpp:
2065         (WTF::absoluteTimeToWaitTimeoutInterval):
2066
2067 2011-01-31  Oliver Hunt  <oliver@apple.com>
2068
2069         Reviewed by Sam Weinig.
2070
2071         Bogus callframe during stack unwinding
2072         https://bugs.webkit.org/show_bug.cgi?id=53454
2073
2074         Trying to access a callframe's globalData after destroying its
2075         ScopeChain is not a good thing.  While we could access the
2076         globalData directly through the (known valid) scopechain we're
2077         holding on to, it feels fragile.  Instead we push the valid
2078         ScopeChain onto the callframe again to ensure that the callframe
2079         itself remains valid.
2080
2081         * interpreter/Interpreter.cpp:
2082         (JSC::Interpreter::unwindCallFrame):
2083
2084 2011-01-31  Michael Saboff  <msaboff@apple.com>
2085
2086         Reviewed by Geoffrey Garen.
2087
2088         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
2089         https://bugs.webkit.org/show_bug.cgi?id=53271
2090
2091         Reapplying this change again.
2092         Changed isValid() to use .get() as a result of change r77151.
2093
2094         Added new isValid() methods to check if a contained object in
2095         a WeakGCMap is valid when using an unchecked iterator.
2096
2097         * runtime/WeakGCMap.h:
2098         (JSC::WeakGCMap::isValid):
2099
2100 2011-01-31  Oliver Hunt  <oliver@apple.com>
2101
2102         Convert markstack to a slot visitor API
2103         https://bugs.webkit.org/show_bug.cgi?id=53219
2104
2105         rolling r77098, r77099, r77100, r77109, and
2106         r77111 back in, along with a few more Qt fix attempts.
2107
2108         * API/JSCallbackObject.h:
2109         (JSC::JSCallbackObjectData::setPrivateProperty):
2110         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2111         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2112         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2113         (JSC::JSCallbackObject::setPrivateProperty):
2114         * API/JSCallbackObjectFunctions.h:
2115         (JSC::::put):
2116         (JSC::::staticFunctionGetter):
2117         * API/JSObjectRef.cpp:
2118         (JSObjectMakeConstructor):
2119         (JSObjectSetPrivateProperty):
2120         * API/JSWeakObjectMapRefInternal.h:
2121         * JavaScriptCore.exp:
2122         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2123         * JavaScriptCore.xcodeproj/project.pbxproj:
2124         * bytecode/CodeBlock.cpp:
2125         (JSC::CodeBlock::markAggregate):
2126         * bytecode/CodeBlock.h:
2127         (JSC::CodeBlock::globalObject):
2128         * bytecompiler/BytecodeGenerator.cpp:
2129         (JSC::BytecodeGenerator::BytecodeGenerator):
2130         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2131         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2132         (JSC::BytecodeGenerator::findScopedProperty):
2133         * debugger/Debugger.cpp:
2134         (JSC::evaluateInGlobalCallFrame):
2135         * debugger/DebuggerActivation.cpp:
2136         (JSC::DebuggerActivation::DebuggerActivation):
2137         (JSC::DebuggerActivation::markChildren):
2138         * debugger/DebuggerActivation.h:
2139         * debugger/DebuggerCallFrame.cpp:
2140         (JSC::DebuggerCallFrame::evaluate):
2141         * interpreter/CallFrame.h:
2142         (JSC::ExecState::exception):
2143         * interpreter/Interpreter.cpp:
2144         (JSC::Interpreter::resolve):
2145         (JSC::Interpreter::resolveSkip):
2146         (JSC::Interpreter::resolveGlobal):
2147         (JSC::Interpreter::resolveGlobalDynamic):
2148         (JSC::Interpreter::resolveBaseAndProperty):
2149         (JSC::Interpreter::unwindCallFrame):
2150         (JSC::appendSourceToError):
2151         (JSC::Interpreter::execute):
2152         (JSC::Interpreter::tryCacheGetByID):
2153         (JSC::Interpreter::privateExecute):
2154         * jit/JITStubs.cpp:
2155         (JSC::JITThunks::tryCacheGetByID):
2156         (JSC::DEFINE_STUB_FUNCTION):
2157         * jsc.cpp:
2158         (GlobalObject::GlobalObject):
2159         * runtime/ArgList.cpp:
2160         (JSC::MarkedArgumentBuffer::markLists):
2161         * runtime/Arguments.cpp:
2162         (JSC::Arguments::markChildren):
2163         (JSC::Arguments::getOwnPropertySlot):
2164         (JSC::Arguments::getOwnPropertyDescriptor):
2165         (JSC::Arguments::put):
2166         * runtime/Arguments.h:
2167         (JSC::Arguments::setActivation):
2168         (JSC::Arguments::Arguments):
2169         * runtime/ArrayConstructor.cpp:
2170         (JSC::ArrayConstructor::ArrayConstructor):
2171         (JSC::constructArrayWithSizeQuirk):
2172         * runtime/ArrayPrototype.cpp:
2173         (JSC::arrayProtoFuncSplice):
2174         * runtime/BatchedTransitionOptimizer.h:
2175         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2176         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2177         * runtime/BooleanConstructor.cpp:
2178         (JSC::BooleanConstructor::BooleanConstructor):
2179         (JSC::constructBoolean):
2180         (JSC::constructBooleanFromImmediateBoolean):
2181         * runtime/BooleanPrototype.cpp:
2182         (JSC::BooleanPrototype::BooleanPrototype):
2183         * runtime/ConservativeSet.cpp:
2184         (JSC::ConservativeSet::grow):
2185         * runtime/ConservativeSet.h:
2186         (JSC::ConservativeSet::~ConservativeSet):
2187         (JSC::ConservativeSet::mark):
2188         * runtime/DateConstructor.cpp:
2189         (JSC::DateConstructor::DateConstructor):
2190         * runtime/DateInstance.cpp:
2191         (JSC::DateInstance::DateInstance):
2192         * runtime/DatePrototype.cpp:
2193         (JSC::dateProtoFuncSetTime):
2194         (JSC::setNewValueFromTimeArgs):
2195         (JSC::setNewValueFromDateArgs):
2196         (JSC::dateProtoFuncSetYear):
2197         * runtime/ErrorConstructor.cpp:
2198         (JSC::ErrorConstructor::ErrorConstructor):
2199         * runtime/ErrorInstance.cpp:
2200         (JSC::ErrorInstance::ErrorInstance):
2201         * runtime/ErrorPrototype.cpp:
2202         (JSC::ErrorPrototype::ErrorPrototype):
2203         * runtime/FunctionConstructor.cpp:
2204         (JSC::FunctionConstructor::FunctionConstructor):
2205         * runtime/FunctionPrototype.cpp:
2206         (JSC::FunctionPrototype::FunctionPrototype):
2207         * runtime/GetterSetter.cpp:
2208         (JSC::GetterSetter::markChildren):
2209         * runtime/GetterSetter.h:
2210         (JSC::GetterSetter::GetterSetter):
2211         (JSC::GetterSetter::getter):
2212         (JSC::GetterSetter::setGetter):
2213         (JSC::GetterSetter::setter):
2214         (JSC::GetterSetter::setSetter):
2215         * runtime/GlobalEvalFunction.cpp:
2216         (JSC::GlobalEvalFunction::GlobalEvalFunction):
2217         (JSC::GlobalEvalFunction::markChildren):
2218         * runtime/GlobalEvalFunction.h:
2219         (JSC::GlobalEvalFunction::cachedGlobalObject):
2220         * runtime/Heap.cpp:
2221         (JSC::Heap::markProtectedObjects):
2222         (JSC::Heap::markTempSortVectors):
2223         (JSC::Heap::markRoots):
2224         * runtime/InternalFunction.cpp:
2225         (JSC::InternalFunction::InternalFunction):
2226         * runtime/JSAPIValueWrapper.h:
2227         (JSC::JSAPIValueWrapper::value):
2228         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2229         * runtime/JSActivation.cpp:
2230         (JSC::JSActivation::markChildren):
2231         (JSC::JSActivation::put):
2232         * runtime/JSArray.cpp:
2233         (JSC::JSArray::JSArray):
2234         (JSC::JSArray::getOwnPropertySlot):
2235         (JSC::JSArray::getOwnPropertyDescriptor):
2236         (JSC::JSArray::put):
2237         (JSC::JSArray::putSlowCase):
2238         (JSC::JSArray::deleteProperty):
2239         (JSC::JSArray::increaseVectorLength):
2240         (JSC::JSArray::setLength):
2241         (JSC::JSArray::pop):
2242         (JSC::JSArray::push):
2243         (JSC::JSArray::unshiftCount):
2244         (JSC::JSArray::sort):
2245         (JSC::JSArray::fillArgList):
2246         (JSC::JSArray::copyToRegisters):
2247         (JSC::JSArray::compactForSorting):
2248         * runtime/JSArray.h:
2249         (JSC::JSArray::getIndex):
2250         (JSC::JSArray::setIndex):
2251         (JSC::JSArray::uncheckedSetIndex):
2252         (JSC::JSArray::markChildrenDirect):
2253         * runtime/JSByteArray.cpp:
2254         (JSC::JSByteArray::JSByteArray):
2255         * runtime/JSCell.h:
2256         (JSC::JSCell::MarkStack::append):
2257         (JSC::JSCell::MarkStack::internalAppend):
2258         (JSC::JSCell::MarkStack::deprecatedAppend):
2259         * runtime/JSFunction.cpp:
2260         (JSC::JSFunction::JSFunction):
2261         (JSC::JSFunction::getOwnPropertySlot):
2262         * runtime/JSGlobalData.h:
2263         * runtime/JSGlobalObject.cpp:
2264         (JSC::markIfNeeded):
2265         (JSC::JSGlobalObject::reset):
2266         (JSC::JSGlobalObject::resetPrototype):
2267         (JSC::JSGlobalObject::markChildren):
2268         * runtime/JSGlobalObject.h:
2269         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2270         (JSC::JSGlobalObject::regExpConstructor):
2271         (JSC::JSGlobalObject::errorConstructor):
2272         (JSC::JSGlobalObject::evalErrorConstructor):
2273         (JSC::JSGlobalObject::rangeErrorConstructor):
2274         (JSC::JSGlobalObject::referenceErrorConstructor):
2275         (JSC::JSGlobalObject::syntaxErrorConstructor):
2276         (JSC::JSGlobalObject::typeErrorConstructor):
2277         (JSC::JSGlobalObject::URIErrorConstructor):
2278         (JSC::JSGlobalObject::evalFunction):
2279         (JSC::JSGlobalObject::objectPrototype):
2280         (JSC::JSGlobalObject::functionPrototype):
2281         (JSC::JSGlobalObject::arrayPrototype):
2282         (JSC::JSGlobalObject::booleanPrototype):
2283         (JSC::JSGlobalObject::stringPrototype):
2284         (JSC::JSGlobalObject::numberPrototype):
2285         (JSC::JSGlobalObject::datePrototype):
2286         (JSC::JSGlobalObject::regExpPrototype):
2287         (JSC::JSGlobalObject::methodCallDummy):
2288         (JSC::Structure::prototypeForLookup):
2289         (JSC::constructArray):
2290         * runtime/JSONObject.cpp:
2291         (JSC::Stringifier::Holder::object):
2292         (JSC::Stringifier::Holder::objectSlot):
2293         (JSC::Stringifier::markAggregate):
2294         (JSC::Stringifier::stringify):
2295         (JSC::Stringifier::Holder::appendNextProperty):
2296         (JSC::Walker::callReviver):
2297         (JSC::Walker::walk):
2298         * runtime/JSObject.cpp:
2299         (JSC::JSObject::defineGetter):
2300         (JSC::JSObject::defineSetter):
2301         (JSC::JSObject::removeDirect):
2302         (JSC::JSObject::putDirectFunction):
2303         (JSC::JSObject::putDirectFunctionWithoutTransition):
2304         (JSC::putDescriptor):
2305         (JSC::JSObject::defineOwnProperty):
2306         * runtime/JSObject.h:
2307         (JSC::JSObject::getDirectOffset):
2308         (JSC::JSObject::putDirectOffset):
2309         (JSC::JSObject::putUndefinedAtDirectOffset):
2310         (JSC::JSObject::flattenDictionaryObject):
2311         (JSC::JSObject::putDirectInternal):
2312         (JSC::JSObject::putDirect):
2313         (JSC::JSObject::putDirectFunction):
2314         (JSC::JSObject::putDirectWithoutTransition):
2315         (JSC::JSObject::putDirectFunctionWithoutTransition):
2316         (JSC::JSValue::putDirect):
2317         (JSC::JSObject::allocatePropertyStorageInline):
2318         (JSC::JSObject::markChildrenDirect):
2319         * runtime/JSPropertyNameIterator.cpp:
2320         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2321         (JSC::JSPropertyNameIterator::get):
2322         * runtime/JSPropertyNameIterator.h:
2323         * runtime/JSStaticScopeObject.cpp:
2324         (JSC::JSStaticScopeObject::markChildren):
2325         * runtime/JSString.cpp:
2326         (JSC::StringObject::create):
2327         * runtime/JSValue.h:
2328         * runtime/JSWrapperObject.cpp:
2329         (JSC::JSWrapperObject::markChildren):
2330         * runtime/JSWrapperObject.h:
2331         (JSC::JSWrapperObject::internalValue):
2332         (JSC::JSWrapperObject::setInternalValue):
2333         * runtime/LiteralParser.cpp:
2334         (JSC::LiteralParser::parse):
2335         * runtime/Lookup.cpp:
2336         (JSC::setUpStaticFunctionSlot):
2337         * runtime/Lookup.h:
2338         (JSC::lookupPut):
2339         * runtime/MarkStack.h:
2340         (JSC::MarkStack::MarkStack):
2341         (JSC::MarkStack::deprecatedAppendValues):
2342         (JSC::MarkStack::appendValues):
2343         * runtime/MathObject.cpp:
2344         (JSC::MathObject::MathObject):
2345         * runtime/NativeErrorConstructor.cpp:
2346         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2347         * runtime/NativeErrorPrototype.cpp:
2348         (JSC::NativeErrorPrototype::NativeErrorPrototype):
2349         * runtime/NumberConstructor.cpp:
2350         (JSC::NumberConstructor::NumberConstructor):
2351         (JSC::constructWithNumberConstructor):
2352         * runtime/NumberObject.cpp:
2353         (JSC::constructNumber):
2354         * runtime/NumberPrototype.cpp:
2355         (JSC::NumberPrototype::NumberPrototype):
2356         * runtime/ObjectConstructor.cpp:
2357         (JSC::ObjectConstructor::ObjectConstructor):
2358         (JSC::objectConstructorGetOwnPropertyDescriptor):
2359         * runtime/Operations.h:
2360         (JSC::normalizePrototypeChain):
2361         (JSC::resolveBase):
2362         * runtime/PrototypeFunction.cpp:
2363         (JSC::PrototypeFunction::PrototypeFunction):
2364         * runtime/PutPropertySlot.h:
2365         (JSC::PutPropertySlot::setExistingProperty):
2366         (JSC::PutPropertySlot::setNewProperty):
2367         (JSC::PutPropertySlot::base):
2368         * runtime/RegExpConstructor.cpp:
2369         (JSC::RegExpConstructor::RegExpConstructor):
2370         * runtime/ScopeChain.cpp:
2371         (JSC::ScopeChainNode::print):
2372         * runtime/ScopeChain.h:
2373         (JSC::ScopeChainNode::~ScopeChainNode):
2374         (JSC::ScopeChainIterator::operator*):
2375         (JSC::ScopeChainIterator::operator->):
2376         (JSC::ScopeChain::top):
2377         * runtime/ScopeChainMark.h:
2378         (JSC::ScopeChain::markAggregate):
2379         * runtime/SmallStrings.cpp:
2380         (JSC::isMarked):
2381         (JSC::SmallStrings::markChildren):
2382         * runtime/SmallStrings.h:
2383         (JSC::SmallStrings::emptyString):
2384         (JSC::SmallStrings::singleCharacterString):
2385         (JSC::SmallStrings::singleCharacterStrings):
2386         * runtime/StringConstructor.cpp:
2387         (JSC::StringConstructor::StringConstructor):
2388         * runtime/StringObject.cpp:
2389         (JSC::StringObject::StringObject):
2390         * runtime/StringObject.h:
2391         * runtime/StringPrototype.cpp:
2392         (JSC::StringPrototype::StringPrototype):
2393         * runtime/Structure.cpp:
2394         (JSC::Structure::Structure):
2395         (JSC::Structure::addPropertyTransition):
2396         (JSC::Structure::toDictionaryTransition):
2397         (JSC::Structure::flattenDictionaryStructure):
2398         * runtime/Structure.h:
2399         (JSC::Structure::storedPrototype):
2400         (JSC::Structure::storedPrototypeSlot):
2401         * runtime/WeakGCMap.h:
2402         (JSC::WeakGCMap::uncheckedGet):
2403         (JSC::WeakGCMap::uncheckedGetSlot):
2404         (JSC::::get):
2405         (JSC::::take):
2406         (JSC::::set):
2407         (JSC::::uncheckedRemove):
2408         * runtime/WriteBarrier.h: Added.
2409         (JSC::DeprecatedPtr::DeprecatedPtr):
2410         (JSC::DeprecatedPtr::get):
2411         (JSC::DeprecatedPtr::operator*):
2412         (JSC::DeprecatedPtr::operator->):
2413         (JSC::DeprecatedPtr::slot):
2414         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
2415         (JSC::DeprecatedPtr::operator!):
2416         (JSC::WriteBarrierBase::set):
2417         (JSC::WriteBarrierBase::get):
2418         (JSC::WriteBarrierBase::operator*):
2419         (JSC::WriteBarrierBase::operator->):
2420         (JSC::WriteBarrierBase::clear):
2421         (JSC::WriteBarrierBase::slot):
2422         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
2423         (JSC::WriteBarrierBase::operator!):
2424         (JSC::WriteBarrier::WriteBarrier):
2425         (JSC::operator==):
2426
2427 2011-01-31  Dan Winship  <danw@gnome.org>
2428
2429         Reviewed by Gustavo Noronha Silva.
2430
2431         wss (websockets ssl) support for gtk via new gio TLS support
2432         https://bugs.webkit.org/show_bug.cgi?id=50344
2433
2434         Add a GPollableOutputStream typedef for TLS WebSockets support
2435
2436         * wtf/gobject/GTypedefs.h:
2437
2438 2011-01-31  Gavin Barraclough  <barraclough@apple.com>
2439
2440         Reviewed by Geoff Garen.
2441
2442         https://bugs.webkit.org/show_bug.cgi?id=53352
2443         Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
2444
2445         The FixedVMPoolAllocator currently uses a best fix policy -
2446         switch to first fit, this is less prone to external fragmentation.
2447
2448         * jit/ExecutableAllocatorFixedVMPool.cpp:
2449         (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
2450         (JSC::AllocationTableSizeClass::blockSize):
2451         (JSC::AllocationTableSizeClass::blockCount):
2452         (JSC::AllocationTableSizeClass::blockAlignment):
2453         (JSC::AllocationTableSizeClass::size):
2454         (JSC::AllocationTableLeaf::AllocationTableLeaf):
2455         (JSC::AllocationTableLeaf::~AllocationTableLeaf):
2456         (JSC::AllocationTableLeaf::allocate):
2457         (JSC::AllocationTableLeaf::free):
2458         (JSC::AllocationTableLeaf::isEmpty):
2459         (JSC::AllocationTableLeaf::isFull):
2460         (JSC::AllocationTableLeaf::size):
2461         (JSC::AllocationTableLeaf::classForSize):
2462         (JSC::AllocationTableLeaf::dump):
2463         (JSC::LazyAllocationTable::LazyAllocationTable):
2464         (JSC::LazyAllocationTable::~LazyAllocationTable):
2465         (JSC::LazyAllocationTable::allocate):
2466         (JSC::LazyAllocationTable::free):
2467         (JSC::LazyAllocationTable::isEmpty):
2468         (JSC::LazyAllocationTable::isFull):
2469         (JSC::LazyAllocationTable::size):
2470         (JSC::LazyAllocationTable::dump):
2471         (JSC::LazyAllocationTable::classForSize):
2472         (JSC::AllocationTableDirectory::AllocationTableDirectory):
2473         (JSC::AllocationTableDirectory::~AllocationTableDirectory):
2474         (JSC::AllocationTableDirectory::allocate):
2475         (JSC::AllocationTableDirectory::free):
2476         (JSC::AllocationTableDirectory::isEmpty):
2477         (JSC::AllocationTableDirectory::isFull):
2478         (JSC::AllocationTableDirectory::size):
2479         (JSC::AllocationTableDirectory::classForSize):
2480         (JSC::AllocationTableDirectory::dump):
2481         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2482         (JSC::FixedVMPoolAllocator::alloc):
2483         (JSC::FixedVMPoolAllocator::free):
2484         (JSC::FixedVMPoolAllocator::allocated):
2485         (JSC::FixedVMPoolAllocator::isValid):
2486         (JSC::FixedVMPoolAllocator::classForSize):
2487         (JSC::FixedVMPoolAllocator::offsetToPointer):
2488         (JSC::FixedVMPoolAllocator::pointerToOffset):
2489         (JSC::ExecutableAllocator::committedByteCount):
2490         (JSC::ExecutableAllocator::isValid):
2491         (JSC::ExecutableAllocator::underMemoryPressure):
2492         (JSC::ExecutablePool::systemAlloc):
2493         (JSC::ExecutablePool::systemRelease):
2494         * wtf/PageReservation.h:
2495         (WTF::PageReservation::PageReservation):
2496         (WTF::PageReservation::commit):
2497         (WTF::PageReservation::decommit):
2498         (WTF::PageReservation::committed):
2499
2500 2011-01-31  Sheriff Bot  <webkit.review.bot@gmail.com>
2501
2502         Unreviewed, rolling out r76969.
2503         http://trac.webkit.org/changeset/76969
2504         https://bugs.webkit.org/show_bug.cgi?id=53418
2505
2506         "It is causing crashes in GTK+ and Leopard bots" (Requested by
2507         alexg__ on #webkit).
2508
2509         * runtime/WeakGCMap.h:
2510
2511 2011-01-30  Csaba Osztrogonác  <ossy@webkit.org>
2512
2513         Unreviewed, rolling out r77098, r77099, r77100, r77109, and
2514         r77111.
2515         http://trac.webkit.org/changeset/77098
2516         http://trac.webkit.org/changeset/77099
2517         http://trac.webkit.org/changeset/77100
2518         http://trac.webkit.org/changeset/77109
2519         http://trac.webkit.org/changeset/77111
2520         https://bugs.webkit.org/show_bug.cgi?id=53219
2521
2522         Qt build is broken
2523
2524         * API/JSCallbackObject.h:
2525         (JSC::JSCallbackObjectData::setPrivateProperty):
2526         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2527         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2528         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2529         (JSC::JSCallbackObject::setPrivateProperty):
2530         * API/JSCallbackObjectFunctions.h:
2531         (JSC::::put):
2532         (JSC::::staticFunctionGetter):
2533         * API/JSObjectRef.cpp:
2534         (JSObjectMakeConstructor):
2535         (JSObjectSetPrivateProperty):
2536         * API/JSWeakObjectMapRefInternal.h:
2537         * JavaScriptCore.exp:
2538         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2539         * JavaScriptCore.xcodeproj/project.pbxproj:
2540         * bytecode/CodeBlock.cpp:
2541         (JSC::CodeBlock::markAggregate):
2542         * bytecode/CodeBlock.h:
2543         (JSC::CodeBlock::globalObject):
2544         * bytecompiler/BytecodeGenerator.cpp:
2545         (JSC::BytecodeGenerator::BytecodeGenerator):
2546         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2547         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2548         (JSC::BytecodeGenerator::findScopedProperty):
2549         * debugger/Debugger.cpp:
2550         (JSC::evaluateInGlobalCallFrame):
2551         * debugger/DebuggerActivation.cpp:
2552         (JSC::DebuggerActivation::DebuggerActivation):
2553         (JSC::DebuggerActivation::markChildren):
2554         * debugger/DebuggerActivation.h:
2555         * debugger/DebuggerCallFrame.cpp:
2556         (JSC::DebuggerCallFrame::evaluate):
2557         * interpreter/CallFrame.h:
2558         (JSC::ExecState::exception):
2559         * interpreter/Interpreter.cpp:
2560         (JSC::Interpreter::resolve):
2561         (JSC::Interpreter::resolveSkip):
2562         (JSC::Interpreter::resolveGlobal):
2563         (JSC::Interpreter::resolveGlobalDynamic):
2564         (JSC::Interpreter::resolveBaseAndProperty):
2565         (JSC::Interpreter::unwindCallFrame):
2566         (JSC::appendSourceToError):
2567         (JSC::Interpreter::execute):
2568         (JSC::Interpreter::tryCacheGetByID):
2569         (JSC::Interpreter::privateExecute):
2570         * jit/JITStubs.cpp:
2571         (JSC::JITThunks::tryCacheGetByID):
2572         (JSC::DEFINE_STUB_FUNCTION):
2573         * jsc.cpp:
2574         (GlobalObject::GlobalObject):
2575         * runtime/ArgList.cpp:
2576         (JSC::MarkedArgumentBuffer::markLists):
2577         * runtime/Arguments.cpp:
2578         (JSC::Arguments::markChildren):
2579         (JSC::Arguments::getOwnPropertySlot):
2580         (JSC::Arguments::getOwnPropertyDescriptor):
2581         (JSC::Arguments::put):
2582         * runtime/Arguments.h:
2583         (JSC::Arguments::setActivation):
2584         (JSC::Arguments::Arguments):
2585         * runtime/ArrayConstructor.cpp:
2586         (JSC::ArrayConstructor::ArrayConstructor):
2587         (JSC::constructArrayWithSizeQuirk):
2588         * runtime/ArrayPrototype.cpp:
2589         (JSC::arrayProtoFuncSplice):
2590         * runtime/BatchedTransitionOptimizer.h:
2591         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2592         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2593         * runtime/BooleanConstructor.cpp:
2594         (JSC::BooleanConstructor::BooleanConstructor):
2595         (JSC::constructBoolean):
2596         (JSC::constructBooleanFromImmediateBoolean):
2597         * runtime/BooleanPrototype.cpp:
2598         (JSC::BooleanPrototype::BooleanPrototype):
2599         * runtime/ConservativeSet.cpp:
2600         (JSC::ConservativeSet::grow):
2601         * runtime/ConservativeSet.h:
2602         (JSC::ConservativeSet::~ConservativeSet):
2603         (JSC::ConservativeSet::mark):
2604         * runtime/DateConstructor.cpp:
2605         (JSC::DateConstructor::DateConstructor):
2606         * runtime/DateInstance.cpp:
2607         (JSC::DateInstance::DateInstance):
2608         * runtime/DatePrototype.cpp:
2609         (JSC::dateProtoFuncSetTime):
2610         (JSC::setNewValueFromTimeArgs):
2611         (JSC::setNewValueFromDateArgs):
2612         (JSC::dateProtoFuncSetYear):
2613         * runtime/ErrorConstructor.cpp:
2614         (JSC::ErrorConstructor::ErrorConstructor):
2615         * runtime/ErrorInstance.cpp:
2616         (JSC::ErrorInstance::ErrorInstance):
2617         * runtime/ErrorPrototype.cpp:
2618         (JSC::ErrorPrototype::ErrorPrototype):
2619         * runtime/FunctionConstructor.cpp:
2620         (JSC::FunctionConstructor::FunctionConstructor):
2621         * runtime/FunctionPrototype.cpp:
2622         (JSC::FunctionPrototype::FunctionPrototype):
2623         * runtime/GetterSetter.cpp:
2624         (JSC::GetterSetter::markChildren):
2625         * runtime/GetterSetter.h:
2626         (JSC::GetterSetter::GetterSetter):
2627         (JSC::GetterSetter::getter):
2628         (JSC::GetterSetter::setGetter):
2629         (JSC::GetterSetter::setter):
2630         (JSC::GetterSetter::setSetter):
2631         * runtime/GlobalEvalFunction.cpp:
2632         (JSC::GlobalEvalFunction::GlobalEvalFunction):
2633         (JSC::GlobalEvalFunction::markChildren):
2634         * runtime/GlobalEvalFunction.h:
2635         (JSC::GlobalEvalFunction::cachedGlobalObject):
2636         * runtime/Heap.cpp:
2637         (JSC::Heap::markProtectedObjects):
2638         (JSC::Heap::markTempSortVectors):
2639         (JSC::Heap::markRoots):
2640         * runtime/InternalFunction.cpp:
2641         (JSC::InternalFunction::InternalFunction):
2642         * runtime/JSAPIValueWrapper.h:
2643         (JSC::JSAPIValueWrapper::value):
2644         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2645         * runtime/JSActivation.cpp:
2646         (JSC::JSActivation::markChildren):
2647         (JSC::JSActivation::put):
2648         * runtime/JSArray.cpp:
2649         (JSC::JSArray::JSArray):
2650         (JSC::JSArray::getOwnPropertySlot):
2651         (JSC::JSArray::getOwnPropertyDescriptor):
2652         (JSC::JSArray::put):
2653         (JSC::JSArray::putSlowCase):
2654         (JSC::JSArray::deleteProperty):
2655         (JSC::JSArray::increaseVectorLength):
2656         (JSC::JSArray::setLength):
2657         (JSC::JSArray::pop):
2658         (JSC::JSArray::push):
2659         (JSC::JSArray::unshiftCount):
2660         (JSC::JSArray::sort):
2661         (JSC::JSArray::fillArgList):
2662         (JSC::JSArray::copyToRegisters):
2663         (JSC::JSArray::compactForSorting):
2664         * runtime/JSArray.h:
2665         (JSC::JSArray::getIndex):
2666         (JSC::JSArray::setIndex):
2667         (JSC::JSArray::uncheckedSetIndex):
2668         (JSC::JSArray::markChildrenDirect):
2669         * runtime/JSByteArray.cpp:
2670         (JSC::JSByteArray::JSByteArray):
2671         * runtime/JSCell.h:
2672         (JSC::JSCell::JSValue::toThisObject):
2673         (JSC::JSCell::MarkStack::append):
2674         * runtime/JSFunction.cpp:
2675         (JSC::JSFunction::JSFunction):
2676         (JSC::JSFunction::getOwnPropertySlot):
2677         * runtime/JSGlobalData.h:
2678         * runtime/JSGlobalObject.cpp:
2679         (JSC::markIfNeeded):
2680         (JSC::JSGlobalObject::reset):
2681         (JSC::JSGlobalObject::resetPrototype):
2682         (JSC::JSGlobalObject::markChildren):
2683         * runtime/JSGlobalObject.h:
2684         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2685         (JSC::JSGlobalObject::regExpConstructor):
2686         (JSC::JSGlobalObject::errorConstructor):
2687         (JSC::JSGlobalObject::evalErrorConstructor):
2688         (JSC::JSGlobalObject::rangeErrorConstructor):
2689         (JSC::JSGlobalObject::referenceErrorConstructor):
2690         (JSC::JSGlobalObject::syntaxErrorConstructor):
2691         (JSC::JSGlobalObject::typeErrorConstructor):
2692         (JSC::JSGlobalObject::URIErrorConstructor):
2693         (JSC::JSGlobalObject::evalFunction):
2694         (JSC::JSGlobalObject::objectPrototype):
2695         (JSC::JSGlobalObject::functionPrototype):
2696         (JSC::JSGlobalObject::arrayPrototype):
2697         (JSC::JSGlobalObject::booleanPrototype):
2698         (JSC::JSGlobalObject::stringPrototype):
2699         (JSC::JSGlobalObject::numberPrototype):
2700         (JSC::JSGlobalObject::datePrototype):
2701         (JSC::JSGlobalObject::regExpPrototype):
2702         (JSC::JSGlobalObject::methodCallDummy):
2703         (JSC::Structure::prototypeForLookup):
2704         (JSC::constructArray):
2705         * runtime/JSONObject.cpp:
2706         (JSC::Stringifier::Holder::object):
2707         (JSC::Stringifier::markAggregate):
2708         (JSC::Stringifier::stringify):
2709         (JSC::Stringifier::Holder::appendNextProperty):
2710         (JSC::Walker::callReviver):
2711         (JSC::Walker::walk):
2712         * runtime/JSObject.cpp:
2713         (JSC::JSObject::defineGetter):
2714         (JSC::JSObject::defineSetter):
2715         (JSC::JSObject::removeDirect):
2716         (JSC::JSObject::putDirectFunction):
2717         (JSC::JSObject::putDirectFunctionWithoutTransition):
2718         (JSC::putDescriptor):
2719         (JSC::JSObject::defineOwnProperty):
2720         * runtime/JSObject.h:
2721         (JSC::JSObject::getDirectOffset):
2722         (JSC::JSObject::putDirectOffset):
2723         (JSC::JSObject::flattenDictionaryObject):
2724         (JSC::JSObject::putDirectInternal):
2725         (JSC::JSObject::putDirect):
2726         (JSC::JSObject::putDirectFunction):
2727         (JSC::JSObject::putDirectWithoutTransition):
2728         (JSC::JSObject::putDirectFunctionWithoutTransition):
2729         (JSC::JSValue::putDirect):
2730         (JSC::JSObject::allocatePropertyStorageInline):
2731         (JSC::JSObject::markChildrenDirect):
2732         * runtime/JSPropertyNameIterator.cpp:
2733         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2734         (JSC::JSPropertyNameIterator::get):
2735         * runtime/JSPropertyNameIterator.h:
2736         * runtime/JSStaticScopeObject.cpp:
2737         (JSC::JSStaticScopeObject::markChildren):
2738         * runtime/JSString.cpp:
2739         (JSC::StringObject::create):
2740         * runtime/JSValue.h:
2741         * runtime/JSWrapperObject.cpp:
2742         (JSC::JSWrapperObject::markChildren):
2743         * runtime/JSWrapperObject.h:
2744         (JSC::JSWrapperObject::internalValue):
2745         (JSC::JSWrapperObject::setInternalValue):
2746         * runtime/LiteralParser.cpp:
2747         (JSC::LiteralParser::parse):
2748         * runtime/Lookup.cpp:
2749         (JSC::setUpStaticFunctionSlot):
2750         * runtime/Lookup.h:
2751         (JSC::lookupPut):
2752         * runtime/MarkStack.h:
2753         (JSC::MarkStack::appendValues):
2754         * runtime/MathObject.cpp:
2755         (JSC::MathObject::MathObject):
2756         * runtime/NativeErrorConstructor.cpp:
2757         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2758         * runtime/NativeErrorPrototype.cpp:
2759         (JSC::NativeErrorPrototype::NativeErrorPrototype):
2760         * runtime/NumberConstructor.cpp:
2761         (JSC::NumberConstructor::NumberConstructor):
2762         (JSC::constructWithNumberConstructor):
2763         * runtime/NumberObject.cpp:
2764         (JSC::constructNumber):
2765         * runtime/NumberPrototype.cpp:
2766         (JSC::NumberPrototype::NumberPrototype):
2767         * runtime/ObjectConstructor.cpp:
2768         (JSC::ObjectConstructor::ObjectConstructor):
2769         (JSC::objectConstructorGetOwnPropertyDescriptor):
2770         * runtime/Operations.h:
2771         (JSC::normalizePrototypeChain):
2772         (JSC::resolveBase):
2773         * runtime/PrototypeFunction.cpp:
2774         (JSC::PrototypeFunction::PrototypeFunction):
2775         * runtime/PutPropertySlot.h:
2776         (JSC::PutPropertySlot::setExistingProperty):
2777         (JSC::PutPropertySlot::setNewProperty):
2778         (JSC::PutPropertySlot::base):
2779         * runtime/RegExpConstructor.cpp:
2780         (JSC::RegExpConstructor::RegExpConstructor):
2781         * runtime/ScopeChain.cpp:
2782         (JSC::ScopeChainNode::print):
2783         * runtime/ScopeChain.h:
2784         (JSC::ScopeChainNode::~ScopeChainNode):
2785         (JSC::ScopeChainIterator::operator*):
2786         (JSC::ScopeChainIterator::operator->):
2787         (JSC::ScopeChain::top):
2788         * runtime/ScopeChainMark.h:
2789         (JSC::ScopeChain::markAggregate):
2790         * runtime/SmallStrings.cpp:
2791         (JSC::isMarked):
2792         (JSC::SmallStrings::markChildren):
2793         * runtime/SmallStrings.h:
2794         (JSC::SmallStrings::emptyString):
2795         (JSC::SmallStrings::singleCharacterString):
2796         (JSC::SmallStrings::singleCharacterStrings):
2797         * runtime/StringConstructor.cpp:
2798         (JSC::StringConstructor::StringConstructor):
2799         * runtime/StringObject.cpp:
2800         (JSC::StringObject::StringObject):
2801         * runtime/StringObject.h:
2802         * runtime/StringPrototype.cpp:
2803         (JSC::StringPrototype::StringPrototype):
2804         * runtime/Structure.cpp:
2805         (JSC::Structure::Structure):
2806         (JSC::Structure::addPropertyTransition):
2807         (JSC::Structure::toDictionaryTransition):
2808         (JSC::Structure::flattenDictionaryStructure):
2809         * runtime/Structure.h:
2810         (JSC::Structure::storedPrototype):
2811         * runtime/WeakGCMap.h:
2812         (JSC::WeakGCMap::uncheckedGet):
2813         (JSC::WeakGCMap::isValid):
2814         (JSC::::get):
2815         (JSC::::take):
2816         (JSC::::set):
2817         (JSC::::uncheckedRemove):
2818         * runtime/WriteBarrier.h: Removed.
2819
2820 2011-01-30  Simon Fraser  <simon.fraser@apple.com>
2821
2822         Build fix the build fix. I assume Oliver meant m_cell, not m_value.
2823
2824         * runtime/WriteBarrier.h:
2825         (JSC::WriteBarrierBase::clear):
2826
2827 2011-01-30  Oliver Hunt  <oliver@apple.com>
2828
2829         More Qt build fixes
2830
2831         * runtime/WriteBarrier.h:
2832         (JSC::WriteBarrierBase::clear):
2833
2834 2011-01-30  Oliver Hunt  <oliver@apple.com>
2835
2836         Convert markstack to a slot visitor API
2837         https://bugs.webkit.org/show_bug.cgi?id=53219
2838
2839         rolling r77006 and r77020 back in.
2840
2841         * API/JSCallbackObject.h:
2842         (JSC::JSCallbackObjectData::setPrivateProperty):
2843         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2844         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2845         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2846         (JSC::JSCallbackObject::setPrivateProperty):
2847         * API/JSCallbackObjectFunctions.h:
2848         (JSC::::put):
2849         (JSC::::staticFunctionGetter):
2850         * API/JSObjectRef.cpp:
2851         (JSObjectMakeConstructor):
2852         (JSObjectSetPrivateProperty):
2853         * API/JSWeakObjectMapRefInternal.h:
2854         * JavaScriptCore.exp:
2855         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2856         * JavaScriptCore.xcodeproj/project.pbxproj:
2857         * bytecode/CodeBlock.cpp:
2858         (JSC::CodeBlock::markAggregate):
2859         * bytecode/CodeBlock.h:
2860         (JSC::CodeBlock::globalObject):
2861         * bytecompiler/BytecodeGenerator.cpp:
2862         (JSC::BytecodeGenerator::BytecodeGenerator):
2863         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2864         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2865         (JSC::BytecodeGenerator::findScopedProperty):
2866         * debugger/Debugger.cpp:
2867         (JSC::evaluateInGlobalCallFrame):
2868         * debugger/DebuggerActivation.cpp:
2869         (JSC::DebuggerActivation::DebuggerActivation):
2870         (JSC::DebuggerActivation::markChildren):
2871         * debugger/DebuggerActivation.h:
2872         * debugger/DebuggerCallFrame.cpp:
2873         (JSC::DebuggerCallFrame::evaluate):
2874         * interpreter/CallFrame.h:
2875         (JSC::ExecState::exception):
2876         * interpreter/Interpreter.cpp:
2877         (JSC::Interpreter::resolve):
2878         (JSC::Interpreter::resolveSkip):
2879         (JSC::Interpreter::resolveGlobal):
2880         (JSC::Interpreter::resolveGlobalDynamic):
2881         (JSC::Interpreter::resolveBaseAndProperty):
2882         (JSC::Interpreter::unwindCallFrame):
2883         (JSC::appendSourceToError):
2884         (JSC::Interpreter::execute):
2885         (JSC::Interpreter::tryCacheGetByID):
2886         (JSC::Interpreter::privateExecute):
2887         * jit/JITStubs.cpp:
2888         (JSC::JITThunks::tryCacheGetByID):
2889         (JSC::DEFINE_STUB_FUNCTION):
2890         * jsc.cpp:
2891         (GlobalObject::GlobalObject):
2892         * runtime/ArgList.cpp:
2893         (JSC::MarkedArgumentBuffer::markLists):
2894         * runtime/Arguments.cpp:
2895         (JSC::Arguments::markChildren):
2896         (JSC::Arguments::getOwnPropertySlot):
2897         (JSC::Arguments::getOwnPropertyDescriptor):
2898         (JSC::Arguments::put):
2899         * runtime/Arguments.h:
2900         (JSC::Arguments::setActivation):
2901         (JSC::Arguments::Arguments):
2902         * runtime/ArrayConstructor.cpp:
2903         (JSC::ArrayConstructor::ArrayConstructor):
2904         (JSC::constructArrayWithSizeQuirk):
2905         * runtime/ArrayPrototype.cpp:
2906         (JSC::arrayProtoFuncSplice):
2907         * runtime/BatchedTransitionOptimizer.h:
2908         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2909         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2910         * runtime/BooleanConstructor.cpp:
2911         (JSC::BooleanConstructor::BooleanConstructor):
2912         (JSC::constructBoolean):
2913         (JSC::constructBooleanFromImmediateBoolean):
2914         * runtime/BooleanPrototype.cpp:
2915         (JSC::BooleanPrototype::BooleanPrototype):
2916         * runtime/ConservativeSet.cpp:
2917         (JSC::ConservativeSet::grow):
2918         * runtime/ConservativeSet.h:
2919         (JSC::ConservativeSet::~ConservativeSet):
2920         (JSC::ConservativeSet::mark):
2921         * runtime/DateConstructor.cpp:
2922         (JSC::DateConstructor::DateConstructor):
2923         * runtime/DateInstance.cpp:
2924         (JSC::DateInstance::DateInstance):
2925         * runtime/DatePrototype.cpp:
2926         (JSC::dateProtoFuncSetTime):
2927         (JSC::setNewValueFromTimeArgs):
2928         (JSC::setNewValueFromDateArgs):
2929         (JSC::dateProtoFuncSetYear):
2930         * runtime/ErrorConstructor.cpp:
2931         (JSC::ErrorConstructor::ErrorConstructor):
2932         * runtime/ErrorInstance.cpp:
2933         (JSC::ErrorInstance::ErrorInstance):
2934         * runtime/ErrorPrototype.cpp:
2935         (JSC::ErrorPrototype::ErrorPrototype):
2936         * runtime/FunctionConstructor.cpp:
2937         (JSC::FunctionConstructor::FunctionConstructor):
2938         * runtime/FunctionPrototype.cpp:
2939         (JSC::FunctionPrototype::FunctionPrototype):
2940         * runtime/GetterSetter.cpp:
2941         (JSC::GetterSetter::markChildren):
2942         * runtime/GetterSetter.h:
2943         (JSC::GetterSetter::GetterSetter):
2944         (JSC::GetterSetter::getter):
2945         (JSC::GetterSetter::setGetter):
2946         (JSC::GetterSetter::setter):
2947         (JSC::GetterSetter::setSetter):
2948         * runtime/GlobalEvalFunction.cpp:
2949         (JSC::GlobalEvalFunction::GlobalEvalFunction):
2950         (JSC::GlobalEvalFunction::markChildren):
2951         * runtime/GlobalEvalFunction.h:
2952         (JSC::GlobalEvalFunction::cachedGlobalObject):
2953         * runtime/Heap.cpp:
2954         (JSC::Heap::markProtectedObjects):
2955         (JSC::Heap::markTempSortVectors):
2956         (JSC::Heap::markRoots):
2957         * runtime/InternalFunction.cpp:
2958         (JSC::InternalFunction::InternalFunction):
2959         * runtime/JSAPIValueWrapper.h:
2960         (JSC::JSAPIValueWrapper::value):
2961         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2962         * runtime/JSActivation.cpp:
2963         (JSC::JSActivation::markChildren):
2964         (JSC::JSActivation::put):
2965         * runtime/JSArray.cpp:
2966         (JSC::JSArray::JSArray):
2967         (JSC::JSArray::getOwnPropertySlot):
2968         (JSC::JSArray::getOwnPropertyDescriptor):
2969         (JSC::JSArray::put):
2970         (JSC::JSArray::putSlowCase):
2971         (JSC::JSArray::deleteProperty):
2972         (JSC::JSArray::increaseVectorLength):
2973         (JSC::JSArray::setLength):
2974         (JSC::JSArray::pop):
2975         (JSC::JSArray::push):
2976         (JSC::JSArray::unshiftCount):
2977         (JSC::JSArray::sort):
2978         (JSC::JSArray::fillArgList):
2979         (JSC::JSArray::copyToRegisters):
2980         (JSC::JSArray::compactForSorting):
2981         * runtime/JSArray.h:
2982         (JSC::JSArray::getIndex):
2983         (JSC::JSArray::setIndex):
2984         (JSC::JSArray::uncheckedSetIndex):
2985         (JSC::JSArray::markChildrenDirect):
2986         * runtime/JSByteArray.cpp:
2987         (JSC::JSByteArray::JSByteArray):
2988         * runtime/JSCell.h:
2989         (JSC::JSCell::MarkStack::append):
2990         (JSC::JSCell::MarkStack::internalAppend):
2991         (JSC::JSCell::MarkStack::deprecatedAppend):
2992         * runtime/JSFunction.cpp:
2993         (JSC::JSFunction::JSFunction):
2994         (JSC::JSFunction::getOwnPropertySlot):
2995         * runtime/JSGlobalData.h:
2996         * runtime/JSGlobalObject.cpp:
2997         (JSC::markIfNeeded):
2998         (JSC::JSGlobalObject::reset):
2999         (JSC::JSGlobalObject::resetPrototype):
3000         (JSC::JSGlobalObject::markChildren):
3001         * runtime/JSGlobalObject.h:
3002         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3003         (JSC::JSGlobalObject::regExpConstructor):
3004         (JSC::JSGlobalObject::errorConstructor):
3005         (JSC::JSGlobalObject::evalErrorConstructor):
3006         (JSC::JSGlobalObject::rangeErrorConstructor):
3007         (JSC::JSGlobalObject::referenceErrorConstructor):
3008         (JSC::JSGlobalObject::syntaxErrorConstructor):
3009         (JSC::JSGlobalObject::typeErrorConstructor):
3010         (JSC::JSGlobalObject::URIErrorConstructor):
3011         (JSC::JSGlobalObject::evalFunction):
3012         (JSC::JSGlobalObject::objectPrototype):
3013         (JSC::JSGlobalObject::functionPrototype):
3014         (JSC::JSGlobalObject::arrayPrototype):
3015         (JSC::JSGlobalObject::booleanPrototype):
3016         (JSC::JSGlobalObject::stringPrototype):
3017         (JSC::JSGlobalObject::numberPrototype):
3018         (JSC::JSGlobalObject::datePrototype):
3019         (JSC::JSGlobalObject::regExpPrototype):
3020         (JSC::JSGlobalObject::methodCallDummy):
3021         (JSC::Structure::prototypeForLookup):
3022         (JSC::constructArray):
3023         * runtime/JSONObject.cpp:
3024         (JSC::Stringifier::Holder::object):
3025         (JSC::Stringifier::Holder::objectSlot):
3026         (JSC::Stringifier::markAggregate):
3027         (JSC::Stringifier::stringify):
3028         (JSC::Stringifier::Holder::appendNextProperty):
3029         (JSC::Walker::callReviver):
3030         (JSC::Walker::walk):
3031         * runtime/JSObject.cpp:
3032         (JSC::JSObject::defineGetter):
3033         (JSC::JSObject::defineSetter):
3034         (JSC::JSObject::removeDirect):
3035         (JSC::JSObject::putDirectFunction):
3036         (JSC::JSObject::putDirectFunctionWithoutTransition):
3037         (JSC::putDescriptor):
3038         (JSC::JSObject::defineOwnProperty):
3039         * runtime/JSObject.h:
3040         (JSC::JSObject::getDirectOffset):
3041         (JSC::JSObject::putDirectOffset):
3042         (JSC::JSObject::putUndefinedAtDirectOffset):
3043         (JSC::JSObject::flattenDictionaryObject):
3044         (JSC::JSObject::putDirectInternal):
3045         (JSC::JSObject::putDirect):
3046         (JSC::JSObject::putDirectFunction):
3047         (JSC::JSObject::putDirectWithoutTransition):
3048         (JSC::JSObject::putDirectFunctionWithoutTransition):
3049         (JSC::JSValue::putDirect):
3050         (JSC::JSObject::allocatePropertyStorageInline):
3051         (JSC::JSObject::markChildrenDirect):
3052         * runtime/JSPropertyNameIterator.cpp:
3053         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3054         (JSC::JSPropertyNameIterator::get):
3055         * runtime/JSPropertyNameIterator.h:
3056         * runtime/JSStaticScopeObject.cpp:
3057         (JSC::JSStaticScopeObject::markChildren):
3058         * runtime/JSString.cpp:
3059         (JSC::StringObject::create):
3060         * runtime/JSValue.h:
3061         * runtime/JSWrapperObject.cpp:
3062         (JSC::JSWrapperObject::markChildren):
3063         * runtime/JSWrapperObject.h:
3064         (JSC::JSWrapperObject::internalValue):
3065         (JSC::JSWrapperObject::setInternalValue):
3066         * runtime/LiteralParser.cpp:
3067         (JSC::LiteralParser::parse):
3068         * runtime/Lookup.cpp:
3069         (JSC::setUpStaticFunctionSlot):
3070         * runtime/Lookup.h:
3071         (JSC::lookupPut):
3072         * runtime/MarkStack.h:
3073         (JSC::MarkStack::MarkStack):
3074         (JSC::MarkStack::deprecatedAppendValues):
3075         (JSC::MarkStack::appendValues):
3076         * runtime/MathObject.cpp:
3077         (JSC::MathObject::MathObject):
3078         * runtime/NativeErrorConstructor.cpp:
3079         (JSC::NativeErrorConstructor::NativeErrorConstructor):
3080         * runtime/NativeErrorPrototype.cpp:
3081         (JSC::NativeErrorPrototype::NativeErrorPrototype):
3082         * runtime/NumberConstructor.cpp:
3083         (JSC::NumberConstructor::NumberConstructor):
3084         (JSC::constructWithNumberConstructor):
3085         * runtime/NumberObject.cpp:
3086         (JSC::constructNumber):
3087         * runtime/NumberPrototype.cpp:
3088         (JSC::NumberPrototype::NumberPrototype):
3089         * runtime/ObjectConstructor.cpp:
3090         (JSC::ObjectConstructor::ObjectConstructor):
3091         (JSC::objectConstructorGetOwnPropertyDescriptor):
3092         * runtime/Operations.h:
3093         (JSC::normalizePrototypeChain):
3094         (JSC::resolveBase):
3095         * runtime/PrototypeFunction.cpp:
3096         (JSC::PrototypeFunction::PrototypeFunction):
3097         * runtime/PutPropertySlot.h:
3098         (JSC::PutPropertySlot::setExistingProperty):
3099         (JSC::PutPropertySlot::setNewProperty):
3100         (JSC::PutPropertySlot::base):
3101         * runtime/RegExpConstructor.cpp:
3102         (JSC::RegExpConstructor::RegExpConstructor):
3103         * runtime/ScopeChain.cpp:
3104         (JSC::ScopeChainNode::print):
3105         * runtime/ScopeChain.h:
3106         (JSC::ScopeChainNode::~ScopeChainNode):
3107         (JSC::ScopeChainIterator::operator*):
3108         (JSC::ScopeChainIterator::operator->):
3109         (JSC::ScopeChain::top):
3110         * runtime/ScopeChainMark.h:
3111         (JSC::ScopeChain::markAggregate):
3112         * runtime/SmallStrings.cpp:
3113         (JSC::isMarked):
3114         (JSC::SmallStrings::markChildren):
3115         * runtime/SmallStrings.h:
3116         (JSC::SmallStrings::emptyString):
3117         (JSC::SmallStrings::singleCharacterString):
3118         (JSC::SmallStrings::singleCharacterStrings):
3119         * runtime/StringConstructor.cpp:
3120         (JSC::StringConstructor::StringConstructor):
3121         * runtime/StringObject.cpp:
3122         (JSC::StringObject::StringObject):
3123         * runtime/StringObject.h:
3124         * runtime/StringPrototype.cpp:
3125         (JSC::StringPrototype::StringPrototype):
3126         * runtime/Structure.cpp:
3127         (JSC::Structure::Structure):
3128         (JSC::Structure::addPropertyTransition):
3129         (JSC::Structure::toDictionaryTransition):
3130         (JSC::Structure::flattenDictionaryStructure):
3131         * runtime/Structure.h:
3132         (JSC::Structure::storedPrototype):
3133         (JSC::Structure::storedPrototypeSlot):
3134         * runtime/WeakGCMap.h:
3135         (JSC::WeakGCMap::uncheckedGet):
3136         (JSC::WeakGCMap::uncheckedGetSlot):
3137         (JSC::WeakGCMap::isValid):
3138         (JSC::::get):
3139         (JSC::::take):
3140         (JSC::::set):
3141         (JSC::::uncheckedRemove):
3142         * runtime/WriteBarrier.h: Added.
3143         (JSC::DeprecatedPtr::DeprecatedPtr):
3144         (JSC::DeprecatedPtr::get):
3145         (JSC::DeprecatedPtr::operator*):
3146         (JSC::DeprecatedPtr::operator->):
3147         (JSC::DeprecatedPtr::slot):
3148         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
3149         (JSC::DeprecatedPtr::operator!):
3150         (JSC::WriteBarrierBase::set):
3151         (JSC::WriteBarrierBase::get):
3152         (JSC::WriteBarrierBase::operator*):
3153         (JSC::WriteBarrierBase::operator->):
3154         (JSC::WriteBarrierBase::slot):
3155         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
3156         (JSC::WriteBarrierBase::operator!):
3157         (JSC::WriteBarrier::WriteBarrier):
3158         (JSC::operator==):
3159
3160 2011-01-30  Geoffrey Garen  <ggaren@apple.com>
3161
3162         Reviewed by Oliver Hunt.
3163
3164         Filter all Heap collection through a common reset function, in
3165         preparation for adding features triggered by collection.
3166         https://bugs.webkit.org/show_bug.cgi?id=53396
3167         
3168         SunSpider reports no change.
3169
3170         * runtime/Heap.cpp:
3171         (JSC::Heap::reportExtraMemoryCostSlowCase): When we're over the extraCost
3172         limit, just call collectAllGarbage() instead of rolling our own special
3173         way of resetting the heap. In theory, this may be slower in some cases,
3174         but it also fixes cases of pathological heap growth that we've seen,
3175         where the only objects being allocated are temporary and huge
3176         (<rdar://problem/8885843>).
3177
3178         (JSC::Heap::allocate):
3179         (JSC::Heap::collectAllGarbage): Use the shared reset function.
3180
3181         (JSC::Heap::reset):
3182         * runtime/Heap.h: Carved a new shared reset function out of the old
3183         collectAllGarbage.
3184
3185 2011-01-30  Sheriff Bot  <webkit.review.bot@gmail.com>
3186
3187         Unreviewed, rolling out r77025.
3188         http://trac.webkit.org/changeset/77025
3189         https://bugs.webkit.org/show_bug.cgi?id=53401
3190
3191         It made js1_5/Regress/regress-159334.js fail on 64 bit Linux
3192         (Requested by Ossy on #webkit).
3193
3194         * jit/ExecutableAllocatorFixedVMPool.cpp:
3195         (JSC::FreeListEntry::FreeListEntry):
3196         (JSC::AVLTreeAbstractorForFreeList::get_less):
3197         (JSC::AVLTreeAbstractorForFreeList::set_less):
3198         (JSC::AVLTreeAbstractorForFreeList::get_greater):
3199         (JSC::AVLTreeAbstractorForFreeList::set_greater):
3200         (JSC::AVLTreeAbstractorForFreeList::get_balance_factor):
3201         (JSC::AVLTreeAbstractorForFreeList::set_balance_factor):
3202         (JSC::AVLTreeAbstractorForFreeList::null):
3203         (JSC::AVLTreeAbstractorForFreeList::compare_key_key):
3204         (JSC::AVLTreeAbstractorForFreeList::compare_key_node):
3205         (JSC::AVLTreeAbstractorForFreeList::compare_node_node):
3206         (JSC::reverseSortFreeListEntriesByPointer):
3207         (JSC::reverseSortCommonSizedAllocations):
3208         (JSC::FixedVMPoolAllocator::release):
3209         (JSC::FixedVMPoolAllocator::reuse):
3210         (JSC::FixedVMPoolAllocator::addToFreeList):
3211         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
3212         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
3213         (JSC::FixedVMPoolAllocator::alloc):
3214         (JSC::FixedVMPoolAllocator::free):
3215         (JSC::FixedVMPoolAllocator::isValid):
3216         (JSC::FixedVMPoolAllocator::allocInternal):
3217         (JSC::FixedVMPoolAllocator::isWithinVMPool):
3218         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
3219         (JSC::ExecutableAllocator::committedByteCount):
3220         (JSC::maybeModifyVMPoolSize):
3221         (JSC::ExecutableAllocator::isValid):
3222         (JSC::ExecutableAllocator::underMemoryPressure):
3223         (JSC::ExecutablePool::systemAlloc):
3224         (JSC::ExecutablePool::systemRelease):
3225         * wtf/PageReservation.h:
3226         (WTF::PageReservation::PageReservation):
3227         (WTF::PageReservation::commit):
3228         (WTF::PageReservation::decommit):
3229
3230 2011-01-30  Leo Yang  <leo.yang@torchmobile.com.cn>
3231
3232         Reviewed by Daniel Bates.
3233
3234         Code style issue in JavaScriptCore/wtf/CurrentTime.h
3235         https://bugs.webkit.org/show_bug.cgi?id=53394
3236
3237         According to rule #3 at http://webkit.org/coding/coding-style.html,
3238         This patch fix style issue in CurrentTime.h.
3239
3240         No functionality change, no new tests.
3241
3242         * wtf/CurrentTime.h:
3243         (WTF::currentTimeMS):
3244         (WTF::getLocalTime):
3245
3246 2011-01-30  Benjamin Poulain  <ikipou@gmail.com>
3247
3248         Reviewed by Kenneth Rohde Christiansen.
3249
3250         [Qt] JavaScriptCore does not link on Mac if building WebKit 2
3251         https://bugs.webkit.org/show_bug.cgi?id=53377
3252
3253         The option "-whole-archive" is not availabe with the libtool of Mac OS X,
3254         instead, we can use "-all_load" on Mac.
3255
3256         * JavaScriptCore.pri:
3257
3258 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
3259
3260         Sorry Leopard bot -- I committed a change by accident.
3261
3262         * JavaScriptCore.exp: You may have your symbols back now.
3263
3264 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
3265
3266         Reviewed by Cameron Zwarich.
3267
3268         Simplified Heap iteration
3269         https://bugs.webkit.org/show_bug.cgi?id=53393
3270
3271         * runtime/CollectorHeapIterator.h:
3272         (JSC::CollectorHeapIterator::isValid):
3273         (JSC::CollectorHeapIterator::isLive):
3274         (JSC::CollectorHeapIterator::advance): Removed "max" argument to
3275         advance because it's a constant.
3276         (JSC::LiveObjectIterator::LiveObjectIterator):
3277         (JSC::LiveObjectIterator::operator++):
3278         (JSC::DeadObjectIterator::DeadObjectIterator):
3279         (JSC::DeadObjectIterator::operator++):
3280         (JSC::ObjectIterator::ObjectIterator):
3281         (JSC::ObjectIterator::operator++): Factored out common checks into
3282         two helper functions -- isValid() for "Am I past the end?" and isLive()
3283         for "Is the cell I'm pointing to live?".
3284
3285         * runtime/MarkedSpace.cpp:
3286         (JSC::MarkedSpace::freeBlock):
3287         (JSC::MarkedSpace::sweep): Always sweep from the beginning of the heap
3288         to the end, to avoid making sweep subtly reliant on internal Heap state.
3289         (JSC::MarkedSpace::primaryHeapBegin):
3290         (JSC::MarkedSpace::primaryHeapEnd): Always be explicit about where
3291         iteration begins.
3292
3293 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
3294
3295         Reviewed by Cameron Zwarich.
3296
3297         Simplified heap destruction
3298         https://bugs.webkit.org/show_bug.cgi?id=53392
3299
3300         * JavaScriptCore.exp:
3301         * runtime/Heap.cpp:
3302         (JSC::Heap::destroy):
3303         * runtime/Heap.h:
3304         * runtime/MarkedSpace.cpp:
3305         (JSC::MarkedSpace::destroy):
3306         * runtime/MarkedSpace.h: Don't go out of our way to destroy GC-protected
3307         cells last -- the difficult contortions required to do so just don't seem
3308         justified. We make no guarantees about GC protection after the client
3309         throws away JSGlobalData, and it doesn't seem like any meaningful
3310         guarantee is even possible.
3311
3312 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
3313
3314         Reviewed by Maciej Stachowiak.
3315
3316         Switched heap to use the Bitmap class and removed CollectorBitmap
3317         https://bugs.webkit.org/show_bug.cgi?id=53391
3318         
3319         SunSpider says 1.005x as fast. Seems like a fluke.
3320
3321         * runtime/MarkedSpace.cpp:
3322         (JSC::MarkedSpace::allocate): Updated for rename and returning a value
3323         rather than taking a value by reference.
3324
3325         * runtime/MarkedSpace.h: Code reuse is good.
3326
3327         * wtf/Bitmap.h:
3328         (WTF::::testAndSet): Added, since this is the one thing Bitmap was missing
3329         which CollectorBitmap had. (Renamed from the less conventional "getset".)
3330
3331         (WTF::::nextPossiblyUnset): Renamed and changed to return a value for
3332         clarity. It's all the same with inlining.
3333
3334 2011-01-28  Geoffrey Garen  <ggaren@apple.com>
3335
3336         Reviewed by Maciej Stachowiak.
3337
3338         Some more Heap cleanup.
3339         https://bugs.webkit.org/show_bug.cgi?id=53357
3340         
3341         * JavaScriptCore.exp:
3342         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols.
3343
3344         * runtime/Heap.cpp:
3345         (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to 
3346         reportExtraMemoryCostSlowCase to match our naming conventions.
3347
3348         (JSC::Heap::capacity): Renamed size to capacity because this function
3349         returns the capacity of the heap, including unused portions.
3350
3351         * runtime/Heap.h:
3352         (JSC::Heap::globalData):
3353         (JSC::Heap::markedSpace):
3354         (JSC::Heap::machineStackMarker):
3355         (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file.
3356         Moved ctor and dtor to the beginning of the class definition. Grouped
3357         functions by purpose.
3358
3359         * runtime/MarkedSpace.cpp:
3360         (JSC::MarkedSpace::capacity): Renamed size to capacity because this
3361         function returns the capacity of the heap, including unused portions.
3362
3363         * runtime/MarkedSpace.h: Removed statistics and the Statistics class because
3364         the same information can be gotten just by calling size() and capacity().
3365
3366         * runtime/MemoryStatistics.cpp:
3367         * runtime/MemoryStatistics.h: Ditto.
3368
3369 2011-01-29  Daniel Bates  <dbates@rim.com>
3370
3371         Reviewed by Eric Seidel.
3372
3373         Move wince/mt19937ar.c to ThirdParty and make it a policy choice
3374         https://bugs.webkit.org/show_bug.cgi?id=53253
3375
3376         Make inclusion of MT19937 a policy decision.
3377
3378         Currently, we hardcoded to  use MT19937 when building for
3379         Windows CE. Instead, we should make this a policy decision
3380         with the Windows CE port using this by default.
3381
3382         * JavaScriptCore.pri: Append Source/ThirdParty to the end
3383         of the list include directories.
3384         * wtf/CMakeLists.txt: Ditto.
3385         * wtf/Platform.h: Defined WTF_USE_MERSENNE_TWISTER_19937 when
3386         building for Windows CE.
3387         * wtf/RandomNumber.cpp:
3388         (WTF::randomNumber): Substituted USE(MERSENNE_TWISTER_19937) for OS(WINCE).
3389
3390 2011-01-29  Cameron Zwarich  <zwarich@apple.com>
3391
3392         Reviewed by David Kilzer.
3393
3394         Bug 53374 - Remove uses of unsafe string functions in debugging code
3395         https://bugs.webkit.org/show_bug.cgi?id=53374
3396
3397         * runtime/RegExp.cpp:
3398         (JSC::RegExp::printTraceData):
3399
3400 2011-01-29  Cameron Zwarich  <zwarich@apple.com>
3401
3402         Reviewed by Oliver Hunt.
3403
3404         JavaScriptCoreUseJIT environment variable broken
3405         https://bugs.webkit.org/show_bug.cgi?id=53372
3406
3407         * runtime/JSGlobalData.cpp:
3408         (JSC::JSGlobalData::JSGlobalData): Check the actual value in the string returned
3409         by getenv() rather than just doing a NULL check on the return value.
3410
3411 2011-01-29  Patrick Gansterer  <paroga@webkit.org>
3412
3413         Reviewed by David Kilzer.
3414
3415         Move CharacterNames.h into WTF directory
3416         https://bugs.webkit.org/show_bug.cgi?id=49618
3417
3418         * GNUmakefile.am:
3419         * JavaScriptCore.gypi:
3420         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3421         * JavaScriptCore.xcodeproj/project.pbxproj:
3422         * wtf/CMakeLists.txt:
3423         * wtf/unicode/CharacterNames.h: Renamed from WebCore/platform/text/CharacterNames.h.
3424         * wtf/unicode/UTF8.cpp:
3425
3426 2011-01-28  Simon Fraser  <simon.fraser@apple.com>
3427
3428         Reviewed by Gavin Barraclough.
3429
3430         Add various clampToInt() methods to MathExtras.h
3431         https://bugs.webkit.org/show_bug.cgi?id=52910
3432         
3433         Add functions for clamping doubles and floats to valid int
3434         ranges, for signed and positive integers.
3435
3436         * wtf/MathExtras.h:
3437         (clampToInteger):
3438         (clampToPositiveInteger):
3439
3440 2011-01-28  Sheriff Bot  <webkit.review.bot@gmail.com>
3441
3442         Unreviewed, rolling out r77006 and r77020.
3443         http://trac.webkit.org/changeset/77006
3444         http://trac.webkit.org/changeset/77020
3445         https://bugs.webkit.org/show_bug.cgi?id=53360
3446
3447         "Broke Windows tests" (Requested by rniwa on #webkit).
3448
3449         * API/JSCallbackObject.h:
3450         (JSC::JSCallbackObjectData::setPrivateProperty):
3451         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
3452         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
3453         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
3454         (JSC::JSCallbackObject::setPrivateProperty):
3455         * API/JSCallbackObjectFunctions.h:
3456         (JSC::::put):
3457         (JSC::::staticFunctionGetter):
3458         * API/JSObjectRef.cpp:
3459         (JSObjectMakeConstructor):
3460         (JSObjectSetPrivateProperty):
3461         * API/JSWeakObjectMapRefInternal.h:
3462         * JavaScriptCore.exp:
3463         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3464         * JavaScriptCore.xcodeproj/project.pbxproj:
3465         * bytecode/CodeBlock.cpp:
3466         (JSC::CodeBlock::markAggregate):
3467         * bytecode/CodeBlock.h:
3468         (JSC::CodeBlock::globalObject):
3469         * bytecompiler/BytecodeGenerator.cpp:
3470         (JSC::BytecodeGenerator::BytecodeGenerator):
3471         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
3472         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
3473         (JSC::BytecodeGenerator::findScopedProperty):
3474         * debugger/Debugger.cpp:
3475         (JSC::evaluateInGlobalCallFrame):
3476         * debugger/DebuggerActivation.cpp:
3477         (JSC::DebuggerActivation::DebuggerActivation):
3478         (JSC::DebuggerActivation::markChildren):
3479         * debugger/DebuggerActivation.h:
3480         * debugger/DebuggerCallFrame.cpp:
3481         (JSC::DebuggerCallFrame::evaluate):
3482         * interpreter/CallFrame.h:
3483         (JSC::ExecState::exception):
3484         * interpreter/Interpreter.cpp:
3485         (JSC::Interpreter::resolve):
3486         (JSC::Interpreter::resolveSkip):
3487         (JSC::Interpreter::resolveGlobal):
3488         (JSC::Interpreter::resolveGlobalDynamic):
3489         (JSC::Interpreter::resolveBaseAndProperty):
3490         (JSC::Interpreter::unwindCallFrame):
3491         (JSC::appendSourceToError):
3492         (JSC::Interpreter::execute):
3493         (JSC::Interpreter::tryCacheGetByID):
3494         (JSC::Interpreter::privateExecute):
3495         * jit/JITStubs.cpp:
3496         (JSC::JITThunks::tryCacheGetByID):
3497         (JSC::DEFINE_STUB_FUNCTION):
3498         * jsc.cpp:
3499         (GlobalObject::GlobalObject):
3500         * runtime/ArgList.cpp:
3501         (JSC::MarkedArgumentBuffer::markLists):
3502         * runtime/Arguments.cpp:
3503         (JSC::Arguments::markChildren):
3504         (JSC::Arguments::getOwnPropertySlot):
3505         (JSC::Arguments::getOwnPropertyDescriptor):
3506         (JSC::Arguments::put):
3507         * runtime/Arguments.h:
3508         (JSC::Arguments::setActivation):
3509         (JSC::Arguments::Arguments):
3510         * runtime/ArrayConstructor.cpp:
3511         (JSC::ArrayConstructor::ArrayConstructor):
3512         (JSC::constructArrayWithSizeQuirk):
3513         * runtime/ArrayPrototype.cpp:
3514         (JSC::arrayProtoFuncSplice):
3515         * runtime/BatchedTransitionOptimizer.h:
3516         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3517         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3518         * runtime/BooleanConstructor.cpp:
3519         (JSC::BooleanConstructor::BooleanConstructor):
3520         (JSC::constructBoolean):
3521         (JSC::constructBooleanFromImmediateBoolean):
3522         * runtime/BooleanPrototype.cpp:
3523         (JSC::BooleanPrototype::BooleanPrototype):
3524         * runtime/ConservativeSet.cpp:
3525         (JSC::ConservativeSet::grow):
3526         * runtime/ConservativeSet.h:
3527         (JSC::ConservativeSet::~ConservativeSet):
3528         (JSC::ConservativeSet::mark):
3529         * runtime/DateConstructor.cpp:
3530         (JSC::DateConstructor::DateConstructor):
3531         * runtime/DateInstance.cpp:
3532         (JSC::DateInstance::DateInstance):
3533         * runtime/DatePrototype.cpp:
3534         (JSC::dateProtoFuncSetTime):
3535         (JSC::setNewValueFromTimeArgs):
3536         (JSC::setNewValueFromDateArgs):
3537         (JSC::dateProtoFuncSetYear):
3538         * runtime/ErrorConstructor.cpp:
3539         (JSC::ErrorConstructor::ErrorConstructor):
3540         * runtime/ErrorInstance.cpp:
3541         (JSC::ErrorInstance::ErrorInstance):
3542         * runtime/ErrorPrototype.cpp:
3543         (JSC::ErrorPrototype::ErrorPrototype):
3544         * runtime/FunctionConstructor.cpp:
3545         (JSC::FunctionConstructor::FunctionConstructor):
3546         * runtime/FunctionPrototype.cpp:
3547         (JSC::FunctionPrototype::FunctionPrototype):
3548         * runtime/GetterSetter.cpp:
3549         (JSC::GetterSetter::markChildren):
3550         * runtime/GetterSetter.h:
3551         (JSC::GetterSetter::GetterSetter):
3552         (JSC::GetterSetter::getter):
3553         (JSC::GetterSetter::setGetter):
3554         (JSC::GetterSetter::setter):
3555         (JSC::GetterSetter::setSetter):
3556         * runtime/GlobalEvalFunction.cpp:
3557         (JSC::GlobalEvalFunction::GlobalEvalFunction):
3558         (JSC::GlobalEvalFunction::markChildren):
3559         * runtime/GlobalEvalFunction.h:
3560         (JSC::GlobalEvalFunction::cachedGlobalObject):
3561         * runtime/Heap.cpp:
3562         (JSC::Heap::markProtectedObjects):
3563         (JSC::Heap::markTempSortVectors):
3564         (JSC::Heap::markRoots):
3565         * runtime/InternalFunction.cpp:
3566         (JSC::InternalFunction::InternalFunction):
3567         * runtime/JSAPIValueWrapper.h:
3568         (JSC::JSAPIValueWrapper::value):
3569         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
3570         * runtime/JSActivation.cpp:
3571         (JSC::JSActivation::markChildren):
3572         (JSC::JSActivation::put):
3573         * runtime/JSArray.cpp:
3574         (JSC::JSArray::JSArray):
3575         (JSC::JSArray::getOwnPropertySlot):
3576         (JSC::JSArray::getOwnPropertyDescriptor):
3577         (JSC::JSArray::put):
3578         (JSC::JSArray::putSlowCase):
3579         (JSC::JSArray::deleteProperty):
3580         (JSC::JSArray::increaseVectorLength):
3581         (JSC::JSArray::setLength):
3582         (JSC::JSArray::pop):
3583         (JSC::JSArray::push):
3584         (JSC::JSArray::unshiftCount):
3585         (JSC::JSArray::sort):
3586         (JSC::JSArray::fillArgList):
3587         (JSC::JSArray::copyToRegisters):
3588         (JSC::JSArray::compactForSorting):
3589         * runtime/JSArray.h:
3590         (JSC::JSArray::getIndex):
3591         (JSC::JSArray::setIndex):
3592         (JSC::JSArray::uncheckedSetIndex):
3593         (JSC::JSArray::markChildrenDirect):
3594         * runtime/JSByteArray.cpp:
3595         (JSC::JSByteArray::JSByteArray):
3596         * runtime/JSCell.h:
3597         (JSC::JSCell::JSValue::toThisObject):
3598         (JSC::JSCell::MarkStack::append):
3599         * runtime/JSFunction.cpp:
3600         (JSC::JSFunction::JSFunction):
3601         (JSC::JSFunction::getOwnPropertySlot):
3602         * runtime/JSGlobalData.h:
3603         * runtime/JSGlobalObject.cpp:
3604         (JSC::markIfNeeded):
3605         (JSC::JSGlobalObject::reset):
3606         (JSC::JSGlobalObject::resetPrototype):
3607         (JSC::JSGlobalObject::markChildren):
3608         * runtime/JSGlobalObject.h:
3609         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3610         (JSC::JSGlobalObject::regExpConstructor):
3611         (JSC::JSGlobalObject::errorConstructor):
3612         (JSC::JSGlobalObject::evalErrorConstructor):
3613         (JSC::JSGlobalObject::rangeErrorConstructor):
3614         (JSC::JSGlobalObject::referenceErrorConstructor):
3615         (JSC::JSGlobalObject::syntaxErrorConstructor):
3616         (JSC::JSGlobalObject::typeErrorConstructor):
3617         (JSC::JSGlobalObject::URIErrorConstructor):
3618         (JSC::JSGlobalObject::evalFunction):
3619         (JSC::JSGlobalObject::objectPrototype):
3620         (JSC::JSGlobalObject::functionPrototype):
3621         (JSC::JSGlobalObject::arrayPrototype):
3622         (JSC::JSGlobalObject::booleanPrototype):
3623         (JSC::JSGlobalObject::stringPrototype):
3624         (JSC::JSGlobalObject::numberPrototype):
3625         (JSC::JSGlobalObject::datePrototype):
3626         (JSC::JSGlobalObject::regExpPrototype):
3627         (JSC::JSGlobalObject::methodCallDummy):
3628         (JSC::Structure::prototypeForLookup):
3629         (JSC::constructArray):
3630         * runtime/JSONObject.cpp:
3631         (JSC::Stringifier::Holder::object):
3632         (JSC::Stringifier::markAggregate):
3633         (JSC::Stringifier::stringify):
3634         (JSC::Stringifier::Holder::appendNextProperty):
3635         (JSC::Walker::callReviver):
3636         (JSC::Walker::walk):
3637         * runtime/JSObject.cpp:
3638         (JSC::JSObject::defineGetter):
3639         (JSC::JSObject::defineSetter):
3640         (JSC::JSObject::removeDirect):
3641         (JSC::JSObject::putDirectFunction):
3642         (JSC::JSObject::putDirectFunctionWithoutTransition):
3643         (JSC::putDescriptor):
3644         (JSC::JSObject::defineOwnProperty):
3645         * runtime/JSObject.h:
3646         (JSC::JSObject::getDirectOffset):
3647         (JSC::JSObject::putDirectOffset):
3648         (JSC::JSObject::flattenDictionaryObject):
3649         (JSC::JSObject::putDirectInternal):
3650         (JSC::JSObject::putDirect):
3651         (JSC::JSObject::putDirectFunction):
3652         (JSC::JSObject::putDirectWithoutTransition):
3653         (JSC::JSObject::putDirectFunctionWithoutTransition):
3654         (JSC::JSValue::putDirect):
3655         (JSC::JSObject::allocatePropertyStorageInline):
3656         (JSC::JSObject::markChildrenDirect):
3657         * runtime/JSPropertyNameIterator.cpp:
3658         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3659         (JSC::JSPropertyNameIterator::get):
3660         * runtime/JSPropertyNameIterator.h:
3661         * runtime/JSStaticScopeObject.cpp:
3662         (JSC::JSStaticScopeObject::markChildren):
3663         * runtime/JSString.cpp:
3664         (JSC::StringObject::create):
3665         * runtime/JSValue.h:
3666         * runtime/JSWrapperObject.cpp:
3667         (JSC::JSWrapperObject::markChildren):
3668         * runtime/JSWrapperObject.h:
3669         (JSC::JSWrapperObject::internalValue):
3670         (JSC::JSWrapperObject::setInternalValue):
3671         * runtime/LiteralParser.cpp:
3672         (JSC::LiteralParser::parse):
3673         * runtime/Lookup.cpp:
3674         (JSC::setUpStaticFunctionSlot):
3675         * runtime/Lookup.h:
3676         (JSC::lookupPut):
3677         * runtime/MarkStack.h:
3678         (JSC::MarkStack::appendValues):
3679         * runtime/MathObject.cpp:
3680         (JSC::MathObject::MathObject):
3681         * runtime/NativeErrorConstructor.cpp:
3682         (JSC::NativeErrorConstructor::NativeErrorConstructor):
3683         * runtime/NativeErrorPrototype.cpp:
3684         (JSC::NativeErrorPrototype::NativeErrorPrototype):
3685         * runtime/NumberConstructor.cpp:
3686         (JSC::NumberConstructor::NumberConstructor):
3687         (JSC::constructWithNumberConstructor):
3688         * runtime/NumberObject.cpp:
3689         (JSC::constructNumber):
3690         * runtime/NumberPrototype.cpp:
3691         (JSC::NumberPrototype::NumberPrototype):
3692         * runtime/ObjectConstructor.cpp:
3693         (JSC::ObjectConstructor::ObjectConstructor):
3694         (JSC::objectConstructorGetOwnPropertyDescriptor):
3695         * runtime/Operations.h:
3696         (JSC::normalizePrototypeChain):
3697         (JSC::resolveBase):
3698         * runtime/PrototypeFunction.cpp:
3699         (JSC::PrototypeFunction::PrototypeFunction):
3700         * runtime/PutPropertySlot.h:
3701         (JSC::PutPropertySlot::setExistingProperty):
3702         (JSC::PutPropertySlot::setNewProperty):
3703         (JSC::PutPropertySlot::base):
3704         * runtime/RegExpConstructor.cpp:
3705         (JSC::RegExpConstructor::RegExpConstructor):
3706         * runtime/ScopeChain.cpp:
3707         (JSC::ScopeChainNode::print):
3708         * runtime/ScopeChain.h:
3709         (JSC::ScopeChainNode::~ScopeChainNode):
3710         (JSC::ScopeChainIterator::operator*):
3711         (JSC::ScopeChainIterator::operator->):
3712         (JSC::ScopeChain::top):
3713         * runtime/ScopeChainMark.h:
3714         (JSC::ScopeChain::markAggregate):
3715         * runtime/SmallStrings.cpp:
3716         (JSC::isMarked):
3717         (JSC::SmallStrings::markChildren):
3718         * runtime/SmallStrings.h:
3719         (JSC::SmallStrings::emptyString):
3720         (JSC::SmallStrings::singleCharacterString):
3721         (JSC::SmallStrings::singleCharacterStrings):
3722         * runtime/StringConstructor.cpp:
3723         (JSC::StringConstructor::StringConstructor):
3724         * runtime/StringObject.cpp:
3725         (JSC::StringObject::StringObject):
3726         * runtime/StringObject.h:
3727         * runtime/StringPrototype.cpp:
3728         (JSC::StringPrototype::StringPrototype):
3729         * runtime/Structure.cpp:
3730         (JSC::Structure::Structure):
3731         (JSC::Structure::addPropertyTransition):
3732         (JSC::Structure::toDictionaryTransition):
3733         (JSC::Structure::flattenDictionaryStructure):
3734         * runtime/Structure.h:
3735         (JSC::Structure::storedPrototype):
3736         * runtime/WeakGCMap.h:
3737         (JSC::WeakGCMap::uncheckedGet):
3738         (JSC::WeakGCMap::isValid):
3739         (JSC::::get):
3740         (JSC::::take):
3741         (JSC::::set):
3742         (JSC::::uncheckedRemove):
3743         * runtime/WriteBarrier.h: Removed.
3744
3745 2011-01-28  Gavin Barraclough  <barraclough@apple.com>
3746
3747         Reviewed by Geoff Garen.
3748
3749         https://bugs.webkit.org/show_bug.cgi?id=53352
3750         Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
3751
3752         The FixedVMPoolAllocator currently uses a best fix policy -
3753         switch to first fit, this is less prone to external fragmentation.
3754
3755         * jit/ExecutableAllocatorFixedVMPool.cpp:
3756         (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
3757         (JSC::AllocationTableSizeClass::blockSize):
3758         (JSC::AllocationTableSizeClass::blockCount):
3759         (JSC::AllocationTableSizeClass::blockAlignment):
3760         (JSC::AllocationTableSizeClass::size):
3761         (JSC::AllocationTableLeaf::AllocationTableLeaf):
3762         (JSC::AllocationTableLeaf::~AllocationTableLeaf):
3763         (JSC::AllocationTableLeaf::allocate):
3764         (JSC::AllocationTableLeaf::free):
3765         (JSC::AllocationTableLeaf::isEmpty):
3766         (JSC::AllocationTableLeaf::isFull):
3767         (JSC::AllocationTableLeaf::size):
3768         (JSC::AllocationTableLeaf::classForSize):
3769         (JSC::AllocationTableLeaf::dump):
3770         (JSC::LazyAllocationTable::LazyAllocationTable):
3771         (JSC::LazyAllocationTable::~LazyAllocationTable):
3772         (JSC::LazyAllocationTable::allocate):
3773         (JSC::LazyAllocationTable::free):
3774         (JSC::LazyAllocationTable::isEmpty):
3775         (JSC::LazyAllocationTable::isFull):
3776         (JSC::LazyAllocationTable::size):
3777         (JSC::LazyAllocationTable::dump):
3778         (JSC::LazyAllocationTable::classForSize):
3779         (JSC::AllocationTableDirectory::AllocationTableDirectory):
3780         (JSC::AllocationTableDirectory::~AllocationTableDirectory):
3781         (JSC::AllocationTableDirectory::allocate):
3782         (JSC::AllocationTableDirectory::free):
3783         (JSC::AllocationTableDirectory::isEmpty):
3784         (JSC::AllocationTableDirectory::isFull):
3785         (JSC::AllocationTableDirectory::size):
3786         (JSC::AllocationTableDirectory::classForSize):
3787         (JSC::AllocationTableDirectory::dump):
3788         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
3789         (JSC::FixedVMPoolAllocator::alloc):
3790         (JSC::FixedVMPoolAllocator::free):
3791         (JSC::FixedVMPoolAllocator::allocated):
3792         (JSC::FixedVMPoolAllocator::isValid):
3793         (JSC::FixedVMPoolAllocator::classForSize):
3794         (JSC::FixedVMPoolAllocator::offsetToPointer):
3795         (JSC::FixedVMPoolAllocator::pointerToOffset):
3796         (JSC::ExecutableAllocator::committedByteCount):
3797         (JSC::ExecutableAllocator::isValid):
3798         (JSC::ExecutableAllocator::underMemoryPressure):
3799         (JSC::ExecutablePool::systemAlloc):
3800         (JSC::ExecutablePool::systemRelease):
3801         * wtf/PageReservation.h:
3802         (WTF::PageReservation::PageReservation):
3803         (WTF::PageReservation::commit):
3804         (WTF::PageReservation::decommit):
3805         (WTF::PageReservation::committed):
3806
3807 2011-01-27  Oliver Hunt  <oliver@apple.com>
3808
3809         Reviewed by Geoffrey Garen.
3810
3811         Convert markstack to a slot visitor API
3812         https://bugs.webkit.org/show_bug.cgi?id=53219
3813
3814         Move the MarkStack over to a slot based marking API.
3815
3816         In order to avoiding aliasing concerns there are two new types
3817         that need to be used when holding on to JSValues and JSCell that
3818         need to be marked: WriteBarrier and DeprecatedPtr.  WriteBarrier
3819         is expected to be used for any JSValue or Cell that's lifetime and
3820         marking is controlled by another GC object.  DeprecatedPtr is used
3821         for any value that we need to rework ownership for.
3822
3823         The change over to this model has produced a large amount of
3824         code changes, but they are mostly mechanical (forwarding JSGlobalData,
3825         etc).
3826
3827         * API/JSCallbackObject.h:
3828         (JSC::JSCallbackObjectData::setPrivateProperty):
3829         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
3830         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
3831         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
3832         (JSC::JSCallbackObject::setPrivateProperty):
3833         * API/JSCallbackObjectFunctions.h:
3834         (JSC::::put):
3835         (JSC::::staticFunctionGetter):
3836         * API/JSObjectRef.cpp:
3837         (JSObjectMakeConstructor):
3838         (JSObjectSetPrivateProperty):
3839         * API/JSWeakObjectMapRefInternal.h:
3840         * JavaScriptCore.exp:
3841         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3842         * JavaScriptCore.xcodeproj/project.pbxproj:
3843         * bytecode/CodeBlock.cpp:
3844         (JSC::CodeBlock::markAggregate):
3845         * bytecode/CodeBlock.h:
3846         (JSC::CodeBlock::globalObject):
3847         * bytecompiler/BytecodeGenerator.cpp:
3848         (JSC::BytecodeGenerator::BytecodeGenerator):
3849         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
3850         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
3851         (JSC::BytecodeGenerator::findScopedProperty):
3852         * debugger/DebuggerActivation.cpp:
3853         (JSC::DebuggerActivation::DebuggerActivation):
3854         (JSC::DebuggerActivation::markChildren):
3855         * debugger/DebuggerActivation.h:
3856         * interpreter/Interpreter.cpp:
3857         (JSC::Interpreter::resolve):
3858         (JSC::Interpreter::resolveSkip):
3859         (JSC::Interpreter::resolveGlobalDynamic):
3860         (JSC::Interpreter::resolveBaseAndProperty):
3861         (JSC::Interpreter::unwindCallFrame):
3862         (JSC::appendSourceToError):
3863         (JSC::Interpreter::execute):
3864         (JSC::Interpreter::privateExecute):
3865         * interpreter/Register.h:
3866         (JSC::Register::jsValueSlot):
3867         * jit/JITStubs.cpp:
3868         (JSC::JITThunks::tryCacheGetByID):
3869         (JSC::DEFINE_STUB_FUNCTION):
3870         * jsc.cpp:
3871         (GlobalObject::GlobalObject):
3872         * runtime/Arguments.cpp:
3873         (JSC::Arguments::markChildren):
3874         (JSC::Arguments::getOwnPropertySlot):
3875         (JSC::Arguments::getOwnPropertyDescriptor):
3876         (JSC::Arguments::put):
3877         * runtime/Arguments.h:
3878         (JSC::Arguments::setActivation):
3879         (JSC::Arguments::Arguments):
3880         * runtime/ArrayConstructor.cpp:
3881         (JSC::ArrayConstructor::ArrayConstructor):
3882         (JSC::constructArrayWithSizeQuirk):
3883         * runtime/ArrayPrototype.cpp:
3884         (JSC::arrayProtoFuncSplice):
3885         * runtime/BatchedTransitionOptimizer.h:
3886         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3887         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3888         * runtime/BooleanConstructor.cpp:
3889         (JSC::BooleanConstructor::BooleanConstructor):
3890         (JSC::constructBoolean):
3891         (JSC::constructBooleanFromImmediateBoolean):
3892         * runtime/BooleanPrototype.cpp:
3893         (JSC::BooleanPrototype::BooleanPrototype):
3894         * runtime/ConservativeSet.h:
3895         (JSC::ConservativeSet::mark):
3896         * runtime/DateConstructor.cpp:
3897         (JSC::DateConstructor::DateConstructor):
3898         * runtime/DateInstance.cpp:
3899         (JSC::DateInstance::DateInstance):
3900         * runtime/DatePrototype.cpp:
3901         (JSC::dateProtoFuncSetTime):
3902         (JSC::setNewValueFromTimeArgs):
3903         (JSC::setNewValueFromDateArgs):
3904         (JSC::dateProtoFuncSetYear):
3905         * runtime/ErrorConstructor.cpp:
3906         (JSC::ErrorConstructor::ErrorConstructor):
3907         * runtime/ErrorInstance.cpp:
3908         (JSC::ErrorInstance::ErrorInstance):
3909         * runtime/ErrorPrototype.cpp:
3910         (JSC::ErrorPrototype::ErrorPrototype):
3911         * runtime/FunctionConstructor.cpp:
3912         (JSC::FunctionConstructor::FunctionConstructor):
3913         * runtime/FunctionPrototype.cpp:
3914         (JSC::FunctionPrototype::FunctionPrototype):
3915         * runtime/GetterSetter.cpp:
3916         (JSC::GetterSetter::markChildren):
3917         * runtime/GetterSetter.h:
3918         (JSC::GetterSetter::GetterSetter):
3919         (JSC::GetterSetter::getter):
3920         (JSC::GetterSetter::setGetter):
3921         (JSC::GetterSetter::setter):
3922         (JSC::GetterSetter::setSetter):
3923         * runtime/GlobalEvalFunction.cpp:
3924         (JSC::GlobalEvalFunction::GlobalEvalFunction):
3925         (JSC::GlobalEvalFunction::markChildren):
3926         * runtime/GlobalEvalFunction.h:
3927         (JSC::GlobalEvalFunction::cachedGlobalObject):
3928         * runtime/Heap.cpp:
3929         (JSC::Heap::markProtectedObjects):
3930         (JSC::Heap::markTempSortVectors):
3931         (JSC::Heap::markRoots):
3932         * runtime/InternalFunction.cpp:
3933         (JSC::InternalFunction::InternalFunction):
3934         * runtime/JSAPIValueWrapper.h:
3935         (JSC::JSAPIValueWrapper::value):
3936         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
3937         * runtime/JSActivation.cpp:
3938         (JSC::JSActivation::put):
3939         * runtime/JSArray.cpp:
3940         (JSC::JSArray::JSArray):
3941         (JSC::JSArray::getOwnPropertySlot):
3942         (JSC::JSArray::getOwnPropertyDescriptor):
3943         (JSC::JSArray::put):
3944         (JSC::JSArray::putSlowCase):
3945         (JSC::JSArray::deleteProperty):
3946         (JSC::JSArray::increaseVectorLength):
3947         (JSC::JSArray::setLength):
3948         (JSC::JSArray::pop):
3949         (JSC::JSArray::push):
3950         (JSC::JSArray::unshiftCount):
3951         (JSC::JSArray::sort):
3952         (JSC::JSArray::fillArgList):
3953         (JSC::JSArray::copyToRegisters):
3954         (JSC::JSArray::compactForSorting):
3955         * runtime/JSArray.h:
3956         (JSC::JSArray::getIndex):
3957         (JSC::JSArray::setIndex):
3958         (JSC::JSArray::uncheckedSetIndex):
3959         (JSC::JSArray::markChildrenDirect):
3960         * runtime/JSByteArray.cpp:
3961         (JSC::JSByteArray::JSByteArray):
3962         * runtime/JSCell.h:
3963         (JSC::JSCell::MarkStack::append):
3964         (JSC::JSCell::MarkStack::appendCell):
3965         * runtime/JSFunction.cpp:
3966         (JSC::JSFunction::JSFunction):
3967         (JSC::JSFunction::getOwnPropertySlot):
3968         * runtime/JSGlobalObject.cpp:
3969         (JSC::markIfNeeded):
3970         (JSC::JSGlobalObject::reset):
3971         (JSC::JSGlobalObject::resetPrototype):
3972         (JSC::JSGlobalObject::markChildren):
3973         * runtime/JSGlobalObject.h:
3974         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3975         (JSC::JSGlobalObject::regExpConstructor):
3976         (JSC::JSGlobalObject::errorConstructor):
3977         (JSC::JSGlobalObject::evalErrorConstructor):
3978         (JSC::JSGlobalObject::rangeErrorConstructor):
3979         (JSC::JSGlobalObject::referenceErrorConstructor):
3980         (JSC::JSGlobalObject::syntaxErrorConstructor):
3981         (JSC::JSGlobalObject::typeErrorConstructor):
3982         (JSC::JSGlobalObject::URIErrorConstructor):
3983         (JSC::JSGlobalObject::evalFunction):
3984         (JSC::JSGlobalObject::objectPrototype):
3985         (JSC::JSGlobalObject::functionPrototype):
3986         (JSC::JSGlobalObject::arrayPrototype):
3987         (JSC::JSGlobalObject::booleanPrototype):
3988         (JSC::JSGlobalObject::stringPrototype):
3989         (JSC::JSGlobalObject::numberPrototype):
3990         (JSC::JSGlobalObject::datePrototype):
3991         (JSC::JSGlobalObject::regExpPrototype):
3992         (JSC::JSGlobalObject::methodCallDummy):
3993         (JSC::constructArray):
3994         * runtime/JSONObject.cpp:
3995         (JSC::Stringifier::Holder::object):
3996         (JSC::Stringifier::Holder::objectSlot):
3997         (JSC::Stringifier::markAggregate):
3998         (JSC::Stringifier::stringify):
3999         (JSC::Stringifier::Holder::appendNextProperty):
4000         (JSC::Walker::callReviver):
4001         (JSC::Walker::walk):
4002         * runtime/JSObject.cpp:
4003         (JSC::JSObject::defineGetter):
4004         (JSC::JSObject::defineSetter):
4005         (JSC::JSObject::removeDirect):
4006         (JSC::JSObject::putDirectFunction):
4007         (JSC::JSObject::putDirectFunctionWithoutTransition):
4008         (JSC::putDescriptor):
4009         (JSC::JSObject::defineOwnProperty):
4010         * runtime/JSObject.h:
4011         (JSC::JSObject::putDirectOffset):
4012         (JSC::JSObject::putUndefinedAtDirectOffset):
4013         (JSC::JSObject::flattenDictionaryObject):
4014         (JSC::JSObject::putDirectInternal):
4015         (JSC::JSObject::putDirect):
4016         (JSC::JSObject::putDirectFunction):
4017         (JSC::JSObject::putDirectWithoutTransition):
4018         (JSC::JSObject::putDirectFunctionWithoutTransition):
4019         (JSC::JSValue::putDirect):
4020         (JSC::JSObject::allocatePropertyStorageInline):
4021         (JSC::JSObject::markChildrenDirect):
4022         * runtime/JSStaticScopeObject.cpp:
4023         (JSC::JSStaticScopeObject::markChildren):
4024         * runtime/JSString.cpp:
4025         (JSC::StringObject::create):
4026         * runtime/JSValue.h:
4027         * runtime/JSWrapperObject.cpp:
4028         (JSC::JSWrapperObject::markChildren):
4029         * runtime/JSWrapperObject.h:
4030         (JSC::JSWrapperObject::internalValue):
4031         (JSC::JSWrapperObject::setInternalValue):
4032         * runtime/LiteralParser.cpp:
4033         (JSC::LiteralParser::parse):
4034         * runtime/Lookup.cpp:
4035         (JSC::setUpStaticFunctionSlot):
4036         * runtime/Lookup.h:
4037         (JSC::lookupPut):
4038         * runtime/MarkStack.h:
4039         * runtime/MathObject.cpp:
4040         (JSC::MathObject::MathObject):
4041         * runtime/NativeErrorConstructor.cpp:
4042         (JSC::NativeErrorConstructor::NativeErrorConstructor):
4043         * runtime/NativeErrorPrototype.cpp:
4044         (JSC::NativeErrorPrototype::NativeErrorPrototype):
4045         * runtime/NumberConstructor.cpp:
4046         (JSC::NumberConstructor::NumberConstructor):
4047         (JSC::constructWithNumberConstructor):
4048         * runtime/NumberObject.cpp:
4049         (JSC::constructNumber):
4050         * runtime/NumberPrototype.cpp:
4051         (JSC::NumberPrototype::NumberPrototype):
4052         * runtime/ObjectConstructor.cpp:
4053         (JSC::ObjectConstructor::ObjectConstructor):
4054         (JSC::objectConstructorGetOwnPropertyDescriptor):
4055         * runtime/Operations.h:
4056         (JSC::normalizePrototypeChain):
4057         (JSC::resolveBase):
4058         * runtime/PrototypeFunction.cpp:
4059         (JSC::PrototypeFunction::PrototypeFunction):
4060         * runtime/PutPropertySlot.h:
4061         (JSC::PutPropertySlot::setExistingProperty):
4062         (JSC::PutPropertySlot::setNewProperty):
4063         (JSC::PutPropertySlot::base):
4064         * runtime/RegExpConstructor.cpp:
4065         (JSC::RegExpConstructor::RegExpConstructor):
4066         * runtime/ScopeChain.cpp:
4067         (JSC::ScopeChainNode::print):
4068         * runtime/ScopeChain.h:
4069         (JSC::ScopeChainNode::~ScopeChainNode):
4070         (JSC::ScopeChainIterator::operator*):
4071         (JSC::ScopeChainIterator::operator->):
4072         (JSC::ScopeChain::top):
4073         * runtime/ScopeChainMark.h:
4074         (JSC::ScopeChain::markAggregate):
4075         * runtime/SmallStrings.cpp:
4076         (JSC::isMarked):
4077         (JSC::SmallStrings::markChildren):
4078         * runtime/SmallStrings.h:
4079         (JSC::SmallStrings::emptyString):
4080         (JSC::SmallStrings::singleCharacterString):
4081         (JSC::SmallStrings::singleCharacterStrings):
4082         * runtime/StringConstructor.cpp:
4083         (JSC::StringConstructor::StringConstructor):
4084         * runtime/StringObject.cpp:
4085         (JSC::StringObject::StringObject):
4086         * runtime/StringObject.h:
4087         * runtime/StringPrototype.cpp:
4088         (JSC::StringPrototype::StringPrototype):
4089         * runtime/Structure.cpp:
4090         (JSC::Structure::flattenDictionaryStructure):
4091         * runtime/Structure.h:
4092         (JSC::Structure::storedPrototypeSlot):
4093         * runtime/WeakGCMap.h:
4094         (JSC::WeakGCMap::uncheckedGet):
4095         (JSC::WeakGCMap::uncheckedGetSlot):
4096         (JSC::::get):
4097         (JSC::::take):
4098         (JSC::::set):
4099         (JSC::::uncheckedRemove):
4100         * runtime/WriteBarrier.h: Added.
4101         (JSC::DeprecatedPtr::DeprecatedPtr):
4102         (JSC::DeprecatedPtr::get):
4103         (JSC::DeprecatedPtr::operator*):
4104         (JSC::DeprecatedPtr::operator->):
4105         (JSC::DeprecatedPtr::slot):
4106         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
4107         (JSC::DeprecatedPtr::operator!):
4108         (JSC::WriteBarrierBase::set):
4109         (JSC::WriteBarrierBase::get):
4110         (JSC::WriteBarrierBase::operator*):
4111         (JSC::WriteBarrierBase::operator->):
4112         (JSC::WriteBarrierBase::slot):
4113         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
4114         (JSC::WriteBarrierBase::operator!):
4115         (JSC::WriteBarrier::WriteBarrier):
4116         (JSC::operator==):
4117
4118 2011-01-28  Adam Roben  <aroben@apple.com>
4119
4120         Chromium build fix after r76967
4121
4122         * wtf/ThreadingPrimitives.h: Use OS(WINDOWS) instead of PLATFORM(WIN), to match other
4123         similar macros in this file.
4124
4125 2011-01-28  Michael Saboff  <msaboff@apple.com>
4126
4127         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
4128         https://bugs.webkit.org/show_bug.cgi?id=53271
4129
4130         Reapplying this this change.  No change from prior patch in
4131         JavaScriptCore.
4132
4133         Added new isValid() methods to check if a contained object in
4134         a WeakGCMap is valid when using an unchecked iterator.
4135
4136         * runtime/WeakGCMap.h:
4137         (JSC::WeakGCMap::isValid):
4138
4139 2011-01-27  Adam Roben  <aroben@apple.com>
4140
4141         Extract code to convert a WTF absolute time to a Win32 wait interval into a separate
4142         function
4143
4144         Fixes <http://webkit.org/b/53208> <rdar://problem/8922490> BinarySemaphore should wrap a
4145         Win32 event
4146
4147         Reviewed by Dave Hyatt.
4148
4149         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new function.
4150
4151         * wtf/ThreadingPrimitives.h: Declare the new function.
4152
4153         * wtf/ThreadingWin.cpp:
4154         (WTF::ThreadCondition::timedWait): Moved code to convert the absolute time to a wait
4155         interval from here...
4156         (WTF::absoluteTimeToWaitTimeoutInterval): ...to here.
4157
4158 2011-01-28  Sam Weinig  <sam@webkit.org>
4159
4160         Reviewed by Maciej Stachowiak.
4161
4162         Add basic rubber banding support
4163         <rdar://problem/8219429>
4164         https://bugs.webkit.org/show_bug.cgi?id=53277
4165
4166         * wtf/Platform.h: Add ENABLE for rubber banding.
4167
4168 2011-01-28  Sheriff Bot  <webkit.review.bot@gmail.com>
4169
4170         Unreviewed, rolling out r76893.
4171         http://trac.webkit.org/changeset/76893
4172         https://bugs.webkit.org/show_bug.cgi?id=53287
4173
4174         It made some tests crash on GTK and Qt debug bots (Requested
4175         by Ossy on #webkit).
4176
4177         * runtime/WeakGCMap.h:
4178
4179 2011-01-27  Adam Barth  <abarth@webkit.org>
4180
4181         Reviewed by Eric Seidel.
4182
4183         Add WTFString method to compare equality with Vector<UChar>
4184         https://bugs.webkit.org/show_bug.cgi?id=53266
4185
4186         I'm planning to use this method in the new XSS filter implementation,
4187         but it seems generally useful.
4188
4189         * wtf/text/StringImpl.h:
4190         (WTF::equalIgnoringNullity):
4191         * wtf/text/WTFString.h:
4192         (WTF::equalIgnoringNullity):
4193
4194 2011-01-27  Michael Saboff  <msaboff@apple.com>
4195
4196         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
4197         https://bugs.webkit.org/show_bug.cgi?id=53271
4198
4199         Added new isValid() methods to check if a contained object in
4200         a WeakGCMap is valid when using an unchecked iterator.
4201
4202         * runtime/WeakGCMap.h:
4203         (JSC::WeakGCMap::isValid):
4204
4205 2011-01-26  Sam Weinig  <sam@webkit.org>
4206
4207         Reviewed by Maciej Stachowiak.
4208
4209         Add events to represent the start/end of a gesture scroll
4210         https://bugs.webkit.org/show_bug.cgi?id=53215
4211
4212         * wtf/Platform.h: Add ENABLE for gesture events. 
4213
4214 2011-01-26  Yael Aharon  <yael.aharon@nokia.com>
4215
4216         Reviewed by Laszlo Gombos.
4217
4218         [Qt][Symbian] Fix --minimal build
4219         https://bugs.webkit.org/show_bug.cgi?id=52839
4220
4221         Move definition of USE_SYSTEM_MALLOC out of pri file.
4222         Put it in platform.h instead.
4223
4224         * wtf/Platform.h:
4225         * wtf/TCSystemAlloc.cpp:
4226         * wtf/wtf.pri:
4227
4228 2011-01-26  Patrick Gansterer  <paroga@webkit.org>
4229
4230         Reviewed by Andreas Kling.
4231
4232         [WINCE] Add JIT support to build system
4233         https://bugs.webkit.org/show_bug.cgi?id=53079
4234
4235         * CMakeListsWinCE.txt:
4236
4237 2011-01-25  Adam Roben  <aroben@apple.com>
4238
4239         Windows Production build fix
4240
4241         Reviewed by Steve Falkenburg.
4242
4243         * JavaScriptCore.vcproj/JavaScriptCore.make: Set BUILDSTYLE to Release_PGO at the very start
4244         of the file so that ConfigurationBuildDir takes that into account. Also set it the right way
4245         (by redefining the macro) rather than the wrong way (by modifying the environment variable).
4246
4247 2011-01-25  Steve Falkenburg  <sfalken@apple.com>
4248
4249         Rubber-stamped by Adam Roben.
4250
4251         Windows production build fix.
4252         Use correct environment variable escaping
4253
4254         * JavaScriptCore.vcproj/JavaScriptCore.make:
4255         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
4256
4257 2011-01-25  Oliver Hunt  <oliver@apple.com>
4258
4259         Reviewed by Gavin Barraclough.
4260
4261         JSON.stringify processing time exponentially grows with size of object
4262         https://bugs.webkit.org/show_bug.cgi?id=51922
4263
4264         Remove last use of reserveCapacity from JSON stringification, as it results
4265         in appalling append behaviour when there are a large number of property names
4266         and nothing else.
4267
4268         * runtime/JSONObject.cpp:
4269         (JSC::Stringifier::appendQuotedString):
4270
4271 2011-01-25  Antti Koivisto  <antti@apple.com>
4272
4273         Not reviewed.
4274         
4275         Try to fix windows build.
4276
4277         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4278
4279 2011-01-25  Antti Koivisto  <antti@apple.com>
4280
4281         Reviewed by Oliver Hunt.
4282
4283         REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector()
4284         https://bugs.webkit.org/show_bug.cgi?id=53061
4285          
4286         Cache did not know about the subclass so failed to fully delete the items. 
4287         Got rid of the subclass and moved the classes to separate files.
4288
4289         * CMakeLists.txt:
4290         * GNUmakefile.am:
4291         * JavaScriptCore.exp:
4292         * JavaScriptCore.gypi:
4293         * JavaScriptCore.pro:
4294         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4295         * JavaScriptCore.xcodeproj/project.pbxproj:
4296         * parser/JSParser.cpp:
4297         (JSC::JSParser::Scope::saveFunctionInfo):
4298         (JSC::JSParser::Scope::restoreFunctionInfo):
4299         (JSC::JSParser::findCachedFunctionInfo):
4300         (JSC::JSParser::parseFunctionInfo):
4301         * parser/SourceProvider.h:
4302         * parser/SourceProviderCache.cpp: Added.
4303         (JSC::SourceProviderCache::~SourceProviderCache):
4304         (JSC::SourceProviderCache::byteSize):
4305         * parser/SourceProviderCache.h: Added.
4306         (JSC::SourceProviderCache::SourceProviderCache):
4307         (JSC::SourceProviderCache::add):
4308         (JSC::SourceProviderCache::get):
4309         * parser/SourceProviderCacheItem.h: Added.
4310         (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
4311         (JSC::SourceProviderCacheItem::approximateByteSize):
4312         (JSC::SourceProviderCacheItem::closeBraceToken):
4313
4314 2011-01-25  Marcilio Mendonca  <mamendonca@rim.com>
4315
4316         Reviewed by Darin Adler.
4317
4318         Bug 53087: Refactoring: replaced a hanging "else" with a "return"
4319         statement
4320         https://bugs.webkit.org/show_bug.cgi?id=53087.
4321
4322         Refactoring work: Replaced a hanging "else" within an #if PLATFORM(M
4323         with a "return" so that the code is more readable and less error pro
4324         (e.g., "else" doesn't use braces so adding extra lines to the else
4325         block won't have any effect; even worse, code still compiles
4326         successfully.
4327
4328         * wtf/Assertions.cpp:
4329
4330 2011-01-24  Chris Marrin  <cmarrin@apple.com>
4331
4332         Reviewed by Eric Seidel.
4333
4334         Change ENABLE_3D_CANVAS to ENABLE_WEBGL
4335         https://bugs.webkit.org/show_bug.cgi?id=53041
4336
4337         * Configurations/FeatureDefines.xcconfig:
4338
4339 2011-01-25  Adam Roben  <aroben@apple.com>
4340
4341         Windows Production build fix
4342
4343         * JavaScriptCore.vcproj/JavaScriptCore.make: Added a missing "set".
4344
4345 2011-01-25  Patrick Gansterer  <paroga@webkit.org>
4346
4347         Reviewed by Eric Seidel.
4348
4349         Add missing defines for COMPILER(RVCT) && CPU(ARM_THUMB2)
4350         https://bugs.webkit.org/show_bug.cgi?id=52949
4351
4352         * jit/JITStubs.cpp:
4353
4354 2011-01-24  Adam Roben  <aroben@apple.com>
4355
4356         Windows Production build fix
4357
4358         * JavaScriptCore.vcproj/JavaScriptCore.make: Update for move of JavaScriptCore into Source.
4359
4360 2011-01-24  Peter Varga  <pvarga@webkit.org>
4361
4362         Reviewed by Oliver Hunt.
4363
4364         Optimize regex patterns which contain empty alternatives
4365         https://bugs.webkit.org/show_bug.cgi?id=51395
4366
4367         Eliminate the empty alternatives from the regex pattern and convert it to do
4368         the matching in an easier way.
4369
4370         * yarr/YarrPattern.cpp:
4371         (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
4372
4373 2011-01-24  Andras Becsi  <abecsi@webkit.org>
4374
4375         Reviewed by Csaba Osztrogonác.
4376
4377         [Qt] Move project files into Source
4378         https://bugs.webkit.org/show_bug.cgi?id=52891
4379
4380         * JavaScriptCore.pri:
4381         * JavaScriptCore.pro:
4382         * jsc.pro:
4383
4384 2011-01-23  Mark Rowe  <mrowe@apple.com>
4385
4386         Follow-up to r76477.
4387
4388         Fix the scripts that detect problematic code such as static initializers
4389         and destructors, weak vtables, inappropriate files in the framework wrappers,
4390         and public headers including private headers. These had all been broken
4391         since the projects were moved in to the Source directory as the paths to the
4392         scripts were not updated at that time.
4393
4394         * JavaScriptCore.xcodeproj/project.pbxproj:
4395
4396 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
4397
4398         Reviewed by Darin Adler.
4399
4400         Use WTF::StringHasher in WebCore
4401         https://bugs.webkit.org/show_bug.cgi?id=52934
4402
4403         Add an additional function to calculate the hash
4404         of data with a runtimedependent size.
4405
4406         * wtf/StringHasher.h:
4407         (WTF::StringHasher::createBlobHash):
4408
4409 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
4410
4411         Reviewed by David Kilzer.
4412
4413         Fix comment in String::ascii()
4414         https://bugs.webkit.org/show_bug.cgi?id=52980
4415
4416         * wtf/text/WTFString.cpp:
4417         (WTF::String::ascii):
4418
4419 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
4420
4421         Reviewed by David Kilzer.
4422
4423         Add String::containsOnlyLatin1()
4424         https://bugs.webkit.org/show_bug.cgi?id=52979
4425
4426         * wtf/text/WTFString.h:
4427         (WTF::String::containsOnlyLatin1):
4428         (WTF::charactersAreAllLatin1):
4429
4430 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
4431
4432         Reviewed by Oliver Hunt.
4433
4434         Remove obsolete JSVALUE32 code
4435         https://bugs.webkit.org/show_bug.cgi?id=52948
4436
4437         r70111 removed support for JSVALUE32.
4438         ARM, MIPS and X86 support JSVALUE32_64 only.
4439
4440         * jit/JITStubs.cpp:
4441
4442 2011-01-22  Geoffrey Garen  <ggaren@apple.com>
4443
4444         Reviewed by Dan Bernstein.
4445
4446         ASSERT running run-webkit-tests --threaded.
4447         https://bugs.webkit.org/show_bug.cgi?id=52971
4448         
4449         SunSpider and v8 report no change.
4450
4451         * runtime/ConservativeSet.cpp:
4452         (JSC::ConservativeSet::grow):
4453         (JSC::ConservativeSet::add):
4454         * runtime/ConservativeSet.h: Tweaked the inline capacity to 128, and
4455         the growth policy to 2X, to make SunSpider and v8 happy.
4456         (JSC::ConservativeSet::ConservativeSet):
4457         (JSC::ConservativeSet::~ConservativeSet):
4458         (JSC::ConservativeSet::mark): Use OSAllocator directly, instead of malloc.
4459         Malloc is forbidden during a multi-threaded mark phase because it can
4460         cause deadlock.
4461
4462 2011-01-22  Geoffrey Garen  <ggaren@apple.com>
4463
4464         Reviewed by Geoffrey Garen.
4465
4466         Rubber-stamped by Maciej Stachowiak.
4467
4468         A few of Maciej's review suggestions for my last patch.
4469         https://bugs.webkit.org/show_bug.cgi?id=52946        
4470
4471         SunSpider reports no change.
4472
4473         * Android.mk:
4474         * CMakeLists.txt:
4475         * GNUmakefile.am:
4476         * JavaScriptCore.gypi:
4477         * JavaScriptCore.pro:
4478         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4479         * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems.
4480
4481         * runtime/ConservativeSet.cpp: Added.
4482         (JSC::isPointerAligned):
4483         (JSC::ConservativeSet::add):
4484         * runtime/ConservativeSet.h: Added.
4485         (JSC::ConservativeSet::ConservativeSet):
4486         (JSC::ConservativeSet::mark): Split ConservativeSet out into its own
4487         file, and moved the conservative check into ConservativeSet::add, making
4488         ConservativeSet's responsibility clearer.
4489
4490         * runtime/Heap.cpp:
4491         (JSC::Heap::markRoots):
4492         * runtime/MachineStackMarker.cpp:
4493         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4494         (JSC::MachineStackMarker::markOtherThreadConservatively):
4495         * runtime/MachineStackMarker.h:
4496         * runtime/MarkStack.h: Updated for changes above.
4497
4498 2011-01-22  Patrick Gansterer  <paroga@webkit.org>
4499
4500         Unreviewed WinCE build fix for r76430.
4501
4502         * runtime/MachineStackMarker.cpp:
4503         (JSC::swapIfBackwards):
4504
4505 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
4506
4507         Reviewed by Beth Dakin.
4508
4509         Reorganized MarkedSpace, making many of its functions private.
4510
4511         * runtime/JSCell.h:
4512         (JSC::JSCell::Heap::heap):
4513         * runtime/MarkedSpace.h:
4514         (JSC::MarkedSpace::globalData):
4515         (JSC::MarkedSpace::heap):
4516
4517 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
4518
4519         Try to fix build: moved helper function out of #ifdef.
4520
4521         * runtime/MachineStackMarker.cpp:
4522         (JSC::swapIfBackwards):
4523
4524 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
4525
4526         Rubber-stamped by Maciej Stachowiak.
4527
4528         A few of Maciej's review suggestions for my last patch.
4529         https://bugs.webkit.org/show_bug.cgi?id=52946        
4530
4531         SunSpider reports no change.
4532
4533         * runtime/MachineStackMarker.cpp:
4534         (JSC::swapIfBackwards): Added a helper function for handling platforms
4535         where the stack can grow in any direction.
4536
4537         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4538         (JSC::MachineStackMarker::markOtherThreadConservatively): Use the helper
4539         function.
4540
4541         (JSC::isPointerAligned): Use "!" instead of "==0" because a robot told me to.
4542
4543         (JSC::MachineStackMarker::markConservatively): Changed to use a more
4544         standard looping idiom, and to use the helper function above.
4545
4546         * runtime/MarkedSpace.h:
4547         (JSC::MarkedSpace::isCellAligned): Use "!" instead of "==0" because a robot told me to.
4548
4549 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
4550
4551         Reviewed by Maciej Stachowiak.
4552
4553         Cleaned up some conservative marking code.
4554         https://bugs.webkit.org/show_bug.cgi?id=52946
4555         
4556         SunSpider reports no change.
4557
4558         * interpreter/RegisterFile.h: No need for a special marking function,
4559         since we already expose a start() and end().
4560
4561         * runtime/Heap.cpp:
4562         (JSC::Heap::registerFile):
4563         (JSC::Heap::markRoots):
4564         * runtime/Heap.h:
4565         (JSC::Heap::contains): Migrated markConservatively() to the machine stack
4566         marker class. Now, Heap just provides a contains() function, which the
4567         machine stack marker uses for checking whether a pointer points into the heap.
4568
4569         * runtime/MachineStackMarker.cpp:
4570         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4571         (JSC::MachineStackMarker::markOtherThreadConservatively):
4572         (JSC::isPointerAligned):
4573         (JSC::MachineStackMarker::markConservatively):
4574         * runtime/MachineStackMarker.h: Move the conservative marking code here.
4575
4576         * runtime/MarkStack.h:
4577         (JSC::ConservativeSet::add):
4578         (JSC::ConservativeSet::mark): Changed to using a vector instead of hash
4579         set. Vector seems to be a bit faster, and it generates smaller code.
4580
4581         * runtime/MarkedSpace.cpp:
4582         (JSC::MarkedSpace::containsSlowCase):
4583         * runtime/MarkedSpace.h:
4584         (JSC::MarkedSpace::isCellAligned):
4585         (JSC::MarkedSpace::isPossibleCell):
4586         (JSC::MarkedSpace::contains): Kept the code for determining whether a
4587         pointer pointed into marked space, and moved the code for marking
4588         a set of conservative pointers into the machine stack marker.
4589
4590         * wtf/HashSet.h:
4591         (WTF::::add): Added two missing inlines that I noticed while testing
4592         vector vs hash set.
4593
4594 2011-01-21  Mark Rowe  <mrowe@apple.com>
4595
4596         Reviewed by Sam Weinig.
4597
4598         Work around a Clang bug <rdar://problem/8876150> that leads to it incorrectly emitting an access
4599         control warning when a client tries to use operator bool exposed above via "using PageBlock::operator bool".
4600
4601         * wtf/PageAllocation.h:
4602         (WTF::PageAllocation::operator bool):
4603         * wtf/PageReservation.h:
4604         (WTF::PageReservation::operator bool):
4605
4606 2011-01-21  Michael Saboff  <msaboff@apple.com>
4607
4608         Reviewed by Oliver Hunt.
4609
4610         [RegexFuzz] Hang with forward assertion
4611         https://bugs.webkit.org/show_bug.cgi?id=52825
4612         <rdar://problem/8894332>
4613
4614         The backtrackTo label from the first term in a list of terms is
4615         being overwritten by processing of subsequent terms.  Changed
4616         copyBacktrackToLabel() to check for an existing bcaktrackTo label
4617         before copying and renamed it to propagateBacktrackToLabel() since
4618         it no longer copies.
4619
4620         * yarr/YarrJIT.cpp:
4621         (JSC::Yarr::YarrGenerator::BacktrackDestination::propagateBacktrackToLabel):
4622         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
4623
4624 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
4625
4626         Reviewed by Sam Weinig.
4627
4628         Moved the mark stack from global data to the heap, since it pertains
4629         to the heap, and not the virtual machine as a whole.
4630         https://bugs.webkit.org/show_bug.cgi?id=52930
4631         
4632         SunSpider reports no change.
4633
4634         * runtime/Heap.cpp:
4635         (JSC::Heap::Heap):
4636         (JSC::Heap::markRoots):
4637         * runtime/Heap.h:
4638         * runtime/JSGlobalData.cpp:
4639         (JSC::JSGlobalData::JSGlobalData):
4640         * runtime/JSGlobalData.h:
4641
4642 2011-01-21  Peter Gal  <galpeter@inf.u-szeged.hu>
4643
4644         Reviewed by Darin Adler.
4645
4646         REGRESSION(r76177): All JavaScriptCore tests fail on ARM
4647         https://bugs.webkit.org/show_bug.cgi?id=52814
4648
4649         Get the approximateByteSize value before releasing the OwnPtr.
4650
4651         * parser/JSParser.cpp:
4652         (JSC::JSParser::parseFunctionInfo):
4653
4654 2011-01-21  Xan Lopez  <xlopez@igalia.com>
4655
4656         Reviewed by Martin Robinson.
4657
4658         Remove unnecessary <stdio.h> include
4659         https://bugs.webkit.org/show_bug.cgi?id=52884
4660
4661         * jit/JIT.cpp: remove unnecessary include.
4662
4663 2011-01-20  Ryosuke Niwa  <rniwa@webkit.org>
4664
4665         Reviewed by Maciej Stachowiak.
4666
4667         Added OwnPtrCommon.h because OwnArrayPtr::set calls deleteOwnedPtr.
4668
4669         * wtf/OwnArrayPtr.h:
4670
4671 2011-01-20  Patrick Gansterer  <paroga@webkit.org>
4672
4673         Reviewed by Oliver Hunt.
4674
4675         [WINCE] Remove obsolete JSVALUE32 code
4676         https://bugs.webkit.org/show_bug.cgi?id=52450
4677
4678         Remove the "offset hack" in create_jit_stubs, since we
4679         only support JSVALUE32_64 in the meantime.
4680
4681         * create_jit_stubs: Removed offset argument
4682         * jit/JITStubs.cpp:
4683
4684 2011-01-20  Geoffrey Garen  <ggaren@apple.com>
4685
4686         Reviewed by Oliver Hunt.
4687
4688         When marking conservatively, guard against reviving dead objects.
4689         https://bugs.webkit.org/show_bug.cgi?id=52840
4690         
4691         SunSpider and v8 say no change.
4692
4693         * interpreter/RegisterFile.h:
4694         (JSC::RegisterFile::markCallFrames): Updated to use the ConservativeSet API.
4695
4696         * runtime/Heap.cpp:
4697         (JSC::Heap::recordExtraCost): No need to guard against conservative
4698         marking reviving dead objects anymore, since the conservative marking
4699         mechanism guards against this now.
4700
4701         (JSC::Heap::markConservatively):
4702         (JSC::Heap::markProtectedObjects):
4703         (JSC::Heap::markTempSortVectors): Don't drain the mark stack inside a
4704         marking function. We want to establish a separation of concerns between
4705         visiting roots and draining the mark stack.
4706
4707         (JSC::Heap::markRoots): Gather the set of conservative references before
4708         clearning mark bits, because conservative marking now uses the mark bits
4709         to determine if a reference is valid, and avoid reviving dead objects.
4710
4711         (JSC::Heap::collectAllGarbage): No need to guard against conservative
4712         marking reviving dead objects anymore, since the conservative marking
4713         mechanism guards against this now.
4714
4715         * runtime/Heap.h: Updated to use the ConservativeSet API.
4716
4717         * runtime/MachineStackMarker.cpp:
4718         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4719         (JSC::MachineStackMarker::markCurrentThreadConservatively):
4720         (JSC::MachineStackMarker::markOtherThreadConservatively):
4721         (JSC::MachineStackMarker::markMachineStackConservatively):
4722         * runtime/MachineStackMarker.h: Ditto.
4723
4724         * runtime/MarkStack.h:
4725         (JSC::ConservativeSet::add):
4726         (JSC::ConservativeSet::mark): Added ConservativeSet, for gathering the
4727         set of conservative references. This is different from MarkStack, since
4728         we don't mark the set until it is completely gathered.
4729
4730         * runtime/MarkedSpace.cpp:
4731         (JSC::MarkedSpace::freeBlock):
4732         (JSC::MarkedSpace::resizeBlocks):
4733         (JSC::MarkedSpace::markConservatively):
4734         * runtime/MarkedSpace.h: When marking conservatively, guard against
4735         reviving dead objects.
4736
4737 2011-01-20  Siddharth Mathur  <siddharth.mathur@nokia.com>
4738
4739         Reviewed by Geoffrey Garen.
4740
4741         [Symbian] Fix StackBounds::initialize()
4742         https://bugs.webkit.org/show_bug.cgi?id=52842
4743
4744         * wtf/StackBounds.cpp:
4745         (WTF::StackBounds::initialize): Use TThreadStackInfo.iLimit for stack limit
4746
4747 2011-01-20  Michael Saboff  <msaboff@apple.com>
4748
4749         Reviewed by Oliver Hunt.
4750
4751         <rdar://problem/8890203> [RegexFuzz] Crash in generated code (52773)
4752         https://bugs.webkit.org/show_bug.cgi?id=52773
4753
4754         Fixed case where an existing DataLabelPtr is overwritten.  The
4755         replacing DataLabelPtr is now resolved immediately in
4756         linkDataLabelToBacktrackIfExists().  Cleanup - eliminated bool
4757         return value for the routine as it was never used.
4758
4759         * yarr/YarrJIT.cpp:
4760         (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
4761
4762 2011-01-20  Andras Becsi  <abecsi@webkit.org>
4763
4764         Reviewed by Csaba Osztrogonác.
4765
4766         [Qt][WK2] WebKit2 enabled build fails to link
4767
4768         Work around undefined reference linking issues until the buildsystem gets redesigned.
4769         These issues first occured in minimal builds (see BUG 50519).
4770
4771         * JavaScriptCore.pri: link as whole-archive for WebKit2 builds
4772
4773 2011-01-20  Zoltan Horvath  <zoltan@webkit.org>
4774
4775         Reviewed by Csaba Osztrogonác.
4776
4777         Refactoring of the custom allocation framework
4778         https://bugs.webkit.org/show_bug.cgi?id=49897
4779
4780         Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
4781         The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
4782         equivalent macro implementation at the necessary places.
4783
4784         * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
4785
4786 2011-01-20  Mark Rowe  <mrowe@apple.com>
4787
4788         Reviewed by Maciej Stachowiak.
4789
4790         Follow-up to r75766 / <rdar://problem/5469576>.
4791
4792         We were failing to initialize the key, causing all sorts of unexpected behavior.
4793
4794         * wtf/FastMalloc.cpp:
4795         (WTF::setThreadHeap):
4796         (WTF::TCMalloc_ThreadCache::GetThreadHeap):
4797         (WTF::TCMalloc_ThreadCache::InitTSD): Ensure that the key is initialized.
4798
4799 2011-01-18  Geoffrey Garen  <ggaren@apple.com>
4800
4801         Reviewed by Darin Adler.
4802
4803         Rolled back in r76078, with crash fixed.
4804         https://bugs.webkit.org/show_bug.cgi?id=52668
4805         
4806         * runtime/JSGlobalObject.cpp:
4807         (JSC::JSGlobalObject::markChildren): Account for the fact that the global
4808         object moves its variables into and out of the register file. While out
4809         of the register file, the symbol table's size is not an accurate count
4810         for the size of the register array, since the BytecodeGenerator might
4811         be compiling, adding items to the symbol table.
4812         
4813 2011-01-18  Darin Adler  <darin@apple.com>
4814
4815         Reviewed by Geoffrey Garen.
4816
4817         Stack overflow when converting an Error object to string
4818         https://bugs.webkit.org/show_bug.cgi?id=46410
4819
4820         * Android.mk: Added StringRecursionChecker.cpp and
4821         StringRecursionChecker.h.
4822         * CMakeLists.txt: Ditto.
4823         * GNUmakefile.am: Ditto.
4824         * JavaScriptCore.gypi: Ditto.
4825         * JavaScriptCore.pro: Ditto.
4826         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
4827         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
4828
4829         * runtime/ArrayPrototype.cpp:
4830         (JSC::arrayProtoFuncToString): Use StringRecursionChecker instead
4831         of the older hand-written code to do the same thing.
4832         (JSC::arrayProtoFuncToLocaleString): Ditto.
4833         (JSC::arrayProtoFuncJoin): Ditto.
4834
4835         * runtime/ErrorPrototype.cpp:
4836         (JSC::errorProtoFuncToString): Use StringRecursionChecker.
4837
4838         * runtime/JSGlobalData.h: Renamed arrayVisitedElements to
4839         stringRecursionCheckVisitedObjects.
4840
4841         * runtime/RegExpPrototype.cpp:
4842         (JSC::regExpProtoFuncToString): Use StringRecursionChecker.
4843
4844         * runtime/StringRecursionChecker.cpp: Added.
4845         * runtime/StringRecursionChecker.h: Added.
4846
4847 2011-01-19  Oliver Hunt  <oliver@apple.com>
4848
4849         Reviewed by Gavin Barraclough.
4850
4851         Remove non-spec support for callable RegExp
4852         https://bugs.webkit.org/show_bug.cgi?id=28285
4853
4854         Remove support for callable regexps.  If it breaks sites we can
4855         just roll this out.
4856
4857         * runtime/RegExpObject.cpp:
4858         * runtime/RegExpObject.h:
4859         * tests/mozilla/expected.html: update results.
4860
4861 2011-01-19  Antti Koivisto  <antti@apple.com>
4862
4863         Reviewed by Oliver Hunt.
4864
4865         Cache function offsets to speed up javascript parsing
4866         https://bugs.webkit.org/show_bug.cgi?id=52622
4867         
4868         Use cache to save function offsets and some other info.
4869         This avoids quite a bit of work when reparsing the source.
4870
4871         * parser/ASTBuilder.h:
4872         * parser/JSParser.cpp:
4873         (JSC::JSParser::CachedFunctionInfo::CachedFunctionInfo):
4874         (JSC::JSParser::CachedFunctionInfo::approximateByteSize):
4875         (JSC::JSParser::CachedFunctionInfo::closeBraceToken):
4876         (JSC::JSParser::Scope::copyCapturedVariablesToVector):
4877         (JSC::JSParser::Scope::saveFunctionInfo):
4878         (JSC::JSParser::Scope::restoreFunctionInfo):
4879         (JSC::JSParser::findCachedFunctionInfo):
4880         (JSC::JSParser::JSParser):
4881         (JSC::JSParser::parseProgram):
4882         (JSC::JSParser::parseFunctionInfo):
4883         * parser/Lexer.h:
4884         (JSC::Lexer::setOffset):
4885         (JSC::Lexer::setLineNumber):
4886         (JSC::Lexer::sourceProvider):
4887         * parser/SourceProvider.h:
4888         (JSC::SourceProviderCache::SourceProviderCache):
4889         (JSC::SourceProviderCache::~SourceProviderCache):
4890         (JSC::SourceProviderCache::byteSize):
4891         (JSC::SourceProviderCache::add):
4892         (JSC::SourceProviderCache::get):
4893         (JSC::SourceProvider::SourceProvider):
4894         (JSC::SourceProvider::~SourceProvider):
4895         (JSC::SourceProvider::cache):
4896         (JSC::SourceProvider::notifyCacheSizeChanged):
4897         (JSC::SourceProvider::cacheSizeChanged):
4898         * parser/SyntaxChecker.h:
4899
4900 2011-01-19  Mark Rowe  <mrowe@apple.com>
4901
4902         Reviewed by Darin Adler.
4903
4904         Follow-up to r75766 / <rdar://problem/5469576>.
4905
4906         * DerivedSources.make: Evaluate the SDKROOT variable correctly.
4907
4908 2011-01-19  Oliver Hunt  <oliver@apple.com>
4909
4910         Reviewed by Gavin Barraclough.
4911
4912         [jsfunfuzz] Defining a function called __proto__ inside an eval triggers an assertion
4913         https://bugs.webkit.org/show_bug.cgi?id=52672
4914
4915         Rather than coming up with a somewhat convoluted mechanism to ensure that
4916         developers can override the global objects prototype with a function named
4917         __proto__ and expect it to work, we just disallow it at the syntax level.
4918
4919         * parser/JSParser.cpp:
4920         (JSC::JSParser::parseFunctionInfo):
4921
4922 2011-01-19  Michael Saboff  <msaboff@apple.com>
4923
4924         Reviewed by Darin Adler.
4925
4926         <rdar://problem/8882994> Regression: Simple nested backtrack hangs
4927         https://bugs.webkit.org/show_bug.cgi?id=52675
4928
4929         The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540
4930         broke simple backtracking in some cases.  Reworked that change to 
4931         link both jumps and labels.
4932
4933         * yarr/YarrJIT.cpp:
4934         (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel):
4935         (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
4936         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
4937
4938 2011-01-19  Pavel Podivilov  <podivilov@chromium.org>
4939
4940         Reviewed by Yury Semikhatsky.
4941
4942         Web Inspector: [JSC] scripts have incorrect starting line (always 1).
4943         https://bugs.webkit.org/show_bug.cgi?id=52721
4944
4945         * debugger/Debugger.cpp:
4946         (JSC::Debugger::recompileAllJSFunctions):
4947         * debugger/Debugger.h:
4948         * parser/Parser.h:
4949         (JSC::Parser::parse):
4950         * parser/SourceCode.h:
4951         (JSC::SourceCode::SourceCode):
4952         * parser/SourceProvider.h:
4953         (JSC::SourceProvider::startPosition):
4954
4955 2011-01-19  Csaba Osztrogonác  <ossy@webkit.org>
4956
4957         Reviewed by Laszlo Gombos and Tor Arne Vestbø.
4958
4959         [Qt] Remove unnecessary "../Source" from paths
4960         after moving source files into Source is finished.
4961
4962         * JavaScriptCore.pri:
4963
4964 2011-01-19  Benjamin Kalman  <kalman@chromium.org>
4965
4966         Reviewed by Darin Adler.
4967
4968         Don't return void from void function String::split
4969         https://bugs.webkit.org/show_bug.cgi?id=52684
4970
4971         * wtf/text/WTFString.cpp:
4972         (WTF::String::split):
4973
4974 2011-01-18  Kenneth Russell  <kbr@google.com>
4975
4976         Unreviewed, rolling out r76078.
4977         http://trac.webkit.org/changeset/76078
4978         https://bugs.webkit.org/show_bug.cgi?id=52668
4979
4980         Caused crashes of fast/canvas/webgl/constants.html,
4981         fast/canvas/webgl/gl-enum-tests.html, and possibly other layout
4982         test crashes in Release mode. WebGL crashes were observed with
4983         "run-webkit-tests fast/canvas/webgl". It was necessary to run
4984         multiple tests to provoke the crash.
4985
4986         * interpreter/RegisterFile.h:
4987         (JSC::RegisterFile::markGlobals):
4988         * runtime/JSActivation.cpp:
4989         (JSC::JSActivation::markChildren):
4990         * runtime/JSGlobalObject.cpp:
4991         (JSC::JSGlobalObject::markChildren):
4992
4993 2011-01-18  Oliver Hunt  <oliver@apple.com>
4994
4995         Reviewed by Gavin Barraclough.
4996
4997         [jsfunfuzz] Assertion asking activation for arguments when arguments is overridden
4998         https://bugs.webkit.org/show_bug.cgi?id=52690
4999
5000         Clean up code to retrieve arguments from activation and function objects.
5001         Remove the incorrect assertion from JSActivation's argumentsGetter.
5002
5003         * interpreter/Interpreter.cpp:
5004         (JSC::Interpreter::retrieveArguments):
5005         * runtime/JSActivation.cpp:
5006         (JSC::JSActivation::argumentsGetter):
5007
5008 2011-01-18  Geoffrey Garen  <ggaren@apple.com>
5009
5010         Reviewed by Darin Adler.
5011
5012         Removed RegisterFile::markGlobals because it was obtuse, and it
5013         unnecessarily relied on conservative marking.
5014         https://bugs.webkit.org/show_bug.cgi?id=52668
5015
5016         * interpreter/RegisterFile.h: Removed markGlobals.
5017
5018         * runtime/JSActivation.cpp:
5019         (JSC::JSActivation::markChildren): Added a comment explaning why some
5020         JSActivations don't always mark their registers arrays.
5021
5022         * runtime/JSGlobalObject.cpp:
5023         (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark
5024         the registers array directly.
5025
5026 2011-01-18  Michael Saboff  <msaboff@apple.com>
5027
5028         Reviewed by Oliver Hunt.
5029
5030         <rdar://problem/8875432> Regression: Some text-only e-mails cause hang beneath RegExp::match (52540)
5031         https://bugs.webkit.org/show_bug.cgi?id=52540
5032         https://bugs.webkit.org/show_bug.cgi?id=52662
5033
5034         Directly use backtrack label with parentheses nested under a
5035         non-capturing parentheses.  Also linked current parentheses
5036         tail code object for possible parens nested within a non-capturing
5037         parentheses.
5038
5039         * yarr/YarrJIT.cpp:
5040         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkBacktrackToLabel):
5041         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
5042
5043 2011-01-18  Daniel Bates  <dbates@rim.com>
5044
5045         Reviewed by Gavin Barraclough.
5046
5047         Only use moving memory model assumption in ExecutableAllocator::intializePageSize() for Symbian OS
5048         https://bugs.webkit.org/show_bug.cgi?id=52517
5049
5050         Patch by David Tapuska
5051
5052         Currently, we compile code with respect to the Symbian-specific moving memory model
5053         assumption for all ARMv5 or lower architectures. Instead, we should only compile
5054         such code when building for Symbian OS on those architectures because this model
5055         is Symbian-specific.
5056
5057         * jit/ExecutableAllocator.cpp:
5058         (JSC::ExecutableAllocator::intializePageSize):
5059
5060 2011-01-18  Dimitry Andric  <dim@freebsd.org>
5061
5062         Reviewed by Andreas Kling.
5063
5064         Fix linking JavaScriptCore on FreeBSD/amd64
5065         https://bugs.webkit.org/show_bug.cgi?id=52591
5066
5067         Linking of JavaScriptCore on FreeBSD/amd64 fails, for the same reason as
5068         in bug 28422: cti_vm_throw needs a "@plt" suffix, otherwise the linker
5069         complains about the relocation type.
5070
5071         * jit/JITStubs.cpp: use @plt suffix on x86_64 platforms, for both Linux
5072         and FreeBSD.
5073
5074 2011-01-18  Oliver Hunt  <oliver@apple.com>
5075
5076         Reviewed by Antti Koivisto.
5077
5078         [jsfunfuzz] Assertion in codegen for array of NaN constants
5079         https://bugs.webkit.org/show_bug.cgi?id=52643
5080
5081         Don't cache NaN literals in the code generator, as NaN doesn't compare
5082         as equal to itself it causes problems when rehashing the number cache.
5083
5084         * bytecompiler/BytecodeGenerator.cpp:
5085         (JSC::BytecodeGenerator::emitLoad):
5086
5087 2011-01-17  Jarred Nicholls  <jarred@sencha.com>
5088
5089         Reviewed by Csaba Osztrogonác.
5090
5091         REGRESSION(r75709): Return value of fscanf() shouldn't be ignored.
5092         https://bugs.webkit.org/show_bug.cgi?id=52585
5093         
5094         gcc 4.4.4+ has warn_unused_value attribute on fscanf, so we should check
5095         the return value to get around the gcc warning
5096
5097         * jit/ExecutableAllocatorFixedVMPool.cpp:
5098         (JSC::maybeModifyVMPoolSize):
5099
5100 2011-01-17  Michael Saboff  <msaboff@apple.com>
5101
5102         Reviewed by Oliver Hunt.
5103
5104         [regexfuzz] Crash running regex with lookahead
5105         https://bugs.webkit.org/show_bug.cgi?id=52548
5106
5107         Eliminated agressive chaining of backtracks.  This code was overwriting
5108         already valid backtrack information.
5109
5110         * yarr/YarrJIT.cpp:
5111         (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks):
5112
5113 2011-01-17  Tony Gentilcore  <tonyg@chromium.org>
5114
5115         Reviewed by Alexey Proskuryakov.
5116
5117         Fix some headers with missing or misspelled #ifndef guards
5118         https://bugs.webkit.org/show_bug.cgi?id=52545
5119
5120         * wtf/RefPtrHashMap.h:
5121
5122 2011-01-17  Dan Bernstein  <mitz@apple.com>
5123
5124         Rubber-stamped by Mark Rowe.
5125
5126         Update xcodeproj svn:ignore to include xcuserdata.
5127
5128         * JavaScriptCore.xcodeproj: Modified property svn:ignore.
5129
5130 2011-01-16  Adam Barth  <abarth@webkit.org>
5131
5132         Rubber-stamped by Eric Seidel.
5133
5134         Move WebKit into Source
5135         https://bugs.webkit.org/show_bug.cgi?id=52530
5136
5137         * JavaScriptCore.gyp/JavaScriptCore.gyp:
5138
5139 2011-01-16  Oliver Hunt  <oliver@apple.com>
5140
5141         Reviewed by Sam Weinig.
5142
5143         [jsfunfuzz] Parser doesn't correctly validate for-loop syntax
5144         https://bugs.webkit.org/show_bug.cgi?id=52516
5145
5146         Ensure that we always check for a semicolon after encountering
5147         multiple declarations in the initialiser portion of a for-loop.
5148
5149         * parser/JSParser.cpp:
5150         (JSC::JSParser::parseForStatement):
5151
5152 2011-01-16  Oliver Hunt  <oliver@apple.com>
5153
5154         Reviewed by Geoffrey Garen.
5155
5156         Strict mode restrictions on arguments and eval usage aren't complete
5157         https://bugs.webkit.org/show_bug.cgi?id=52528
5158
5159         Fix a few bugs in strict mode where we incorrect allow mutation of
5160         arguments and eval in the parser.
5161
5162         Alas the "optimisation" used by the syntax checker for validating
5163         binary and unary expressions was too aggressive: we do actually need
5164         a stack for operations and operands although it needn't be as complete
5165         as that used for the full AST builder.
5166
5167         Also disallow assignment to arguments in all cases as allowing arguments
5168         to be assignable is always an error in strict mode, regardless of context.
5169
5170         * parser/ASTBuilder.h:
5171         (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext):
5172         (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext):
5173         * parser/JSParser.cpp:
5174         (JSC::JSParser::parseAssignmentExpression):
5175         (JSC::JSParser::parseBinaryExpression):
5176         (JSC::JSParser::parseUnaryExpression):
5177         * parser/SyntaxChecker.h:
5178         (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext):
5179         (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext):
5180         (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext):
5181         (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext):
5182         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
5183         (JSC::SyntaxChecker::operatorStackPop):
5184
5185 2011-01-15  Geoffrey Garen  <ggaren@apple.com>
5186
5187         Reviewed by Oliver Hunt.
5188
5189         Rolled back in r75886.
5190         https://bugs.webkit.org/show_bug.cgi?id=52527
5191         
5192         r75886 broke the GTK Linux bot because Linux was -- quite surprisingly --
5193         set up to use the constants for embedded devices.
5194
5195         * jit/ExecutableAllocatorFixedVMPool.cpp:
5196         (JSC::maybeModifyVMPoolSize): Separated Linux constants from embedded
5197         constants.
5198
5199 2011-01-15  Sheriff Bot  <webkit.review.bot@gmail.com>
5200
5201         Unreviewed, rolling out r75886.
5202         http://trac.webkit.org/changeset/75886
5203         https://bugs.webkit.org/show_bug.cgi?id=52526
5204
5205         "Broke GTK+ 64bit" (Requested by xan_ on #webkit).
5206
5207         * jit/ExecutableAllocatorFixedVMPool.cpp:
5208
5209 2011-01-15  Geoffrey Garen  <ggaren@apple.com>
5210
5211         Reviewed by Sam Weinig.
5212
5213         <rdar://problem/8870429> Shrink the executable pool on embedded devices
5214
5215         * jit/ExecutableAllocatorFixedVMPool.cpp: Dropped the pool size from 32MB
5216         to 16MB.
5217
5218 2011-01-15  Oliver Hunt  <oliver@apple.com>
5219
5220         Reviewed by Maciej Stachowiak.
5221
5222         Incorrect behavior changing attributes of an accessor
5223         https://bugs.webkit.org/show_bug.cgi?id=52515
5224
5225         defineProperty doesn't correctly handle changing attributes of an accessor
5226         property.  This is because we don't pass the full descriptor to the 
5227         putDescriptor helper function, which means we have insufficient information
5228         to do the right thing. Once that's passed the correct behavior is relatively
5229         simple to implement.
5230
5231         * runtime/JSObject.cpp:
5232         (JSC::putDescriptor):
5233         (JSC::JSObject::defineOwnProperty):
5234
5235 2011-01-14  Oliver Hunt  <oliver@apple.com>
5236
5237         Reviewed by Maciej Stachowiak.
5238
5239         [jsfunfuzz] Incorrect handling of consecutive duplicate labels
5240         https://bugs.webkit.org/show_bug.cgi?id=52505
5241
5242         Compare StringImpl*'s instead of Identifier*'s when looking for duplicate
5243         labels.
5244
5245         * parser/JSParser.cpp:
5246         (JSC::JSParser::parseExpressionOrLabelStatement):
5247
5248 2011-01-14  Simon Fraser  <simon.fraser@apple.com>
5249
5250         No review.
5251         
5252         Initialize m_operationInProgress after r75855.
5253
5254         * runtime/Heap.cpp:
5255         (JSC::Heap::Heap):
5256
5257 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
5258
5259         Reverted accidentally committed code from my last checkin.
5260
5261         * runtime/Heap.cpp:
5262         (JSC::Heap::markRoots):
5263
5264 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
5265
5266         Reviewed by Sam Weinig.
5267         
5268         Try to fix the GTK bot.
5269
5270         * runtime/Heap.cpp:
5271         (JSC::Heap::Heap):
5272         (JSC::Heap::markRoots): Kids, remember to initialize your data members.
5273         Knowing is half the battle.
5274
5275 2011-01-14  Oliver Hunt  <oliver@apple.com>
5276
5277         Reviewed by Stephanie Lewis.
5278
5279         [jsfunfuzz] We should be clearing the lexers temporary character buffers when switching to strict mode
5280         https://bugs.webkit.org/show_bug.cgi?id=52501
5281
5282         Clear the temporary character buffers used for reading escaped characters and
5283         numbers.
5284
5285         * parser/Lexer.h:
5286         (JSC::Lexer::setOffset):
5287
5288 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
5289
5290         Try to fix non-Dtrace builds: #include Tracing.h instead of TracingDtrace.h.
5291
5292         * runtime/Heap.cpp:
5293
5294 2011-01-13  Geoffrey Garen  <ggaren@apple.com>
5295
5296         Reviewed by Oliver Hunt.
5297
5298         Split out a MarkedSpace strategy object from Heap.
5299         https://bugs.webkit.org/show_bug.cgi?id=52421
5300         
5301         SunSpider reports no change.
5302
5303         * Android.mk:
5304         * CMakeLists.txt:
5305         * GNUmakefile.am:
5306         * JavaScriptCore.gypi:
5307         * JavaScriptCore.pro:
5308         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5309         * JavaScriptCore.xcodeproj/project.pbxproj: Updated our 7 build systems. Which is cool.
5310
5311         * runtime/Heap.cpp:
5312         (JSC::Heap::Heap):
5313         (JSC::Heap::destroy):
5314         (JSC::Heap::recordExtraCost):
5315         (JSC::Heap::allocate):
5316         (JSC::Heap::markConservatively):
5317         (JSC::Heap::markRoots):
5318         (JSC::Heap::objectCount):
5319         (JSC::Heap::statistics):
5320         (JSC::Heap::size):
5321         (JSC::Heap::isBusy):
5322         (JSC::Heap::collectAllGarbage):
5323         (JSC::Heap::primaryHeapBegin):
5324         (JSC::Heap::primaryHeapEnd):
5325         * runtime/Heap.h:
5326         (JSC::Heap::globalData):
5327         (JSC::Heap::markedSpace):
5328         (JSC::Heap::isCellMarked):
5329         (JSC::Heap::checkMarkCell):
5330         (JSC::Heap::markCell): Moved all code pertaining to managing chunks of
5331         collector memory out of this class. Heap now just delegates to MarkedSpace.
5332
5333         * runtime/JSCell.h:
5334         (JSC::JSCell::Heap::heap): Updated for MarkedSpace delegation.
5335
5336         * runtime/JSValue.h: Moved the ValueStringPair typedef to help with #includes.
5337
5338         * runtime/MarkedSpace.cpp: Copied from runtime/Heap.cpp.
5339         (JSC::MarkedSpace::MarkedSpace):
5340         (JSC::MarkedSpace::destroy):
5341         (JSC::MarkedSpace::allocateBlock):
5342         (JSC::MarkedSpace::freeBlock):
5343         (JSC::MarkedSpace::allocate):
5344         (JSC::MarkedSpace::resizeBlocks):
5345         (JSC::MarkedSpace::growBlocks):
5346         (JSC::MarkedSpace::shrinkBlocks):
5347         (JSC::MarkedSpace::markConservatively):
5348         (JSC::MarkedSpace::clearMarkBits):
5349         (JSC::MarkedSpace::markedCells):
5350         (JSC::MarkedSpace::sweep):
5351         (JSC::MarkedSpace::objectCount):
5352         (JSC::MarkedSpace::addToStatistics):
5353         (JSC::MarkedSpace::statistics):
5354         (JSC::MarkedSpace::size):
5355         (JSC::MarkedSpace::reset):
5356         (JSC::MarkedSpace::primaryHeapBegin):
5357         (JSC::MarkedSpace::primaryHeapEnd):
5358         * runtime/MarkedSpace.h: Copied from runtime/Heap.h.
5359         (JSC::MarkedSpace::globalData):
5360         (JSC::MarkedSpace::didShrink):
5361         (JSC::MarkedSpace::cellBlock):
5362         (JSC::MarkedSpace::cellOffset):
5363         (JSC::MarkedSpace::isCellMarked):
5364         (JSC::MarkedSpace::checkMarkCell):
5365         (JSC::MarkedSpace::markCell): Moved all code pertaining to managing chunks of
5366         collector memory into this class.
5367
5368         * runtime/MemoryStatistics.cpp:
5369         (JSC::heapStatistics):
5370         * runtime/MemoryStatistics.h: Updated for MarkedSpace delegation.
5371
5372 2011-01-14  Oliver Hunt  <oliver@apple.com>
5373
5374         Reviewed by Gavin Barraclough.
5375
5376         [jsfunfuzz] parser doesn't enforce continue restrictions correctly.
5377         https://bugs.webkit.org/show_bug.cgi?id=52493
5378
5379         This patch reworks handling of break, continue and label statements
5380         to correctly handle all the valid and invalid cases.  Previously certain
5381         errors would be missed by the parser in strict mode, but the bytecode 
5382         generator needed to handle those cases for non-strict code so nothing
5383         failed, it simply became non-standard behaviour.
5384
5385         Now that we treat break and continue errors as early faults in non-strict
5386         mode as well that safety net has been removed so the parser bugs result in
5387         crashes at codegen time.
5388
5389         * parser/JSParser.cpp:
5390         (JSC::JSParser::ScopeLabelInfo::ScopeLabelInfo):
5391         (JSC::JSParser::next):
5392         (JSC::JSParser::nextTokenIsColon):
5393         (JSC::JSParser::continueIsValid):
5394             Continue is only valid in loops so we can't use breakIsValid()
5395         (JSC::JSParser::pushLabel):
5396             We now track whether the label is for a loop (and is therefore a
5397             valid target for continue.
5398         (JSC::JSParser::popLabel):
5399         (JSC::JSParser::getLabel):
5400             Replace hasLabel with getLabel so that we can validate the target
5401             when parsing continue statements.
5402         (JSC::JSParser::Scope::continueIsValid):
5403         (JSC::JSParser::Scope::pushLabel):
5404         (JSC::JSParser::Scope::getLabel):
5405         (JSC::JSParser::JSParser):
5406         (JSC::JSParser::parseBreakStatement):
5407         (JSC::JSParser::parseContinueStatement):
5408         (JSC::LabelInfo::LabelInfo):
5409         (JSC::JSParser::parseExpressionOrLabelStatement):
5410             Consecutive labels now get handled iteratively so that we can determine
5411             whether they're valid targets for continue.
5412         * parser/Lexer.cpp:
5413         (JSC::Lexer::nextTokenIsColon):
5414         * parser/Lexer.h:
5415         (JSC::Lexer::setOffset):
5416
5417 2011-01-14  Patrick Gansterer  <paroga@webkit.org>
5418
5419         Reviewed by Adam Roben.
5420
5421         Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5422         https://bugs.webkit.org/show_bug.cgi?id=45186
5423
5424         * wtf/FastMalloc.cpp:
5425         (WTF::TCMalloc_PageHeap::scheduleScavenger): Added missing this pointer to CreateTimerQueueTimer().
5426
5427 2011-01-14  Patrick Gansterer  <paroga@webkit.org>
5428
5429         Reviewed by Adam Roben.
5430
5431         Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5432         https://bugs.webkit.org/show_bug.cgi?id=45186
5433
5434         r75819 accidentally changed the initial state of the scavenge timer.
5435
5436         * wtf/FastMalloc.cpp:
5437         (WTF::TCMalloc_PageHeap::initializeScavenger): Changed initial state of m_scavengingSuspended to true.
5438
5439 2011-01-14  Patrick Gansterer  <paroga@webkit.org>
5440
5441         Unreviewed Windows Release build fix.
5442
5443         * wtf/FastMalloc.cpp:
5444         (WTF::TCMalloc_PageHeap::scavengerTimerFired):
5445
5446 2011-01-14  Patrick Gansterer  <paroga@webkit.org>
5447
5448         Unreviewed Windows Release build fix.
5449
5450         * wtf/FastMalloc.cpp:
5451         (WTF::TCMalloc_PageHeap::scavengerTimerFired):
5452
5453 2011-01-14  Patrick Gansterer  <paroga@webkit.org>
5454
5455         Reviewed by Adam Roben.
5456
5457         Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5458         https://bugs.webkit.org/show_bug.cgi?id=45186
5459
5460         Use CreateTimerQueueTimer() to start periodicScavenge() and stop it with DeleteTimerQueueTimer().
5461
5462         * wtf/FastMalloc.cpp:
5463         (WTF::TCMalloc_PageHeap::initializeScavenger):
5464         (WTF::TCMalloc_PageHeap::isScavengerSuspended):
5465         (WTF::TCMalloc_PageHeap::scheduleScavenger):
5466         (WTF::TCMalloc_PageHeap::rescheduleScavenger):
5467         (WTF::TCMalloc_PageHeap::suspendScavenger):
5468         (WTF::scavengerTimerFired):
5469         (WTF::TCMalloc_PageHeap::periodicScavenge):
5470         (WTF::TCMalloc_PageHeap::signalScavenger):
5471
5472 2011-01-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
5473
5474         Reviewed by Kenneth Rohde Christiansen.
5475
5476         Align import/export directives
5477         https://bugs.webkit.org/show_bug.cgi?id=52208
5478
5479         * API/JSBase.h: Align import/export directives with
5480         WebKit2/Shared/API/c/WKBase.h
5481
5482 2011-01-14  Michael Saboff  <msaboff@apple.com>
5483
5484         Reviewed by Oliver Hunt.
5485
5486         Incorrect backtracking for nested alternatives
5487         https://bugs.webkit.org/show_bug.cgi?id=52387
5488
5489         In the process of propigating a datalabel it wasn't getting connected
5490         to a destination when the destination was an indirect jump.  Added
5491         code to recognize a direct backtrack destination that was an indirect
5492         jump and added mechanism to associate DataLabelPtrs with indirect
5493         jump entries.
5494         Removed dead method
5495         BacktrackDestination::linkDataLabelToHereIfExists()
5496
5497         * yarr/YarrJIT.cpp:
5498         (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry):
5499         (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addDataLabel):
5500         (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry):
5501         (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable):
5502         Changes to link indirect jumps with DataLabelPtr's.
5503         (JSC::Yarr::YarrGenerator::BacktrackDestination::clearSubDataLabelPtr):
5504         (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists): 
5505         Updated to handle immediate linking of indirect jumps to
5506         DataLabelPtr.
5507         (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): Changed to
5508         reflect updated linkDataLabelToBacktrackIfExists().
5509
5510 2011-01-14  Pavel Podivilov  <podivilov@chromium.org>
5511
5512         Reviewed by Yury Semikhatsky.
5513
5514         Web Inspector: provide script column offset to frontend.
5515         https://bugs.webkit.org/show_bug.cgi?id=52377
5516
5517         * parser/SourceCode.h:
5518         (JSC::SourceCode::SourceCode):
5519         (JSC::SourceCode::firstColumn):
5520
5521 2011-01-13  Darin Adler  <darin@apple.com>
5522
5523         Reviewed by Geoff Garen.
5524
5525         <rdar://problem/5469576> Use __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 if available.
5526
5527         * DerivedSources.make: Create a header file, HeaderDetection.h, that tells
5528         us whether pthread_machdep.h is available.
5529         * wtf/FastMalloc.cpp: If __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 is available, then
5530         don't do the pthread_getspecific_function_pointer trick.
5531         (WTF::setThreadHeap): Ditto, but set thread-specific data.
5532         (WTF::TCMalloc_ThreadCache::GetThreadHeap): Ditto, but get rather than set.
5533
5534 2011-01-13  Xan Lopez  <xlopez@igalia.com>
5535
5536         Reviewed by Gavin Barraclough.
5537
5538         JIT requires VM overcommit (particularly on x86-64), Linux does not by default support this without swap?
5539         https://bugs.webkit.org/show_bug.cgi?id=42756
5540
5541         The FixedVMPool Allocator does not work well on systems where
5542         allocating very large amounts of memory upfront is not reasonable,
5543         like Linux without overcommit enabled. As a workaround, on Linux,
5544         default to the values used in embedded environments (in the MB
5545         range), and only jump to the GB range if we detect at runtime that
5546         overcommit is enabled. Should fix crashes on Linux/x86_64 with
5547         less than 3 or 4GB of RAM.
5548
5549         * jit/ExecutableAllocatorFixedVMPool.cpp:
5550         (JSC::FixedVMPoolAllocator::free): use new variables for VM pool
5551         size and coalesce limit.
5552         (JSC::ExecutableAllocator::isValid): swap the variables from
5553         embedded to generic values at runtime, on linux, if overcommit is
5554         enabled.
5555         (JSC::ExecutableAllocator::underMemoryPressure): use new variables
5556         for VM pool size and coalesce limit.
5557
5558 2011-01-12  Xan Lopez  <xlopez@igalia.com>
5559
5560         Reviewed by Martin Robinson.
5561
5562         Add new Yarr.h header to the list file.
5563
5564         * GNUmakefile.am: ditto.
5565
5566 2011-01-12  Martin Robinson  <mrobinson@igalia.com>
5567
5568         Missing Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h in WebKitGtk tarball
5569         https://bugs.webkit.org/show_bug.cgi?id=52299
5570
5571         * GNUmakefile.am: Fix the GTK+ build on ARMv7 by including missing source
5572         files in the source list.
5573
5574 2011-01-12  Peter Varga  <pvarga@webkit.org>
5575
5576         Reviewed by Gavin Barraclough.
5577
5578         Add Yarr.h to YARR
5579         https://bugs.webkit.org/show_bug.cgi?id=51021
5580
5581         Move other common constants and functions from YARR's different files
5582         to Yarr.h.
5583         Use Yarr.h header instead of including other YARR headers where it
5584         is possible.
5585
5586         * JavaScriptCore.gypi:
5587         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5588         * JavaScriptCore.xcodeproj/project.pbxproj:
5589         * runtime/RegExp.cpp:
5590         * yarr/Yarr.h: Added.
5591         * yarr/YarrInterpreter.cpp:
5592         * yarr/YarrInterpreter.h:
5593         * yarr/YarrJIT.cpp:
5594         (JSC::Yarr::jitCompile):
5595         (JSC::Yarr::execute):
5596         * yarr/YarrJIT.h:
5597         * yarr/YarrParser.h:
5598         * yarr/YarrPattern.cpp:
5599         (JSC::Yarr::YarrPattern::compile):
5600         (JSC::Yarr::YarrPattern::YarrPattern):
5601         * yarr/YarrPattern.h:
5602
5603 2011-01-12  Sheriff Bot  <webkit.review.bot@gmail.com>
5604
5605         Unreviewed, rolling out r75595.
5606         http://trac.webkit.org/changeset/75595
5607         https://bugs.webkit.org/show_bug.cgi?id=52286
5608
5609         It broke fast/regex/pcre-test-1.html (Requested by Ossy on
5610         #webkit).
5611
5612         * JavaScriptCore.gypi:
5613         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5614         * JavaScriptCore.xcodeproj/project.pbxproj:
5615         * runtime/RegExp.cpp:
5616         * yarr/Yarr.h: Removed.
5617         * yarr/YarrInterpreter.cpp:
5618         * yarr/YarrInterpreter.h:
5619         * yarr/YarrJIT.cpp:
5620         (JSC::Yarr::jitCompile):
5621         * yarr/YarrJIT.h:
5622         (JSC::Yarr::execute):
5623         * yarr/YarrParser.h:
5624         * yarr/YarrPattern.cpp:
5625         (JSC::Yarr::compile):
5626         (JSC::Yarr::YarrPattern::YarrPattern):
5627         * yarr/YarrPattern.h:
5628
5629 2011-01-12  Peter Varga  <pvarga@webkit.org>
5630
5631         Reviewed by Gavin Barraclough.
5632
5633         Add Yarr.h to YARR
5634         https://bugs.webkit.org/show_bug.cgi?id=51021
5635
5636         Move other common constants and functions from YARR's different files
5637         to Yarr.h.
5638         Use Yarr.h header instead of including other YARR headers where it
5639         is possible.
5640
5641         * JavaScriptCore.gypi:
5642         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5643         * JavaScriptCore.xcodeproj/project.pbxproj:
5644         * runtime/RegExp.cpp:
5645         * yarr/Yarr.h: Added.
5646         * yarr/YarrInterpreter.cpp:
5647         * yarr/YarrInterpreter.h:
5648         * yarr/YarrJIT.cpp:
5649         (JSC::Yarr::jitCompile):
5650         (JSC::Yarr::execute):
5651         * yarr/YarrJIT.h:
5652         * yarr/YarrParser.h:
5653         * yarr/YarrPattern.cpp:
5654         (JSC::Yarr::YarrPattern::compile):
5655         (JSC::Yarr::YarrPattern::YarrPattern):
5656         * yarr/YarrPattern.h:
5657
5658 2011-01-11  Michael Saboff  <msaboff@apple.com>
5659
5660         Reviewed by Geoffrey Garen.
5661
5662         Missing call to popTempSortVector() for exception case in JSArray::sort.
5663         https://bugs.webkit.org/show_bug.cgi?id=50718
5664
5665         Fix to patch of 50718 that added pushTempSortVector() and 
5666         popTempSortVector() to JSArray::sort() to mark elements during sort.
5667         Need to add popTempSortVector() for the return case if toString()
5668         had an exception.
5669
5670         * runtime/JSArray.cpp:
5671         (JSC::JSArray::sort): Added popTempSortVector()
5672
5673 2011-01-11  Xan Lopez  <xlopez@igalia.com>
5674
5675         Reviewed by Darin Adler.
5676
5677         Microoptimization in ~JSString
5678         https://bugs.webkit.org/show_bug.cgi?id=52222
5679
5680         The case where m_fibers is 0 seems to be the most common one
5681         (almost 1/2 of the time, followed at some distance by m_fibers = 1
5682         in 1/4 of the cases in a typical SunSpider execution). We can save
5683         one comparison in this common case by doing a bit of refactoring
5684         in the JSString destructor; overall a 0.3% progression, but only
5685         the string tests show improvement.
5686
5687         * runtime/JSString.h:
5688         (JSC::RopeBuilder::~JSString):
5689
5690 2011-01-10  Michael Saboff  <msaboff@apple.com>
5691
5692         Reviewed by Geoffrey Garen.
5693
5694         ASSERTION Failure in JSC::binaryChop
5695         https://bugs.webkit.org/show_bug.cgi?id=25614
5696
5697         Changed JITStubs::cti_register_file_check() to use the current stack's
5698         return PC to find the bytecode for handling the exception in the prior
5699         frame.  Also added the appropriate arrity check routine call to the
5700         JIT to bytecode vector (m_callReturnIndexVector) in the CodeBlock.
5701
5702         * jit/JIT.cpp:
5703         (JSC::JIT::privateCompile): Changed the arrity check call location
5704         so that it gets added to the m_calls list so that it's included in
5705         CodeBlock::m_callReturnIndexVector.
5706         * jit/JITStubs.cpp:
5707         (JSC::DEFINE_STUB_FUNCTION): Use the current call frame's return PC.
5708
5709 2011-01-10  Daniel Bates  <dbates@rim.com>
5710
5711         Reviewed by Martin Robinson.
5712
5713         Remove extraneous COMPILER(GCC) condition when checking GCC_VERSION_AT_LEAST()
5714         https://bugs.webkit.org/show_bug.cgi?id=52178
5715
5716         It is sufficient to test GCC_VERSION_AT_LEAST() instead of both COMPILER(GCC) and
5717         GCC_VERSION_AT_LEAST(). Notice GCC_VERSION_AT_LEAST() is defined to be 0 when we
5718         are not compiling with GCC.
5719
5720         Fixes style issues at the callsites (i.e. replace comma with comma-space in
5721         macro function argument list). Also, makes a spelling correction in a comment.
5722
5723         * jit/ExecutableAllocator.h:
5724         (JSC::ExecutableAllocator::cacheFlush):
5725         * wtf/Platform.h:
5726
5727 2011-01-10  Geoffrey Garen  <ggaren@apple.com>
5728
5729         Build fix: removed some uses of nextNumber that I missed last time.
5730
5731         * runtime/Heap.cpp:
5732         (JSC::Heap::reset):
5733         (JSC::Heap::collectAllGarbage):
5734
5735 2011-01-10  Daniel Bates  <dbates@rim.com>
5736
5737         Reviewed by Darin Adler.
5738
5739         Use __builtin_expect when compiling using RVCT in GNU mode
5740         https://bugs.webkit.org/show_bug.cgi?id=51866
5741
5742         We should only use __builtin_expect if we are compiling with GCC or RVCT 3 or higher in GNU mode
5743         as pointed out by Siddharth Mathur per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0202h/Cjabddedbde.html>.
5744
5745         * wtf/AlwaysInline.h:
5746         * wtf/Platform.h: Removed define WTF_COMPILER_RVCT4_OR_GREATER. Instead added macro
5747         function RVCT_VERSION_AT_LEAST so that we can test for an arbitrary minimum RVCT
5748         version.
5749
5750 2011-01-10  Geoffrey Garen  <ggaren@apple.com>
5751
5752         Reviewed by Oliver Hunt.
5753
5754         Moved Collector.* => Heap.*, since the file contains a class named "Heap".
5755
5756         * API/JSCallbackObject.cpp:
5757         * Android.mk:
5758         * CMakeLists.txt:
5759         * GNUmakefile.am:
5760         * JavaScriptCore.gypi:
5761         * JavaScriptCore.pro:
5762         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5763         * JavaScriptCore.xcodeproj/project.pbxproj:
5764         * interpreter/Interpreter.cpp:
5765         * interpreter/RegisterFile.h:
5766         * jit/JITStubs.cpp:
5767         * runtime/Collector.cpp: Removed.
5768         * runtime/Collector.h: Removed.
5769         * runtime/CollectorHeapIterator.h:
5770         * runtime/GCActivityCallbackCF.cpp:
5771         * runtime/Heap.cpp: Copied from JavaScriptCore/runtime/Collector.cpp.
5772         * runtime/Heap.h: Copied from JavaScriptCore/runtime/Collector.h.
5773         * runtime/InitializeThreading.cpp:
5774         * runtime/JSCell.h:
5775         * runtime/JSGlobalData.cpp:
5776         * runtime/JSGlobalData.h:
5777         * runtime/JSLock.cpp:
5778         * runtime/JSNumberCell.h:
5779         * runtime/MachineStackMarker.cpp:
5780         * runtime/MemoryStatistics.h:
5781         * runtime/Protect.h:
5782         * runtime/UString.cpp:
5783         * runtime/WeakGCMap.h:
5784         * runtime/WeakGCPtr.h:
5785
5786 2011-01-10  Xan Lopez  <xlopez@igalia.com>
5787
5788         Reviewed by Gavin Barraclough.
5789
5790         Remove unused isString() case in JSString::toPrimitiveString()
5791         https://bugs.webkit.org/show_bug.cgi?id=52167
5792
5793         We never call toPrimitiveString() with strings, so remove the
5794         check and add an ASSERT ensuring this never happens. 0.7% overall
5795         progression in sunspider, since one of the call sites is very hot.
5796
5797         * runtime/JSString.h:
5798         (JSC::JSValue::toPrimitiveString):
5799
5800 2011-01-10  Peter Varga  <pvarga@inf.u-szeged.hu>
5801
5802         Reviewed by Gavin Barraclough.
5803
5804         Rename the existing YARR files and classes
5805         https://bugs.webkit.org/show_bug.cgi?id=51872
5806
5807         Replace the "Regex" prefix with "Yarr" in the name of YARR files and classes.
5808
5809         * Android.mk:
5810         * CMakeLists.txt:
5811         * GNUmakefile.am:
5812         * JavaScriptCore.gypi:
5813         * JavaScriptCore.pro:
5814         * JavaScriptCore.xcodeproj/project.pbxproj:
5815         * runtime/RegExp.cpp:
5816         (JSC::RegExp::compile):
5817         (JSC::RegExp::match):
5818         (JSC::RegExp::printTraceData):
5819         * yarr/YarrInterpreter.cpp: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.cpp.
5820         (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext):
5821         (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext):
5822         (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext):
5823         (JSC::Yarr::Interpreter::DisjunctionContext::operator new):
5824         (JSC::Yarr::Interpreter::allocDisjunctionContext):
5825         (JSC::Yarr::Interpreter::freeDisjunctionContext):
5826         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
5827         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new):
5828         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput):
5829         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext):
5830         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
5831         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
5832         (JSC::Yarr::Interpreter::InputStream::InputStream):
5833         (JSC::Yarr::Interpreter::InputStream::next):
5834         (JSC::Yarr::Interpreter::InputStream::rewind):
5835         (JSC::Yarr::Interpreter::InputStream::read):
5836         (JSC::Yarr::Interpreter::InputStream::readPair):
5837         (JSC::Yarr::Interpreter::InputStream::readChecked):
5838         (JSC::Yarr::Interpreter::InputStream::reread):
5839         (JSC::Yarr::Interpreter::InputStream::prev):
5840         (JSC::Yarr::Interpreter::InputStream::getPos):
5841         (JSC::Yarr::Interpreter::InputStream::setPos):
5842         (JSC::Yarr::Interpreter::InputStream::atStart):
5843         (JSC::Yarr::Interpreter::InputStream::atEnd):
5844         (JSC::Yarr::Interpreter::InputStream::checkInput):
5845         (JSC::Yarr::Interpreter::InputStream::uncheckInput):
5846         (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput):
5847         (JSC::Yarr::Interpreter::testCharacterClass):
5848         (JSC::Yarr::Interpreter::checkCharacter):
5849         (JSC::Yarr::Interpreter::checkCasedCharacter):
5850         (JSC::Yarr::Interpreter::checkCharacterClass):
5851         (JSC::Yarr::Interpreter::tryConsumeBackReference):
5852         (JSC::Yarr::Interpreter::matchAssertionBOL):
5853         (JSC::Yarr::Interpreter::matchAssertionEOL):
5854         (JSC::Yarr::Interpreter::matchAssertionWordBoundary):
5855         (JSC::Yarr::Interpreter::backtrackPatternCharacter):
5856         (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
5857         (JSC::Yarr::Interpreter::matchCharacterClass):
5858         (JSC::Yarr::Interpreter::backtrackCharacterClass):
5859         (JSC::Yarr::Interpreter::matchBackReference):
5860         (JSC::Yarr::Interpreter::backtrackBackReference):
5861         (JSC::Yarr::Interpreter::recordParenthesesMatch):
5862         (JSC::Yarr::Interpreter::resetMatches):
5863         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
5864         (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
5865         (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
5866         (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
5867         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
5868         (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
5869         (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
5870         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
5871         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
5872         (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
5873         (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
5874         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
5875         (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
5876         (JSC::Yarr::Interpreter::matchParentheses):
5877         (JSC::Yarr::Interpreter::backtrackParentheses):
5878         (JSC::Yarr::Interpreter::lookupForBeginChars):
5879         (JSC::Yarr::Interpreter::matchDisjunction):
5880         (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
5881         (JSC::Yarr::Interpreter::interpret):
5882         (JSC::Yarr::Interpreter::Interpreter):
5883         (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry):
5884         (JSC::Yarr::ByteCompiler::ByteCompiler):
5885         (JSC::Yarr::ByteCompiler::compile):
5886         (JSC::Yarr::ByteCompiler::checkInput):
5887         (JSC::Yarr::ByteCompiler::assertionBOL):
5888         (JSC::Yarr::ByteCompiler::assertionEOL):
5889         (JSC::Yarr::ByteCompiler::assertionWordBoundary):
5890         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
5891         (JSC::Yarr::ByteCompiler::atomCharacterClass):
5892         (JSC::Yarr::ByteCompiler::atomBackReference):
5893         (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
5894         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
5895         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
5896         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
5897         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
5898         (JSC::Yarr::ByteCompiler::popParenthesesStack):
5899         (JSC::Yarr::ByteCompiler::dumpDisjunction):
5900         (JSC::Yarr::ByteCompiler::closeAlternative):
5901         (JSC::Yarr::ByteCompiler::closeBodyAlternative):
5902         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
5903         (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
5904         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
5905         (JSC::Yarr::ByteCompiler::regexBegin):
5906         (JSC::Yarr::ByteCompiler::regexEnd):
5907         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
5908         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
5909         (JSC::Yarr::ByteCompiler::emitDisjunction):
5910         (JSC::Yarr::byteCompile):
5911         (JSC::Yarr::interpret):
5912         * yarr/YarrInterpreter.h: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.h.
5913         (JSC::Yarr::ByteTerm::ByteTerm):
5914         (JSC::Yarr::ByteTerm::BOL):
5915         (JSC::Yarr::ByteTerm::CheckInput):
5916         (JSC::Yarr::ByteTerm::EOL):
5917         (JSC::Yarr::ByteTerm::WordBoundary):
5918         (JSC::Yarr::ByteTerm::BackReference):
5919         (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
5920         (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
5921         (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
5922         (JSC::Yarr::ByteTerm::AlternativeBegin):
5923         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
5924         (JSC::Yarr::ByteTerm::AlternativeEnd):
5925         (JSC::Yarr::ByteTerm::SubpatternBegin):
5926         (JSC::Yarr::ByteTerm::SubpatternEnd):
5927         (JSC::Yarr::ByteTerm::invert):
5928         (JSC::Yarr::ByteTerm::capture):
5929         (JSC::Yarr::ByteDisjunction::ByteDisjunction):
5930         (JSC::Yarr::BytecodePattern::BytecodePattern):
5931         (JSC::Yarr::BytecodePattern::~BytecodePattern):
5932         * yarr/YarrJIT.cpp: Renamed from Source/JavaScriptCore/yarr/RegexJIT.cpp.
5933         (JSC::Yarr::YarrGenerator::optimizeAlternative):
5934         (JSC::Yarr::YarrGenerator::matchCharacterClassRange):
5935         (JSC::Yarr::YarrGenerator::matchCharacterClass):
5936         (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput):
5937         (JSC::Yarr::YarrGenerator::jumpIfAvailableInput):
5938         (JSC::Yarr::YarrGenerator::checkInput):
5939         (JSC::Yarr::YarrGenerator::atEndOfInput):
5940         (JSC::Yarr::YarrGenerator::notAtEndOfInput):
5941         (JSC::Yarr::YarrGenerator::jumpIfCharEquals):
5942         (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
5943         (JSC::Yarr::YarrGenerator::readCharacter):
5944         (JSC::Yarr::YarrGenerator::storeToFrame):
5945         (JSC::Yarr::YarrGenerator::storeToFrameWithPatch):
5946         (JSC::Yarr::YarrGenerator::loadFromFrame):
5947         (JSC::Yarr::YarrGenerator::loadFromFrameAndJump):
5948         (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry):
5949         (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addJump):
5950         (JSC::Yarr::YarrGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord):
5951         (JSC::Yarr::YarrGenerator::GenerationState::GenerationState):
5952         (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry):
5953         (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable):
5954         (JSC::Yarr::YarrGenerator::GenerationState::incrementParenNestingLevel):
5955         (JSC::Yarr::YarrGenerator::GenerationState::decrementParenNestingLevel):
5956         (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
5957         (JSC::Yarr::YarrGenerator::GenerationState::emitParenthesesTail):
5958         (JSC::Yarr::YarrGenerator::GenerationState::addJumpToNextInteration):
5959         (JSC::Yarr::YarrGenerator::GenerationState::addJumpsToNextInteration):
5960         (JSC::Yarr::YarrGenerator::GenerationState::addDataLabelToNextIteration):
5961         (JSC::Yarr::YarrGenerator::GenerationState::linkToNextIteration):
5962         (JSC::Yarr::YarrGenerator::BacktrackDestination::BacktrackDestination):
5963         (JSC::Yarr::YarrGenerator::BacktrackDestination::clear):
5964         (JSC::Yarr::YarrGenerator::BacktrackDestination::clearDataLabel):
5965         (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDestination):
5966         (JSC::Yarr::YarrGenerator::BacktrackDestination::isStackOffset):
5967         (JSC::Yarr::YarrGenerator::BacktrackDestination::isLabel):
5968         (JSC::Yarr::YarrGenerator::BacktrackDestination::isJumpList):
5969         (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDataLabel):
5970         (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTarget):
5971         (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTo):
5972         (JSC::Yarr::YarrGenerator::BacktrackDestination::addBacktrackJump):
5973         (JSC::Yarr::YarrGenerator::BacktrackDestination::setStackOffset):
5974         (JSC::Yarr::YarrGenerator::BacktrackDestination::setLabel):
5975         (JSC::Yarr::YarrGenerator::BacktrackDestination::setNextBacktrackLabel):
5976         (JSC::Yarr::YarrGenerator::BacktrackDestination::copyBacktrackToLabel):
5977         (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackToLabel):
5978         (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackJumpList):
5979         (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackSourceLabel):
5980         (JSC::Yarr::YarrGenerator::BacktrackDestination::setDataLabel):
5981         (JSC::Yarr::YarrGenerator::BacktrackDestination::setSubDataLabelPtr):
5982         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkToNextBacktrack):
5983         (JSC::Yarr::YarrGenerator::BacktrackDestination::getStackOffset):
5984         (JSC::Yarr::YarrGenerator::BacktrackDestination::getLabel):
5985         (JSC::Yarr::YarrGenerator::BacktrackDestination::getBacktrackJumps):
5986         (JSC::Yarr::YarrGenerator::BacktrackDestination::getDataLabel):
5987         (JSC::Yarr::YarrGenerator::BacktrackDestination::jumpToBacktrack):
5988         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkDataLabelToHereIfExists):
5989         (JSC::Yarr::YarrGenerator::BacktrackDestination::plantJumpToBacktrackIfExists):
5990         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracks):
5991         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracksTo):
5992         (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState):
5993         (JSC::Yarr::YarrGenerator::TermGenerationState::resetAlternative):
5994         (JSC::Yarr::YarrGenerator::TermGenerationState::alternativeValid):
5995         (JSC::Yarr::YarrGenerator::TermGenerationState::nextAlternative):
5996         (JSC::Yarr::YarrGenerator::TermGenerationState::alternative):
5997         (JSC::Yarr::YarrGenerator::TermGenerationState::isLastAlternative):
5998         (JSC::Yarr::YarrGenerator::TermGenerationState::resetTerm):
5999         (JSC::Yarr::YarrGenerator::TermGenerationState::termValid):
6000         (JSC::Yarr::YarrGenerator::TermGenerationState::nextTerm):
6001         (JSC::Yarr::YarrGenerator::TermGenerationState::term):
6002         (JSC::Yarr::YarrGenerator::TermGenerationState::isLastTerm):
6003         (JSC::Yarr::YarrGenerator::TermGenerationState::getSubParenNum):
6004         (JSC::Yarr::YarrGenerator::TermGenerationState::isMainDisjunction):
6005         (JSC::Yarr::YarrGenerator::TermGenerationState::setParenthesesTail):
6006         (JSC::Yarr::YarrGenerator::TermGenerationState::getParenthesesTail):
6007         (JSC::Yarr::YarrGenerator::TermGenerationState::lookaheadTerm):
6008         (JSC::Yarr::YarrGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm):
6009         (JSC::Yarr::YarrGenerator::TermGenerationState::inputOffset):
6010         (JSC::Yarr::YarrGenerator::TermGenerationState::clearBacktrack):
6011         (JSC::Yarr::YarrGenerator::TermGenerationState::jumpToBacktrack):
6012         (JSC::Yarr::YarrGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
6013         (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
6014         (JSC::Yarr::YarrGenerator::TermGenerationState::addBacktrackJump):
6015         (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackDataLabel):
6016         (JSC::Yarr::YarrGenerator::TermGenerationState::setBackTrackStackOffset):
6017         (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLabel):
6018         (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracks):
6019         (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracksTo):
6020         (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLink):
6021         (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktracks):
6022         (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktrackJumps):
6023         (JSC::Yarr::YarrGenerator::TermGenerationState::getBacktrackDestination):
6024         (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
6025         (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail):
6026         (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks):
6027         (JSC::Yarr::YarrGenerator::ParenthesesTail::setNextIteration):
6028         (JSC::Yarr::YarrGenerator::ParenthesesTail::addAfterParenJump):
6029         (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode):
6030         (JSC::Yarr::YarrGenerator::generateAssertionBOL):
6031         (JSC::Yarr::YarrGenerator::generateAssertionEOL):
6032         (JSC::Yarr::YarrGenerator::matchAssertionWordchar):
6033         (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary):
6034         (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle):
6035         (JSC::Yarr::YarrGenerator::generatePatternCharacterPair):
6036         (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
6037         (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
6038         (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy):
6039         (JSC::Yarr::YarrGenerator::generateCharacterClassSingle):
6040         (JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
6041         (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
6042         (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
6043         (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction):
6044         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
6045         (JSC::Yarr::YarrGenerator::generateParenthesesGreedyNoBacktrack):
6046         (JSC::Yarr::YarrGenerator::generateParentheticalAssertion):
6047         (JSC::Yarr::YarrGenerator::generateTerm):
6048         (JSC::Yarr::YarrGenerator::generateDisjunction):
6049         (JSC::Yarr::YarrGenerator::generateEnter):
6050         (JSC::Yarr::YarrGenerator::generateReturn):
6051         (JSC::Yarr::YarrGenerator::YarrGenerator):
6052         (JSC::Yarr::YarrGenerator::generate):
6053         (JSC::Yarr::YarrGenerator::compile):
6054         (JSC::Yarr::jitCompile):
6055         * yarr/YarrJIT.h: Renamed from Source/JavaScriptCore/yarr/RegexJIT.h.
6056         (JSC::Yarr::YarrCodeBlock::YarrCodeBlock):
6057         (JSC::Yarr::YarrCodeBlock::~YarrCodeBlock):
6058         (JSC::Yarr::YarrCodeBlock::setFallBack):
6059         (JSC::Yarr::YarrCodeBlock::isFallBack):
6060         (JSC::Yarr::YarrCodeBlock::set):
6061         (JSC::Yarr::YarrCodeBlock::execute):
6062         (JSC::Yarr::YarrCodeBlock::getAddr):
6063         (JSC::Yarr::execute):
6064         * yarr/YarrParser.h: Renamed from Source/JavaScriptCore/yarr/RegexParser.h.
6065         (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
6066         (JSC::Yarr::Parser::CharacterClassParserDelegate::begin):
6067         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
6068         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
6069         (JSC::Yarr::Parser::CharacterClassParserDelegate::end):
6070         (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary):
6071         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference):
6072         (JSC::Yarr::Parser::Parser):
6073         (JSC::Yarr::Parser::parseEscape):
6074         (JSC::Yarr::Parser::parseAtomEscape):
6075         (JSC::Yarr::Parser::parseCharacterClassEscape):
6076         (JSC::Yarr::Parser::parseCharacterClass):
6077         (JSC::Yarr::Parser::parseParenthesesBegin):
6078         (JSC::Yarr::Parser::parseParenthesesEnd):
6079         (JSC::Yarr::Parser::parseQuantifier):
6080         (JSC::Yarr::Parser::parseTokens):
6081         (JSC::Yarr::Parser::parse):
6082         (JSC::Yarr::Parser::saveState):
6083         (JSC::Yarr::Parser::restoreState):
6084         (JSC::Yarr::Parser::atEndOfPattern):
6085         (JSC::Yarr::Parser::peek):
6086         (JSC::Yarr::Parser::peekIsDigit):
6087         (JSC::Yarr::Parser::peekDigit):
6088         (JSC::Yarr::Parser::consume):
6089         (JSC::Yarr::Parser::consumeDigit):
6090         (JSC::Yarr::Parser::consumeNumber):
6091         (JSC::Yarr::Parser::consumeOctal):
6092         (JSC::Yarr::Parser::tryConsume):
6093         (JSC::Yarr::Parser::tryConsumeHex):
6094         (JSC::Yarr::parse):
6095         * yarr/YarrPattern.cpp: Renamed from Source/JavaScriptCore/yarr/RegexPattern.cpp.
6096         (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
6097         (JSC::Yarr::CharacterClassConstructor::reset):
6098         (JSC::Yarr::CharacterClassConstructor::append):
6099         (JSC::Yarr::CharacterClassConstructor::putChar):
6100         (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper):
6101         (JSC::Yarr::CharacterClassConstructor::isUnicodeLower):
6102         (JSC::Yarr::CharacterClassConstructor::putRange):
6103         (JSC::Yarr::CharacterClassConstructor::charClass):
6104         (JSC::Yarr::CharacterClassConstructor::addSorted):
6105         (JSC::Yarr::CharacterClassConstructor::addSortedRange):
6106         (JSC::Yarr::BeginCharHelper::BeginCharHelper):
6107         (JSC::Yarr::BeginCharHelper::addBeginChar):
6108         (JSC::Yarr::BeginCharHelper::merge):
6109         (JSC::Yarr::BeginCharHelper::addCharacter):
6110         (JSC::Yarr::BeginCharHelper::linkHotTerms):
6111         (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor):
6112         (JSC::Yarr::YarrPatternConstructor::~YarrPatternConstructor):
6113         (JSC::Yarr::YarrPatternConstructor::reset):
6114         (JSC::Yarr::YarrPatternConstructor::assertionBOL):
6115         (JSC::Yarr::YarrPatternConstructor::assertionEOL):
6116         (JSC::Yarr::YarrPatternConstructor::assertionWordBoundary):
6117         (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter):
6118         (JSC::Yarr::YarrPatternConstructor::atomBuiltInCharacterClass):
6119         (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBegin):
6120         (JSC::Yarr::YarrPatternConstructor::atomCharacterClassAtom):
6121         (JSC::Yarr::YarrPatternConstructor::atomCharacterClassRange):
6122         (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBuiltIn):
6123         (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd):
6124         (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin):
6125         (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin):
6126         (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
6127         (JSC::Yarr::YarrPatternConstructor::atomBackReference):
6128         (JSC::Yarr::YarrPatternConstructor::copyDisjunction):
6129         (JSC::Yarr::YarrPatternConstructor::copyTerm):
6130         (JSC::Yarr::YarrPatternConstructor::quantifyAtom):
6131         (JSC::Yarr::YarrPatternConstructor::disjunction):
6132         (JSC::Yarr::YarrPatternConstructor::regexBegin):
6133         (JSC::Yarr::YarrPatternConstructor::regexEnd):
6134         (JSC::Yarr::YarrPatternConstructor::regexError):
6135         (JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets):
6136         (JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets):
6137         (JSC::Yarr::YarrPatternConstructor::setupOffsets):
6138         (JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
6139         (JSC::Yarr::YarrPatternConstructor::optimizeBOL):
6140         (JSC::Yarr::YarrPatternConstructor::addBeginTerm):
6141         (JSC::Yarr::YarrPatternConstructor::setupDisjunctionBeginTerms):
6142         (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms):
6143         (JSC::Yarr::YarrPatternConstructor::setupBeginChars):
6144         (JSC::Yarr::compile):
6145         (JSC::Yarr::YarrPattern::YarrPattern):
6146         * yarr/YarrPattern.h: Renamed from Source/JavaScriptCore/yarr/RegexPattern.h.
6147         (JSC::Yarr::CharacterRange::CharacterRange):
6148         (JSC::Yarr::CharacterClassTable::create):
6149         (JSC::Yarr::CharacterClassTable::CharacterClassTable):
6150         (JSC::Yarr::CharacterClass::CharacterClass):
6151         (JSC::Yarr::PatternTerm::PatternTerm):
6152         (JSC::Yarr::PatternTerm::ForwardReference):
6153         (JSC::Yarr::PatternTerm::BOL):
6154         (JSC::Yarr::PatternTerm::EOL):
6155         (JSC::Yarr::PatternTerm::WordBoundary):
6156         (JSC::Yarr::PatternTerm::invert):
6157         (JSC::Yarr::PatternTerm::capture):
6158         (JSC::Yarr::PatternTerm::quantify):
6159         (JSC::Yarr::PatternAlternative::PatternAlternative):
6160         (JSC::Yarr::PatternAlternative::lastTerm):
6161         (JSC::Yarr::PatternAlternative::removeLastTerm):
6162         (JSC::Yarr::PatternAlternative::setOnceThrough):
6163         (JSC::Yarr::PatternAlternative::onceThrough):
6164         (JSC::Yarr::PatternDisjunction::PatternDisjunction):
6165         (JSC::Yarr::PatternDisjunction::~PatternDisjunction):
6166         (JSC::Yarr::PatternDisjunction::addNewAlternative):
6167         (JSC::Yarr::TermChain::TermChain):
6168         (JSC::Yarr::BeginChar::BeginChar):
6169         (JSC::Yarr::YarrPattern::~YarrPattern):
6170         (JSC::Yarr::YarrPattern::reset):
6171         (JSC::Yarr::YarrPattern::containsIllegalBackReference):
6172         (JSC::Yarr::YarrPattern::newlineCharacterClass):
6173         (JSC::Yarr::YarrPattern::digitsCharacterClass):
6174         (JSC::Yarr::YarrPattern::spacesCharacterClass):
6175         (JSC::Yarr::YarrPattern::wordcharCharacterClass):
6176         (JSC::Yarr::YarrPattern::nondigitsCharacterClass):
6177         (JSC::Yarr::YarrPattern::nonspacesCharacterClass):
6178         (JSC::Yarr::YarrPattern::nonwordcharCharacterClass):
6179
6180 2011-01-10  Gavin Barraclough  <barraclough@apple.com>
6181
6182         Windows build fix.
6183
6184         * parser/SyntaxChecker.h:
6185
6186 2011-01-10  Dave Tapuska  <dtapuska@rim.com>
6187
6188         Reviewed by Gavin Barraclough.
6189
6190         Add CTI ASM versions for RVCT ARM THUMB2 mode.
6191
6192         https://bugs.webkit.org/show_bug.cgi?id=52154
6193
6194         * jit/JITStubs.cpp:
6195         (JSC::ctiTrampoline):
6196         (JSC::ctiVMThrowTrampoline):
6197         (JSC::ctiOpThrowNotCaught):
6198
6199 2011-01-10  Gavin Barraclough  <barraclough@apple.com>
6200
6201         Qt build fix.
6202
6203         * JavaScriptCore.pro:
6204
6205 2011-01-10  Gavin Barraclough  <barraclough@apple.com>
6206
6207         Reviewed by Oliver Hunt.
6208
6209         Bug 52079 - Syntax errors should be early errors.
6210
6211         From chapter 16 the spec:
6212             An implementation must report most errors at the time the relevant ECMAScript language construct is
6213             evaluated. An early error is an error that can be detected and reported prior to the evaluation of
6214             any construct in the Program containing the error. An implementation must report early errors in a
6215             Program prior to the first evaluation of that Program. Early errors in eval code are reported at
6216             the time eval is called but prior to evaluation of any construct within the eval code. All errors
6217             that are not early errors are runtime errors.
6218
6219             An implementation must treat any instance of the following kinds of errors as an early error:
6220                 * Any syntax error."
6221
6222         * JavaScriptCore.xcodeproj/project.pbxproj:
6223             Added new files.
6224         * bytecode/CodeBlock.cpp:
6225             Removed op_throw_syntax_error.
6226         * bytecode/Opcode.h:
6227             Removed op_throw_syntax_error.
6228         * bytecompiler/BytecodeGenerator.cpp:
6229         (JSC::BytecodeGenerator::generate):
6230             If m_expressionTooDeep then throw a runtime error.
6231         (JSC::BytecodeGenerator::BytecodeGenerator):
6232             Initialize m_expressionTooDeep.
6233         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
6234             Sets m_expressionTooDeep.
6235         * bytecompiler/BytecodeGenerator.h:
6236             Added m_expressionTooDeep, removed emitThrowSyntaxError.
6237         * bytecompiler/NodesCodegen.cpp:
6238         (JSC::RegExpNode::emitBytecode):
6239         (JSC::ContinueNode::emitBytecode):
6240         (JSC::BreakNode::emitBytecode):
6241         (JSC::ReturnNode::emitBytecode):
6242         (JSC::LabelNode::emitBytecode):
6243             Conditions that threw syntax error are now handled during parsing;
6244             during bytecompilation these are now just ASSERTs.
6245         * interpreter/Interpreter.cpp:
6246         (JSC::Interpreter::privateExecute):
6247         * jit/JIT.cpp:
6248         (JSC::JIT::privateCompileMainPass):
6249         * jit/JIT.h:
6250         * jit/JITOpcodes.cpp:
6251         * jit/JITOpcodes32_64.cpp:
6252         * jit/JITStubs.cpp:
6253         * jit/JITStubs.h:
6254             Removed op_throw_syntax_error.
6255         * parser/ASTBuilder.h:
6256         (JSC::ASTBuilder::createRegExp):
6257             Renamed; added syntax check.
6258         * parser/JSParser.cpp:
6259         (JSC::JSParser::breakIsValid):
6260         (JSC::JSParser::hasLabel):
6261         (JSC::JSParser::Scope::Scope):
6262         (JSC::JSParser::Scope::setIsFunction):
6263         (JSC::JSParser::Scope::isFunctionBoundary):
6264         (JSC::JSParser::ScopeRef::hasContainingScope):
6265         (JSC::JSParser::ScopeRef::containingScope):
6266         (JSC::JSParser::AutoPopScopeRef::AutoPopScopeRef):
6267         (JSC::JSParser::AutoPopScopeRef::~AutoPopScopeRef):
6268         (JSC::JSParser::AutoPopScopeRef::setPopped):
6269         (JSC::JSParser::popScopeInternal):
6270         (JSC::JSParser::popScope):
6271         (JSC::jsParse):
6272         (JSC::JSParser::JSParser):
6273         (JSC::JSParser::parseProgram):
6274         (JSC::JSParser::parseBreakStatement):
6275         (JSC::JSParser::parseContinueStatement):
6276         (JSC::JSParser::parseReturnStatement):
6277         (JSC::JSParser::parseTryStatement):
6278         (JSC::JSParser::parseFunctionInfo):
6279         (JSC::JSParser::parseExpressionOrLabelStatement):
6280         (JSC::JSParser::parsePrimaryExpression):
6281         * parser/JSParser.h:
6282         * parser/Nodes.h:
6283         * parser/Parser.cpp:
6284         (JSC::Parser::parse):
6285         * parser/SyntaxChecker.h:
6286         (JSC::SyntaxChecker::createRegExp):
6287             Renamed; added syntax check.
6288         * runtime/ExceptionHelpers.cpp:
6289         (JSC::createOutOfMemoryError):
6290         (JSC::throwOutOfMemoryError):
6291         * runtime/ExceptionHelpers.h:
6292             Broke out createOutOfMemoryError.
6293         * runtime/Executable.cpp:
6294         (JSC::EvalExecutable::compileInternal):
6295         (JSC::ProgramExecutable::compileInternal):
6296         (JSC::FunctionExecutable::compileForCallInternal):
6297         (JSC::FunctionExecutable::compileForConstructInternal):
6298             Add check for exception after bytecode generation.
6299         * runtime/RegExpConstructor.cpp:
6300         (JSC::constructRegExp):
6301         * runtime/RegExpPrototype.cpp:
6302         (JSC::regExpProtoFuncCompile):
6303             RegExp error prefixes not included in error string.
6304         * yarr/RegexParser.h:
6305         (JSC::Yarr::Parser::parse):
6306             Removed regexBegin/regexEnd/regexError.
6307         * yarr/RegexPattern.cpp:
6308         (JSC::Yarr::RegexPatternConstructor::regexBegin):
6309             Removed regexEnd/regexError.
6310         (JSC::Yarr::compileRegex):
6311             Add call to regexBegin (no longer called from the parser).
6312         * yarr/YarrSyntaxChecker.cpp: Added.
6313         (JSC::Yarr::SyntaxChecker::assertionBOL):
6314         (JSC::Yarr::SyntaxChecker::assertionEOL):
6315         (JSC::Yarr::SyntaxChecker::assertionWordBoundary):
6316         (JSC::Yarr::SyntaxChecker::atomPatternCharacter):
6317         (JSC::Yarr::SyntaxChecker::atomBuiltInCharacterClass):
6318         (JSC::Yarr::SyntaxChecker::atomCharacterClassBegin):
6319         (JSC::Yarr::SyntaxChecker::atomCharacterClassAtom):
6320         (JSC::Yarr::SyntaxChecker::atomCharacterClassRange):
6321         (JSC::Yarr::SyntaxChecker::atomCharacterClassBuiltIn):
6322         (JSC::Yarr::SyntaxChecker::atomCharacterClassEnd):
6323         (JSC::Yarr::SyntaxChecker::atomParenthesesSubpatternBegin):
6324         (JSC::Yarr::SyntaxChecker::atomParentheticalAssertionBegin):
6325         (JSC::Yarr::SyntaxChecker::atomParenthesesEnd):
6326         (JSC::Yarr::SyntaxChecker::atomBackReference):
6327         (JSC::Yarr::SyntaxChecker::quantifyAtom):
6328         (JSC::Yarr::SyntaxChecker::disjunction):
6329         (JSC::Yarr::checkSyntax):
6330         * yarr/YarrSyntaxChecker.h: Added.
6331             Check RegExp syntax.
6332
6333 2011-01-10  Adam Roben  <aroben@apple.com>
6334
6335         Roll out r75289
6336
6337         It was causing assertion failures. See <http://webkit.org/b/52156>.
6338
6339         * wtf/StackBounds.cpp:
6340         (WTF::StackBounds::initialize):
6341
6342 2011-01-08  Patrick Gansterer  <paroga@webkit.org>
6343
6344         Reviewed by Darin Adler.
6345
6346         Unify string table adding in AtomicString
6347         https://bugs.webkit.org/show_bug.cgi?id=51927
6348
6349         Move code for adding a string into a separate function.
6350         This removes multiple occurrence of the same logic.
6351
6352         * wtf/text/AtomicString.cpp:
6353         (WTF::addToStringTable): Added.
6354         (WTF::AtomicString::add): Use addToStringTable().
6355         (WTF::AtomicString::fromUTF8): Ditto.
6356
6357 2011-01-07  Geoffrey Garen  <ggaren@apple.com>
6358
6359         Reviewed by Gavin Barraclough.
6360
6361         Split machine stack marking functions into their own class (MachineStackMarker)
6362         https://bugs.webkit.org/show_bug.cgi?id=52088
6363
6364         * API/APIShims.h:
6365         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Moved registerThread()
6366         call behind an #ifdef because we shouldn't be registering threads at all
6367         if we don't support usage on multiple threads.
6368
6369         * Android.mk:
6370         * CMakeLists.txt:
6371         * GNUmakefile.am:
6372         * JavaScriptCore.gypi:
6373         * JavaScriptCore.pro:
6374         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6375         * JavaScriptCore.xcodeproj/project.pbxproj: Updated projects.
6376
6377         * runtime/Collector.cpp:
6378         (JSC::Heap::Heap):
6379         (JSC::Heap::destroy):
6380         (JSC::Heap::markRoots):
6381         * runtime/Collector.h:
6382         (JSC::Heap::machineStackMarker): Moved code to machineStackMarker.
6383
6384         * runtime/JSGlobalData.h:
6385         (JSC::JSGlobalData::makeUsableFromMultipleThreads): Removed an unnecessary
6386         level of indirection, to make Heap less of a God class.
6387
6388         * runtime/MachineStackMarker.h: Copied from Source/JavaScriptCore/runtime/Collector.h.
6389         * runtime/MachineStackMarker.cpp: Copied from Source/JavaScriptCore/runtime/Collector.cpp.
6390         (JSC::MachineStackMarker::MachineStackMarker):
6391         (JSC::MachineStackMarker::~MachineStackMarker):
6392         (JSC::MachineStackMarker::makeUsableFromMultipleThreads):
6393         (JSC::MachineStackMarker::registerThread):
6394         (JSC::MachineStackMarker::unregisterThread):
6395         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
6396         (JSC::MachineStackMarker::markCurrentThreadConservatively):
6397         (JSC::MachineStackMarker::markOtherThreadConservatively):
6398         (JSC::MachineStackMarker::markMachineStackConservatively): Moved code from Heap.
6399
6400 2011-01-07  Gavin Barraclough  <barraclough@apple.com>
6401
6402         Reviewed by Geoff Garen.
6403
6404         Bug 26276 - Need a mechanism to determine stack extent on WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE platforms
6405
6406         Fix for win32.  The base of the stack is stored in the "deallocation stack" field of the
6407         Thread Information Block - see: http://en.wikipedia.org/wiki/Win32_Thread_Information_Block
6408         for more information!
6409
6410         * wtf/StackBounds.cpp:
6411         (WTF::StackBounds::initialize):
6412
6413 2011-01-07  Adam Roben  <aroben@apple.com>
6414
6415         Update react-to-vsprops-changes.py after r74855
6416
6417         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
6418
6419 2011-01-07  Carlos Garcia Campos  <cgarcia@igalia.com>
6420
6421         Reviewed by Martin Robinson.
6422
6423         [GTK] Port scrollbar painting to GtkStyleContext
6424         https://bugs.webkit.org/show_bug.cgi?id=52051
6425
6426         * wtf/gobject/GTypedefs.h: Add GtkStyleContext forward
6427         declaration.
6428
6429 2011-01-07  Daniel Bates  <dbates@rim.com>
6430
6431         Reviewed by Martin Robinson.
6432
6433         Enable PCRE computed gotos when compiling with RCVT 4.0 or greater in GNU mode
6434         https://bugs.webkit.org/show_bug.cgi?id=52034
6435
6436         Derived from a patch by Eli Fidler.
6437
6438         RVCT 4 or greater in GNU mode supports the computed goto GNU language extension
6439         as per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/ch03s07s12.html>.
6440
6441         * pcre/pcre_exec.cpp: Modified to check for feature, HAVE(COMPUTED_GOTO), instead
6442         of hardcoding the GCC compiler.
6443         * wtf/Platform.h: Define WTF_COMPILER_RVCT4_OR_GREATER if __ARMCC_VERSION >= 400000.
6444
6445 2011-01-06  Gavin Barraclough  <barraclough@apple.com>
6446
6447         Reviewed by Geoff Garen.
6448
6449         Bug 52035 - Unregistering DOMWrapperWorlds is unsafe
6450
6451         The method DOMWrapperWorld::unregisterWorld() effectively calls the DOMWrapperWorld's
6452         destructor early, in order to release wrappers once we know we no longer intend to use them.
6453         Whilst it is okay to have a method to throw away wrappers (assuming we know we're willing to
6454         lose any state stored on them) it is not okay to deregister the world from the JSGlobalData.
6455         A sequence of events that triggers the bug would look like this:
6456
6457         (1) Create a DOMWrapperWorld.
6458         (2) Register a timer in the world.
6459         (3) Call unregisterWorld() on the world.
6460         (4) Timer goes off, code is executed in the world, creates a Node not attached to a Document.
6461         (5) We attempt to lookup a wrapper map for the world on the JSGlobalData, but because we've
6462             called forgetWorld() none exists.
6463         (6) Attempt to add a wrapper to a NULL map.
6464
6465         Fix the problem by not removing the JSGlobalData's wrapper map until the world really goes away.
6466
6467         * runtime/WeakGCMap.h:
6468         (JSC::WeakGCMap::clear):
6469
6470 2011-01-06  Gavin Barraclough  <barraclough@apple.com>
6471
6472         Reviewed by Darin Adler.
6473
6474         Bug 52021 - zeroDouble broken on ARMv7
6475
6476         The bug here is that zeroDouble was working incorrectly,
6477         leading to op_loop_if_true failing - specifically in the
6478         case where the value being checked is 0.0 encoded as a
6479         double (rather than an integer immediate).
6480
6481         Additionally this patch removes a redundant duplicate compare
6482         in some (many) case.
6483
6484         * assembler/ARMv7Assembler.h:
6485         (JSC::ARMv7Assembler::vcmp_F64):
6486         (JSC::ARMv7Assembler::vcmpz_F64):
6487         * assembler/MacroAssemblerARM.h:
6488         (JSC::MacroAssemblerARM::branchDoubleNonZero):
6489         (JSC::MacroAssemblerARM::branchDoubleZeroOrNaN):
6490         * assembler/MacroAssemblerARMv7.h:
6491         (JSC::MacroAssemblerARMv7::branchDouble):
6492         (JSC::MacroAssemblerARMv7::branchDoubleNonZero):
6493         (JSC::MacroAssemblerARMv7::branchDoubleZeroOrNaN):
6494         (JSC::MacroAssemblerARMv7::compare32):
6495         * assembler/MacroAssemblerMIPS.h:
6496         (JSC::MacroAssemblerMIPS::branchDoubleNonZero):
6497         (JSC::MacroAssemblerMIPS::branchDoubleZeroOrNaN):
6498         * assembler/MacroAssemblerX86Common.h:
6499         (JSC::MacroAssemblerX86Common::branchDoubleNonZero):
6500         (JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN):
6501         * jit/JITOpcodes32_64.cpp:
6502         (JSC::JIT::emit_op_jfalse):
6503         (JSC::JIT::emit_op_jtrue):
6504
6505 2011-01-06  Michael Saboff  <msaboff@apple.com>
6506
6507         Reviewed by Gavin Barraclough.
6508
6509         Added debug code to compare the results of JIT regexp with 
6510         interpreted regexp and displays discrepencies.  This debug code is
6511         controlled by the ENABLE_YARR_JIT_DEBUG macro in wtf/Platform.h and
6512         is only valid if ENABLE_YARR_JIT is enabled.
6513
6514         Fixed a discovered problem in RegExp::printTraceData, changing
6515         m_pattern to the getter pattern().
6516         Also deleted an extraneous semicolon.
6517
6518         Enhancement: Add Regexp Debug Compare between JIT and Interpreter
6519         https://bugs.webkit.org/show_bug.cgi?id=51834
6520
6521         * runtime/RegExp.cpp:
6522         (JSC::RegExp::compile):
6523         (JSC::RegExp::match):
6524         (JSC::RegExp::printTraceData):
6525         * wtf/Platform.h:
6526
6527 2011-01-06  Patrick Gansterer  <paroga@webkit.org>
6528
6529         Reviewed by Eric Seidel.
6530
6531         [WINCE] Remove JSC::g_stackBase
6532         https://bugs.webkit.org/show_bug.cgi?id=51779
6533
6534         * wtf/StackBounds.cpp:
6535
6536 2011-01-06  Joone Hur  <joone.hur@collabora.co.uk>
6537
6538         Reviewed by Eric Seidel.
6539
6540         WML Parser should treat line/column number in a consistent way
6541         https://bugs.webkit.org/show_bug.cgi?id=51601
6542
6543         Add the equality operators to TextPosition class.
6544
6545         * wtf/text/TextPosition.h:
6546         (WTF::TextPosition::operator==): Added.
6547         (WTF::TextPosition::operator!=): Added.
6548         (WTF::TextPosition::belowRangePosition): Use belowBase() instead of base().
6549         (WTF::ZeroBasedNumber::operator==): Added.
6550         (WTF::ZeroBasedNumber::operator!=): Added.
6551         (WTF::OneBasedNumber::operator==): Added.
6552         (WTF::OneBasedNumber::operator!=): Added.
6553
6554 2011-01-06  Patrick Gansterer  <paroga@webkit.org>
6555
6556         Reviewed by Gavin Barraclough.
6557
6558         [WINCE] Determine stack extent
6559         https://bugs.webkit.org/show_bug.cgi?id=26276
6560
6561         Scan the stack for writeable pages and use the limits.
6562
6563         * wtf/StackBounds.cpp:
6564         (WTF::detectGrowingDownward):
6565         (WTF::isPageWritable):
6566         (WTF::getLowerStackBound):
6567         (WTF::getUpperStackBound):
6568         (WTF::StackBounds::initialize):
6569
6570 2011-01-05  Steve Falkenburg  <sfalken@apple.com>
6571
6572         Windows build fix.
6573
6574         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Revert change to additional library search path needed to find ICU.
6575
6576 2011-01-05  Steve Falkenburg  <sfalken@apple.com>
6577
6578         Reviewed by Darin Adler.
6579
6580         Debug and Release builds on Windows clobber each other
6581         https://bugs.webkit.org/show_bug.cgi?id=49185
6582         
6583         Changes the structure of WebKitBuild build products directory so we
6584         completely separate each build configuration into independent directories.
6585         
6586         Although we previously had per-configuration directories for obj, this change adds
6587         per-configuration directories for bin, lib, obj, and include. Each configuration's
6588         build products are stored within a directory inside of WebKitBuild.
6589         
6590         Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir),
6591         defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName).
6592         
6593         For PGO, $(ConfigurationBuildDir) points to the same directory (Release_PGO) to allow
6594         for proper operation of the instrumentation/optimization scripts.
6595
6596         * JavaScriptCore.vcproj/JavaScriptCore.make:
6597         * JavaScriptCore.vcproj/JavaScriptCore.sln:
6598         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6599         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
6600         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
6601         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
6602         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops:
6603         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Added.
6604         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
6605         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
6606         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
6607         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
6608         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
6609         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6610         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
6611         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd:
6612         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd:
6613         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
6614         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
6615         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
6616         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd:
6617         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
6618         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd:
6619         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd:
6620
6621 2011-01-05  Brent Fulgham  <bfulgham@webkit.org>
6622
6623         Unreviewed build fix.
6624
6625         * wtf/Encoder.h: Add <stdint.h> include for systems that
6626         do not natively know about uint8_t, etc.
6627
6628 2011-01-05  Patrick Gansterer  <paroga@webkit.org>
6629
6630         Reviewed by Andreas Kling.
6631
6632         [CMake] Fix the usage of SOURCE_GROUP
6633         https://bugs.webkit.org/show_bug.cgi?id=51739
6634
6635         * CMakeLists.txt:
6636
6637 2011-01-05  Andras Becsi  <abecsi@webkit.org>
6638
6639         Reviewed by Csaba Osztrogonác.
6640
6641         [Qt][V8] Fix the build after recent changes.
6642
6643         * pcre/pcre.pri: Correct the path after Source was introduced.
6644
6645 2011-01-04  Steve Falkenburg  <sfalken@apple.com>
6646
6647         Build fix. Update path to FindSafari after source code reorganization.
6648
6649         * JavaScriptCore.vcproj/JavaScriptCore.sln:
6650
6651 2011-01-04  Daniel Bates  <dbates@rim.com>
6652
6653         Fix the Android build after changeset 74975 <http://trac.webkit.org/changeset/74975>
6654         (https://bugs.webkit.org/show_bug.cgi?id=51855).
6655
6656         * wtf/ThreadingPthreads.cpp: Add include of PassOwnPtr.h.
6657         (WTF::runThreadWithRegistration): Use -> instead of . to dereference pointer.
6658
6659 2011-01-04  Martin Robinson  <mrobinson@igalia.com>
6660
6661         Try to fix the EFL build.
6662
6663         * wtf/CMakeLists.txt: Remove PlatformRefPtr from the CMake source list.
6664
6665 2011-01-04  James Robinson  <jamesr@chromium.org>
6666
6667         Reviewed by Darin Adler.
6668
6669         StackBounds initialization in WTFThreadData should be guarded by #if USE(JSC)
6670         https://bugs.webkit.org/show_bug.cgi?id=51881
6671
6672         The StackBounds class is only used by JavaScriptCore.
6673
6674         * wtf/WTFThreadData.cpp:
6675         (WTF::WTFThreadData::WTFThreadData):
6676         * wtf/WTFThreadData.h:
6677         (WTF::WTFThreadData::resetCurrentIdentifierTable):
6678
6679 2011-01-03  Martin Robinson  <mrobinson@igalia.com>
6680
6681         Reviewed by Darin Adler.
6682
6683         Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr
6684         https://bugs.webkit.org/show_bug.cgi?id=51846
6685
6686         * GNUmakefile.am: Remove PlatformRefPtr.h from the sources list.
6687         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
6688         * jit/ExecutableAllocator.h: Change references to PlatformRefPtr to RefPtr.
6689         (JSC::ExecutableAllocator::cacheFlush): Ditto.
6690         * wtf/PlatformRefPtr.h: Removed.
6691         * wtf/RandomNumber.cpp: Change references to PlatformRefPtr to RefPtr.
6692         (WTF::randomNumber): Ditto.
6693         * wtf/brew/RefPtrBrew.h: Ditto.
6694         (WTF::refIfNotNull): Added.
6695         (WTF::derefIfNotNull): Added.
6696         * wtf/brew/ShellBrew.h: Change references to PlatformRefPtr to RefPtr.
6697         (WTF::createRefPtrInstance): Modified to return a RefPtr.
6698         * wtf/gobject/GRefPtr.cpp: 
6699         (WTF::refGPtr): Moved from PlatformRefPtr here.
6700         (WTF::derefGPtr): Ditto.
6701         * wtf/gobject/GRefPtr.h: Ditto.
6702         (WTF::GRefPtr::GRefPtr): Ditto.
6703         (WTF::GRefPtr::~GRefPtr): Ditto.
6704         (WTF::GRefPtr::clear): Ditto.
6705         (WTF::GRefPtr::isHashTableDeletedValue): Ditto.
6706         (WTF::GRefPtr::get): Ditto.
6707         (WTF::GRefPtr::operator*): Ditto.
6708         (WTF::GRefPtr::operator->): Ditto.
6709         (WTF::GRefPtr::operator!): Ditto.
6710         (WTF::GRefPtr::operator UnspecifiedBoolType): Ditto.
6711         (WTF::GRefPtr::hashTableDeletedValue): Ditto.
6712         (WTF::::operator): Ditto.
6713         (WTF::::swap): Ditto.
6714         (WTF::swap): Ditto.
6715         (WTF::operator==): Ditto.
6716         (WTF::operator!=): Ditto.
6717         (WTF::static_pointer_cast): Ditto.
6718         (WTF::const_pointer_cast): Ditto.
6719         (WTF::getPtr): Ditto.
6720         (WTF::adoptGRef): Ditto.
6721         (WTF::refGPtr): Ditto.
6722         (WTF::derefGPtr): Ditto.
6723
6724 2011-01-04  Daniel Bates  <dbates@rim.com>
6725
6726         Reviewed by Adam Roben.
6727
6728         LEAK: Deallocate instance of ThreadFunctionInvocation if thread creation fails
6729         https://bugs.webkit.org/show_bug.cgi?id=51860
6730
6731         * wtf/ThreadingWin.cpp:
6732         (WTF::createThreadInternal):
6733
6734 2011-01-04  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
6735
6736         Reviewed by Ariya Hidayat.
6737
6738         [Qt][Symbian] Make sure that WebKit headers are included before platform headers on Symbian
6739         https://bugs.webkit.org/show_bug.cgi?id=31273
6740
6741         On Symbian PREPEND_INCLUDEPATH is the best way to make sure that WebKit headers
6742         are included before platform headers. On all other platforms continue to use
6743         INCLUDEPATH (as before). This is a continuation of r65877.
6744
6745         No new tests as there is no new functionality.
6746
6747         * JavaScriptCore.pri:
6748
6749 2011-01-04  Darin Adler  <darin@apple.com>
6750
6751         Try to fix Windows build.
6752
6753         * wtf/ThreadingWin.cpp: Added include of PassOwnPtr.h. Fixed paragraphing
6754         of conditional includes.
6755         (WTF::wtfThreadEntryPoint): Use -> instead of . to dereference pointer.
6756         (WTF::createThreadInternal): Tweaked #if to not need separate macro.
6757
6758 2011-01-04  Daniel Bates  <dbates@rim.com>
6759
6760         Reviewed by Adam Roben.
6761
6762         Extract ThreadFunctionInvocation into separate file and share between Apple Windows and Android
6763         https://bugs.webkit.org/show_bug.cgi?id=51855
6764
6765         Both the Apple Windows and Android ports implement a similar adapter structure,
6766         called ThreadFunctionInvocation and ThreadData respectively, as part of
6767         their thread creation process. Instead, we should share such an adapter
6768         structure and remove duplicate code.
6769
6770         * JavaScriptCore.gypi: Added header wtf/ThreadFunctionInvocation.h.
6771         * wtf/ThreadFunctionInvocation.h: Added.
6772         (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation):
6773         * wtf/ThreadingPthreads.cpp: Removed Android-specific structure ThreadData; Instead, use ThreadFunctionInvocation.
6774         (WTF::runThreadWithRegistration):
6775         (WTF::createThreadInternal): 
6776         * wtf/ThreadingWin.cpp: Moved structure ThreadFunctionInvocation to its own file so that
6777         it can be shared with the Android implementation of createThreadInternal().
6778         (WTF::wtfThreadEntryPoint): Use OwnPtr to hold passed instance of ThreadFunctionInvocation.
6779
6780 2011-01-04  Daniel Bates  <dbates@rim.com>
6781
6782         Reviewed by Darin Adler.
6783
6784         Use __builtin_expect when compiling using RVCT in GNU mode
6785         https://bugs.webkit.org/show_bug.cgi?id=51866
6786
6787         Derived from a patch by Dave Tapuska.
6788
6789         * wtf/AlwaysInline.h:
6790
6791 2011-01-03  Darin Adler  <darin@apple.com>
6792
6793         Reviewed by Brady Eidson.
6794
6795         * wtf/Forward.h: Added Decoder and Encoder.
6796
6797 2011-01-03  Brady Eidson  <beidson@apple.com>
6798
6799         Reviewed by Darin Adler.
6800
6801         Add Encode/Decode machinery Darin and I plan to work with for back/forward stuff in WebKit2.
6802
6803         Starting out with a pure virtual interface to be implemented in WK2, but we might change that later.
6804
6805         * GNUmakefile.am:
6806         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6807         * JavaScriptCore.xcodeproj/project.pbxproj:
6808         * wtf/CMakeLists.txt:
6809
6810         * wtf/Decoder.h: Added.
6811         * wtf/Encoder.h: Added.
6812
6813 2011-01-03  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
6814
6815         Unreviewed build fix.
6816
6817         [Qt] Add NullPtr.cpp introduced in r71155 to the Qt build system.
6818
6819         This fix is required for builds where HAVE(NULLPTR) is false
6820         (e.g. some MSVC and Symbian builds).
6821
6822         * wtf/wtf.pri:
6823
6824 2011-01-02  Dan Bernstein  <mitz@apple.com>
6825
6826         Rubber-stamped by Simon Fraser.
6827
6828         <rdar://problem/8812159> Update copyright strings
6829
6830         * Info.plist:
6831
6832 2011-01-02  Csaba Osztrogonác  <ossy@webkit.org>
6833
6834         Fix GTK+ build after r74855.
6835
6836         Reviewed by Xan Lopez.
6837
6838         * GNUmakefile.am: Fix include pathes.
6839
6840 2011-01-02  Adam Barth  <abarth@webkit.org>
6841
6842         One more .. missing in the Qt build.
6843
6844         * jsc.pro:
6845
6846 2011-01-02  Xan Lopez  <xlopez@igalia.com>
6847
6848         Fix GTK+ build.
6849
6850         * GNUmakefile.am: add -I$(srcdir)/Source to the JSC cppflags so
6851         that anyone can include its headers without adding the prefix
6852         'Source/'.
6853
6854 2011-01-02  Carl Lobo  <carllobo@gmail.com>
6855
6856         Reviewed by Adam Barth.
6857
6858         Fix Windows Build for non-production where VSPropsRedirectionDir is not defined.
6859         https://bugs.webkit.org/show_bug.cgi?id=51797
6860
6861         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6862         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
6863         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6864         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
6865         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
6866
6867 2011-01-01  Adam Barth  <abarth@webkit.org>
6868
6869         Fix relative include paths in an attempt to fix the Qt build.
6870
6871         * JavaScriptCore.pri:
6872         * JavaScriptCore.pro:
6873
6874 2011-01-01  Adam Barth  <abarth@webkit.org>
6875
6876         Another speculative build fix for GTK.
6877
6878         * GNUmakefile.am:
6879
6880 2011-01-01  Adam Barth  <abarth@webkit.org>
6881
6882         Speculative build fix for GTK.  Update the paths in GNUmakefile to
6883         include "Source".
6884
6885         * GNUmakefile.am:
6886
6887 2011-01-01  Adam Barth  <abarth@webkit.org>
6888
6889         Update relative paths in JavaScriptCore.gyp to account for the extra
6890         level of directories.
6891
6892         * JavaScriptCore.gyp/JavaScriptCore.gyp:
6893
6894 2010-12-31  Patrick Gansterer  <paroga@webkit.org>
6895
6896         Reviewed by Darin Adler.
6897
6898         Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal
6899         https://bugs.webkit.org/show_bug.cgi?id=50517
6900
6901         This change shows about 2% performance win on the xml-parser benchmark.
6902
6903         * wtf/text/AtomicString.cpp:
6904         (WTF::HashAndUTF8CharactersTranslator::equal):
6905
6906 2010-12-30  Patrick Gansterer  <paroga@webkit.org>
6907
6908         Reviewed by Ariya Hidayat.
6909
6910         [CMake] Add WTF_HEADERS
6911         https://bugs.webkit.org/show_bug.cgi?id=51741
6912
6913         Add the WTF headers to show them in Visual Studio.
6914
6915         * wtf/CMakeLists.txt:
6916         * wtf/CMakeListsWinCE.txt:
6917
6918 2010-12-30  Konstantin Tokarev  <annulen@yandex.ru>
6919
6920         Reviewed by David Kilzer.
6921
6922         [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is
6923         used
6924         https://bugs.webkit.org/show_bug.cgi?id=51672
6925
6926         * wtf/wtf.pri: Replaced USE_SYSTEM_MALLOC with USE_SYSTEM_MALLOC=1
6927
6928 2010-12-30  Patrick Gansterer  <paroga@webkit.org>
6929
6930         Reviewed by Darin Adler.
6931
6932         Use OS(WINDOWS) instead of COMPILER(MSVC) in FastMalloc.cpp
6933         https://bugs.webkit.org/show_bug.cgi?id=51743
6934
6935         Most of the ifdefs belong to windows and not to the MSVC compiler.
6936
6937         * wtf/FastMalloc.cpp:
6938
6939 2010-12-29  Gavin Barraclough  <barraclough@apple.com>
6940
6941         Reviewed by Sam Weinig.
6942
6943         Bug 51724 - In strict mode string literals should allow \0, but disallow \8 and \9.
6944
6945         * parser/Lexer.cpp:
6946         (JSC::Lexer::parseString):
6947
6948 2010-12-29  Helder Correia  <helder@sencha.com>
6949
6950         Reviewed by Eric Seidel.
6951
6952         <VT> and <FF> are not valid JSON whitespace characters
6953         https://bugs.webkit.org/show_bug.cgi?id=51671
6954
6955         Vertical Tab and Form Feed are not allowed white spaces by the JSON
6956         RFC 4627: http://www.ietf.org/rfc/rfc4627.txt (2. JSON Grammar).
6957
6958         Tests: ietestcenter/Javascript/15.12.1.1-0-2.html
6959                ietestcenter/Javascript/15.12.1.1-0-3.html
6960
6961         * runtime/LiteralParser.cpp:
6962         (JSC::isJSONWhiteSpace):
6963         (JSC::LiteralParser::Lexer::lex):
6964
6965 2010-12-28  Helder Correia  <helder@sencha.com>
6966
6967         Reviewed by Eric Seidel.
6968
6969         JSON.stringify must exist as a function taking 3 parameters
6970         https://bugs.webkit.org/show_bug.cgi?id=51667
6971
6972         The reported function length is 1 instead.
6973
6974         Test: ietestcenter/Javascript/15.12.3-0-2.html
6975
6976         * runtime/JSONObject.cpp:
6977
6978 2010-12-28  Helder Correia  <helder@sencha.com>
6979
6980         Reviewed by Sam Weinig.
6981
6982         JSON.parse must exist as a function taking 2 parameters
6983         https://bugs.webkit.org/show_bug.cgi?id=51666
6984
6985         Support for revivers was introduced in bug 26591, but the function
6986         length has since remained unchanged.
6987
6988         Test: ietestcenter/Javascript/15.12.2-0-2.html
6989
6990         * runtime/JSONObject.cpp:
6991
6992 2010-12-27  Jake Helfert  <jake@jakeonthenet.com>
6993
6994         Reviewed and reworked by Darin Adler.
6995
6996         Building WebKit with Visual Studio 2010 fails due
6997         to ambiguous assignment operator errors.
6998         https://bugs.webkit.org/show_bug.cgi?id=51116
6999
7000         * wtf/NullPtr.h: Added a HAVE(NULLPTR) definition for use with
7001         Platform.h HAVE macro, and included the Visual Studio 2010 compiler
7002         as one of the ones that has nullptr.
7003         * wtf/NullPtr.cpp: Updated condition to match.
7004         
7005         * wtf/PassOwnArrayPtr.h: Don't include the operator=(nullptr_t)
7006         overload if we are compiling in loose mode and the compiler has
7007         nullptr, because assignment of 0 will otherwise encounter
7008         ambiguitity with this overload and the overload for loose mode
7009         that takes a raw pointer. The conditional can be removed when we
7010         get rid of loose mode.
7011         * wtf/PassOwnPtr.h: Ditto.
7012
7013         * wtf/PassRefPtr.h: Don't include the operator=(nullptr_t) overload
7014         if the compiler has nullptr, because assignment of 0 would be
7015         ambiguous with the overload that takes a raw pointer. The conditional
7016         can be removed if we ever decide we no longer need to support
7017         assigning 0, but might need a way to catch that usage on older compilers.
7018         * wtf/RefPtr.h: Ditto.
7019         * wtf/RetainPtr.h: Ditto
7020
7021         * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.cpp,
7022         accidentally omitted when the file was first added.
7023
7024 2010-12-26  Xan Lopez  <xlopez@igalia.com>
7025
7026         Reviewed by Eric Seidel.
7027
7028         [GTK] Add standalone target for JSC
7029         https://bugs.webkit.org/show_bug.cgi?id=51607
7030
7031         * GNUmakefile.am: add convenience target to only build jsc and its
7032         dependencies.
7033
7034 2010-12-24  Patrick Gansterer  <paroga@webkit.org>
7035
7036         Reviewed by Eric Seidel.
7037
7038         [WINCE] Add CPU(MIPS) detection
7039         https://bugs.webkit.org/show_bug.cgi?id=51342
7040
7041         WinCE usually defines MIPS and _MIPS_.
7042
7043         * wtf/Platform.h:
7044
7045 2010-12-23  Gavin Barraclough  <barraclough@apple.com>
7046
7047         Reviewed by Sam Weinig.
7048
7049         Rename RegexCompiler.cpp to RegexPattern.cpp.
7050         Implicitly call compileRegex from RegexPattern's constructor.
7051
7052         * Android.mk:
7053         * CMakeLists.txt:
7054         * GNUmakefile.am:
7055         * JavaScriptCore.gypi:
7056         * JavaScriptCore.pro:
7057         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7058         * JavaScriptCore.xcodeproj/project.pbxproj:
7059         * runtime/RegExp.cpp:
7060         (JSC::RegExp::compile):
7061         * yarr/RegexCompiler.cpp: Removed.
7062         * yarr/RegexCompiler.h: Removed.
7063         * yarr/RegexInterpreter.cpp:
7064         * yarr/RegexJIT.cpp:
7065         * yarr/RegexPattern.cpp: Copied from JavaScriptCore/yarr/RegexCompiler.cpp.
7066         (JSC::Yarr::compileRegex):
7067         (JSC::Yarr::RegexPattern::RegexPattern):
7068         * yarr/RegexPattern.h:
7069
7070 2010-12-23  Patrick Gansterer  <paroga@webkit.org>
7071
7072         Unreviewed build fix for WinCE after r74360.
7073
7074         Move the OS(WINDOWS) section after the OS(WINCE) section
7075         and add missing argument to the getStackMax call.
7076
7077         * wtf/StackBounds.cpp:
7078         (WTF::StackBounds::initialize):
7079
7080 2010-12-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7081
7082         Unreviewed build fix.
7083
7084         [Symbian] Make sure OSAllocatorSymbian builds
7085
7086         This patch only addresses the build problem.
7087
7088         https://bugs.webkit.org/show_bug.cgi?id=51128 tracks the full
7089         (re)implementation of the Symbian allocator.
7090
7091         * wtf/OSAllocatorSymbian.cpp:
7092         (WTF::OSAllocator::reserveUncommitted):
7093         (WTF::OSAllocator::reserveAndCommit):
7094         (WTF::OSAllocator::commit):
7095
7096 2010-12-22  Dan Bernstein  <mitz@apple.com>
7097
7098         Changed WebKitTools to Tools.
7099
7100         * JavaScriptCore.vcproj/JavaScriptCore.sln:
7101
7102 2010-12-22  Dan Bernstein  <mitz@apple.com>
7103
7104         Rubber-stamped by Mark Rowe.
7105
7106         Changed WebKitTools to Tools in script build phases.
7107
7108         * JavaScriptCore.xcodeproj/project.pbxproj:
7109
7110 2010-12-22  Andrei Popescu  <andreip@google.com>
7111
7112         Unreviewed build fix.
7113
7114         Fix Chromium Linux shared library build.
7115         [Chromium] r74431 broke the Chromium Linux shared library build
7116         https://bugs.webkit.org/show_bug.cgi?id=51462
7117
7118         * JavaScriptCore.gyp/JavaScriptCore.gyp:
7119         * JavaScriptCore.gypi:
7120
7121 2010-12-21  Sheriff Bot  <webkit.review.bot@gmail.com>
7122
7123         Unreviewed, rolling out r74462.
7124         http://trac.webkit.org/changeset/74462
7125         https://bugs.webkit.org/show_bug.cgi?id=51449
7126
7127         broke chromium win (Requested by tonyg-cr on #webkit).
7128
7129         * JavaScriptCore.gypi:
7130
7131 2010-12-21  Tony Gentilcore  <tonyg@chromium.org>
7132
7133         Unreviewed build fix.
7134
7135         [chromium] Build fix after r74431
7136         https://bugs.webkit.org/show_bug.cgi?id=51447
7137
7138         * JavaScriptCore.gypi:
7139
7140 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7141
7142         Windows build fix.
7143
7144         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7145
7146 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7147
7148         Windows build fix.
7149
7150         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7151
7152 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7153
7154         Speculative build fix.
7155
7156         * jit/ExecutableAllocator.cpp:
7157         (JSC::ExecutableAllocator::underMemoryPressure):
7158
7159 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7160
7161         Reviewed by Oliver Hunt.
7162
7163         Bug 26276 - Need a mechanism to determine stack extent
7164
7165         This patch adds accurate stack size calculation for:
7166             DARWIN, QNX, UNIX
7167         We still need to fix:
7168             WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE
7169
7170         * wtf/StackBounds.cpp:
7171         (WTF::StackBounds::initialize):
7172
7173 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7174
7175          Reviewed by Geoff Garen.
7176  
7177         <rdar://problem/8765333> CRASH running out of executable memory, loading io9.com
7178         https://bugs.webkit.org/show_bug.cgi?id=51443
7179
7180         The problem here is that each page uses a reasonable amount of memory, (~4Mb),
7181         and that when miultiple pages are open we keep all JIT code for all functions
7182         in all pages alive.
7183
7184         Add a check to detect high memory pressure situations in the executable allocator
7185         (>50% of available memory allocated), and upon a top level entry into JSC (no code
7186         running on the stack) in this situation throw away all JIT code.
7187
7188         * JavaScriptCore.exp:
7189         * debugger/Debugger.cpp:
7190         (JSC::Debugger::recompileAllJSFunctions): stop passing exec to recompile.
7191         * jit/ExecutableAllocator.h:
7192         * jit/ExecutableAllocatorFixedVMPool.cpp:
7193         (JSC::ExecutablePool::systemAlloc): Count allocations.
7194         (JSC::ExecutablePool::systemRelease): Count deallocations.
7195         (JSC::ExecutablePool::underMemoryPressure): Check memory pressure.
7196         * jit/ExecutableAllocatorPosix.cpp:
7197         (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool.
7198         * jit/ExecutableAllocatorWin.cpp:
7199         (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool.
7200         * runtime/Executable.cpp:
7201         (JSC::FunctionExecutable::recompile): Remove ExecState argument to recompile.
7202         * runtime/Executable.h:
7203         * runtime/JSGlobalData.cpp:
7204         (JSC::JSGlobalData::recompileAllJSFunctions): throws away all JIT code.
7205         * runtime/JSGlobalData.h:
7206         * runtime/JSGlobalObject.h:
7207         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): add check / call to throw away.
7208
7209 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7210
7211         Reviewed by Geoff Garen.
7212
7213         <rdar://problem/8241425> JIT executable memory excessive usage due to regex caching
7214         https://bugs.webkit.org/show_bug.cgi?id=51434
7215
7216         Reduce the amount of memory the RegExpCache can hold on to on iOS.
7217         Currently the RegExpCache can hold 256 RegExp objects. If each falls into a separate
7218         ExecutablePool, with a common size of 16Kb, this means we end up holding onto 4Mb of
7219         memory. Firstly, we can reduce this by simply reducing the size of the cache to 32
7220         entries. Secondly, we can use a separate set of ExecutablePools for JIT code generated
7221         from RegExp objects. This helps in two ways (1) it increases the probability that
7222         RegExps in the cache share the same pool, and (2) it means that a RegExp can't end
7223         up holding on to a large ExecutablePool containing a translation of JS code.
7224         (A RegExp could end up keeping a larger RegExp alive that happened to be sharing the
7225         same pool, but large RegExp patterns are less common).
7226
7227         * runtime/JSGlobalData.h:
7228         * runtime/RegExpCache.h:
7229         * yarr/RegexJIT.cpp:
7230         (JSC::Yarr::RegexGenerator::compile):
7231
7232 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7233
7234         Windows build fix.
7235
7236         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7237
7238 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7239
7240         Eeeep! build fix!
7241
7242         * wtf/OSAllocator.h:
7243         (WTF::OSAllocator::decommitAndRelease):
7244
7245 2010-12-21  Gavin Barraclough  <barraclough@apple.com>
7246
7247         Ooops, fixed typo in comment.
7248
7249         * wtf/OSAllocator.h:
7250
7251 2010-12-21  Geoffrey Garen  <ggaren@apple.com>
7252
7253         Reviewed by Gavin Barraclough & Oliver Hunt.
7254
7255         Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements
7256         https://bugs.webkit.org/show_bug.cgi?id=51359
7257         
7258         I think this patch fixes <rdar://problem/8107952> [5.0.1] WER crash in
7259         Heap::allocateBlock (1902752929), and some other leaks and crashes as well.
7260
7261         * Android.mk:
7262         * CMakeLists.txt:
7263         * GNUmakefile.am:
7264         * JavaScriptCore.gypi:
7265         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
7266         * JavaScriptCore.xcodeproj/project.pbxproj: Updated build files.
7267
7268         * runtime/AlignedMemoryAllocator.h: Removed. Supplanted by
7269         PageAllocationAligned.
7270
7271         * runtime/Collector.cpp:
7272         (JSC::Heap::destroy):
7273         (JSC::Heap::allocateBlock):
7274         (JSC::Heap::freeBlock):
7275         (JSC::Heap::addWeakGCHandle):
7276         * runtime/Collector.h: Switched from AlignedMemoryAllocator to
7277         PageAllocationAligned.
7278
7279         * runtime/GCHandle.cpp:
7280         * runtime/GCHandle.h: Ditto.
7281
7282         * wtf/PageAllocation.h:
7283         (WTF::PageAllocation::PageAllocation): Removed aligned memory allocation
7284         functions. Supplanted by PageAllocationAligned.
7285
7286         * wtf/PageAllocationAligned.cpp: Added.
7287         (WTF::PageAllocationAligned::allocate):
7288         (WTF::PageAllocationAligned::deallocate):
7289         * wtf/PageAllocationAligned.h: Added.
7290         (WTF::PageAllocationAligned::PageAllocationAligned): New cross-platform
7291         class for doing aligned memory allocation. This class properly matches
7292         allocation and deallocation library calls, fixing a long-standing bug
7293         in PageAllocation.
7294
7295         * wtf/Platform.h: Removed some defunction VM platform defines.
7296
7297         * wtf/wtf.pri: Updated build files.
7298
7299 2010-12-21  Oliver Hunt  <oliver@apple.com>
7300
7301         Reviewed by Gavin Barraclough.
7302
7303         ASSERTION FAILED: base->index() == m_codeBlock->argumentsRegister() while loading taobao.com
7304         https://bugs.webkit.org/show_bug.cgi?id=49006
7305
7306         This problem was caused by having a parameter named 'arguments'.
7307         The fix is to treat parameters named 'arguments' as shadowing
7308         the actual arguments property, and so logically turn the function
7309         into one that doesn't "use" arguments.
7310
7311         This required a bit of fiddling in the parser to ensure we correctly
7312         propagate the 'feature' of shadowing is set correctly.
7313
7314         * bytecompiler/BytecodeGenerator.cpp:
7315         (JSC::BytecodeGenerator::createArgumentsIfNecessary):
7316           Change assertion to an early return as we may now reference
7317           a property named 'arguments' without being in a function that
7318           has the ArgumentsFeature
7319         * parser/JSParser.cpp:
7320         (JSC::JSParser::Scope::Scope):
7321         (JSC::JSParser::Scope::declareParameter):
7322         (JSC::JSParser::Scope::shadowsArguments):
7323         (JSC::JSParser::parseProgram):
7324         (JSC::JSParser::parseFormalParameters):
7325         (JSC::JSParser::parseFunctionInfo):
7326         * parser/Nodes.h:
7327         (JSC::ScopeNode::usesArguments):
7328
7329 2010-12-21  Daniel Bates  <dbates@rim.com>
7330
7331         Reviewed by Eric Seidel and Darin Adler.
7332
7333         Deallocate GregorianDateTime.timeZone (if allocated) when copying so that we don't leak memory.
7334         https://bugs.webkit.org/show_bug.cgi?id=51367
7335
7336         Inspired by a patch by George Staikos.
7337
7338         * wtf/DateMath.cpp:
7339         (JSC::msToGregorianDateTime): Modified to set timeZone to nullptr since timeZone is now
7340         of type OwnPtrArray<char>.
7341         * wtf/DateMath.h: Change timeZone to type OwnArrayPtr<char>; Removed destructor since it is no longer needed.
7342         (JSC::GregorianDateTime::GregorianDateTime): Modified to use OwnPtrArray semantics for timeZone.
7343         (JSC::GregorianDateTime::operator tm): Ditto.
7344         (JSC::GregorianDateTime::copyFrom): Ditto.
7345
7346 2010-12-21  Sheriff Bot  <webkit.review.bot@gmail.com>
7347
7348         Unreviewed, rolling out r74402.
7349         http://trac.webkit.org/changeset/74402
7350         https://bugs.webkit.org/show_bug.cgi?id=51402
7351
7352         This patch broke the Windows 7 Release Layout Tests (Requested
7353         by jessieberlin on #webkit).
7354
7355         * wtf/StackBounds.cpp:
7356         (WTF::estimateStackBound):
7357         (WTF::StackBounds::initialize):
7358
7359 2010-12-21  Peter Varga  <pvarga@inf.u-szeged.hu>
7360
7361         Reviewed by Csaba Osztrogonác.
7362
7363         Unify the name of parentheses in YARR: rename parenthesis to
7364         parentheses.
7365
7366         * yarr/RegexCompiler.cpp:
7367         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
7368
7369 2010-12-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7370
7371         Reviewed by Andreas Kling.
7372
7373         [Qt] Set BUILDING_QT__ consistently
7374         https://bugs.webkit.org/show_bug.cgi?id=51341
7375
7376         * JavaScriptCore.pri: Remove the definition of BUILDING_QT__ as it
7377         is already defined in WebKit.pri.
7378
7379 2010-12-20  Gavin Barraclough  <barraclough@apple.com>
7380
7381         Reviewed by Oliver Hunt.
7382
7383         Bug 26276 - Need a mechanism to determine stack extent
7384
7385         This patch adds accurate stack size calculation for:
7386             DARWIN, WINDOWS, QNX, UNIX
7387         We still need to fix:
7388             SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE
7389
7390         * wtf/StackBounds.cpp:
7391         (WTF::StackBounds::initialize):
7392
7393 2010-12-20  Gavin Barraclough  <barraclough@apple.com>
7394
7395         PPC build fix; stop using std::swap on PageAllocation/PageReservation,
7396         this was failing on some compilers since the lack of default construction
7397         for the m_executable/m_writable fields meant the value being swapped may
7398         not have been fully initialized.
7399
7400         * wtf/PageAllocation.h:
7401         (WTF::PageAllocation::deallocate):
7402         * wtf/PageBlock.h:
7403         * wtf/PageReservation.h:
7404         (WTF::PageReservation::deallocate):
7405
7406 2010-12-20  Oliver Hunt  <oliver@apple.com>
7407
7408         Reviewed by Geoffrey Garen.
7409
7410         |delete name| in strict mode code should be an early error
7411         https://bugs.webkit.org/show_bug.cgi?id=50431
7412
7413         Disallow the |delete IDENTIFIER| production in strict mode, and removed
7414         a bunch of now unnecessary code.
7415
7416         * parser/JSParser.cpp:
7417         (JSC::JSParser::Scope::collectFreeVariables):
7418         (JSC::jsParse):
7419         (JSC::JSParser::parseProgram):
7420         (JSC::JSParser::parseUnaryExpression):
7421         * parser/JSParser.h:
7422         * parser/Parser.cpp:
7423         (JSC::Parser::parse):
7424         * parser/Parser.h:
7425         (JSC::Parser::parse):
7426
7427 2010-12-20  Gavin Barraclough  <barraclough@apple.com>
7428
7429         Reviewed by Olver Hunt.
7430
7431         Bug 51358 - Should check stack depth rather than using recursion limits in byte compilation
7432
7433         The current implementation of recursion limit checking is not safe on smaller stacks.
7434         Switch to using a common mechanism, shared with the parser, to check recursion limits.
7435
7436         Make bytecompiler use StackBounds. Empirical testing shows emitStrcat to have the largest
7437         footprint on the stack, at just under 1k on x86-64.  Given this, the default recursion
7438         check (requiring 4k of available space to recurse) seems reasonable.
7439
7440         * bytecompiler/BytecodeGenerator.cpp:
7441         (JSC::BytecodeGenerator::BytecodeGenerator):
7442         * bytecompiler/BytecodeGenerator.h:
7443         (JSC::BytecodeGenerator::emitNode):
7444         (JSC::BytecodeGenerator::emitNodeInConditionContext):
7445         * bytecompiler/NodesCodegen.cpp:
7446         (JSC::BinaryOpNode::emitStrcat):
7447
7448 2010-12-20  Tony Gentilcore  <tonyg@chromium.org>
7449
7450         Unreviewed build fix.
7451
7452         Include pthread to fix chromium mac build (broken by r74360)
7453         https://bugs.webkit.org/show_bug.cgi?id=51356
7454
7455         * wtf/StackBounds.cpp:
7456
7457 2010-12-20  Xan Lopez  <xlopez@igalia.com>
7458
7459         Reviewed by Gustavo Noronha.
7460
7461         * GNUmakefile.am: add missing files.
7462
7463 2010-12-18  Gavin Barraclough  <barraclough@apple.com>
7464
7465         Reviewed by Oliver Hunt.
7466
7467         Bug 26276 - Need a mechanism to determine stack extent
7468
7469         This patch adds a class 'StackBounds', to hold information about the machine stack.
7470         The implementation of this class broadly adheres to the current implmentation of
7471         stack limit checking, and as such does not solve the problem of determining stack
7472         extent, but gives us a common place to do so.
7473
7474         Currently two mechanism are provided to determine the stack origin (the point the
7475         stack is growing away from). currentThreadStackBase() in Collector provides a
7476         more accurate determination of the stack origin, so use this to calculate
7477         StackBounds::m_origin; WTFThreadData::approximatedStackStart is less accurate, and
7478         as such can be removed.  Cache the StackBounds on WTFThreadData such that they
7479         need only be determined once per thread, and for non-API contexts cache this
7480         information in JSGlobalData, to save a thread-specific access.
7481
7482         For the time being retain the estimate of stack size used by JSC's parser
7483         (128 * sizeof(void*) * 1024), with a view to replacing this with something more
7484         accurate in the near future.
7485
7486         * parser/JSParser.cpp:
7487         (JSC::JSParser::canRecurse):
7488         (JSC::JSParser::JSParser):
7489             Change to use StackBounds.
7490         * runtime/Collector.cpp:
7491         (JSC::Heap::registerThread):
7492         (JSC::Heap::markCurrentThreadConservativelyInternal):
7493             Change to use StackBounds, cached on JSGlobalData.
7494         * runtime/JSGlobalData.cpp:
7495         (JSC::JSGlobalData::JSGlobalData):
7496         * runtime/JSGlobalData.h:
7497         (JSC::JSGlobalData::stack):
7498             Add a cached copy of StackBounds.
7499         * wtf/StackBounds.cpp: Copied from JavaScriptCore/runtime/Collector.cpp.
7500         (WTF::estimateStackBound):
7501         (WTF::StackBounds::initialize):
7502         (WTF::getStackMax):
7503             Copy code from Collector.cpp to determine stack origin.
7504         * wtf/StackBounds.h: Added.
7505         (WTF::StackBounds::StackBounds):
7506             No argument constructor; returns a null StackBounds.
7507         (WTF::StackBounds::currentThreadStackBounds):
7508             Returns a StackBounds object representing the stack limits
7509             of the current thread.
7510         (WTF::StackBounds::origin):
7511             Returns to stack origin (the point the stack is growing away
7512             from; the highest extent of the stack on machines where the
7513             stack grows downwards.
7514         (WTF::StackBounds::recursionLimit):
7515             Returns a limit value that is 'a comfortable distance from
7516             the end of the stack'. Our concept of this is currently 1 page
7517             away from the end, however the default value may be tuned in
7518             the future, and clients may override passing a larger delta;
7519             should only be called on StackBounds object representing the
7520             stack of the thread this method is called on (checked by
7521             checkConsistency).
7522         (WTF::StackBounds::recursionCheck):
7523             Checks whether we are currently 'a comfortable distance from
7524             the end of the stack'. Our concept of this is currently 1 page
7525             away from the end, however the default value may be tuned in
7526             the future, and clients may override passing a larger delta
7527             to apply when checking, if they wish to do so. This method
7528             should only be called on StackBounds object representing the
7529             stack of the thread this method is called on (checked by
7530             checkConsistency).
7531         (WTF::StackBounds::current):
7532             Approximate current stack position. On machines where the stack
7533             is growing downwards this is the lowest address that might need
7534             conservative collection.
7535         (WTF::StackBounds::isGrowingDownward):
7536             True for all platforms other than WINCE, which has to check.
7537         (WTF::StackBounds::checkConsistency):
7538             This is called in methods that shoulds only be operating on a
7539             valid set of bounds; as such we expect m_origin != m_bounds
7540             (i.e. stack size != zero) - we're really testing that this
7541             object is not null (the constructor initializes both fields
7542             to zero).  Also checks that current() is within the stack's
7543             bounds.
7544         * wtf/WTFThreadData.cpp:
7545         (WTF::WTFThreadData::WTFThreadData):
7546         * wtf/WTFThreadData.h:
7547         (WTF::WTFThreadData::stack):
7548             Add the StackBounds member variable.
7549
7550 2010-12-17  Geoffrey Garen  <ggaren@apple.com>
7551
7552         Reviewed by Sam Weinig.
7553
7554         Factored common page set management into a new PageBlock base class
7555         https://bugs.webkit.org/show_bug.cgi?id=51285
7556
7557         * Android.mk:
7558         * CMakeLists.txt:
7559         * GNUmakefile.am:
7560         * JavaScriptCore.gypi:
7561         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
7562         * JavaScriptCore.xcodeproj/project.pbxproj:
7563         * interpreter/RegisterFile.h:
7564         (JSC::RegisterFile::RegisterFile):
7565         * jit/ExecutableAllocator.cpp:
7566         (JSC::ExecutableAllocator::intializePageSize):
7567         * wtf/PageAllocation.cpp: Removed.
7568         * wtf/PageAllocation.h:
7569         (WTF::PageAllocation::deallocate):
7570         (WTF::PageAllocation::PageAllocation):
7571         * wtf/PageReservation.h:
7572         (WTF::PageReservation::commit):
7573         (WTF::PageReservation::decommit):
7574         (WTF::PageReservation::deallocate):
7575         (WTF::PageReservation::PageReservation):
7576         * wtf/wtf.pri:
7577
7578 2010-12-17  Michael Saboff  <msaboff@apple.com>
7579
7580         Reviewed by Oliver Hunt.
7581
7582         RegExp Jit'ed expression crashes clicking link on yelp.com
7583         https://bugs.webkit.org/show_bug.cgi?id=51284
7584
7585         When transitioning between an non-repeating beginning of line
7586         anchored expression and the remaining refactored repeating 
7587         expression, we should not clear any residual datalabel in 
7588         state's m_backtrack.  It will be resolved and cleared in subsequent
7589         code when linkAlternativeBacktracks() is called for the repeating
7590         alternative(s).
7591
7592         * yarr/RegexJIT.cpp:
7593         (JSC::Yarr::RegexGenerator::BacktrackDestination::clear):
7594         (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack):
7595
7596 2010-12-17  Dan Bernstein  <mitz@apple.com>
7597
7598         Rubber-stamped by Mark Rowe.
7599
7600         Updated for the renaming of WebKitTools to Tools
7601
7602         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
7603
7604 2010-12-17  Ariya Hidayat  <ariya@sencha.com>
7605
7606         Reviewed by Oliver Hunt.
7607
7608         [JSC] parseAssignmentExpression should use TreeBuilder::CreatesAST
7609         https://bugs.webkit.org/show_bug.cgi?id=51268
7610
7611         * parser/JSParser.cpp:
7612         (JSC::JSParser::parseAssignmentExpression):
7613
7614 2010-12-17  Geoffrey Garen  <ggaren@apple.com>
7615
7616         Reviewed by Oliver Hunt.
7617
7618         Removed RChunk from PageAllocation/PageReservation, since it's now unused.
7619         https://bugs.webkit.org/show_bug.cgi?id=51276
7620
7621         * wtf/PageAllocation.h:
7622         (WTF::PageAllocation::PageAllocation):
7623         * wtf/PageReservation.h:
7624         (WTF::PageReservation::PageReservation):
7625
7626 2010-12-17  Oliver Hunt  <oliver@apple.com>
7627
7628         Reviewed by Gavin Barraclough.
7629
7630         Incorrect encoding of some constants in ARMv7 JIT
7631         https://bugs.webkit.org/show_bug.cgi?id=51273
7632         <rdar://problem/8650210>
7633
7634         When using immediate encoding 3 we need to write the byte
7635         that holds a duplicated value.
7636
7637         * assembler/ARMv7Assembler.h:
7638         (JSC::ARMThumbImmediate::makeEncodedImm):
7639
7640 2010-12-16  Evan Martin  <evan@chromium.org>
7641
7642         Reviewed by Darin Fisher.
7643
7644         [chromium] useless warnings when building on Windows
7645         https://bugs.webkit.org/show_bug.cgi?id=50985
7646
7647         Disable some compiler warnings that aren't indicative of real problems.
7648
7649         * JavaScriptCore.gyp/JavaScriptCore.gyp:
7650
7651 2010-12-16  Pratik Solanki  <psolanki@apple.com>
7652
7653         Reviewed by Geoffrey Garen.
7654
7655         https://bugs.webkit.org/show_bug.cgi?id=51166
7656         ExecutableAllocator::cacheFlush should call sys_cache_control
7657
7658         * jit/ExecutableAllocator.h:
7659         (JSC::ExecutableAllocator::cacheFlush): Use the more correct and forward looking API -
7660         sys_cache_control(kCacheFunctionPrepareForExecution,...).
7661
7662 2010-12-16  Ariya Hidayat  <ariya@sencha.com>
7663
7664         Reviewed by Andreas Kling.
7665
7666         [JSC] Const correctness in ASTBuilder and SyntaxChecker
7667         https://bugs.webkit.org/show_bug.cgi?id=51141
7668
7669         * parser/ASTBuilder.h:
7670         (JSC::ASTBuilder::getName):
7671         (JSC::ASTBuilder::getType):
7672         (JSC::ASTBuilder::isResolve):
7673         * parser/SyntaxChecker.h:
7674         (JSC::SyntaxChecker::operatorStackPop):
7675
7676 2010-12-15  Kenneth Russell  <kbr@google.com>
7677
7678         Reviewed by James Robinson.
7679
7680         Web Audio API: port FFTFrame to MKL
7681         https://bugs.webkit.org/show_bug.cgi?id=50986
7682
7683         Fixed bug in log2 emulation function provided for Windows port of
7684         Web Audio API.
7685
7686         * wtf/MathExtras.h:
7687         (log2):
7688
7689 2010-12-14  Mark Rowe  <mrowe@apple.com>
7690
7691         Reviewed by Sam Weinig.
7692
7693         <http://webkit.org/b/51064> Reproducible crash inside WebCore::MediaPlayerPrivateQTKit::createQTMovie when loading <video>
7694
7695         * wtf/text/WTFString.h: Prevent String from being implicitly convertable to bool.
7696         It was previously implicitly convertible to bool on Mac via operator NSString*,
7697         but since that always has a non-zero return value it would give unexpected results.
7698
7699 2010-12-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
7700
7701         Reviewed by Eric Seidel.
7702
7703         [Qt] [Symbian] Do not use pkg-config on Symbian as it is not supported
7704         https://bugs.webkit.org/show_bug.cgi?id=50231
7705
7706         Guard CONFIG+=link_pkgconfig with !symbian.
7707
7708         * jsc.pro:
7709
7710 2010-12-14  Cameron Zwarich  <zwarich@apple.com>
7711
7712         Not reviewed.
7713
7714         Revert accidental change disabling the JIT for most platforms.
7715
7716         * wtf/Platform.h:
7717
7718 2010-12-13  Cameron Zwarich  <zwarich@apple.com>
7719
7720         Reviewed by Eric Seidel.
7721
7722         Clang fails to build the JSC interpreter
7723         https://bugs.webkit.org/show_bug.cgi?id=51016
7724
7725         Clang does not allow indirect gotos out of scopes with cleanup. GCC 4.2 allows
7726         them, but it does not correctly generate the cleanup, causing a leak if the
7727         cleanup decrements a reference count.
7728
7729         * interpreter/Interpreter.cpp:
7730         (JSC::Interpreter::privateExecute): Put an Identifier into its own scope.
7731
7732 2010-12-14  Carlos Garcia Campos  <cgarcia@igalia.com>
7733
7734         Reviewed by Martin Robinson.
7735
7736         [GTK] Simplify context-menu handling code
7737         https://bugs.webkit.org/show_bug.cgi?id=49658
7738
7739         * wtf/PlatformRefPtr.h: Add leakRef()
7740
7741 2010-12-13  Cameron Zwarich  <zwarich@apple.com>
7742
7743         Reviewed by Gavin Barraclough.
7744
7745         JavaScriptCore should not use "asm volatile" outside of a function
7746         https://bugs.webkit.org/show_bug.cgi?id=50991
7747
7748         * jit/JITStubs.cpp: Remove the volatile keyword from asm statements.
7749
7750 2010-12-13  Steve Falkenburg  <sfalken@apple.com>
7751
7752         Windows production build fix.
7753         Try copying ICU 4.6 in addition to 4.4 and 4.2.
7754
7755         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
7756
7757 2010-12-13  Michael Saboff  <msaboff@apple.com>
7758
7759         Reviewed by Oliver Hunt.
7760
7761         REGRESSION: mobileme mail viewing is broken
7762         https://bugs.webkit.org/show_bug.cgi?id=50884
7763
7764         Fixed problem where simple parenthesis (those without capture and
7765         with a fixed count) where not propagating backtrack to labels for 
7766         nested parentheses.  Also added the nesting level for the parentheses 
7767         state created in that case as well.
7768
7769         * yarr/RegexJIT.cpp:
7770         (JSC::Yarr::RegexGenerator::BacktrackDestination::copyBacktrackToLabel):
7771         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
7772         (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7773         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7774
7775 2010-12-13  Peter Varga  <pvarga@inf.u-szeged.hu>
7776
7777         Reviewed by Gavin Barraclough.
7778
7779         Reduce the size of the RegexStackSpaceForBackTrackInfoParentheses in YARR
7780         https://bugs.webkit.org/show_bug.cgi?id=49385
7781
7782         Remove the BackTrackInfoParentheses struct prevBegin and prevEnd members.
7783
7784         * yarr/RegexInterpreter.cpp:
7785         (JSC::Yarr::Interpreter::matchParentheses):
7786         (JSC::Yarr::Interpreter::backtrackParentheses):
7787         * yarr/RegexPattern.h:
7788
7789 2010-12-10  Michael Saboff  <msaboff@apple.com>
7790
7791         Reviewed by Gavin Barraclough.
7792
7793         REGRESSION Hang inside Yarr::RegexCodeBlock::execute when visiting
7794         bugs.webkit.org
7795         https://bugs.webkit.org/show_bug.cgi?id=50816
7796
7797         First nested parentheses of the second or greater alternative
7798         where backtracking to the prior parentheses.  Changed the default
7799         handling of initial parentheses for all alternatives to go back
7800         to the immediate outer paren.
7801
7802         * yarr/RegexJIT.cpp:
7803         (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
7804         (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
7805         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
7806         (JSC::Yarr::RegexGenerator::TermGenerationState::getTermIndex):
7807         (JSC::Yarr::RegexGenerator::TermGenerationState::setParenthesesTail):
7808         (JSC::Yarr::RegexGenerator::TermGenerationState::getParenthesesTail):
7809         (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
7810         (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks):
7811         (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7812         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7813
7814 2010-12-11  Patrick Gansterer  <paroga@webkit.org>
7815
7816         Reviewed by Darin Adler.
7817
7818         Add an overload to makeString for Vector<char>
7819         https://bugs.webkit.org/show_bug.cgi?id=50123
7820
7821         Also cleanup StringTypeAdapter.
7822
7823         * wtf/text/StringConcatenate.h:
7824
7825 2010-12-10  Siddharth Mathur  <siddharth.mathur@nokia.com>
7826
7827         Reviewed by Eric Seidel.
7828
7829         [Qt] Build fix for Symbian: don't compile POSIX memory management implementation 
7830         https://bugs.webkit.org/show_bug.cgi?id=50707
7831
7832         * wtf/wtf.pri:
7833
7834 2010-12-10  Steve Falkenburg  <sfalken@apple.com>
7835
7836         Windows production build fix.
7837         
7838         Don't stop if react-to-vsprops-changes.py exits with an error,
7839         since this will occur in production builds.
7840
7841         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
7842
7843 2010-12-10  Brian Weinstein  <bweinstein@apple.com>
7844
7845         Reviewed by Adam Roben.
7846
7847         Turn on USE(CROSS_PLATFORM_CONTEXT_MENUS) for Windows.
7848
7849         * wtf/Platform.h:
7850
7851 2010-12-10  Martin Robinson  <mrobinson@igalia.com>
7852
7853         Unreviewed, rolling out r73703.
7854         http://trac.webkit.org/changeset/73703
7855         https://bugs.webkit.org/show_bug.cgi?id=49658
7856
7857         This patch is causing crashes on the GTK+ bots.
7858
7859         * wtf/PlatformRefPtr.h:
7860
7861 2010-12-10  Patrick Gansterer  <paroga@webkit.org>
7862
7863         Reviewed by Eric Seidel.
7864
7865         Cleanup StringWx.cpp
7866         https://bugs.webkit.org/show_bug.cgi?id=50525
7867
7868         Use StringImpl::createUninitialized to avoid memcpy and fix style issues.
7869
7870         * wtf/wx/StringWx.cpp:
7871         (WTF::String::String):
7872
7873 2010-12-10  Carlos Garcia Campos  <cgarcia@igalia.com>
7874
7875         Reviewed by Martin Robinson.
7876
7877         [GTK] Simplify context-menu handling code
7878         https://bugs.webkit.org/show_bug.cgi?id=49658
7879
7880         * wtf/PlatformRefPtr.h:
7881
7882 2010-12-09  Michael Saboff  <msaboff@apple.com>
7883
7884         Reviewed by Gavin Barraclough.
7885
7886         REGRESSION (r73065?): A regex no longer works 
7887         https://bugs.webkit.org/show_bug.cgi?id=50570
7888
7889         Changed the handling of adjacent parentheses backtracks in two ways.
7890         First, only outer most paren backtracks default to back tracking
7891         to the "next character" looping code.  Second, added a jump around 
7892         backtracks that fall through to the next backtrack where the
7893         second backtrack has some greedy processing before the backtracking
7894         from outside the parentheses code.
7895         Also cleaned up extraneous white spce, removing white space at the
7896         end of or that makes up a whole line.
7897
7898         * yarr/RegexJIT.cpp:
7899         (JSC::Yarr::RegexGenerator::GenerationState::GenerationState):
7900         (JSC::Yarr::RegexGenerator::GenerationState::incrementParenNestingLevel):
7901         (JSC::Yarr::RegexGenerator::GenerationState::decrementParenNestingLevel):
7902         (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
7903         (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail):
7904         (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
7905         (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration):
7906         (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7907         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7908
7909 2010-12-09  Michael Saboff  <msaboff@apple.com>
7910
7911         Reviewed by Geoffrey Garen.
7912
7913         Addressed the "FIXME" issues in array sort for toString() methods that
7914         mutate the array in either size or contents.  The change is to mark
7915         the temporary array contents so that they are not garbage collected
7916         and to make sure the array is large enough to hold the contents
7917         of the sorted temporary vector.
7918         https://bugs.webkit.org/show_bug.cgi?id=50718
7919
7920         * runtime/Collector.cpp:
7921         (JSC::Heap::addTempSortVector):
7922         (JSC::Heap::removeTempSortVector):
7923         (JSC::Heap::markTempSortVectors):
7924         (JSC::Heap::markRoots):
7925         * runtime/Collector.h:
7926         * runtime/JSArray.cpp:
7927         (JSC::JSArray::sort):
7928         * runtime/JSValue.h:
7929
7930 2010-12-09  Michael Saboff  <msaboff@apple.com>
7931
7932         Reviewed by Darin Adler.
7933
7934         Changed setting of backtrack labels to not overwrite a prior
7935         label.  Where losing prior labe which then reverted back to 
7936         next character label.
7937         https://bugs.webkit.org/show_bug.cgi?id=50579
7938
7939         * yarr/RegexJIT.cpp:
7940         (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel):
7941
7942 2010-12-08  Gavin Barraclough  <barraclough@apple.com>
7943
7944         Reviewed by Sam Weinig.
7945
7946         Permit Character Class Escape in CharacterRange in Character Class.
7947         https://bugs.webkit.org/show_bug.cgi?id=50483
7948         https://bugs.webkit.org/show_bug.cgi?id=50538
7949         https://bugs.webkit.org/show_bug.cgi?id=50654
7950         https://bugs.webkit.org/show_bug.cgi?id=50646
7951
7952         We recently tightened up our spec conformance in generating syntax
7953         error in these cases, however testing in the wild has shown this
7954         to be problematic. This reverts the previous change in allowing
7955         class escapes (e.g. \d) in ranges in character classes ([]), but
7956         does retain some closer conformance to the spec in only allowing
7957         ranges that would be permitted per the grammar rules in the spec
7958         (e.g. in /[\d-a-z]/ "a-z" cannot be considered as a range).
7959
7960         * yarr/RegexParser.h:
7961         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
7962         (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
7963         (JSC::Yarr::Parser::parse):
7964
7965 2010-12-08  Geoffrey Garen  <ggaren@apple.com>
7966
7967         Reviewed by Sam Weinig.
7968
7969         Try to fix crash-on-launch seen on Windows builder.
7970
7971         * wtf/OSAllocatorWin.cpp:
7972         (WTF::OSAllocator::release): Disabled an ASSERT, because it checks for
7973         a bug that hasn't been fixed yet.
7974
7975 2010-12-08  Geoffrey Garen  <ggaren@apple.com>
7976
7977         Try to fix Windows build.
7978
7979         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file.
7980
7981 2010-12-08  Geoffrey Garen  <ggaren@apple.com>
7982
7983         Try to fix Windows build.
7984
7985         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def
7986         file to remove a symbol -- the next build failure will say which symbol
7987         to add back.
7988
7989 2010-12-08  Geoffrey Garen  <ggaren@apple.com>
7990
7991         Try to fix Windows build.
7992
7993         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file.
7994
7995 2010-12-08  Geoffrey Garen  <ggaren@apple.com>
7996
7997         Try to fix GTK Linux build.
7998
7999         * jit/ExecutableAllocator.cpp:
8000         (JSC::ExecutablePool::systemAlloc):
8001         * runtime/AlignedMemoryAllocator.h:
8002         (JSC::::AlignedMemoryAllocator): Updated for Usage enum moving to OSAllocator.
8003
8004 2010-12-07  Geoffrey Garen  <ggaren@apple.com>
8005
8006         Reviewed by Sam Weinig.
8007
8008         Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator
8009         https://bugs.webkit.org/show_bug.cgi?id=50653
8010
8011         * JavaScriptCore.exp: Updated for new function signature.
8012
8013         * interpreter/RegisterFile.h:
8014         (JSC::RegisterFile::RegisterFile):
8015         (JSC::RegisterFile::grow):
8016         * jit/ExecutableAllocatorFixedVMPool.cpp:
8017         (JSC::FixedVMPoolAllocator::reuse):
8018         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): Removed checkAllocatedOkay.
8019         OSAllocator is now the central location for verifying that allocation succeeds.
8020         This allowed me to remove some complicating cross-platform cruft.
8021
8022         * runtime/AlignedMemoryAllocator.h:
8023         (JSC::::allocate): Updated for code motion.
8024
8025         * wtf/OSAllocator.h: Added Usage, writable, and executable parameters, to
8026         support VM features required by clients of PageAllocation and PageReservation.
8027
8028         * wtf/OSAllocatorPosix.cpp:
8029         (WTF::OSAllocator::reserve):
8030         (WTF::OSAllocator::reserveAndCommit):
8031         (WTF::OSAllocator::commit): Moved PageAllocation support for randomizing
8032         executable memory here.
8033
8034         * wtf/OSAllocatorSymbian.cpp:
8035         (WTF::OSAllocator::reserve):
8036         (WTF::OSAllocator::reserveAndCommit):
8037         (WTF::OSAllocator::commit): Updated for new function signatures.
8038
8039         * wtf/OSAllocatorWin.cpp:
8040         (WTF::protection):
8041         (WTF::OSAllocator::reserve):
8042         (WTF::OSAllocator::reserveAndCommit):
8043         (WTF::OSAllocator::commit):
8044         (WTF::OSAllocator::release): Updated for new function signatures. Moved
8045         some protection-related and WINCE-related code from PageAllocation here.
8046
8047         * wtf/PageAllocation.cpp: Nixed cross-platform lastError abstraction, since
8048         it was only used by checkAllocatedOkay, which is now gone.
8049
8050         * wtf/PageAllocation.h:
8051         (WTF::PageAllocation::allocate):
8052         (WTF::PageAllocation::allocateAligned):
8053         (WTF::PageAllocation::deallocate):
8054         (WTF::PageAllocation::isPowerOfTwo):
8055         (WTF::PageAllocation::systemAllocateAligned): Removed system* functions,
8056         and replaced calls to them with calls to OSAllocator.
8057
8058         * wtf/PageReservation.h:
8059         (WTF::PageReservation::commit):
8060         (WTF::PageReservation::decommit):
8061         (WTF::PageReservation::reserve):
8062         (WTF::PageReservation::deallocate):
8063         (WTF::PageReservation::PageReservation): Ditto. Added m_writable and
8064         m_executable because these flags are now required when committing memory.
8065
8066 2010-12-08  Chris Rogers  <crogers@google.com>
8067
8068         Reviewed by Kenneth Russell.
8069
8070         Add web audio files to mac port Xcode projects
8071         https://bugs.webkit.org/show_bug.cgi?id=50721
8072
8073         * JavaScriptCore.xcodeproj/project.pbxproj:
8074
8075 2010-12-08  Oliver Hunt  <oliver@apple.com>
8076
8077         Reviewed by Gavin Barraclough.
8078
8079         Marking the active global object re-enters through markConservatively
8080         https://bugs.webkit.org/show_bug.cgi?id=50711
8081
8082         draining of the MarkStack is not allowed to be re-entrant, we got away
8083         with this simply due to the logic in MarkStack::drain implicitly handling
8084         changes that could be triggered by the re-entry.
8085
8086         Just to be safe this patch removes the re-entry through markConservatively
8087         so we don't accidentally introduce such an issue in future.  I've also
8088         added an assertion to catch such errors.
8089
8090         * runtime/Collector.cpp:
8091         (JSC::Heap::markConservatively):
8092         (JSC::Heap::markCurrentThreadConservativelyInternal):
8093         (JSC::Heap::markOtherThreadConservatively):
8094         * runtime/JSArray.h:
8095         (JSC::MarkStack::drain):
8096         * runtime/MarkStack.h:
8097         (JSC::MarkStack::MarkStack):
8098
8099 2010-12-08  Chris Marrin  <cmarrin@apple.com>
8100
8101         Reviewed by Simon Fraser.
8102
8103         Share code between Mac (CA) and Windows (CACF) GraphicsLayer implementations
8104         https://bugs.webkit.org/show_bug.cgi?id=49388
8105
8106         Added a WTF_PLATFORM_CA flag. Set when platform is MAC or IOS or (WINDOWS AND CG)
8107         which was decided was the best way to identify a build with CoreAnimation
8108
8109         * wtf/Platform.h:
8110
8111 2010-12-07  Anders Carlsson  <andersca@apple.com>
8112
8113         Build fix follow up build fix.
8114
8115         * pcre/pcre_ucp_searchfuncs.cpp:
8116         (jsc_pcre_ucp_othercase):
8117
8118 2010-12-07  Anders Carlsson  <andersca@apple.com>
8119
8120         Reviewed by Darin Adler.
8121
8122         Fix clang++ build
8123         https://bugs.webkit.org/show_bug.cgi?id=50645
8124
8125         Explicitly cast offset to int.
8126
8127         * pcre/pcre_ucp_searchfuncs.cpp:
8128         (jsc_pcre_ucp_othercase):
8129
8130 2010-12-07  Kenneth Russell  <kbr@google.com>
8131
8132         Reviewed by David Levin.
8133
8134         Fix compilation of core web audio files on Windows
8135         https://bugs.webkit.org/show_bug.cgi?id=50603
8136
8137         Added log2 definition to MathExtras.h on Windows platform.
8138
8139         * wtf/MathExtras.h:
8140         (log2):
8141
8142 2010-12-07  Antti Koivisto  <antti@apple.com>
8143
8144         Reviewed by Gavin Barraclough.
8145
8146         https://bugs.webkit.org/show_bug.cgi?id=50412
8147         http://www.wunderground.com/US/CA/Hayward.html causes big memory spike during page loading 
8148         
8149         Creating a substring caused the original string be flattened if it was in the rope form. This could use
8150         significant amount of memory by reducing buffer sharing between strings.
8151         
8152         Add a rope specific substring function that constructs the substring by reusing the rope fibers
8153         instead of flattening the rope.
8154         
8155         No change observed in SunSpider.
8156
8157         * runtime/JSString.cpp:
8158         (JSC::JSString::substringFromRope):
8159         * runtime/JSString.h:
8160         (JSC::jsSubstring):
8161         * runtime/StringPrototype.cpp:
8162         (JSC::stringProtoFuncSubstr):
8163         (JSC::stringProtoFuncSubstring):
8164
8165 2010-12-06  Geoffrey Garen  <ggaren@apple.com>
8166
8167         Reviewed by Gavin Barraclough.
8168
8169         Simplified some ASLR-related code in PageAllocation/Reservation
8170         https://bugs.webkit.org/show_bug.cgi?id=50599
8171         
8172         Removed reserveAt, allocateAt, and friends, since they all existed to
8173         serve one feature: ASLR for executable memory on x86_64 on Mac. Moved
8174         ASLR code down into systemAllocate -- now, any time you allocate
8175         executable memory on a supporting platform, the memory's location is
8176         randomized.
8177
8178         * jit/ExecutableAllocatorFixedVMPool.cpp:
8179         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): No need for the caller
8180         to randomize anything.
8181
8182         * wtf/PageAllocation.h:
8183         (WTF::PageAllocation::systemAllocate): Removed some *At() functions, and
8184         beefed up executable allocation with randomization.
8185
8186         * wtf/PageReservation.h:
8187         (WTF::PageReservation::systemReserve): Removed some *At() functions.
8188
8189 2010-12-06  Geoffrey Garen  <ggaren@apple.com>
8190
8191         Reviewed by Maciej Stachowiak.
8192
8193         reserveAndCommit doesn't commit on MADVISE_FREE_REUSE systems
8194         https://bugs.webkit.org/show_bug.cgi?id=50588
8195         
8196         * wtf/OSAllocatorPosix.cpp:
8197         (WTF::OSAllocator::reserve):
8198         (WTF::OSAllocator::reserveAndCommit):
8199         (WTF::OSAllocator::commit): Tightened up some comments. Changed
8200         reserveAndCommit to actually commit on MADVISE_FREE_REUSE systems.
8201
8202 2010-12-06  Patrick Gansterer  <paroga@webkit.org>
8203
8204         Reviewed by Andreas Kling.
8205
8206         [WINCE] Add build system
8207         https://bugs.webkit.org/show_bug.cgi?id=50522
8208
8209         * CMakeListsWinCE.txt: Added.
8210         * shell/CMakeListsWinCE.txt: Added.
8211         * wtf/CMakeListsWinCE.txt: Added.
8212
8213 2010-12-06  John Tantalo  <john.tantalo@gmail.com>
8214
8215         Reviewed by Geoffrey Garen.
8216
8217         jsc does not ignore shebang
8218         https://bugs.webkit.org/show_bug.cgi?id=49576
8219
8220         * jsc.cpp:
8221         (fillBufferWithContentsOfFile):
8222           - translate shebang into a valid JavaScript comment so the lexer ignores it
8223
8224 2010-12-05  Adam Roben  <aroben@apple.com>
8225
8226         Windows production build fix
8227
8228         Put spaces after trailing backslashes when setting
8229         %WebKitVSPropsRedirectionDir%. According to MSDN
8230         <http://msdn.microsoft.com/en-us/library/2kzfk8c7(v=VS.80).aspx>:
8231
8232            A backslash ( \ ) followed by a newline character is interpreted as
8233            a space in the command; use a backslash at the end of a line to
8234            continue a command onto the next line. NMAKE interprets the
8235            backslash literally if any other character, including a space or
8236            tab, follows the backslash.
8237
8238         * JavaScriptCore.vcproj/JavaScriptCore.make:
8239
8240 2010-12-04  Patrick Gansterer  <paroga@webkit.org>
8241
8242         Unreviewed, build fix after r69132.
8243
8244         * shell/CMakeLists.txt: Fix directory name (jsc -> shell).
8245
8246 2010-12-04  Xan Lopez  <xlopez@igalia.com>
8247
8248         Reviewed by Martin Robinson.
8249
8250         [GTK] Drop GdkDrawable usage, it's deprecated in GTK+3.x and we can use GdkWindow
8251         https://bugs.webkit.org/show_bug.cgi?id=50451
8252
8253         * wtf/gobject/GTypedefs.h: add GdkWindow defines.
8254
8255 2010-12-03  Gavin Barraclough  <barraclough@apple.com>
8256
8257         Rubber stamped by Oliver Hunt.
8258
8259         Bug 50509 - set* methods on MacroAssembler are awfully named.
8260
8261         Methods set32 and setTest32 compare 32-bit operands, and set a 32-bit results based on the comparison.
8262         set8 compares 32-bit operands, and sets an 8-bit result based on the comparison.
8263         setTest8 compares 8-bit operands, and sets a 32-bit result based on the comparison.
8264
8265         Rename to clarify.
8266
8267         set32 -> set32Compare32
8268         setTest32 -> set32Test32
8269         set8 -> set8Compare32
8270         setTest8 -> set32Test8
8271
8272         * assembler/MacroAssembler.h:
8273         (JSC::MacroAssembler::setPtr):
8274         * assembler/MacroAssemblerARM.h:
8275         (JSC::MacroAssemblerARM::set32Compare32):
8276         (JSC::MacroAssemblerARM::set8Compare32):
8277         (JSC::MacroAssemblerARM::set32Test32):
8278         (JSC::MacroAssemblerARM::set32Test8):
8279         * assembler/MacroAssemblerARMv7.h:
8280         (JSC::MacroAssemblerARMv7::set32Compare32):
8281         (JSC::MacroAssemblerARMv7::set8Compare32):
8282         (JSC::MacroAssemblerARMv7::set32Test32):
8283         (JSC::MacroAssemblerARMv7::set32Test8):
8284         * assembler/MacroAssemblerMIPS.h:
8285         (JSC::MacroAssemblerMIPS::set8Compare32):
8286         (JSC::MacroAssemblerMIPS::set32Compare32):
8287         (JSC::MacroAssemblerMIPS::set32Test8):
8288         (JSC::MacroAssemblerMIPS::set32Test32):
8289         * assembler/MacroAssemblerX86Common.h:
8290         (JSC::MacroAssemblerX86Common::set8Compare32):
8291         (JSC::MacroAssemblerX86Common::set32Compare32):
8292         (JSC::MacroAssemblerX86Common::set32Test8):
8293         (JSC::MacroAssemblerX86Common::set32Test32):
8294         * jit/JITOpcodes.cpp:
8295         (JSC::JIT::emit_op_eq):
8296         (JSC::JIT::emit_op_neq):
8297         (JSC::JIT::compileOpStrictEq):
8298         (JSC::JIT::emit_op_eq_null):
8299         (JSC::JIT::emit_op_neq_null):
8300         * jit/JITOpcodes32_64.cpp:
8301         (JSC::JIT::emit_op_eq):
8302         (JSC::JIT::emit_op_neq):
8303         (JSC::JIT::compileOpStrictEq):
8304         (JSC::JIT::emit_op_eq_null):
8305         (JSC::JIT::emit_op_neq_null):
8306
8307 2010-12-03  Oliver Hunt  <oliver@apple.com>
8308
8309         Reviewed by Geoff Garen.
8310
8311         Incorrect logic for returning memory at the end of linking.
8312         Reviewed by Geoff Garen.
8313
8314         At the end of linking we return any space at the end of the
8315         allocated executable region that was saved due to branch
8316         compaction.  This is currently by done by subtracting the
8317         different from the m_freePtr in the allocation pool.  This
8318         can be incorrect if your allocation was made from a new
8319         page that was not selected for subsequent allocations.
8320
8321         This patch corrects this behaviour by verifying that the
8322         memory being returned actually comes from the current
8323         allocation pool.
8324
8325         * assembler/LinkBuffer.h:
8326         (JSC::LinkBuffer::linkCode):
8327         * jit/ExecutableAllocator.h:
8328         (JSC::ExecutablePool::tryShrink):
8329
8330 2010-12-03  Michael Saboff  <msaboff@apple.com>
8331
8332         Reviewed by Gavin Barraclough
8333
8334         Changes to significantly reduce branches to branches in JIT'ed
8335         parentheses backtrack processing.  The changes include the following:
8336         - Taking the backtracking processing out of line and adding it as
8337           code at the end of the JIT'ed routine.
8338         - Allow backtracks to be direct via an indirect branch for an address
8339           pushed onto the stack.  If the use of an indirect branch is from a
8340           conditional jump, then we emit a trampoline at the end of the 
8341           routine.
8342         - Propogate backtracks instead of adding trampolines.  Backtracks are
8343           propogated to where they are used.  This change also eliminated 
8344           trampoline branch code that aren't used.
8345         - Added global expression state to keep track of parentheses tail
8346           code and indirect branches.
8347         Other changes made to support these changes.
8348         - Split invertOrCapture flag on Patterns to two separate flags.  Added
8349           getters for these flags.  Rippled these changes to both the JIT 
8350           and interpreter code.
8351         - Split BacktrackDestination out off TermGenerationState struct.
8352           This is done to hold references to a backtrack for later code
8353           generation.
8354         https://bugs.webkit.org/show_bug.cgi?id=50295
8355
8356         * assembler/ARMAssembler.h:
8357         (JSC::ARMAssembler::JmpDst::isSet):
8358         * assembler/ARMv7Assembler.h:
8359         (JSC::ARMv7Assembler::JmpDst::isSet):
8360         * assembler/AbstractMacroAssembler.h:
8361         (JSC::AbstractMacroAssembler::Label::isSet):
8362         (JSC::AbstractMacroAssembler::DataLabelPtr::isUsed):
8363         (JSC::AbstractMacroAssembler::DataLabelPtr::used):
8364         (JSC::AbstractMacroAssembler::JumpList::clear):
8365         * assembler/MIPSAssembler.h:
8366         (JSC::MIPSAssembler::JmpDst::isSet):
8367         * assembler/X86Assembler.h:
8368         (JSC::X86Assembler::JmpDst::isSet):
8369         * yarr/RegexCompiler.cpp:
8370         (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin):
8371         (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin):
8372         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
8373         (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms):
8374         * yarr/RegexInterpreter.cpp:
8375         (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
8376         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
8377         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
8378         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
8379         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
8380         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
8381         (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
8382         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
8383         (JSC::Yarr::ByteCompiler::emitDisjunction):
8384         * yarr/RegexInterpreter.h:
8385         (JSC::Yarr::ByteTerm::ByteTerm):
8386         (JSC::Yarr::ByteTerm::BackReference):
8387         (JSC::Yarr::ByteTerm::invert):
8388         (JSC::Yarr::ByteTerm::capture):
8389         * yarr/RegexJIT.cpp:
8390         (JSC::Yarr::RegexGenerator::IndirectJumpEntry::IndirectJumpEntry):
8391         (JSC::Yarr::RegexGenerator::IndirectJumpEntry::addJump):
8392         (JSC::Yarr::RegexGenerator::GenerationState::GenerationState):
8393         (JSC::Yarr::RegexGenerator::GenerationState::addIndirectJumpEntry):
8394         (JSC::Yarr::RegexGenerator::GenerationState::emitIndirectJumpTable):
8395         (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
8396         (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail):
8397         (JSC::Yarr::RegexGenerator::GenerationState::addJumpToNextInteration):
8398         (JSC::Yarr::RegexGenerator::GenerationState::addJumpsToNextInteration):
8399         (JSC::Yarr::RegexGenerator::GenerationState::addDataLabelToNextIteration):
8400         (JSC::Yarr::RegexGenerator::GenerationState::linkToNextIteration):
8401         (JSC::Yarr::RegexGenerator::BacktrackDestination::BacktrackDestination):
8402         (JSC::Yarr::RegexGenerator::BacktrackDestination::clear):
8403         (JSC::Yarr::RegexGenerator::BacktrackDestination::clearDataLabel):
8404         (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDestination):
8405         (JSC::Yarr::RegexGenerator::BacktrackDestination::isStackOffset):
8406         (JSC::Yarr::RegexGenerator::BacktrackDestination::isLabel):
8407         (JSC::Yarr::RegexGenerator::BacktrackDestination::isJumpList):
8408         (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDataLabel):
8409         (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTarget):
8410         (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTo):
8411         (JSC::Yarr::RegexGenerator::BacktrackDestination::addBacktrackJump):
8412         (JSC::Yarr::RegexGenerator::BacktrackDestination::setStackOffset):
8413         (JSC::Yarr::RegexGenerator::BacktrackDestination::setLabel):
8414         (JSC::Yarr::RegexGenerator::BacktrackDestination::setNextBacktrackLabel):
8415         (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel):
8416         (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackJumpList):
8417         (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackSourceLabel):
8418         (JSC::Yarr::RegexGenerator::BacktrackDestination::setDataLabel):
8419         (JSC::Yarr::RegexGenerator::BacktrackDestination::setSubDataLabelPtr):
8420         (JSC::Yarr::RegexGenerator::BacktrackDestination::linkToNextBacktrack):
8421         (JSC::Yarr::RegexGenerator::BacktrackDestination::getStackOffset):
8422         (JSC::Yarr::RegexGenerator::BacktrackDestination::getLabel):
8423         (JSC::Yarr::RegexGenerator::BacktrackDestination::getBacktrackJumps):
8424         (JSC::Yarr::RegexGenerator::BacktrackDestination::getDataLabel):
8425         (JSC::Yarr::RegexGenerator::BacktrackDestination::jumpToBacktrack):
8426         (JSC::Yarr::RegexGenerator::BacktrackDestination::linkDataLabelToHereIfExists):
8427         (JSC::Yarr::RegexGenerator::BacktrackDestination::plantJumpToBacktrackIfExists):
8428         (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracks):
8429         (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracksTo):
8430         (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
8431         (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
8432         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastAlternative):
8433         (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack):
8434         (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
8435         (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
8436         (JSC::Yarr::RegexGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
8437         (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump):
8438         (JSC::Yarr::RegexGenerator::TermGenerationState::setDataLabelPtr):
8439         (JSC::Yarr::RegexGenerator::TermGenerationState::setBackTrackStackOffset):
8440         (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLabel):
8441         (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks):
8442         (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo):
8443         (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLink):
8444         (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktracks):
8445         (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktrackJumps):
8446         (JSC::Yarr::RegexGenerator::TermGenerationState::getBacktrackDestination):
8447         (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom):
8448         (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
8449         (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks):
8450         (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration):
8451         (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
8452         (JSC::Yarr::RegexGenerator::generateAssertionBOL):
8453         (JSC::Yarr::RegexGenerator::generateAssertionEOL):
8454         (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary):
8455         (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle):
8456         (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
8457         (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed):
8458         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
8459         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
8460         (JSC::Yarr::RegexGenerator::generateCharacterClassSingle):
8461         (JSC::Yarr::RegexGenerator::generateCharacterClassFixed):
8462         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
8463         (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy):
8464         (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
8465         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
8466         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
8467         (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
8468         (JSC::Yarr::RegexGenerator::generateDisjunction):
8469         (JSC::Yarr::RegexGenerator::compile):
8470         * yarr/RegexPattern.h:
8471         (JSC::Yarr::PatternTerm::PatternTerm):
8472         (JSC::Yarr::PatternTerm::invert):
8473         (JSC::Yarr::PatternTerm::capture):
8474
8475 2010-12-03  Chris Rogers  <crogers@google.com>
8476
8477         Reviewed by Kenneth Russell.
8478
8479         First steps to adding web audio files to build systems
8480         https://bugs.webkit.org/show_bug.cgi?id=49952
8481
8482         * wtf/Complex.h:
8483
8484 2010-12-03  Patrick Gansterer  <paroga@webkit.org>
8485
8486         Reviewed by Andreas Kling.
8487
8488         Move StringWx.cpp into wtf directory
8489         https://bugs.webkit.org/show_bug.cgi?id=50060
8490
8491         * wtf/wx/StringWx.cpp: Renamed from WebCore/platform/text/wx/StringWx.cpp.
8492         (WTF::String::String):
8493
8494 2010-12-03  Patrick Gansterer  <paroga@webkit.org>
8495
8496         Reviewed by Andreas Kling.
8497
8498         Move StringBrew.cpp into wtf directory
8499         https://bugs.webkit.org/show_bug.cgi?id=50058
8500
8501         * wtf/brew/StringBrew.cpp: Renamed from WebCore/platform/text/brew/StringBrew.cpp.
8502         (WTF::String::String):
8503
8504 2010-12-03  Patrick Gansterer  <paroga@webkit.org>
8505
8506         Reviewed by Andreas Kling.
8507
8508         Move StringHaiku.cpp into wtf directory
8509         https://bugs.webkit.org/show_bug.cgi?id=50057
8510
8511         * wtf/haiku/StringHaiku.cpp: Renamed from WebCore/platform/text/haiku/StringHaiku.cpp.
8512         (WTF::String::String):
8513         (WTF::String::operator BString):
8514
8515 2010-12-02  Geoffrey Garen  <ggaren@apple.com>
8516
8517         Try to fix Windows build.
8518
8519         * runtime/GCActivityCallback.cpp:
8520         (JSC::DefaultGCActivityCallback::synchronize): Added a non-CF implementation.
8521
8522 2010-12-02  Geoffrey Garen  <ggaren@apple.com>
8523
8524         Reviewed by Gavin Barraclough.
8525
8526         Fixed <rdar://problem/8310571> CrashTracer: 60 crashes in Photo Booth at
8527         com.apple.JavaScriptCore: JSC::Heap::markRoots + 746
8528         
8529         * API/APIShims.h:
8530         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Call our new
8531         synchronize() function.
8532
8533         * runtime/Collector.cpp:
8534         (JSC::Heap::activityCallback):
8535         * runtime/Collector.h: Added an activityCallback() accessor, for the
8536         call above.
8537
8538         * runtime/GCActivityCallback.h:
8539         (JSC::GCActivityCallback::synchronize):
8540         * runtime/GCActivityCallbackCF.cpp:
8541         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
8542         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
8543         (JSC::DefaultGCActivityCallback::operator()):
8544         (JSC::DefaultGCActivityCallback::synchronize): Track the run loop we're
8545         scheduled in. If we begin/resume execution within a new run loop, reschedule
8546         on it. This prevents a crash when using a lockless context group on
8547         multiple threads -- the crash would happen if the GC timer scheduled on
8548         thread A, then you continued execution on thread B, then the thread A
8549         timer fired.
8550
8551 2010-12-02  Darin Adler  <darin@apple.com>
8552
8553         * wtf/ASCIICType.h: Fix wrong type from last check-in.
8554
8555 2010-12-02  Darin Adler  <darin@apple.com>
8556
8557         Try to fix certain builds (Qt Windows).
8558
8559         * wtf/ASCIICType.h: Added an overload for unsigned because in obsolete
8560         versions of ICU, UChar32 can be a typedef for unsigned. Adding this
8561         overload should make us compatible with these old ICUs.
8562
8563 2010-12-02  Patrick Gansterer  <paroga@webkit.org>
8564
8565         Reviewed by Darin Adler.
8566
8567         Add AtomicString::fromUTF8
8568         https://bugs.webkit.org/show_bug.cgi?id=45594
8569
8570         Unicode::calculateStringHashFromUTF8 creates a StringHash out of UTF8 input data and
8571         calculates the required length for the UTF16 conversation in one step.
8572         This is then used in a specialized translator for the string table of AtomicString.
8573
8574         * JavaScriptCore.exp:
8575         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8576         * wtf/text/AtomicString.cpp:
8577         (WTF::CStringTranslator::equal):
8578         (WTF::HashAndUTF8CharactersTranslator::hash):
8579         (WTF::HashAndUTF8CharactersTranslator::equal):
8580         (WTF::HashAndUTF8CharactersTranslator::translate):
8581         (WTF::AtomicString::add):
8582         (WTF::AtomicString::addSlowCase):
8583         (WTF::AtomicString::find):
8584         (WTF::AtomicString::fromUTF8):
8585         * wtf/text/AtomicString.h:
8586         * wtf/text/StringImpl.h:
8587         * wtf/text/WTFString.h:
8588         * wtf/unicode/UTF8.cpp:
8589         (WTF::Unicode::readUTF8Sequence):
8590         (WTF::Unicode::convertUTF8ToUTF16):
8591         (WTF::Unicode::calculateStringHashFromUTF8):
8592         (WTF::Unicode::equalUTF16WithUTF8):
8593         * wtf/unicode/UTF8.h:
8594
8595 2010-12-02  Geoffrey Garen  <ggaren@apple.com>
8596
8597         Reviewed by Sam Weinig.
8598
8599         Added a little hardening to OSAllocator.
8600
8601         * wtf/OSAllocatorPosix.cpp:
8602         (WTF::OSAllocator::release):
8603         * wtf/OSAllocatorWin.cpp:
8604         (WTF::OSAllocator::reserve):
8605         (WTF::OSAllocator::reserveAndCommit):
8606         (WTF::OSAllocator::commit):
8607         (WTF::OSAllocator::decommit):
8608         (WTF::OSAllocator::release): CRASH() if the OS's virtual memory system
8609         reports an error.
8610
8611 2010-12-02  Csaba Osztrogonác  <ossy@webkit.org>
8612
8613         Reviewed by Geoffrey Garen.
8614
8615         [Qt] Make platform managing of OSAllocator better than r73106
8616         https://bugs.webkit.org/show_bug.cgi?id=50385
8617
8618         * wtf/OSAllocatorPosix.cpp: Remove platform specific guard.
8619         * wtf/OSAllocatorSymbian.cpp: Remove platform specific guard.
8620         * wtf/OSAllocatorWin.cpp: Remove platform specific guard.
8621         * wtf/wtf.pri: Add the correct platform specific source file instead of all of them.
8622
8623 2010-12-02  Patrick Gansterer  <paroga@webkit.org>
8624
8625         Reviewed by Andreas Kling.
8626
8627         [WINCE] Use GetTickCount() for srand()
8628         https://bugs.webkit.org/show_bug.cgi?id=50338
8629
8630         time() is not a native function on WinCE, so use GetTickCount() instead.
8631
8632         * wtf/RandomNumberSeed.h:
8633         (WTF::initializeRandomNumberGenerator):
8634
8635 2010-12-02  Norbert Leser  <norbert.leser@nokia.com>
8636
8637         Reviewed by Laszlo Gombos.
8638
8639         [Qt] [Symbian] Reintroduce compiler optimizations for JSC
8640         https://bugs.webkit.org/show_bug.cgi?id=50270
8641
8642         Add compiler optimization (symbian ARM target) which was lost after split from WebCore.
8643         Tested via Sunspider and V8 - both of which show significant performance improvement.
8644
8645         * JavaScriptCore.pro:
8646
8647 2010-12-02  Peter Varga  <pvarga@inf.u-szeged.hu>
8648
8649         Reviewed by Gavin Barraclough.
8650
8651         Move regex parsing and fallback handling to runtime/RegExp.cpp
8652         https://bugs.webkit.org/show_bug.cgi?id=50015
8653
8654         * runtime/RegExp.cpp:
8655         (JSC::RegExp::RegExp):
8656         (JSC::RegExp::create):
8657         (JSC::RegExp::compile):
8658         (JSC::RegExp::match):
8659         (JSC::RegExp::printTraceData):
8660         * runtime/RegExp.h:
8661         (JSC::RegExp::pattern):
8662         * yarr/RegexInterpreter.cpp:
8663         * yarr/RegexInterpreter.h:
8664         * yarr/RegexJIT.cpp:
8665         (JSC::Yarr::RegexGenerator::compile):
8666         (JSC::Yarr::jitCompileRegex):
8667         * yarr/RegexJIT.h:
8668         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
8669         (JSC::Yarr::RegexCodeBlock::setFallBack):
8670         (JSC::Yarr::RegexCodeBlock::isFallBack):
8671         (JSC::Yarr::executeRegex):
8672
8673 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8674
8675         Try to fix the GTK build.
8676
8677         * GNUmakefile.am: Use a full path to OSAllocator*.cpp.
8678
8679 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8680
8681         Try to fix the EFL Linux build.
8682
8683         * CMakeListsEfl.txt: Added OSAllocator to the project.
8684
8685 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8686
8687         Try to fix the Qt build: Include all OS files for Qt's sake, and then
8688         use #ifdefs in the files to exclude things based on OS.
8689         
8690         This is a pretty bad way to manage platforms -- hopefully we can
8691         fix the Qt build system and move away from this in the future.
8692
8693         * wtf/OSAllocatorPosix.cpp:
8694         * wtf/OSAllocatorSymbian.cpp:
8695         * wtf/OSAllocatorWin.cpp:
8696         * wtf/wtf.pri:
8697
8698 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8699
8700         Try to fix the Chromium build.
8701         
8702         * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp.
8703
8704 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8705
8706         Try to fix the GTK build.
8707
8708         * GNUmakefile.am: Added OSAllocator to another project.
8709
8710 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8711
8712         Try to fix the GTK Linux build.
8713
8714         * JavaScriptCore.gypi: Added OSAllocator to the project.
8715
8716 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8717
8718         Try to fix the Qt Linux build.
8719
8720         * wtf/OSAllocatorPosix.cpp: Use the right errno.h.
8721
8722 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8723
8724         Try to fix Windows build: export some more symbols.
8725
8726         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8727
8728 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8729
8730         Try to fix the Qt Linux build.
8731
8732         * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux.
8733
8734 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8735
8736         Windows build fix: commit doesn't have a return value.
8737
8738         * wtf/OSAllocatorWin.cpp:
8739         (WTF::OSAllocator::commit):
8740
8741 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8742
8743         Build fix: Export some symbols.
8744
8745         * JavaScriptCore.exp:
8746
8747 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8748
8749         Build fix.
8750
8751         * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private
8752         so other projects can see it.
8753
8754         * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM.
8755
8756 2010-12-01  Geoffrey Garen  <ggaren@apple.com>
8757
8758         Reviewed by Sam Weinig.
8759
8760         Baby step toward a cross-platform virtual memory abstraction: created
8761         an all-static OSAllocator class and changed MarkStack to use it.
8762
8763         * JavaScriptCore.exp: These functions are inlined now.
8764
8765         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp.
8766
8767         * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp.
8768
8769         * runtime/MarkStack.h:
8770         (JSC::MarkStack::allocateStack):
8771         (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our
8772         own platform-specific code.
8773
8774         * runtime/MarkStackNone.cpp: Removed. Nothing used this.
8775
8776         * runtime/MarkStackPosix.cpp: 
8777         * runtime/MarkStackSymbian.cpp:
8778         * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since
8779         we use the OSAllocator abstraction now.
8780
8781         * wtf/OSAllocator.h: Added.
8782         * wtf/OSAllocatorPosix.cpp: Added.
8783         (WTF::OSAllocator::reserve):
8784         (WTF::OSAllocator::reserveAndCommit):
8785         (WTF::OSAllocator::commit):
8786         (WTF::OSAllocator::decommit):
8787         (WTF::OSAllocator::release):
8788         * wtf/OSAllocatorSymbian.cpp: Added.
8789         (WTF::OSAllocator::reserve):
8790         (WTF::OSAllocator::reserveAndCommit):
8791         (WTF::OSAllocator::commit):
8792         (WTF::OSAllocator::decommit):
8793         (WTF::OSAllocator::release):
8794         * wtf/OSAllocatorWin.cpp: Added.
8795         (WTF::OSAllocator::reserve):
8796         (WTF::OSAllocator::reserveAndCommit):
8797         (WTF::OSAllocator::commit):
8798         (WTF::OSAllocator::decommit):
8799         (WTF::OSAllocator::release): The new OSAllocator abstraction.
8800
8801         * wtf/wtf.pri: Added OSAllocatorSymbian.cpp.
8802
8803 2010-12-01  Steve Falkenburg  <sfalken@apple.com>
8804
8805         Reviewed by Adam Roben.
8806
8807         WinCairo build should not use link-time code generation (LTCG)
8808         https://bugs.webkit.org/show_bug.cgi?id=50353
8809
8810         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
8811         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
8812         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
8813         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
8814
8815 010-12-01  Steve Falkenburg  <sfalken@apple.com>
8816
8817         Reviewed by Adam Roben.
8818
8819         vcproj changes can't be applied cleanly by the Windows EWS bot
8820         https://bugs.webkit.org/show_bug.cgi?id=50328
8821
8822         * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style.
8823         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style.
8824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style.
8825         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style.
8826         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style.
8827         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style.
8828         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style.
8829         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style.
8830         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style.
8831         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style.
8832         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style.
8833         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style.
8834         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style.
8835         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style.
8836
8837 2010-12-01  Gavin Barraclough  <barraclough@apple.com>
8838
8839         Reviewed by Sam Weinig.
8840
8841         Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs
8842
8843         For unmatched subpattens we previously used to set the subpattern end to -1,
8844         but now we only set the start value. E.g. consider the following:
8845             /a(b)?c/.exec("ac");
8846         Previously we would generate an internal results array of:
8847             [ 0, 2, -1, -1 ]
8848         Since fairly recently we have generated results of:
8849             [ 0, 2, -1, ??? ]
8850         (With the end index of the subpattern uninitialized).
8851
8852         Update these ASSERTs to account for this.
8853
8854         Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we
8855         were checking the wrong property on the pattern term. We should have been
8856         looking at term.parentheses.subpatternId, but instead were checking
8857         term.subpatternId. The latter is actually only the subpatternId for
8858         back reference terms. Rename this to backReferenceSubpatternId.
8859
8860         * yarr/RegexInterpreter.cpp:
8861         (JSC::Yarr::Interpreter::matchBackReference):
8862         (JSC::Yarr::Interpreter::backtrackBackReference):
8863
8864 2010-11-30  Gavin Barraclough  <barraclough@apple.com>
8865
8866         Rubber stamped by Sam Weinig.
8867
8868         Bug 50297 - \s in YARR should match BOMs.
8869
8870         From section 15.10.2.12 CharacterClassEscape contains:
8871
8872         The production CharacterClassEscape :: s evaluates by returning the set of characters containing the
8873         characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions.
8874
8875         Table 2 in section 7.2 contains:
8876
8877         \uFEFF Byte Order Mark <BOM>
8878
8879         * create_regex_tables:
8880             Add BOM to spaces table.
8881
8882 2010-11-30  Gavin Barraclough  <barraclough@apple.com>
8883
8884         Reviewed by Darin Adler.
8885
8886         Fixed review comments following bug #48101.
8887         Mostly typos, plus gave quantifyInfinite a symbolic name.
8888
8889         * yarr/RegexCompiler.cpp:
8890         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
8891         (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
8892         * yarr/RegexInterpreter.cpp:
8893         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
8894         (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
8895         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
8896         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
8897         * yarr/RegexJIT.cpp:
8898         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
8899         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
8900         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
8901         * yarr/RegexParser.h:
8902         (JSC::Yarr::Parser::parseTokens):
8903         (JSC::Yarr::parse):
8904
8905 2010-11-30  Steve Falkenburg  <sfalken@apple.com>
8906
8907         Reviewed by Darin Adler.
8908
8909         WTF project missing build-stopping code from its pre-build event
8910         https://bugs.webkit.org/show_bug.cgi?id=50281
8911
8912         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd:
8913
8914 2010-11-30  Patrick Gansterer  <paroga@webkit.org>
8915
8916         Reviewed by Darin Adler.
8917
8918         Cleanup UTF8.cpp
8919         https://bugs.webkit.org/show_bug.cgi?id=49581
8920
8921         Use macros and functions instead of range values directly.
8922
8923         * wtf/unicode/UTF8.cpp:
8924         (WTF::Unicode::inlineUTF8SequenceLength):
8925         (WTF::Unicode::UTF8SequenceLength):
8926         (WTF::Unicode::convertUTF16ToUTF8):
8927         (WTF::Unicode::readUTF8Sequence):
8928         (WTF::Unicode::convertUTF8ToUTF16):
8929         * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro.
8930
8931 2010-11-30  Geoffrey Garen  <ggaren@apple.com>
8932
8933         Reviewed by Gavin Barraclough.
8934
8935         Fixed a crash seen when using a PageAllocation to store itself.
8936
8937         * wtf/PageAllocation.h:
8938         (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping
8939         it, in case unmapping m_base unmaps the PageAllocation.
8940
8941         * wtf/BumpPointerAllocator.h:
8942         (WTF::BumpPointerPool::destroy): Now this work-around isn't needed!
8943
8944 2010-11-30  Xan Lopez  <xlopez@igalia.com>
8945
8946         Reviewed by Darin Adler.
8947
8948         m_hasNonEnumerableProperties is never initialized in Structure
8949         https://bugs.webkit.org/show_bug.cgi?id=50266
8950
8951         * runtime/Structure.cpp:
8952         (JSC::Structure::Structure): initialize member variable.
8953
8954 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
8955
8956         Windows build fix (part 1). Use correct environment variable syntax in cmd files.
8957
8958         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
8959         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
8960         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd:
8961         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd:
8962         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
8963         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd:
8964         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd:
8965         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd:
8966         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd:
8967         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd:
8968
8969 2010-11-29  Dan Bernstein  <mitz@apple.com>
8970
8971         Reviewed by Darin Adler.
8972
8973         WTF support for <rdar://problem/8650085> adding word-prefix search options to the text search API.
8974         https://bugs.webkit.org/show_bug.cgi?id=50038
8975
8976         * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h.
8977
8978 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
8979
8980         Reviewed by Darin Adler.
8981
8982         JavaScriptCore projects on Windows should use cmd files for build events
8983         https://bugs.webkit.org/show_bug.cgi?id=50193
8984
8985         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
8986         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added.
8987         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added.
8988         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added.
8989         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style.
8990         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style.
8991         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
8992         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added.
8993         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added.
8994         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added.
8995         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
8996         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added.
8997         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added.
8998         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added.
8999
9000 2010-11-29  Dai Mikurube  <dmikurube@google.com>
9001
9002         Reviewed by Kent Tamura.
9003
9004         when empty, clicking "down" on outer-spin-button returns "max value"
9005         https://bugs.webkit.org/show_bug.cgi?id=45491
9006
9007         It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for
9008         date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime()
9009         returns a struct tm, not milliseconds.
9010
9011         Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all
9012         environments. This calculation is already done in calculateUTCOffset(), and complicated.
9013         Duplicating this complicated calculation is unreasonable because of maintainability.
9014         To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way.
9015
9016         * JavaScriptCore.exp:
9017         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9018         * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions.
9019         (WTF::calculateUTCOffset):
9020         (WTF::calculateDSTOffset):
9021         * wtf/DateMath.h:
9022
9023 2010-11-29  Chris Rogers  <crogers@google.com>
9024
9025         Reviewed by Kenneth Russell.
9026
9027         Switch web audio code to use FloatPoint3D instead of Vector3
9028         https://bugs.webkit.org/show_bug.cgi?id=50186
9029
9030         * wtf/Vector3.h: Removed.
9031
9032 2010-11-29  Steve Falkenburg  <sfalken@apple.com>
9033
9034         Reviewed by Adam Roben.
9035
9036         Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files
9037         https://bugs.webkit.org/show_bug.cgi?id=49858
9038
9039         We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files:
9040         - To simplify editing (editing vsprops build steps is confusing).
9041         - For more readable diffs.
9042
9043         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
9044         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added.
9045         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added.
9046
9047 2010-11-29  Geoffrey Garen  <ggaren@apple.com>
9048
9049         Reviewed by Gavin Barraclough.
9050
9051         Improved accuracy of command-line SunSpider.
9052
9053         * jsc.cpp:
9054         (functionRun): Changed the "run" function to run a given test in
9055         its own global object. Previously, all tests ran in the same global
9056         object, which created name conflicts, and made globals from previous
9057         tests artificially survive into later tests.
9058         
9059         Also changed "run" to return the elapsed milliseconds when running a
9060         given test, for slightly more accurate numbers.
9061
9062         (functionCheckSyntax): Ditto on returning elapsed milliseconds.
9063
9064 2010-11-29  Darin Adler  <darin@apple.com>
9065
9066         Reviewed by Andreas Kling.
9067
9068         Remove a couple unneeded overflow checks
9069         https://bugs.webkit.org/show_bug.cgi?id=49816
9070
9071         * wtf/text/CString.cpp:
9072         (WTF::CString::init): Use an ASSERT instead of
9073         an overflow check with CRASH.
9074
9075 2010-11-29  Adam Roben  <aroben@apple.com>
9076
9077         Robustify react-to-vsprops-changes.py against changes to its location
9078         or the location of the .vsprops files
9079
9080         Suggested by John Sullivan.
9081
9082         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9083         Removed file_modification_times.
9084         (main): Use glob.glob to find the .vsprops files and assert that we found some.
9085
9086 2010-11-29  Adam Roben  <aroben@apple.com>
9087
9088         Touch wtf/Platform.h whenever any .vsprops file changes
9089
9090         This will cause all files to be recompiled, which will make changes to
9091         preprocessor macros (e.g., ENABLE_*) actually take effect.
9092
9093         Fixes <http://webkit.org/b/50167> Windows build fails when ENABLE_*
9094         macros are changed (because not enough files are rebuilt)
9095
9096         Reviewed by John Sullivan.
9097
9098         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9099         (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also
9100         added some comments and logging to make it clearer what the script is
9101         doing and why.
9102
9103 2010-11-29  Adam Roben  <aroben@apple.com>
9104
9105         Update react-to-vsprops-changes.py after r72555
9106
9107         .vsprops files are no longer accessed relative to $WebKitLibrariesDir.
9108
9109         Fixes <http://webkit.org/b/50166> REGRESSION (r72555):
9110         react-to-vsprops-changes.py no longer works for people with a
9111         non-default $WebKitLibrariesDir
9112
9113         Reviewed by John Sullivan.
9114
9115         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9116         (main): Always look in WebKitLibraries/win for .vsprops files, not in
9117         $WebKitLibrariesDir.
9118
9119 2010-11-28  Gavin Barraclough  <barraclough@apple.com>
9120
9121         Reviewed by Sam Weinig.
9122
9123         Bug 48100 - YARR allows what seems like a bogus character-class range
9124
9125         Per ECMA-262 character classes containing character ranges containing
9126         character classes are invalid, eg:
9127             /[\d-x]/
9128             /[x-\d]/
9129             /[\d-\d]/
9130         These should throw a syntax error.
9131
9132         * yarr/RegexParser.h:
9133
9134 2010-11-27  Gavin Barraclough  <barraclough@apple.com>
9135
9136         Reviewed by Sam Weinig.
9137
9138         Bug 48101 - Yarr gives different results for /(?:a*?){2,}/
9139
9140         The test cases in the linked mozilla bug demonstrate a couple of
9141         problems in subpattern matching. These bugs lie in the optimized
9142         cases - for matching parentheses with a quantity count of 1, and
9143         for matching greedy quantified parentheses at the end of a regex
9144         (which do not backtrack).
9145
9146         In both of these cases we are failing to correctly handle empty
9147         matches. In the case of parentheses-single matches (quantity count
9148         one) we are failing to test for empty matches at all. In the case
9149         of terminal subpattern matches we do currently check, however there
9150         is a subtler bug here too. In the case of an empty match we will
9151         presently immediately fall through to the next alternative (or
9152         complete the regex match), whereas upon a failed match we should
9153         be backtracking into the failing alternative, to give it a chance
9154         to match further (e.g. consider /a??b?|a/.exec("ab") - upon first
9155         attempting to match the first alternative this will match the empty
9156         string - since a?? is non-greedy, however rather than moving on to
9157         the second alternative we should be re-matching the first one, at
9158         which point the non-greedy a?? will match, and as such the result
9159         should be "ab", not "a").
9160
9161         Terminal subpattern matching contains a second bug, too. The frame
9162         location values in the subpattern should be being allocated with
9163         the outer disjunction's frame (as we do for the parentheses-single
9164         optimization). Consider the following three regexes:
9165             /a*(?:b*)*c*/
9166             /a*(?:b*)c*/
9167             /a*(?:b*)*/
9168         Considering only the frame location required by the atoms a,b, and
9169         c, (ignoring space associated with the nested subpattern) the first
9170         regex (a normal subpattern match) requires a frame size of 2 for
9171         the outer disjunction, (to backtrack terms a & c), with each
9172         iteration of the subpattern requiring a frame of size 1 (in order
9173         to backtrack b). In the case of the second regex (where the
9174         parentheses-single optimization will kick in) the outer frame must
9175         be set up with a frame size of 3, since the outer frame will also
9176         be used when running the nested subpattern. We will currently only
9177         allocate a farme of size 1 for the outer disjuntion (to contain a),
9178         howver the frame size should be 2 (since the subpattern will be
9179         evaluated in the outer frame). In addition to failing to allocate
9180         frame space the frame offsets are also presently invalid - in the
9181         case of the last regex b's frame location will be set assuming it
9182         to be the first term in the frame, whereas in this case b lies
9183         after the term a, and should be taking a separate frame location.
9184
9185         In order to correctly allocate the frame for terminal subpattern
9186         matches we must move this optimization back up from the JIT into
9187         the compiler (and thus interpreter too), since this is where the
9188         frame allocation takes place.
9189
9190         * yarr/RegexCompiler.cpp:
9191         (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
9192         (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
9193         (JSC::Yarr::compileRegex):
9194         * yarr/RegexInterpreter.cpp:
9195         (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
9196         (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
9197         (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
9198         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
9199         (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
9200         (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
9201         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
9202         (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
9203         (JSC::Yarr::Interpreter::matchDisjunction):
9204         (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
9205         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
9206         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
9207         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
9208         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
9209         (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
9210         (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
9211         (JSC::Yarr::ByteCompiler::emitDisjunction):
9212         * yarr/RegexInterpreter.h:
9213         * yarr/RegexJIT.cpp:
9214         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
9215         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
9216         (JSC::Yarr::RegexGenerator::generateTerm):
9217         * yarr/RegexPattern.h:
9218         (JSC::Yarr::PatternTerm::PatternTerm):
9219
9220 2010-11-24  Patrick Gansterer  <paroga@webkit.org>
9221
9222         Reviewed by Csaba Osztrogonác.
9223
9224         Remove Bakefile build system files
9225         https://bugs.webkit.org/show_bug.cgi?id=49983
9226
9227         r53757 only removed the content, but not the files.
9228         This patch removes that empty files.
9229
9230         * JavaScriptCoreSources.bkl: Removed.
9231         * jscore.bkl: Removed.
9232
9233 2010-11-24  Gabor Loki  <loki@webkit.org>
9234
9235         Reviewed by Csaba Osztrogonác.
9236
9237         Merge the usage of jumps and calls at ARM-JIT
9238         https://bugs.webkit.org/show_bug.cgi?id=50008
9239
9240         Those JmpSrc objects which represent jumps (not calls) should point to
9241         after the jump instruction.
9242
9243         * assembler/ARMAssembler.h:
9244         (JSC::ARMAssembler::blx):
9245         (JSC::ARMAssembler::loadBranchTarget):
9246         (JSC::ARMAssembler::getAbsoluteJumpAddress):
9247         (JSC::ARMAssembler::linkJump):
9248         (JSC::ARMAssembler::relinkJump):
9249         (JSC::ARMAssembler::linkCall):
9250         (JSC::ARMAssembler::relinkCall):
9251         (JSC::ARMAssembler::getRelocatedAddress):
9252         (JSC::ARMAssembler::getDifferenceBetweenLabels):
9253         (JSC::ARMAssembler::getCallReturnOffset):
9254         * assembler/MacroAssemblerARM.h:
9255         (JSC::MacroAssemblerARM::call):
9256
9257 2010-11-24  Carlos Garcia Campos  <cgarcia@igalia.com>
9258
9259         Reviewed by Xan Lopez.
9260
9261         [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend
9262         https://bugs.webkit.org/show_bug.cgi?id=48625
9263
9264         GLib methods use UTF-8 strings, so we have to convert from UTF-16 to
9265         UTF-8 to perform the case operations and then convert back the result to
9266         UTF-16. GLib conversion methods return a new allocated string, so we
9267         have to memcpy the result into the destination buffer too. Using our
9268         own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h
9269         we don't need such memcpy, since they take an already allocated buffer
9270         rather than returning a new one. There's another optimization for the
9271         case when the destination buffer is not large enough. In that case,
9272         methods should return the expected destination buffer size and are
9273         called again with a new buffer. We can avoid the conversion to UTF-16 by
9274         pre-calculating the required size for the destination buffer.
9275
9276         * wtf/unicode/glib/UnicodeGLib.cpp:
9277         (WTF::Unicode::getUTF16LengthFromUTF8):
9278         (WTF::Unicode::convertCase):
9279         (WTF::Unicode::foldCase):
9280         (WTF::Unicode::toLower):
9281         (WTF::Unicode::toUpper):
9282
9283 2010-11-23  Patrick Gansterer  <paroga@webkit.org>
9284
9285         Reviewed by Sam Weinig.
9286
9287         Use WTF::StringHasher directly in JavaScriptCore
9288         https://bugs.webkit.org/show_bug.cgi?id=49893
9289
9290         * profiler/CallIdentifier.h:
9291         (JSC::CallIdentifier::Hash::hash):
9292         * runtime/Identifier.cpp:
9293         (JSC::IdentifierCStringTranslator::hash):
9294         (JSC::IdentifierUCharBufferTranslator::hash):
9295
9296 2010-11-22  Patrick Gansterer  <paroga@webkit.org>
9297
9298         Reviewed by Sam Weinig.
9299
9300         Add WTF::FixedArray::size()
9301         https://bugs.webkit.org/show_bug.cgi?id=49891
9302
9303         Add a method to get the size of a FixedArray.
9304
9305         * wtf/FixedArray.h:
9306         (WTF::FixedArray::size):
9307
9308 2010-11-22  Patrick Gansterer  <paroga@webkit.org>
9309
9310         Reviewed by Adam Roben.
9311
9312         [WINCE] Set correct preprocessor definitions
9313         https://bugs.webkit.org/show_bug.cgi?id=49887
9314
9315         * wtf/Platform.h:
9316
9317 2010-11-22  Adam Roben  <aroben@apple.com>
9318
9319         Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files
9320
9321         Apple's Windows build allows placing header files and import libraries for WebKit's
9322         dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the
9323         $WebKitLibrariesDir environment variable. This is both required for production builds and
9324         convenient for Apple-internal developer builds. Apple's production builds also require that
9325         WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production
9326         builds, the files are copied into that directory tree by the
9327         WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the
9328         copying is done by
9329         JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make.
9330
9331         This .vsprops copying is problematic in one very important case: when a developer updates
9332         their source tree and then tries to build. Visual Studio only reads .vsprops files when a
9333         project is first loaded. So, when Visual Studio is first opened after the .vsprops files are
9334         updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a
9335         build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into
9336         $WebKitLibrariesDir, but Visual Studio will not pick up the changes.  The rest of the build
9337         will proceed with out-of-date .vsprops files, which will likely result in a build failure.
9338
9339         To fix this, we now use normal relative paths to access the .vsprops files in the source
9340         tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment
9341         variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is
9342         unset, so the normal relative paths are used to read the .vsprops files out of the source
9343         tree directly. In production builds, this environment variable is set to a fake directory
9344         that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path
9345         is resolved.
9346         
9347         For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops:
9348
9349         $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9350
9351         In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the
9352         files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds,
9353         JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to
9354         "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for
9355         FeatureDefines.vsprops becomes:
9356
9357         $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9358
9359         which resolves to:
9360
9361         $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9362
9363         (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3"
9364         actually exist since they are matched by an equal number of ".." path components.)
9365
9366         Note that Visual Studio still won't pick up changes made to .vsprops files while Visual
9367         Studio is open, but that problem hasn't seemed to cause developers many headaches so far.
9368
9369         Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are
9370         updated
9371
9372         Reviewed by Dave Hyatt.
9373
9374         * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that
9375         production builds can find the .vsprops files.
9376
9377         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the
9378         .vsprops files. It isn't needed anymore.
9379
9380         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9381         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9382         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9383         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9384         Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops
9385         files.
9386
9387 2010-11-19  Peter Varga  <pvarga@inf.u-szeged.hu>
9388
9389         Reviewed by Gavin Barraclough.
9390
9391         YARR JIT should fallback to YARR Interpreter instead of PCRE.
9392         https://bugs.webkit.org/show_bug.cgi?id=46719
9393
9394         Remove the ENABLE_YARR macro and the option of matching regular
9395         expressions with PCRE from JavaScriptCore.
9396
9397         * runtime/JSGlobalData.h:
9398         * runtime/RegExp.cpp:
9399         (JSC::RegExp::compile):
9400         (JSC::RegExp::match):
9401         * tests/mozilla/expected.html:
9402         * wtf/Platform.h:
9403         * yarr/RegexCompiler.cpp:
9404         * yarr/RegexCompiler.h:
9405         * yarr/RegexInterpreter.cpp:
9406         (JSC::Yarr::byteCompileRegex):
9407         * yarr/RegexInterpreter.h:
9408         * yarr/RegexJIT.cpp:
9409         (JSC::Yarr::jitCompileRegex):
9410         * yarr/RegexJIT.h:
9411         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9412         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9413         (JSC::Yarr::RegexCodeBlock::getFallback):
9414         (JSC::Yarr::RegexCodeBlock::isFallback):
9415         (JSC::Yarr::RegexCodeBlock::setFallback):
9416         (JSC::Yarr::executeRegex):
9417         * yarr/RegexParser.h:
9418         * yarr/RegexPattern.h:
9419
9420 2010-11-20  Kwang Yul Seo  <skyul@company100.net>
9421
9422         Reviewed by David Kilzer.
9423
9424         [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message
9425         https://bugs.webkit.org/show_bug.cgi?id=49520
9426
9427         DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead.
9428
9429         * wtf/Assertions.cpp:
9430         * wtf/Assertions.h:
9431
9432 2010-11-20  Gabor Loki  <loki@webkit.org>
9433
9434         Reviewed by Gavin Barraclough.
9435
9436         Support JIT_OPTIMIZE_MOD on Thumb-2
9437         https://bugs.webkit.org/show_bug.cgi?id=49432
9438
9439         Rewrite the soft modulo operation into macroassembler form, and move it
9440         to JSValue32_64 section.
9441         Add support for soft modulo on Thumb-2 JIT also.
9442
9443         * assembler/ARMv7Assembler.h:
9444         (JSC::ARMv7Assembler::clz):
9445         * assembler/MacroAssemblerARM.h:
9446         (JSC::MacroAssemblerARM::countLeadingZeros32):
9447         (JSC::MacroAssemblerARM::relativeTableJump):
9448         * assembler/MacroAssemblerARMv7.h:
9449         (JSC::MacroAssemblerARMv7::countLeadingZeros32):
9450         (JSC::MacroAssemblerARMv7::relativeTableJump):
9451         * jit/JITArithmetic.cpp:
9452         (JSC::JIT::emit_op_mod):
9453         * jit/JITOpcodes.cpp:
9454         (JSC::JIT::privateCompileCTIMachineTrampolines):
9455         * jit/JITOpcodes32_64.cpp:
9456         (JSC::JIT::softModulo):
9457         * jit/JITStubs.cpp:
9458         (JSC::JITThunks::JITThunks):
9459         * wtf/Platform.h:
9460
9461 2010-11-20  David Kilzer  <ddkilzer@apple.com>
9462
9463         <http://webkit.org/b/49848> Make it possible to display the last character of a secure text field unobscured
9464
9465         Reviewed by Darin Adler.
9466
9467         * JavaScriptCore.exp:
9468         * wtf/text/StringImpl.cpp:
9469         (WTF::StringImpl::secure): Added argument that controls whether
9470         the last character is obscured or not.  Implemented behavior.
9471         * wtf/text/StringImpl.h:
9472         (WTF::StringImpl::LastCharacterBehavior): Added enum.
9473         (WTF::StringImpl::secure): Updated method signature.
9474
9475 2010-11-19  William Chan  <willchan@chromium.org>
9476
9477         Reviewed by David Levin.
9478
9479         Add USE(CHROMIUM_NET)
9480
9481         Indicates the use of Chromium's network stack.  Chromium's network
9482         stack performs better when it has full view of all resource requests,
9483         so USE(CHROMIUM_NET) can be used to bypass throttles.
9484
9485         https://bugs.webkit.org/show_bug.cgi?id=49778
9486
9487         * wtf/Platform.h:
9488
9489 2010-11-19  Steve Falkenburg  <sfalken@apple.com>
9490
9491         Reviewed by Adam Roben.
9492
9493         Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files
9494         https://bugs.webkit.org/show_bug.cgi?id=49819
9495
9496         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9497         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9498         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9499         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
9500         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9501         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9502
9503 2010-11-19  Oliver Hunt  <oliver@apple.com>
9504
9505         Reviewed by Geoffrey Garen.
9506
9507         Don't check for constant registers when we can guarantee that the register won't be in the constant pool
9508         https://bugs.webkit.org/show_bug.cgi?id=49814
9509
9510         Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR()
9511         when we can guarantee that the register is not referring to a constant.
9512         This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation
9513         logic correct when we're using a faked callframe (as in the case of the globalExec).
9514
9515         * bytecode/CodeBlock.cpp:
9516         (JSC::CodeBlock::createActivation):
9517         * debugger/DebuggerCallFrame.cpp:
9518         (JSC::DebuggerCallFrame::thisObject):
9519         * interpreter/CallFrame.h:
9520         (JSC::ExecState::uncheckedR):
9521         * interpreter/Interpreter.cpp:
9522         (JSC::Interpreter::resolve):
9523         (JSC::Interpreter::resolveSkip):
9524         (JSC::Interpreter::resolveGlobal):
9525         (JSC::Interpreter::resolveGlobalDynamic):
9526         (JSC::Interpreter::resolveBase):
9527         (JSC::Interpreter::resolveBaseAndProperty):
9528         (JSC::Interpreter::callEval):
9529         (JSC::Interpreter::unwindCallFrame):
9530         (JSC::Interpreter::throwException):
9531         (JSC::Interpreter::execute):
9532         (JSC::Interpreter::executeCall):
9533         (JSC::Interpreter::executeConstruct):
9534         (JSC::Interpreter::prepareForRepeatCall):
9535         (JSC::Interpreter::createExceptionScope):
9536         (JSC::Interpreter::privateExecute):
9537         * jit/JITStubs.cpp:
9538         (JSC::DEFINE_STUB_FUNCTION):
9539         * runtime/JSActivation.cpp:
9540         (JSC::JSActivation::argumentsGetter):
9541
9542 2010-11-19  Steve Falkenburg  <sfalken@apple.com>
9543
9544         Reviewed by Darin Adler.
9545
9546         Normalize Cairo/CFLite project/solution configuration names
9547         https://bugs.webkit.org/show_bug.cgi?id=49818
9548
9549         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9550         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9551         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9552
9553 2010-11-18  Steve Falkenburg  <sfalken@apple.com>
9554
9555         Reviewed by Adam Roben.
9556
9557         Windows vcproj configuration names should be normalized across projects
9558         https://bugs.webkit.org/show_bug.cgi?id=49776
9559
9560         * JavaScriptCore.vcproj/JavaScriptCore.sln:
9561         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9562         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added.
9563         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
9564
9565 2010-11-19  Patrick Gansterer  <paroga@webkit.org>
9566
9567         Unreviewed, build fix after r72360.
9568
9569         * bytecode/CodeBlock.h:
9570         (JSC::CodeBlock::bytecodeOffset):
9571
9572 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
9573
9574         Rubber stamped by Geoff Garen.
9575
9576         Bug 49577 - Function.prototype should be non-configurable
9577
9578         Ooops, Function.prototype should not be enumerable!
9579
9580         * runtime/JSFunction.cpp:
9581         (JSC::JSFunction::getOwnPropertySlot):
9582
9583 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
9584
9585         Reviewed by Oliver Hunt.
9586
9587         Bug 49708 - Stop recompiling functions to regenerate exception info.
9588
9589         Instead only hold info as necessary â€“ keep divot info is the inspector
9590         is enabled, line number info is debugging or profiling, and handler
9591         info for functions with try/catch.
9592
9593         * bytecode/CodeBlock.cpp:
9594         (JSC::CodeBlock::dumpStatistics):
9595         (JSC::CodeBlock::CodeBlock):
9596         (JSC::CodeBlock::lineNumberForBytecodeOffset):
9597         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
9598         (JSC::CodeBlock::shrinkToFit):
9599         * bytecode/CodeBlock.h:
9600         (JSC::CodeBlock::bytecodeOffset):
9601         (JSC::CodeBlock::addExpressionInfo):
9602         (JSC::CodeBlock::addLineInfo):
9603         (JSC::CodeBlock::hasExpressionInfo):
9604         (JSC::CodeBlock::hasLineInfo):
9605         (JSC::CodeBlock::needsCallReturnIndices):
9606         (JSC::CodeBlock::callReturnIndexVector):
9607         * bytecode/SamplingTool.cpp:
9608         (JSC::SamplingTool::dump):
9609         * bytecompiler/BytecodeGenerator.cpp:
9610         (JSC::BytecodeGenerator::generate):
9611         (JSC::BytecodeGenerator::BytecodeGenerator):
9612         * bytecompiler/BytecodeGenerator.h:
9613         (JSC::BytecodeGenerator::emitNode):
9614         (JSC::BytecodeGenerator::emitNodeInConditionContext):
9615         (JSC::BytecodeGenerator::emitExpressionInfo):
9616         (JSC::BytecodeGenerator::addLineInfo):
9617         * interpreter/Interpreter.cpp:
9618         (JSC::Interpreter::unwindCallFrame):
9619         (JSC::appendSourceToError):
9620         (JSC::Interpreter::throwException):
9621         (JSC::Interpreter::privateExecute):
9622         (JSC::Interpreter::retrieveLastCaller):
9623         * interpreter/Interpreter.h:
9624         * jit/JIT.cpp:
9625         (JSC::JIT::privateCompile):
9626         * jit/JITStubs.cpp:
9627         (JSC::jitThrow):
9628         (JSC::DEFINE_STUB_FUNCTION):
9629         * runtime/Collector.cpp:
9630         (JSC::Heap::markRoots):
9631         * runtime/Executable.cpp:
9632         (JSC::EvalExecutable::compileInternal):
9633         (JSC::ProgramExecutable::compileInternal):
9634         (JSC::FunctionExecutable::compileForCallInternal):
9635         (JSC::FunctionExecutable::compileForConstructInternal):
9636         * runtime/Executable.h:
9637         * runtime/JSGlobalData.cpp:
9638         (JSC::JSGlobalData::JSGlobalData):
9639         * runtime/JSGlobalData.h:
9640         (JSC::JSGlobalData::usingAPI):
9641         * runtime/JSGlobalObject.h:
9642         (JSC::JSGlobalObject::supportsRichSourceInfo):
9643         (JSC::JSGlobalObject::globalData):
9644
9645 2010-11-18  Adam Roben  <aroben@apple.com>
9646
9647         Add a script to delete manifest-related files when they are older than
9648         any .vsprops file
9649
9650         Changes to .vsprops files can cause the manifest files to become
9651         invalid, and Visual Studio doesn't always figure out that it needs to
9652         rebuild them.
9653
9654         Reviewed by Sam Weinig.
9655
9656         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
9657         Call the new script.
9658
9659         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9660         Added the new script.
9661
9662         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added.
9663         (file_modification_times): Generator to return the modification time of
9664         each file in a directory hierarchy.
9665         (main): Get the modification time of the newest vsprops file, then find
9666         all manifest-related files in the obj directory. Delete all
9667         manifest-related files that are older than the newest vsprops file.
9668
9669 2010-11-18  Mark Rowe  <mrowe@apple.com>
9670
9671         Rubber-stamped by Adam Roben.
9672
9673         <rdar://problem/8602509&8602717&8602724> Enable compaction support.
9674
9675         * Configurations/JavaScriptCore.xcconfig:
9676
9677 2010-11-18  Gavin Barraclough  <barraclough@apple.com>
9678
9679         Reviewed by Oliver Hunt.
9680
9681         Bug 49635 - Profiler implementation is fragile
9682
9683         The profile presently requires the exception handling mechanism to explicitly
9684         remove all stack frames that are exited during the exception unwind mechanism.
9685         This is fragile in a number of ways:
9686           * We have to change bytecode register allocation when compiling code to run
9687             when profiling, to preserve the callee function (this is also required to
9688             call did_call after the call has returned).
9689           * In the JIT we have to maintain additional data structures
9690             (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
9691             containing the callee.
9692           * In the interpreter we use 'magic values' to offset into the instruction
9693             stream to rediscover the register containing the function.
9694
9695         Instead, move profiling into the head and tail of functions.
9696           * This correctly accounts the cost of the call itself to the caller.
9697           * This allows us to access the callee function object from the callframe.
9698           * This means that at the point a call is made we can track the stack depth
9699             on the ProfileNode.
9700           * When unwinding we can simply report the depth at which the exception is
9701             being handled - all call frames above this level are freed.
9702
9703         * bytecode/CodeBlock.cpp:
9704         (JSC::CodeBlock::shrinkToFit):
9705         * bytecode/CodeBlock.h:
9706         (JSC::CodeBlock::bytecodeOffset):
9707         (JSC::CodeBlock::methodCallLinkInfo):
9708         * bytecompiler/BytecodeGenerator.cpp:
9709         (JSC::BytecodeGenerator::emitCall):
9710         (JSC::BytecodeGenerator::emitCallVarargs):
9711         * interpreter/Interpreter.cpp:
9712         (JSC::Interpreter::unwindCallFrame):
9713         (JSC::Interpreter::throwException):
9714         (JSC::Interpreter::execute):
9715         (JSC::Interpreter::executeCall):
9716         (JSC::Interpreter::executeConstruct):
9717         (JSC::Interpreter::privateExecute):
9718         * jit/JITStubs.cpp:
9719         (JSC::DEFINE_STUB_FUNCTION):
9720         * profiler/Profile.cpp:
9721         (JSC::Profile::Profile):
9722         * profiler/ProfileGenerator.cpp:
9723         (JSC::ProfileGenerator::addParentForConsoleStart):
9724         (JSC::ProfileGenerator::willExecute):
9725         (JSC::ProfileGenerator::didExecute):
9726         (JSC::ProfileGenerator::exceptionUnwind):
9727         (JSC::ProfileGenerator::stopProfiling):
9728         * profiler/ProfileGenerator.h:
9729         * profiler/ProfileNode.cpp:
9730         (JSC::ProfileNode::ProfileNode):
9731         (JSC::ProfileNode::willExecute):
9732         * profiler/ProfileNode.h:
9733         (JSC::ProfileNode::create):
9734         (JSC::ProfileNode::callerCallFrame):
9735         * profiler/Profiler.cpp:
9736         (JSC::dispatchFunctionToProfiles):
9737         (JSC::Profiler::_willExecute):
9738         (JSC::Profiler::_didExecute):
9739         (JSC::Profiler::exceptionUnwind):
9740         * profiler/Profiler.h:
9741
9742 2010-11-18  Steve Falkenburg  <sfalken@apple.com>
9743
9744         Reviewed by Adam Roben.
9745
9746         Remove leftover Windows Debug_Internal configurations
9747         https://bugs.webkit.org/show_bug.cgi?id=49758
9748
9749         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9750         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9751         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9752         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9753
9754 2010-11-18  Chao-ying Fu  <fu@mips.com>
9755
9756         Reviewed by Csaba Osztrogonác.
9757
9758         Avoid increasing required alignment of target type warning
9759         https://bugs.webkit.org/show_bug.cgi?id=43963
9760
9761         * runtime/UString.h:
9762         (JSC::UStringHash::equal):
9763         * wtf/StdLibExtras.h:
9764
9765 2010-11-17  Sam Weinig  <sam@webkit.org>
9766
9767         Reviewed by Anders Carlsson.
9768
9769         Add stubbed out ScrollAnimator for the Mac
9770         https://bugs.webkit.org/show_bug.cgi?id=49678
9771
9772         * wtf/Platform.h: Enable SMOOTH_SCROLLING on the Mac, this has no
9773         change in behavior at the moment.
9774
9775 2010-11-17  David Kilzer  <ddkilzer@apple.com>
9776
9777         <http://webkit.org/b/49634> Make overflow guards in WTF::String::utf8 explicit
9778
9779         Reviewed by Darin Adler.
9780
9781         Add an explicit overflow check prior to allocating our buffer,
9782         rather than implicitly relying on the guard in convertUTF16ToUTF8.
9783
9784         * wtf/text/WTFString.cpp:
9785         (WTF::String::utf8):
9786
9787 2010-11-17  Sheriff Bot  <webkit.review.bot@gmail.com>
9788
9789         Unreviewed, rolling out r72197.
9790         http://trac.webkit.org/changeset/72197
9791         https://bugs.webkit.org/show_bug.cgi?id=49661
9792
9793         broke fast/regex/test1.html (Requested by stampho on #webkit).
9794
9795         * runtime/JSGlobalData.h:
9796         * runtime/RegExp.cpp:
9797         (JSC::RegExpRepresentation::~RegExpRepresentation):
9798         (JSC::RegExp::compile):
9799         (JSC::RegExp::match):
9800         * tests/mozilla/expected.html:
9801         * wtf/Platform.h:
9802         * yarr/RegexCompiler.cpp:
9803         * yarr/RegexCompiler.h:
9804         * yarr/RegexInterpreter.cpp:
9805         * yarr/RegexInterpreter.h:
9806         * yarr/RegexJIT.cpp:
9807         (JSC::Yarr::jitCompileRegex):
9808         * yarr/RegexJIT.h:
9809         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9810         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9811         (JSC::Yarr::RegexCodeBlock::getFallback):
9812         (JSC::Yarr::RegexCodeBlock::setFallback):
9813         (JSC::Yarr::executeRegex):
9814         * yarr/RegexParser.h:
9815         * yarr/RegexPattern.h:
9816
9817 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
9818
9819         Reviewed by Gavin Barraclough.
9820
9821         YARR JIT should fallback to YARR Interpreter instead of PCRE.
9822         https://bugs.webkit.org/show_bug.cgi?id=46719
9823
9824         Remove the ENABLE_YARR macro and the option of matching regular
9825         expressions with PCRE from JavaScriptCore.
9826
9827         * runtime/JSGlobalData.h:
9828         * runtime/RegExp.cpp:
9829         (JSC::RegExp::compile):
9830         (JSC::RegExp::match):
9831         * tests/mozilla/expected.html:
9832         * wtf/Platform.h:
9833         * yarr/RegexCompiler.cpp:
9834         * yarr/RegexCompiler.h:
9835         * yarr/RegexInterpreter.cpp:
9836         (JSC::Yarr::byteCompileRegex):
9837         * yarr/RegexInterpreter.h:
9838         * yarr/RegexJIT.cpp:
9839         (JSC::Yarr::jitCompileRegex):
9840         * yarr/RegexJIT.h:
9841         (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9842         (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9843         (JSC::Yarr::RegexCodeBlock::getFallback):
9844         (JSC::Yarr::RegexCodeBlock::isFallback):
9845         (JSC::Yarr::RegexCodeBlock::setFallback):
9846         (JSC::Yarr::executeRegex):
9847         * yarr/RegexParser.h:
9848         * yarr/RegexPattern.h:
9849
9850 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
9851
9852         Reviewed by Gavin Barraclough.
9853
9854         Extend YARR Interpreter with beginning character look-up optimization
9855         https://bugs.webkit.org/show_bug.cgi?id=45751
9856
9857         Add beginning character look-up optimization which sets the start
9858         index to the first possible successful pattern match.
9859         Extend YARR Interpreter with lookupForBeginChars function which
9860         implements the beginning character look-up optimization.
9861
9862         * yarr/RegexInterpreter.cpp:
9863         (JSC::Yarr::Interpreter::InputStream::readPair):
9864         (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput):
9865         (JSC::Yarr::Interpreter::lookupForBeginChars):
9866         (JSC::Yarr::Interpreter::matchDisjunction):
9867         (JSC::Yarr::Interpreter::interpret):
9868         * yarr/RegexInterpreter.h:
9869         (JSC::Yarr::BytecodePattern::BytecodePattern):
9870
9871 2010-11-17  Alexis Menard  <alexis.menard@nokia.com>, Simon Hausmann  <simon.hausmann@nokia.com>
9872
9873         Reviewed by Kenneth Christiansen, Tor Arne Vestbø.
9874
9875         [Qt] Add support for use GStreamer with the Qt build
9876
9877         Enable the build/inclusion of the wtf/QObject convenience classes.
9878
9879         * JavaScriptCore.pri:
9880         * wtf/wtf.pri:
9881
9882 2010-11-17  Peter Varga  <pvarga@inf.u-szeged.hu>
9883
9884         Reviewed by Gavin Barraclough.
9885
9886         Collect the beginning characters in a RegExp pattern for look-up
9887         optimization
9888         https://bugs.webkit.org/show_bug.cgi?id=45748
9889
9890         Extend the YARR's parser with an algorithm which collects the potential
9891         beginning characters from a RegExp pattern for later look-up optimization.
9892
9893         * yarr/RegexCompiler.cpp:
9894         (JSC::Yarr::BeginCharHelper::BeginCharHelper):
9895         (JSC::Yarr::BeginCharHelper::addBeginChar):
9896         (JSC::Yarr::BeginCharHelper::merge):
9897         (JSC::Yarr::BeginCharHelper::addCharacter):
9898         (JSC::Yarr::BeginCharHelper::linkHotTerms):
9899         (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor):
9900         (JSC::Yarr::RegexPatternConstructor::addBeginTerm):
9901         (JSC::Yarr::RegexPatternConstructor::setupDisjunctionBeginTerms):
9902         (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms):
9903         (JSC::Yarr::RegexPatternConstructor::setupBeginChars):
9904         (JSC::Yarr::compileRegex):
9905         * yarr/RegexPattern.h:
9906         (JSC::Yarr::TermChain::TermChain):
9907         (JSC::Yarr::BeginChar::BeginChar):
9908         (JSC::Yarr::RegexPattern::RegexPattern):
9909         (JSC::Yarr::RegexPattern::reset):
9910
9911 2010-11-17  Sheriff Bot  <webkit.review.bot@gmail.com>
9912
9913         Unreviewed, rolling out r72160.
9914         http://trac.webkit.org/changeset/72160
9915         https://bugs.webkit.org/show_bug.cgi?id=49646
9916
9917         Broke lots of fast/profiler tests, among others (Requested by
9918         aroben on #webkit).
9919
9920         * bytecode/CodeBlock.cpp:
9921         (JSC::CodeBlock::dump):
9922         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
9923         (JSC::CodeBlock::shrinkToFit):
9924         * bytecode/CodeBlock.h:
9925         (JSC::CodeBlock::addFunctionRegisterInfo):
9926         * bytecode/Opcode.h:
9927         * bytecompiler/BytecodeGenerator.cpp:
9928         (JSC::BytecodeGenerator::BytecodeGenerator):
9929         (JSC::BytecodeGenerator::emitCall):
9930         (JSC::BytecodeGenerator::emitCallVarargs):
9931         (JSC::BytecodeGenerator::emitReturn):
9932         (JSC::BytecodeGenerator::emitConstruct):
9933         * bytecompiler/BytecodeGenerator.h:
9934         (JSC::CallArguments::profileHookRegister):
9935         * bytecompiler/NodesCodegen.cpp:
9936         (JSC::CallArguments::CallArguments):
9937         * interpreter/Interpreter.cpp:
9938         (JSC::Interpreter::unwindCallFrame):
9939         (JSC::Interpreter::throwException):
9940         (JSC::Interpreter::execute):
9941         (JSC::Interpreter::executeCall):
9942         (JSC::Interpreter::executeConstruct):
9943         (JSC::Interpreter::privateExecute):
9944         * jit/JIT.cpp:
9945         (JSC::JIT::privateCompileMainPass):
9946         * jit/JIT.h:
9947         * jit/JITOpcodes.cpp:
9948         (JSC::JIT::emit_op_profile_will_call):
9949         (JSC::JIT::emit_op_profile_did_call):
9950         * jit/JITOpcodes32_64.cpp:
9951         (JSC::JIT::emit_op_profile_will_call):
9952         (JSC::JIT::emit_op_profile_did_call):
9953         * jit/JITStubs.cpp:
9954         (JSC::DEFINE_STUB_FUNCTION):
9955         * jit/JITStubs.h:
9956         * profiler/Profile.cpp:
9957         (JSC::Profile::Profile):
9958         * profiler/ProfileGenerator.cpp:
9959         (JSC::ProfileGenerator::addParentForConsoleStart):
9960         (JSC::ProfileGenerator::willExecute):
9961         (JSC::ProfileGenerator::didExecute):
9962         (JSC::ProfileGenerator::stopProfiling):
9963         * profiler/ProfileGenerator.h:
9964         * profiler/ProfileNode.cpp:
9965         (JSC::ProfileNode::ProfileNode):
9966         (JSC::ProfileNode::willExecute):
9967         * profiler/ProfileNode.h:
9968         (JSC::ProfileNode::create):
9969         (JSC::ProfileNode::operator==):
9970         * profiler/Profiler.cpp:
9971         (JSC::dispatchFunctionToProfiles):
9972         (JSC::Profiler::willExecute):
9973         (JSC::Profiler::didExecute):
9974         * profiler/Profiler.h:
9975
9976 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
9977
9978         Reviewed by Sam Weinig.
9979
9980         Bug 49635 - Profiler implementation is fragile
9981
9982         The profile presently requires the exception handling mechanism to explicitly
9983         remove all stack frames that are exited during the exception unwind mechanism.
9984         This is fragile in a number of ways:
9985           * We have to change bytecode register allocation when compiling code to run
9986             when profiling, to preserve the callee function (this is also required to
9987             call did_call after the call has returned).
9988           * In the JIT we have to maintain additional data structures
9989             (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
9990             containing the callee.
9991           * In the interpreter we use 'magic values' to offset into the instruction
9992             stream to rediscover the register containing the function.
9993
9994         Instead, move profiling into the head and tail of functions.
9995           * This correctly accounts the cost of the call itself to the caller.
9996           * This allows us to access the callee function object from the callframe.
9997           * This means that at the point a call is made we can track the stack depth
9998             on the ProfileNode.
9999           * When unwinding we can simply report the depth at which the exception is
10000             being handled - all call frames above this level are freed.
10001
10002         * JavaScriptCore.xcodeproj/project.pbxproj:
10003         * bytecode/CodeBlock.cpp:
10004         (JSC::CodeBlock::dump):
10005         (JSC::CodeBlock::shrinkToFit):
10006         * bytecode/CodeBlock.h:
10007         (JSC::CodeBlock::bytecodeOffset):
10008         (JSC::CodeBlock::methodCallLinkInfo):
10009         * bytecode/Opcode.h:
10010         * bytecompiler/BytecodeGenerator.cpp:
10011         (JSC::BytecodeGenerator::BytecodeGenerator):
10012         (JSC::BytecodeGenerator::emitCall):
10013         (JSC::BytecodeGenerator::emitCallVarargs):
10014         (JSC::BytecodeGenerator::emitReturn):
10015         (JSC::BytecodeGenerator::emitConstruct):
10016         * bytecompiler/BytecodeGenerator.h:
10017         (JSC::CallArguments::count):
10018         * bytecompiler/NodesCodegen.cpp:
10019         (JSC::CallArguments::CallArguments):
10020         * interpreter/Interpreter.cpp:
10021         (JSC::ProfileHostCall::ProfileHostCall):
10022         (JSC::ProfileHostCall::~ProfileHostCall):
10023         (JSC::Interpreter::unwindCallFrame):
10024         (JSC::Interpreter::throwException):
10025         (JSC::Interpreter::execute):
10026         (JSC::Interpreter::executeCall):
10027         (JSC::Interpreter::executeConstruct):
10028         (JSC::Interpreter::privateExecute):
10029         * jit/JIT.cpp:
10030         (JSC::JIT::privateCompileMainPass):
10031         * jit/JIT.h:
10032         * jit/JITOpcodes.cpp:
10033         (JSC::JIT::emit_op_profile_has_called):
10034         (JSC::JIT::emit_op_profile_will_return):
10035         * jit/JITOpcodes32_64.cpp:
10036         (JSC::JIT::emit_op_profile_has_called):
10037         (JSC::JIT::emit_op_profile_will_return):
10038         * jit/JITStubs.cpp:
10039         (JSC::DEFINE_STUB_FUNCTION):
10040         * jit/JITStubs.h:
10041         * profiler/Profile.cpp:
10042         (JSC::Profile::Profile):
10043         * profiler/ProfileGenerator.cpp:
10044         (JSC::ProfileGenerator::addParentForConsoleStart):
10045         (JSC::ProfileGenerator::willExecute):
10046         (JSC::ProfileGenerator::didExecute):
10047         (JSC::ProfileGenerator::exceptionUnwind):
10048         (JSC::ProfileGenerator::stopProfiling):
10049         * profiler/ProfileGenerator.h:
10050         * profiler/ProfileNode.cpp:
10051         (JSC::ProfileNode::ProfileNode):
10052         (JSC::ProfileNode::willExecute):
10053         * profiler/ProfileNode.h:
10054         (JSC::ProfileNode::create):
10055         (JSC::ProfileNode::operator==):
10056         (JSC::ProfileNode::exec):
10057         * profiler/Profiler.cpp:
10058         (JSC::dispatchFunctionToProfiles):
10059         (JSC::Profiler::hasCalled):
10060         (JSC::Profiler::willEvaluate):
10061         (JSC::Profiler::willReturn):
10062         (JSC::Profiler::didEvaluate):
10063         (JSC::Profiler::exceptionUnwind):
10064         * profiler/Profiler.h:
10065
10066 2010-11-16  Brian Weinstein  <bweinstein@apple.com>
10067
10068         Reviewed by Adam Roben and Steve Falkenburg.
10069
10070         Touch Platform.h to force a rebuild for Windows.
10071
10072         * wtf/Platform.h:
10073
10074 2010-11-16  Steve Falkenburg  <sfalken@apple.com>
10075
10076         Reviewed by Adam Roben.
10077
10078         Disable LTCG for Windows Release builds. Add new Release_LTCG configuration.
10079         https://bugs.webkit.org/show_bug.cgi?id=49632
10080
10081         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10082         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
10083         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
10084         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
10085
10086 2010-11-16  Peter Varga  <pvarga@inf.u-szeged.hu>
10087
10088         Reviewed by Gavin Barraclough.
10089
10090         The number of recursive match calls isn't limited in YARR Interpreter
10091         https://bugs.webkit.org/show_bug.cgi?id=47906
10092
10093         Check the number of the matchDisjunction recursive calls to avoid unbounded
10094         recursion.
10095         Now the matchDisjunction function returns JSRegExpResult instead of bool.
10096         The JSRegExpResult enum contains the result of matching or the error code
10097         of the failure (like HitLimit) which terminates the matching.
10098         The error codes are based on pcre's jsRegExpExecute error codes.
10099
10100         * yarr/RegexInterpreter.cpp:
10101         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
10102         (JSC::Yarr::Interpreter::matchParentheses):
10103         (JSC::Yarr::Interpreter::backtrackParentheses):
10104         (JSC::Yarr::Interpreter::matchDisjunction):
10105         (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
10106         (JSC::Yarr::Interpreter::interpret):
10107         (JSC::Yarr::Interpreter::Interpreter):
10108         * yarr/RegexInterpreter.h:
10109
10110 2010-11-16  Brian Weinstein  <bweinstein@apple.com>
10111
10112         Rest of the Windows build fix.
10113
10114         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10115
10116 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
10117
10118         Windows build fix pt 1.
10119
10120         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10121
10122 2010-11-16  Gavin Barraclough  <barraclough@apple.com>
10123
10124         Reviewed by Oliver Hunt.
10125
10126         https://bugs.webkit.org/show_bug.cgi?id=49606
10127
10128         The bug here is that we read the prototype from the RHS argument using a regular
10129         op_get_by_id before op_instanceof has checked that this is an object implementing
10130         HasInstance. This incorrect behaviour gives rise to further unnecessary complexity
10131         in the code base, since we have additional logic (implemented using the
10132         GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors
10133         from the get_by_id into invalid parameter errors. Having fixed this bug this code
10134         is all redundant, since in these cases the get_by_id will never have been reached.
10135
10136         * bytecode/CodeBlock.cpp:
10137         (JSC::CodeBlock::dump):
10138         (JSC::CodeBlock::shrinkToFit):
10139         * bytecode/CodeBlock.h:
10140         (JSC::CodeBlock::addExpressionInfo):
10141         * bytecode/Opcode.h:
10142         * bytecompiler/BytecodeGenerator.cpp:
10143         (JSC::BytecodeGenerator::BytecodeGenerator):
10144         (JSC::BytecodeGenerator::emitCheckHasInstance):
10145         * bytecompiler/BytecodeGenerator.h:
10146         * bytecompiler/NodesCodegen.cpp:
10147         (JSC::InstanceOfNode::emitBytecode):
10148         * interpreter/Interpreter.cpp:
10149         (JSC::Interpreter::throwException):
10150         (JSC::Interpreter::privateExecute):
10151         * jit/JIT.cpp:
10152         (JSC::JIT::privateCompileMainPass):
10153         (JSC::JIT::privateCompileSlowCases):
10154         * jit/JIT.h:
10155         * jit/JITOpcodes.cpp:
10156         (JSC::JIT::emit_op_check_has_instance):
10157         (JSC::JIT::emit_op_instanceof):
10158         (JSC::JIT::emitSlow_op_check_has_instance):
10159         (JSC::JIT::emitSlow_op_instanceof):
10160         * jit/JITOpcodes32_64.cpp:
10161         (JSC::JIT::emit_op_check_has_instance):
10162         (JSC::JIT::emit_op_instanceof):
10163         (JSC::JIT::emitSlow_op_check_has_instance):
10164         (JSC::JIT::emitSlow_op_instanceof):
10165         * jit/JITStubs.cpp:
10166         (JSC::DEFINE_STUB_FUNCTION):
10167         * jit/JITStubs.h:
10168         * runtime/ExceptionHelpers.cpp:
10169         (JSC::createInterruptedExecutionException):
10170         (JSC::createTerminatedExecutionException):
10171         (JSC::createUndefinedVariableError):
10172         (JSC::createNotAFunctionError):
10173         (JSC::createNotAnObjectError):
10174         * runtime/ExceptionHelpers.h:
10175         * runtime/JSGlobalData.cpp:
10176         (JSC::JSGlobalData::JSGlobalData):
10177         * runtime/JSGlobalData.h:
10178         * runtime/JSNotAnObject.cpp:
10179         (JSC::JSNotAnObject::toPrimitive):
10180         (JSC::JSNotAnObject::getPrimitiveNumber):
10181         (JSC::JSNotAnObject::toBoolean):
10182         (JSC::JSNotAnObject::toNumber):
10183         (JSC::JSNotAnObject::toString):
10184         (JSC::JSNotAnObject::toObject):
10185         (JSC::JSNotAnObject::getOwnPropertySlot):
10186         (JSC::JSNotAnObject::getOwnPropertyDescriptor):
10187         (JSC::JSNotAnObject::put):
10188         (JSC::JSNotAnObject::deleteProperty):
10189         (JSC::JSNotAnObject::getOwnPropertyNames):
10190         * runtime/JSNotAnObject.h:
10191         (JSC::JSNotAnObject::JSNotAnObject):
10192         * runtime/JSObject.h:
10193         (JSC::JSObject::isActivationObject):
10194         * runtime/JSValue.cpp:
10195         (JSC::JSValue::toObjectSlowCase):
10196         (JSC::JSValue::synthesizeObject):
10197         (JSC::JSValue::synthesizePrototype):
10198
10199 2010-11-15  Darin Adler  <darin@apple.com>
10200
10201         Reviewed by Sam Weinig.
10202
10203         Harden additional string functions against large lengths
10204         https://bugs.webkit.org/show_bug.cgi?id=49574
10205
10206         * wtf/text/CString.cpp:
10207         (WTF::CString::init): Check for length that is too large for CString.
10208         (WTF::CString::newUninitialized): Ditto.
10209         (WTF::CString::copyBufferIfNeeded): Fix types so the length stays
10210         in a size_t.
10211
10212         * wtf/text/WTFString.cpp:
10213         (WTF::String::append): Check for length that is too large.
10214
10215 2010-11-15  Gavin Barraclough  <barraclough@apple.com>
10216
10217         Reviewed by Sam Weinig.
10218
10219         Bug 49577 - Function.prototype should be non-configurable
10220
10221         JSC lazily allocates the prototype property of Function objects.
10222
10223         We check the prototype exists on 'get', but not on 'put'.
10224         If you 'put' without having first done a 'get' you can end up with a configurable
10225         prototype (prototype should only ever be non-configurable).
10226
10227         This is visible in a couple of ways:
10228           * 'delete' on the property may succeed. (the next access will result in a new,
10229           reset prototype object).
10230           * the prototype may be set to a getter.
10231
10232         * runtime/JSFunction.cpp:
10233         (JSC::JSFunction::getOwnPropertyNames):
10234             Reify the prototype property before allowing an enumerate including don't enum properties.
10235         (JSC::JSFunction::put):
10236             Reify the prototype property before any put to it.
10237
10238 2010-11-15  Gavin Barraclough  <barraclough@apple.com>
10239
10240         Reviewed by Geoff Garen.
10241
10242         Bug 49488 - Only add source specific information to exceptions in Interpreter::throwException
10243
10244         Three types of source location information are added to errors.
10245
10246         (1) Divot information.
10247
10248         This was added with the intention of using it to provide better source highlighting in the inspector.
10249         We may still want to do so, but we probably should not be exposing these values in a manner visible to
10250         user scripts â€“ only through an internal C++ interface. The code adding divot properties to objects has
10251         been removed.
10252
10253         (2) Line number information.
10254
10255         Line number information is presently sometimes added at the point the exception is created, and sometimes
10256         added at the point the exception passes through throwException. Change this so that throwException has
10257         the sole responsibility for adding line number and source file information.
10258
10259         (3) Source snippets in the message of certain type errors (e.g. 'doc' in `Result of expression 'doc' [undefined] is not an object.`).
10260
10261         These messages are currently created at the point the exceptions is raised. Instead reformat the message
10262         such that the source snippet is located at the end (`Result of expression 'b1' [undefined] is not an object.`
10263         becomes `'undefined' is not an object (evaluating 'b1.property')`), and append these to the message at
10264         the in throw Exception. This presents a number of advantages:
10265           * we no longer need to have source location information to create these TypeErrors.
10266           * we can chose to append source location information in other error messages, including those where
10267             passing source location to the point of construction would be inconvenient.
10268           * we can chose in future to omit to append source location information when running in a non-debug mode.
10269
10270         This also cleans up some error output, e.g. removing double brackets ('[[]]') around objects in output,
10271         removing double periods (..) at end of lines, and adding slightly more context to some errors.
10272
10273         * bytecode/CodeBlock.cpp:
10274         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
10275             - Separated called to access line and range information.
10276
10277         * bytecode/CodeBlock.h:
10278             - Separated called to access line and range information.
10279
10280         * interpreter/Interpreter.cpp:
10281         (JSC::Interpreter::resolve):
10282         (JSC::Interpreter::resolveSkip):
10283         (JSC::Interpreter::resolveGlobal):
10284         (JSC::Interpreter::resolveGlobalDynamic):
10285         (JSC::Interpreter::resolveBaseAndProperty):
10286         (JSC::isInvalidParamForIn):
10287         (JSC::isInvalidParamForInstanceOf):
10288             - Update parameters passed to error constructors.
10289         (JSC::appendSourceToError):
10290             - Update message property to add location information (previously added in createErrorMessage, in ExceptionHelpers)
10291         (JSC::Interpreter::throwException):
10292             - Updated to call appendSourceToError. 
10293         (JSC::Interpreter::privateExecute):
10294             - Update parameters passed to error constructors.
10295
10296         * jit/JITStubs.cpp:
10297         (JSC::DEFINE_STUB_FUNCTION):
10298             - Update parameters passed to error constructors.
10299
10300         * runtime/Error.cpp:
10301         (JSC::addErrorInfo):
10302         (JSC::hasErrorInfo):
10303             - Removed divot properties.
10304
10305         * runtime/Error.h:
10306             - Removed divot properties.
10307
10308         * runtime/ErrorInstance.cpp:
10309         (JSC::ErrorInstance::ErrorInstance):
10310             - Initialize new property.
10311
10312         * runtime/ErrorInstance.h:
10313         (JSC::ErrorInstance::appendSourceToMessage):
10314         (JSC::ErrorInstance::setAppendSourceToMessage):
10315         (JSC::ErrorInstance::clearAppendSourceToMessage):
10316             - Added flag to check for errors needing location information appending.
10317         (JSC::ErrorInstance::isErrorInstance):
10318             - Added virtual method to check for ErrorInstances.
10319
10320         * runtime/ExceptionHelpers.cpp:
10321         (JSC::createUndefinedVariableError):
10322         (JSC::createInvalidParamError):
10323         (JSC::createNotAConstructorError):
10324         (JSC::createNotAFunctionError):
10325         (JSC::createNotAnObjectError):
10326             - Update parameters passed to error constructors, stopped adding line number information early, changed TypeError messages.
10327
10328         * runtime/ExceptionHelpers.h:
10329             - Updated function signatures.
10330
10331         * runtime/JSFunction.cpp:
10332         (JSC::callHostFunctionAsConstructor):
10333             - Update parameters passed to error constructors.
10334
10335         * runtime/JSObject.h:
10336         (JSC::JSObject::isErrorInstance):
10337             - Added virtual method to check for ErrorInstances.
10338
10339 2010-11-12  Anders Carlsson  <andersca@apple.com>
10340
10341         Reviewed by Adam Roben.
10342
10343         CString(const char*) crashes when passed a null pointer
10344         https://bugs.webkit.org/show_bug.cgi?id=49450
10345
10346         * wtf/text/CString.cpp:
10347         (WTF::CString::CString):
10348         Return early if str is null.
10349
10350 2010-11-11  Gavin Barraclough  <barraclough@apple.com>
10351
10352         Reviewed by Oliver Hunt.
10353
10354         Bug 49420 - Clean up syntax/reference error throw.
10355
10356         Some errors detected at compile time are thrown at runtime. We currently do so using a op_new_error/op_throw bytecode pair.
10357         This is not ideal. op_throw is used for explicit user throw statements, and has different requirements in terms or meta data
10358         attached to the exception (controlled by the explicitThrow parameter passed to Interpreter::throwException). To work around
10359         this, op_new_error has to add the meta data at an early stage, which is unlike other VM exceptions being raised.
10360
10361         We can simplify this and bring into line with other exception behaviour by changing new_error from just allocating an
10362         Exception instance to also throwing it â€“ but as a regular VM throw, correctly passing explicitThrow as false.
10363
10364         * JavaScriptCore.xcodeproj/project.pbxproj:
10365         * bytecode/CodeBlock.cpp:
10366         (JSC::CodeBlock::dump):
10367         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
10368         * bytecode/Opcode.h:
10369         * bytecompiler/BytecodeGenerator.cpp:
10370         (JSC::BytecodeGenerator::emitThrowReferenceError):
10371         (JSC::BytecodeGenerator::emitThrowSyntaxError):
10372         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
10373         * bytecompiler/BytecodeGenerator.h:
10374         (JSC::BytecodeGenerator::emitNodeInConditionContext):
10375         * bytecompiler/NodesCodegen.cpp:
10376         (JSC::ThrowableExpressionData::emitThrowReferenceError):
10377         (JSC::ThrowableExpressionData::emitThrowSyntaxError):
10378         (JSC::RegExpNode::emitBytecode):
10379         (JSC::PostfixErrorNode::emitBytecode):
10380         (JSC::PrefixErrorNode::emitBytecode):
10381         (JSC::AssignErrorNode::emitBytecode):
10382         (JSC::ForInNode::emitBytecode):
10383         (JSC::ContinueNode::emitBytecode):
10384         (JSC::BreakNode::emitBytecode):
10385         (JSC::ReturnNode::emitBytecode):
10386         (JSC::LabelNode::emitBytecode):
10387         * interpreter/Interpreter.cpp:
10388         (JSC::Interpreter::privateExecute):
10389         * jit/JIT.cpp:
10390         (JSC::JIT::privateCompileMainPass):
10391         * jit/JIT.h:
10392         * jit/JITOpcodes.cpp:
10393         (JSC::JIT::emit_op_throw_reference_error):
10394         (JSC::JIT::emit_op_throw_syntax_error):
10395         * jit/JITOpcodes32_64.cpp:
10396         (JSC::JIT::emit_op_throw_reference_error):
10397         (JSC::JIT::emit_op_throw_syntax_error):
10398         * jit/JITStubs.cpp:
10399         (JSC::DEFINE_STUB_FUNCTION):
10400         * jit/JITStubs.h:
10401         * parser/Nodes.h:
10402
10403 2010-11-11  Darin Adler  <darin@apple.com>
10404
10405         Reviewed by Sam Weinig.
10406
10407         Harden some string functions against large lengths
10408         https://bugs.webkit.org/show_bug.cgi?id=49293
10409
10410         * wtf/text/StringImpl.cpp:
10411         (WTF::StringImpl::create): Fix incorrect use of PassRefPtr. Check for
10412         strlen results that are too large for StringImpl.
10413         (WTF::StringImpl::lower): Check for lengths that are too large for
10414         int32_t.
10415         (WTF::StringImpl::upper): Fix incorrect use of PassRefPtr. Check for
10416         lengths that are too large for int32_t.
10417         (WTF::StringImpl::secure): Fix incorect use of PassRefPtr. Use unsigned
10418         rather than int and int32_t so we can handle any length.
10419         (WTF::StringImpl::foldCase): Fix incorrect use of PassRefPtr. Check for
10420         lengths that are too large for int32_t.
10421         (WTF::StringImpl::find): Check for strlen results that are too large for
10422         StringImpl.
10423         (WTF::StringImpl::findIgnoringCase): Ditto.
10424         (WTF::StringImpl::replace): Fix incorrect use of PassRefPtr.
10425         (WTF::StringImpl::createWithTerminatingNullCharacter): Check before
10426         incrementing length.
10427
10428 2010-11-11  Dan Horák  <dan@danny.cz>
10429
10430         Reviewed by Andreas Kling.
10431
10432         Add support for the s390/s390x architectures, it's big-endian
10433         with s390 being 32-bit and s390x being 64-bit.
10434
10435         https://bugs.webkit.org/show_bug.cgi?id=34786
10436
10437         * wtf/Platform.h:
10438
10439 2010-11-10  Csaba Osztrogonác  <ossy@webkit.org>
10440
10441         Reviewed by David Hyatt.
10442
10443         HTML5 Ruby support should be mandatory feature
10444         https://bugs.webkit.org/show_bug.cgi?id=49272
10445
10446         Remove Ruby as optional feature.
10447
10448         * Configurations/FeatureDefines.xcconfig:
10449         * JavaScriptCorePrefix.h:: Touch it to avoid incremental build failure on Windows.
10450
10451 2010-11-10  Peter Rybin  <peter.rybin@gmail.com>
10452
10453         Reviewed by Adam Barth.
10454
10455         HTML parser should provide script column position within HTML document to JavaScript engine
10456         https://bugs.webkit.org/show_bug.cgi?id=45271
10457
10458         Adds TextPosition* classes -- a structure that stores line/column/generation
10459         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
10460         wrappers that emphasize whether int number is used as zero-based or
10461         one-based.
10462
10463         * GNUmakefile.am:
10464         * JavaScriptCore.gypi:
10465         * JavaScriptCore.xcodeproj/project.pbxproj:
10466         * wtf/text/TextPosition.h: Added.
10467         (WTF::TextPosition::TextPosition):
10468         (WTF::TextPosition::minimumPosition):
10469         (WTF::TextPosition::belowRangePosition):
10470         (WTF::ZeroBasedNumber::fromZeroBasedInt):
10471         (WTF::ZeroBasedNumber::ZeroBasedNumber):
10472         (WTF::ZeroBasedNumber::zeroBasedInt):
10473         (WTF::ZeroBasedNumber::base):
10474         (WTF::ZeroBasedNumber::belowBase):
10475         (WTF::OneBasedNumber::fromOneBasedInt):
10476         (WTF::OneBasedNumber::OneBasedNumber):
10477         (WTF::OneBasedNumber::oneBasedInt):
10478         (WTF::OneBasedNumber::convertAsZeroBasedInt):
10479         (WTF::OneBasedNumber::convertToZeroBased):
10480         (WTF::OneBasedNumber::base):
10481         (WTF::OneBasedNumber::belowBase):
10482         (WTF::toZeroBasedTextPosition):
10483         (WTF::toOneBasedTextPosition):
10484         (WTF::ZeroBasedNumber::convertToOneBased):
10485
10486 2010-11-09  Gabor Loki  <loki@webkit.org>
10487
10488         Reviewed by Gavin Barraclough.
10489
10490         ARM JIT asserts when loading http://reader.google.com in debug mode
10491         https://bugs.webkit.org/show_bug.cgi?id=48912
10492
10493         There are several cases when the uninterrupted sequence is larger than
10494         maximum required offset for pathing the same sequence. Eg.: if in a
10495         uninterrupted sequence the last macroassembler's instruction is a stub
10496         call, it emits store instruction(s) which should not be included in the
10497         calculation of length of uninterrupted sequence. So, the insnSpace and
10498         constSpace should be upper limit instead of hard limit.
10499
10500         * jit/JIT.h:
10501         * jit/JITInlineMethods.h:
10502         (JSC::JIT::endUninterruptedSequence):
10503
10504 2010-11-09  David Kilzer  <ddkilzer@apple.com>
10505
10506         <http://webkit.org/b/49279> Fix include statements for local headers
10507
10508         Reviewed by Gavin Barraclough.
10509
10510         Use "Foo.h" instead of <Foo.h> for local headers.
10511
10512         * assembler/AbstractMacroAssembler.h: Also fixed sort order.
10513         * assembler/CodeLocation.h:
10514         * yarr/RegexJIT.h:
10515         * yarr/RegexParser.h:
10516
10517 2010-11-08  Adam Roben  <aroben@apple.com>
10518
10519         Roll out r71532
10520
10521         It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default
10522         .bashrc unsets %TEMP%, which broke copy-tools.cmd.
10523
10524         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
10525         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
10526         * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Removed.
10527         * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Removed.
10528
10529 2010-11-08  Martin Robinson  <mrobinson@igalia.com>
10530
10531         Reviewed by Xan Lopez.
10532
10533         >=webkitgtk-1.2.5: parallel build fails with libtool: link: cannot find the library `libwebkit-1.0.la' or unhandled argument `libwebkit-1.0.la'
10534         https://bugs.webkit.org/show_bug.cgi?id=49128
10535
10536         r59042 introduced a C++-style comment in Platform.h, which is often
10537         included in C source files. Change it to a C-style comment.
10538
10539         * wtf/Platform.h: Fix the C++-style comment.
10540
10541 2010-11-08  Adam Roben  <aroben@apple.com>
10542
10543         Show a message and cause the build to immediately fail when any
10544         .vsprops files are copied
10545
10546         When $WebKitLibrariesDir is set to a non-standard location, the
10547         .vsprops files have to be copied from WebKitLibraries/win to
10548         $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up
10549         changes to the .vsprops files until the next time it opens the solution
10550         file. Before this patch, the build would soldier on with the old
10551         .vsprops files, leading to strange build failures. Now we detect that
10552         the .vsprops files have been updated, display a message to the user
10553         telling them what to do, and make the build fail immediately.
10554
10555         Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
10556         .vsprops files are updated
10557
10558         Reviewed by Steve Falkenburg.
10559
10560         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
10561         Moved code to copy the tools directory to the new copy-tools.cmd
10562         script. Moved that after the command that writes the buildfailed file
10563         so the build will be considered a failure if copy-tools.cmd fails.
10564         Changed to write the project name into buildfailed like all our other
10565         projects do, so those other projects will know that the failure was due
10566         to this project.
10567
10568         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
10569         Added new scripts.
10570
10571         * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies
10572         the tools directory to $WebKitLibrariesDir. If any files were copied,
10573         we display a message to the user and exit with error code 1 to cause
10574         the build to fail. In non-interactive builds, we just print the message
10575         to the build log. In interactive builds, we show the message in an
10576         alert.
10577
10578         * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses
10579         Windows Scripting Host to display a message in an alert.
10580
10581 2010-11-07  Sam Magnuson  <smagnuson@netflix.com>
10582
10583         Reviewed by Andreas Kling.
10584
10585         [Qt] make install does not cause JavaScriptCore to be built
10586         https://bugs.webkit.org/show_bug.cgi?id=49114
10587
10588         * JavaScriptCore.pro:
10589
10590 2010-11-05  Oliver Hunt  <oliver@apple.com>
10591
10592         Reviewed by Gavin Barraclough.
10593
10594         Website consistently crashing TOT in JIT::execute() on news.com.au
10595         https://bugs.webkit.org/show_bug.cgi?id=48954
10596
10597         The problem here was the strict pass of this conversion was loading the
10598         this structure into one register but doing the flags check off a different
10599         register.  This is clearly wrong.  I have been unable to trigger the crash
10600         with a reduction, but I've added an assertion to the this conversion to
10601         attempt to make it more readily catchable in future.
10602
10603         * jit/JITOpcodes.cpp:
10604         (JSC::JIT::emit_op_convert_this_strict):
10605         * jit/JITOpcodes32_64.cpp:
10606         (JSC::JIT::emit_op_convert_this_strict):
10607         * jit/JITStubs.cpp:
10608         (JSC::DEFINE_STUB_FUNCTION):
10609
10610 2010-11-04  Xan Lopez  <xlopez@igalia.com>
10611
10612         Reviewed by Adam Barth.
10613
10614         Use leakRef instead of releaseRef
10615         https://bugs.webkit.org/show_bug.cgi?id=48974
10616
10617         Use leakRef instead of the deprecated releaseRef. This was renamed
10618         some time ago because 'releaseRef' is too close to 'release',
10619         which does something completely different.
10620
10621 2010-11-04  Eric Seidel  <eric@webkit.org>
10622
10623         Reviewed by Gavin Barraclough.
10624
10625         REGRESSION(49798): Crash in HTMLObjectElement::parseMappedAttribute
10626         https://bugs.webkit.org/show_bug.cgi?id=48789
10627
10628         The contract for all String/AtomicString methods seems to be that it's
10629         safe to call them, even when the String is null (impl() returns 0).
10630         This contract was broken by r49798 (unintentionally) when optimizing
10631         for dromeo.
10632         This patch adds a null check to AtomicString::lower() fixing this
10633         crash and preventing future confusion.
10634
10635         * wtf/text/AtomicString.cpp:
10636         (WTF::AtomicString::lower):
10637
10638 2010-11-04  Adam Barth  <abarth@webkit.org>
10639
10640         Enabled ICCJPEG on Chromium Mac
10641         https://bugs.webkit.org/show_bug.cgi?id=48977
10642
10643         * wtf/Platform.h:
10644
10645 2010-11-03  Oliver Hunt  <oliver@apple.com>
10646
10647         Reviewed by Gavin Barraclough.
10648
10649         Crash in Function.prototype.call.apply
10650         https://bugs.webkit.org/show_bug.cgi?id=48485
10651
10652         The problem here was op_load_varargs failing to ensure that
10653         there was sufficient space for the entire callframe prior to
10654         op_call_varargs.  This meant that when we then re-entered the
10655         VM it was possible to stomp over an earlier portion of the
10656         stack, so causing sub-optimal behaviour.
10657
10658         * bytecode/Opcode.h:
10659         * bytecompiler/BytecodeGenerator.cpp:
10660         (JSC::BytecodeGenerator::emitLoadVarargs):
10661         * bytecompiler/BytecodeGenerator.h:
10662         * bytecompiler/NodesCodegen.cpp:
10663         (JSC::ApplyFunctionCallDotNode::emitBytecode):
10664         * jit/JIT.cpp:
10665         (JSC::JIT::privateCompile):
10666         * jit/JITOpcodes.cpp:
10667         (JSC::JIT::emit_op_load_varargs):
10668
10669 2010-11-03  Kenneth Russell  <kbr@google.com>
10670
10671         Reviewed by Chris Marrin.
10672
10673         Redesign extension mechanism in GraphicsContext3D
10674         https://bugs.webkit.org/show_bug.cgi?id=46894
10675
10676         * JavaScriptCore.exp:
10677          - Exposed String::split(const String&, Vector<String>).
10678
10679 2010-11-03  Adam Roben  <aroben@apple.com>
10680
10681         Bring WTF.vcproj up to date
10682
10683         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added filters for the text and
10684         unicode directories, added new files, removed old files.
10685
10686 2010-11-03  Gabor Loki  <loki@webkit.org>
10687
10688         Reviewed by Andreas Kling.
10689
10690         Remove unused initializeWeakRandomNumberGenerator
10691         https://bugs.webkit.org/show_bug.cgi?id=48899
10692
10693         WeakRandom class is used instead of weakRandomNumber and its initializer.
10694
10695         * wtf/RandomNumberSeed.h:
10696
10697 2010-11-03  Gabor Loki  <loki@webkit.org>
10698
10699         Reviewed by Geoffrey Garen.
10700
10701         Unused class: JSFastMath with JSValue64
10702         https://bugs.webkit.org/show_bug.cgi?id=48835
10703
10704         Remove unused JSFastMath class.
10705
10706         * runtime/JSImmediate.h:
10707
10708 2010-11-02  Adam Roben  <aroben@apple.com>
10709
10710         Windows build fix after r71127
10711
10712         MSVC isn't smart enough to figure out that the definition of the global
10713         nullptr variable isn't needed, so we provide one for it.
10714
10715         Fixes <http://webkit.org/b/48862> Windows build is broken due to
10716         undefined symbol nullptr
10717
10718         Reviewed by Anders Carlsson.
10719
10720         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export nullptr.
10721
10722         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added NullPtr.cpp and let VS
10723         resort the files.
10724
10725         * wtf/NullPtr.cpp: Added.
10726
10727 2010-11-02  Martin Robinson  <mrobinson@igalia.com>
10728
10729         Reviewed by Xan Lopez.
10730
10731         Remove special handling of HashTableDeletedValue in PlatformRefPtr and manually manage memory that cannot be controlled by HashTraits
10732         https://bugs.webkit.org/show_bug.cgi?id=48841
10733
10734         Remove special handling of HashTableDeletedValue in PlatformRefPtr.
10735         This is better handled on a case-by-case basis, when HashTraits
10736         cannot account for it.
10737
10738         * wtf/PlatformRefPtr.h:
10739         (WTF::PlatformRefPtr::~PlatformRefPtr):
10740         (WTF::PlatformRefPtr::clear):
10741         (WTF::::operator):
10742
10743 2010-10-29  Oliver Hunt  <oliver@apple.com>
10744
10745         Reviewed by Gavin Barraclough.
10746
10747         REGRESSION: r69429-r69611: Crash in JSC::Interpreter::privateExecute
10748         https://bugs.webkit.org/show_bug.cgi?id=47573
10749
10750         I think the interpreter portion of this was introduced by
10751         an incorrect but silent merge when I updated prior to committing.
10752         The JIT change is basically just a correctness fix, but it is
10753         needed to prevent the testcase from asserting in debug builds.
10754
10755         The basic problem is incorrectly setting the activation object
10756         on an arguments object.  The crash was due to us setting a null
10757         activation in the interpreter, in the jit we were setting the
10758         activation of a strict mode arguments object.
10759
10760         * interpreter/Interpreter.cpp:
10761         (JSC::Interpreter::privateExecute):
10762         * jit/JITStubs.cpp:
10763         (JSC::DEFINE_STUB_FUNCTION):
10764         * wtf/Platform.h:
10765
10766 2010-10-29  Csaba Osztrogonác  <ossy@webkit.org>
10767
10768         Reviewed by Adam Roben and David Kilzer.
10769
10770         Fix and cleanup of build systems
10771         https://bugs.webkit.org/show_bug.cgi?id=48342
10772
10773         * Configurations/FeatureDefines.xcconfig: Add missing ENABLE_FULLSCREEN_API
10774
10775 2010-10-28  Kwang Yul Seo  <skyul@company100.net>
10776
10777         Reviewed by Darin Adler.
10778
10779         Include stddef.h unconditionally in Assertions.h
10780         https://bugs.webkit.org/show_bug.cgi?id=48573
10781
10782         There is no reason to have stddef.h include be MSVC-only.
10783
10784         * wtf/Assertions.h:
10785
10786 2010-10-28  Herczeg Zoltan  <zherczeg@webkit.org>
10787
10788         Rubber stamped by Csaba Osztrogonác.
10789
10790         Try to fix interpreter build.
10791
10792         Needed parentheses around assignment to avoid GCC warning after
10793         http://trac.webkit.org/changeset/70703
10794
10795         * interpreter/Interpreter.cpp:
10796         (JSC::Interpreter::privateExecute):
10797
10798 2010-10-28  Peter Varga  <pvarga@inf.u-szeged.hu>
10799
10800         Reviewed by Csaba Osztrogonác.
10801
10802         resetAssertionMatches() is an unused function in YARR Interpreter
10803         https://bugs.webkit.org/show_bug.cgi?id=48503
10804
10805         The resetAssertionMatches() function is removed from YARR Interpreter
10806         because it's never called.
10807
10808         * yarr/RegexInterpreter.cpp:
10809         (JSC::Yarr::Interpreter::resetMatches):
10810
10811 2010-10-28  Zoltan Herczeg  <zherczeg@webkit.org>
10812
10813         Reviewed by Andreas Kling.
10814
10815         Wrong instruction form for BKPT
10816         https://bugs.webkit.org/show_bug.cgi?id=48427
10817
10818         One '0' is missing from BKPT instruction.
10819         Thanks for Jacob Bramley for reporting this error.
10820
10821         * assembler/ARMAssembler.h:
10822
10823 2010-10-28  Xan Lopez  <xlopez@igalia.com>
10824
10825         Try to fix Snow Leopard build.
10826
10827         * jit/JITPropertyAccess.cpp:
10828         (JSC::JIT::testPrototype):
10829
10830 2010-10-28  Xan Lopez  <xlopez@igalia.com>
10831
10832         Reviewed by Oliver Hunt.
10833
10834         Do not have two different asCell APIs in JSValue
10835         https://bugs.webkit.org/show_bug.cgi?id=47979
10836
10837         Remove JSCell* asCell(JSValue) in favor of only using
10838         JSValue::asCell().
10839
10840         * API/APICast.h:
10841         (toRef):
10842         * jit/JITPropertyAccess32_64.cpp:
10843         (JSC::JIT::testPrototype):
10844         * jit/JITStubs.cpp:
10845         (JSC::JITThunks::tryCachePutByID):
10846         (JSC::JITThunks::tryCacheGetByID):
10847         (JSC::DEFINE_STUB_FUNCTION):
10848         * runtime/GetterSetter.h:
10849         (JSC::asGetterSetter):
10850         * runtime/JSByteArray.h:
10851         (JSC::asByteArray):
10852         * runtime/JSCell.h:
10853         (JSC::JSCell::getCallData):
10854         (JSC::JSCell::getConstructData):
10855         * runtime/JSString.h:
10856         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
10857         (JSC::asString):
10858         * runtime/JSValue.h:
10859         * runtime/Operations.cpp:
10860         (JSC::jsIsObjectType):
10861         * runtime/Operations.h:
10862         (JSC::normalizePrototypeChain):
10863         * runtime/Protect.h:
10864         (JSC::gcProtect):
10865         (JSC::gcUnprotect):
10866
10867 2010-10-27  Chao-ying Fu  <fu@mips.com>
10868
10869         Reviewed by Oliver Hunt.
10870
10871         Support emit_op_mod() for MIPS on JSVALUE32_64
10872         https://bugs.webkit.org/show_bug.cgi?id=46511
10873
10874         This patch uses MIPS div instructions for op_mod to improve performance.
10875
10876         * jit/JITArithmetic32_64.cpp:
10877         (JSC::JIT::emit_op_mod):
10878
10879 2010-10-27  Brent Fulgham  <bfulgham@webkit.org>
10880
10881         Unreviewed build correction.
10882
10883         * wtf/Platform.h: Make sure ACCELERATED_COMPOSITING is
10884         turned off in the WinCairo port.  This isn't supported (yet.)
10885
10886 2010-10-27  Chris Rogers  <crogers@google.com>
10887
10888         Reviewed by Chris Marrin.
10889
10890         Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit
10891         https://bugs.webkit.org/show_bug.cgi?id=48279
10892
10893         * Configurations/FeatureDefines.xcconfig:
10894
10895 2010-10-27  Brian Weinstein  <bweinstein@apple.com>
10896
10897         Windows build fix.
10898
10899         * jit/JITStubs.cpp:
10900         (JSC::jitThrow):
10901
10902 2010-10-27  Gavin Barraclough  <barraclough@apple.com>
10903
10904         Reviewed by Oliver Hunt.
10905
10906         Bug 48365 - Remove output parameters from JITStackFrame
10907
10908         The JIT stub functions presently use the stackframe to provide a couple of additional return values.
10909           * In the case of uncaught exceptions the exception value is returned on the stackframe.exception property.
10910           * In the case of caught exceptions the updated value for the callFrame register is returned on the stackframe.callFrame property.
10911
10912         Change exception returns such that exceptions are always returned on JSGlobalData::exception.
10913         Change op_catch such that the new CallFrame value is returned from op_throw / vm_throw in regT0.
10914
10915         * JavaScriptCore.xcodeproj/project.pbxproj:
10916         * debugger/Debugger.cpp:
10917         (JSC::evaluateInGlobalCallFrame):
10918         * debugger/DebuggerCallFrame.cpp:
10919         (JSC::DebuggerCallFrame::evaluate):
10920         * interpreter/CachedCall.h:
10921         (JSC::CachedCall::CachedCall):
10922         (JSC::CachedCall::call):
10923         * interpreter/CallFrame.h:
10924         (JSC::ExecState::exception):
10925         * interpreter/Interpreter.cpp:
10926         (JSC::Interpreter::callEval):
10927         (JSC::Interpreter::Interpreter):
10928         (JSC::Interpreter::execute):
10929         (JSC::Interpreter::executeCall):
10930         (JSC::Interpreter::executeConstruct):
10931         (JSC::Interpreter::prepareForRepeatCall):
10932         (JSC::Interpreter::privateExecute):
10933         * interpreter/Interpreter.h:
10934         * jit/JITCode.h:
10935         (JSC::JITCode::execute):
10936         * jit/JITOpcodes.cpp:
10937         (JSC::JIT::emit_op_catch):
10938         * jit/JITOpcodes32_64.cpp:
10939         (JSC::JIT::emit_op_catch):
10940         * jit/JITStubs.cpp:
10941         (JSC::ctiTrampoline):
10942         (JSC::jitThrow):
10943         (JSC::DEFINE_STUB_FUNCTION):
10944         * jit/JITStubs.h:
10945         * runtime/ArrayPrototype.cpp:
10946         (JSC::arrayProtoFuncFilter):
10947         (JSC::arrayProtoFuncMap):
10948         (JSC::arrayProtoFuncEvery):
10949         (JSC::arrayProtoFuncForEach):
10950         (JSC::arrayProtoFuncSome):
10951         (JSC::arrayProtoFuncReduce):
10952         (JSC::arrayProtoFuncReduceRight):
10953         * runtime/CallData.cpp:
10954         (JSC::call):
10955         * runtime/Completion.cpp:
10956         (JSC::evaluate):
10957         * runtime/ConstructData.cpp:
10958         (JSC::construct):
10959         * runtime/ExceptionHelpers.cpp:
10960         (JSC::createErrorForInvalidGlobalAssignment):
10961         (JSC::throwOutOfMemoryError):
10962         (JSC::throwStackOverflowError):
10963         * runtime/ExceptionHelpers.h:
10964         * runtime/JSArray.cpp:
10965         (JSC::JSArray::sort):
10966         * runtime/JSGlobalObjectFunctions.cpp:
10967         (JSC::globalFuncEval):
10968         * runtime/StringPrototype.cpp:
10969         (JSC::stringProtoFuncReplace):
10970
10971 2010-10-27  Gabor Loki  <loki@webkit.org>
10972
10973         Reviewed by Oliver Hunt.
10974
10975         https://bugs.webkit.org/show_bug.cgi?id=48060
10976         Speed up op_jeq_null and op_jneq_null.
10977
10978         For both opcodes the NullTag and UndefinedTag are checked to control the
10979         jump. These values can be simply checked by AboveOrEqual or Below
10980         condition if they are the two highest unsigned integers from JSValue's
10981         Tag field.
10982
10983         * jit/JITOpcodes32_64.cpp:
10984         (JSC::JIT::emit_op_jeq_null):
10985         (JSC::JIT::emit_op_jneq_null):
10986         * runtime/JSValue.h:
10987
10988 2010-10-25  Geoffrey Garen  <ggaren@apple.com>
10989
10990         Reviewed by Oliver Hunt.
10991
10992         https://bugs.webkit.org/show_bug.cgi?id=41948
10993         REGRESSION(r60392): Registerfile can be unwound too far following an exception
10994         
10995         SunSpider reports no change.
10996
10997         * interpreter/Interpreter.cpp:
10998         (JSC::Interpreter::throwException): Walk the stack to calculate the high
10999         water mark currently in use. It's not safe to assume that the current
11000         CallFrame's high water mark is the highest high water mark because
11001         calls do not always set up at the end of a CallFrame. A large caller
11002         CallFrame can encompass a small callee CallFrame.
11003
11004         * jit/JITOpcodes.cpp:
11005         (JSC::JIT::privateCompileCTINativeCall):
11006         * jit/JITOpcodes32_64.cpp:
11007         (JSC::JIT::privateCompileCTINativeCall): Make sure to set a 0 CodeBlock
11008         in the CallFrame of a host call, like the Interpreter does, instead of
11009         leaving the CodeBlock field uninitialized. The backtracing code requires
11010         a valid CodeBlock field in each CallFrame.
11011
11012 2010-10-27  Gabor Loki  <loki@webkit.org>
11013
11014         Reviewed by Csaba Osztrogonác.
11015
11016         Add cmn to branch32(reg, imm) on ARM
11017         https://bugs.webkit.org/show_bug.cgi?id=48062
11018
11019         The conditional comparison can be done with cmn if the imm value is
11020         negative and can fit into the cmn instruction.
11021
11022         * assembler/MacroAssemblerARM.h:
11023         (JSC::MacroAssemblerARM::branch32):
11024
11025 2010-10-26  Oliver Hunt  <oliver@apple.com>
11026
11027         Interpreter build fix.
11028
11029         * interpreter/Interpreter.cpp:
11030         (JSC::Interpreter::privateExecute):
11031
11032 2010-10-25  Oliver Hunt  <oliver@apple.com>
11033
11034         Reviewed by Gavin Barraclough.
11035
11036         Remove exec and globalData arguments from jsNumber
11037         https://bugs.webkit.org/show_bug.cgi?id=48270
11038
11039         Remove the now unused exec and globalData arguments from jsNumber
11040         and mechanically update all users of jsNumber.
11041
11042         * API/JSValueRef.cpp:
11043         (JSValueMakeNumber):
11044         * bytecompiler/BytecodeGenerator.cpp:
11045         (JSC::BytecodeGenerator::emitLoad):
11046         * bytecompiler/NodesCodegen.cpp:
11047         (JSC::ArrayNode::emitBytecode):
11048         * jit/JITArithmetic.cpp:
11049         (JSC::JIT::emit_op_mod):
11050         * jit/JITArithmetic32_64.cpp:
11051         (JSC::JIT::emit_op_mod):
11052         * jit/JITOpcodes.cpp:
11053         (JSC::JIT::emit_op_jfalse):
11054         (JSC::JIT::emit_op_jtrue):
11055         * jit/JITStubs.cpp:
11056         (JSC::DEFINE_STUB_FUNCTION):
11057         * jsc.cpp:
11058         (functionRun):
11059         * runtime/Arguments.cpp:
11060         (JSC::Arguments::getOwnPropertySlot):
11061         (JSC::Arguments::getOwnPropertyDescriptor):
11062         * runtime/ArrayConstructor.cpp:
11063         (JSC::ArrayConstructor::ArrayConstructor):
11064         * runtime/ArrayPrototype.cpp:
11065         (JSC::arrayProtoFuncPop):
11066         (JSC::arrayProtoFuncPush):
11067         (JSC::arrayProtoFuncShift):
11068         (JSC::arrayProtoFuncSplice):
11069         (JSC::arrayProtoFuncUnShift):
11070         (JSC::arrayProtoFuncFilter):
11071         (JSC::arrayProtoFuncMap):
11072         (JSC::arrayProtoFuncEvery):
11073         (JSC::arrayProtoFuncForEach):
11074         (JSC::arrayProtoFuncSome):
11075         (JSC::arrayProtoFuncReduce):
11076         (JSC::arrayProtoFuncReduceRight):
11077         (JSC::arrayProtoFuncIndexOf):
11078         (JSC::arrayProtoFuncLastIndexOf):
11079         * runtime/BooleanConstructor.cpp:
11080         (JSC::BooleanConstructor::BooleanConstructor):
11081         * runtime/CachedTranscendentalFunction.h:
11082         (JSC::CachedTranscendentalFunction::operator()):
11083         * runtime/DateConstructor.cpp:
11084         (JSC::DateConstructor::DateConstructor):
11085         (JSC::dateParse):
11086         (JSC::dateNow):
11087         (JSC::dateUTC):
11088         * runtime/DateInstance.cpp:
11089         (JSC::DateInstance::DateInstance):
11090         * runtime/DatePrototype.cpp:
11091         (JSC::dateProtoFuncGetFullYear):
11092         (JSC::dateProtoFuncGetUTCFullYear):
11093         (JSC::dateProtoFuncGetMonth):
11094         (JSC::dateProtoFuncGetUTCMonth):
11095         (JSC::dateProtoFuncGetDate):
11096         (JSC::dateProtoFuncGetUTCDate):
11097         (JSC::dateProtoFuncGetDay):
11098         (JSC::dateProtoFuncGetUTCDay):
11099         (JSC::dateProtoFuncGetHours):
11100         (JSC::dateProtoFuncGetUTCHours):
11101         (JSC::dateProtoFuncGetMinutes):
11102         (JSC::dateProtoFuncGetUTCMinutes):
11103         (JSC::dateProtoFuncGetSeconds):
11104         (JSC::dateProtoFuncGetUTCSeconds):
11105         (JSC::dateProtoFuncGetMilliSeconds):
11106         (JSC::dateProtoFuncGetUTCMilliseconds):
11107         (JSC::dateProtoFuncGetTimezoneOffset):
11108         (JSC::dateProtoFuncSetTime):
11109         (JSC::setNewValueFromTimeArgs):
11110         (JSC::setNewValueFromDateArgs):
11111         (JSC::dateProtoFuncSetYear):
11112         (JSC::dateProtoFuncGetYear):
11113         * runtime/Error.cpp:
11114         (JSC::addErrorSourceInfo):
11115         (JSC::addErrorDivotInfo):
11116         * runtime/ErrorConstructor.cpp:
11117         (JSC::ErrorConstructor::ErrorConstructor):
11118         * runtime/FunctionConstructor.cpp:
11119         (JSC::FunctionConstructor::FunctionConstructor):
11120         * runtime/FunctionPrototype.cpp:
11121         (JSC::FunctionPrototype::FunctionPrototype):
11122         * runtime/JSArray.cpp:
11123         (JSC::JSArray::getOwnPropertySlot):
11124         (JSC::JSArray::getOwnPropertyDescriptor):
11125         * runtime/JSByteArray.cpp:
11126         (JSC::JSByteArray::JSByteArray):
11127         * runtime/JSByteArray.h:
11128         (JSC::JSByteArray::getIndex):
11129         * runtime/JSFunction.cpp:
11130         (JSC::JSFunction::JSFunction):
11131         (JSC::JSFunction::lengthGetter):
11132         (JSC::JSFunction::getOwnPropertyDescriptor):
11133         * runtime/JSGlobalObject.cpp:
11134         (JSC::JSGlobalObject::reset):
11135         * runtime/JSGlobalObjectFunctions.cpp:
11136         (JSC::globalFuncParseInt):
11137         (JSC::globalFuncParseFloat):
11138         * runtime/JSNumberCell.h:
11139         (JSC::JSValue::JSValue):
11140         (JSC::jsNaN):
11141         (JSC::JSValue::toJSNumber):
11142         * runtime/JSONObject.cpp:
11143         (JSC::unwrapBoxedPrimitive):
11144         (JSC::PropertyNameForFunctionCall::value):
11145         (JSC::JSONStringify):
11146         * runtime/JSString.cpp:
11147         (JSC::JSString::getStringPropertyDescriptor):
11148         * runtime/JSString.h:
11149         (JSC::JSString::getStringPropertySlot):
11150         * runtime/JSValue.h:
11151         (JSC::jsDoubleNumber):
11152         (JSC::jsNumber):
11153         (JSC::jsNaN):
11154         (JSC::JSValue::JSValue):
11155         (JSC::JSValue::toJSNumber):
11156         * runtime/LiteralParser.cpp:
11157         (JSC::LiteralParser::parse):
11158         * runtime/MathObject.cpp:
11159         (JSC::MathObject::MathObject):
11160         (JSC::mathProtoFuncAbs):
11161         (JSC::mathProtoFuncACos):
11162         (JSC::mathProtoFuncASin):
11163         (JSC::mathProtoFuncATan):
11164         (JSC::mathProtoFuncATan2):
11165         (JSC::mathProtoFuncCeil):
11166         (JSC::mathProtoFuncCos):
11167         (JSC::mathProtoFuncExp):
11168         (JSC::mathProtoFuncFloor):
11169         (JSC::mathProtoFuncLog):
11170         (JSC::mathProtoFuncMax):
11171         (JSC::mathProtoFuncMin):
11172         (JSC::mathProtoFuncPow):
11173         (JSC::mathProtoFuncRandom):
11174         (JSC::mathProtoFuncRound):
11175         (JSC::mathProtoFuncSin):
11176         (JSC::mathProtoFuncSqrt):
11177         (JSC::mathProtoFuncTan):
11178         * runtime/NativeErrorConstructor.cpp:
11179         (JSC::NativeErrorConstructor::NativeErrorConstructor):
11180         * runtime/NumberConstructor.cpp:
11181         (JSC::NumberConstructor::NumberConstructor):
11182         (JSC::numberConstructorNaNValue):
11183         (JSC::numberConstructorNegInfinity):
11184         (JSC::numberConstructorPosInfinity):
11185         (JSC::numberConstructorMaxValue):
11186         (JSC::numberConstructorMinValue):
11187         (JSC::constructWithNumberConstructor):
11188         (JSC::callNumberConstructor):
11189         * runtime/NumberPrototype.cpp:
11190         (JSC::NumberPrototype::NumberPrototype):
11191         * runtime/ObjectConstructor.cpp:
11192         (JSC::ObjectConstructor::ObjectConstructor):
11193         * runtime/Operations.cpp:
11194         (JSC::jsAddSlowCase):
11195         * runtime/Operations.h:
11196         (JSC::jsAdd):
11197         * runtime/PrototypeFunction.cpp:
11198         (JSC::PrototypeFunction::PrototypeFunction):
11199         * runtime/RegExpConstructor.cpp:
11200         (JSC::RegExpConstructor::RegExpConstructor):
11201         (JSC::RegExpMatchesArray::fillArrayInstance):
11202         * runtime/RegExpObject.cpp:
11203         (JSC::regExpObjectLastIndex):
11204         * runtime/StringConstructor.cpp:
11205         (JSC::StringConstructor::StringConstructor):
11206         * runtime/StringPrototype.cpp:
11207         (JSC::StringPrototype::StringPrototype):
11208         (JSC::stringProtoFuncReplace):
11209         (JSC::stringProtoFuncCharCodeAt):
11210         (JSC::stringProtoFuncIndexOf):
11211         (JSC::stringProtoFuncLastIndexOf):
11212         (JSC::stringProtoFuncSearch):
11213         (JSC::stringProtoFuncLocaleCompare):
11214
11215 2010-10-25  David Tapuska  <dtapuska@rim.com>
11216
11217         Reviewed by David Kilzer.
11218
11219         Enable VFP if our compiler settings indicated we had a hardware
11220         VFP.
11221
11222         https://bugs.webkit.org/show_bug.cgi?id=46096
11223
11224         * assembler/MacroAssemblerARM.cpp:
11225         (JSC::isVFPPresent):
11226
11227 2010-10-25  Sheriff Bot  <webkit.review.bot@gmail.com>
11228
11229         Unreviewed, rolling out r70451.
11230         http://trac.webkit.org/changeset/70451
11231         https://bugs.webkit.org/show_bug.cgi?id=48249
11232
11233         Broke set-unloaded-frame-location.html under Qt (Requested by
11234         caseq on #webkit).
11235
11236         * GNUmakefile.am:
11237         * JavaScriptCore.gypi:
11238         * JavaScriptCore.xcodeproj/project.pbxproj:
11239         * wtf/text/TextPosition.h: Removed.
11240
11241 2010-10-25  Patrick Gansterer  <paroga@webkit.org>
11242
11243         Reviewed by David Kilzer.
11244
11245         Replace _countof with WTF_ARRAY_LENGTH
11246         https://bugs.webkit.org/show_bug.cgi?id=48229
11247
11248         * wtf/Platform.h:
11249
11250 2010-10-25  Peter Rybin  <peter.rybin@gmail.com>
11251
11252         Reviewed by Adam Barth.
11253
11254         HTML parser should provide script column position within HTML document to JavaScript engine
11255         https://bugs.webkit.org/show_bug.cgi?id=45271
11256
11257         Adds TextPosition* classes -- a structure that stores line/column/generation
11258         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
11259         wrappers that emphasize whether int number is used as zero-based or
11260         one-based.
11261
11262         * GNUmakefile.am:
11263         * JavaScriptCore.gypi:
11264         * JavaScriptCore.xcodeproj/project.pbxproj:
11265         * wtf/text/TextPosition.h: Added.
11266         (WTF::TextPosition::TextPosition):
11267         (WTF::TextPosition::minimumPosition):
11268         (WTF::TextPosition::belowRangePosition):
11269         (WTF::ZeroBasedNumber::fromZeroBasedInt):
11270         (WTF::ZeroBasedNumber::ZeroBasedNumber):
11271         (WTF::ZeroBasedNumber::zeroBasedInt):
11272         (WTF::ZeroBasedNumber::base):
11273         (WTF::ZeroBasedNumber::belowBase):
11274         (WTF::OneBasedNumber::fromOneBasedInt):
11275         (WTF::OneBasedNumber::OneBasedNumber):
11276         (WTF::OneBasedNumber::oneBasedInt):
11277         (WTF::OneBasedNumber::convertAsZeroBasedInt):
11278         (WTF::OneBasedNumber::convertToZeroBased):
11279         (WTF::OneBasedNumber::base):
11280         (WTF::OneBasedNumber::belowBase):
11281         (WTF::toZeroBasedTextPosition):
11282         (WTF::toOneBasedTextPosition):
11283         (WTF::ZeroBasedNumber::convertToOneBased):
11284
11285 2010-10-24  Kwang Yul Seo  <skyul@company100.net>
11286
11287         Reviewed by David Kilzer.
11288
11289         Check endianness with __BIG_ENDIAN in RVCT.
11290         https://bugs.webkit.org/show_bug.cgi?id=46122
11291
11292         RVCT defines __BIG_ENDIAN if compiling for a big-endian target.
11293
11294         * wtf/Platform.h:
11295
11296 2010-10-24  Dan Bernstein  <mitz@apple.com>
11297
11298         Rubber-stamped by Dave Kilzer.
11299
11300         Removed empty directories.
11301
11302         * JavaScriptCore: Removed.
11303         * JavaScriptCore/runtime: Removed.
11304
11305 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
11306
11307         Unreviewed, fix typo of last build fix.
11308
11309         * wtf/DateMath.cpp:
11310
11311 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
11312
11313         Unreviewed build fix for chromium.
11314
11315         * wtf/DateMath.cpp: Added missing include.
11316
11317 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
11318
11319         Reviewed by David Kilzer.
11320
11321         Add WTF_ARRAY_LENGTH macro to WTF
11322         https://bugs.webkit.org/show_bug.cgi?id=32828
11323
11324         Unify the different implementations and usages.
11325
11326         * interpreter/Interpreter.cpp:
11327         (JSC::Interpreter::privateExecute):
11328         * runtime/DatePrototype.cpp:
11329         (JSC::formatLocaleDate):
11330         * runtime/JSGlobalObject.cpp:
11331         (JSC::JSGlobalObject::reset):
11332         * runtime/JSONObject.cpp:
11333         (JSC::Stringifier::appendQuotedString):
11334         (JSC::Stringifier::toJSON):
11335         (JSC::Stringifier::appendStringifiedValue):
11336         * runtime/UString.cpp:
11337         (JSC::UString::number):
11338         * wtf/DateMath.cpp:
11339         (WTF::parseDateFromNullTerminatedCharacters):
11340         * wtf/StdLibExtras.h:
11341
11342 2010-10-24  Dirk Schulze  <krit@webkit.org>
11343
11344         Reviewed by Nikolas Zimmermann.
11345
11346         Filter example Chiseled from SVG Wow! is slow
11347         https://bugs.webkit.org/show_bug.cgi?id=48174
11348
11349         Added 'using WTF::ByteArray;' at the end of ByteArray.h
11350
11351         * wtf/ByteArray.h:
11352
11353 2010-10-24  Patrick Gansterer  <paroga@webkit.org>
11354
11355         Reviewed by David Kilzer.
11356
11357         Inline WTF::bitwise_cast and fix style
11358         https://bugs.webkit.org/show_bug.cgi?id=48208
11359
11360         * wtf/StdLibExtras.h:
11361         (WTF::bitwise_cast):
11362         (WTF::bitCount):
11363
11364 2010-10-23  Xan Lopez  <xlopez@igalia.com>
11365
11366         Reviewed by Sam Weinig.
11367
11368         Unify globalData APIs
11369         https://bugs.webkit.org/show_bug.cgi?id=47969
11370
11371         Make JSGlobalObject::globalData return a reference and adapt
11372         callers. This unifies the API with the existing
11373         CallFrame::globalData, which also returns a reference.
11374
11375         * debugger/Debugger.cpp:
11376         (JSC::evaluateInGlobalCallFrame):
11377         * interpreter/CallFrame.h:
11378         * interpreter/Interpreter.cpp:
11379         (JSC::Interpreter::dumpRegisters):
11380         * jsc.cpp:
11381         (runWithScripts):
11382         * parser/JSParser.cpp:
11383         (JSC::jsParse):
11384         * parser/Parser.cpp:
11385         (JSC::Parser::parse):
11386         * parser/Parser.h:
11387         (JSC::Parser::parse):
11388         * runtime/Error.cpp:
11389         (JSC::createError):
11390         (JSC::createEvalError):
11391         (JSC::createRangeError):
11392         (JSC::createReferenceError):
11393         (JSC::createSyntaxError):
11394         (JSC::createTypeError):
11395         (JSC::createURIError):
11396         * runtime/FunctionConstructor.cpp:
11397         (JSC::constructFunction):
11398         * runtime/JSGlobalObject.cpp:
11399         (JSC::JSGlobalObject::~JSGlobalObject):
11400         (JSC::JSGlobalObject::markChildren):
11401         * runtime/JSGlobalObject.h:
11402         (JSC::JSGlobalObject::globalData):
11403
11404 2010-10-23  Dimitri Glazkov  <dglazkov@chromium.org>
11405
11406         Unreviewed, rolling out r70369.
11407         http://trac.webkit.org/changeset/70369
11408         https://bugs.webkit.org/show_bug.cgi?id=47974
11409
11410         Caused weird artifacts in expected results.
11411
11412         * wtf/Platform.h:
11413
11414 2010-10-23  Martin Robinson  <mrobinson@igalia.com>
11415
11416         Reviewed by Xan Lopez.
11417
11418         Crashes randomly in cairo_scaled_font_destroy
11419         https://bugs.webkit.org/show_bug.cgi?id=46794
11420
11421         Make PlatformRefPtr aware of hashTableDeletedValue. When PlatformRefPtr
11422         goes away this should probably be handled in the future via some special
11423         hooks in RefCounted (or its contained type).
11424
11425         * wtf/PlatformRefPtr.h:
11426         (WTF::PlatformRefPtr::~PlatformRefPtr):
11427         (WTF::PlatformRefPtr::clear):
11428         (WTF::::operator):
11429
11430 2010-10-22  Adam Roben  <aroben@apple.com>
11431
11432         Remove the QuartzCorePresent.h mechanism
11433
11434         This header was used to detect whether QuartzCore headers were present
11435         on the system. Everyone should have these headers now so we no longer
11436         need to detect.
11437
11438         Reviewed by Sam Weinig.
11439
11440         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Remove
11441         code to generate QuartzCorePresent.h.
11442
11443         * wtf/Platform.h: Stop including QuartzCorePresent.h on Windows and
11444         collapse all USE_ACCELERATED_COMPOSITING settings into one #ifdef.
11445
11446 2010-10-22  Adam Barth  <abarth@webkit.org>
11447
11448         Unreviewed, rolling out r70290.
11449         http://trac.webkit.org/changeset/70290
11450         https://bugs.webkit.org/show_bug.cgi?id=48111
11451
11452         Undelete Android build files.
11453
11454         * Android.mk: Added.
11455
11456 2010-10-22  Zoltan Herczeg  <zherczeg@webkit.org>
11457
11458         Reviewed by Csaba Osztrogonác.
11459
11460         JSC interpreter regressions after r69940
11461         https://bugs.webkit.org/show_bug.cgi?id=47839
11462
11463         Wrong "if": It should test whether the result exists,
11464         and not the opposite. It is an interpreter bug, hence
11465         the bots does not capture it.
11466
11467         * interpreter/Interpreter.cpp:
11468         (JSC::Interpreter::resolveBase):
11469
11470 2010-10-21  Adam Barth  <abarth@webkit.org>
11471
11472         Reviewed by David Levin.
11473
11474         Remove Android build system
11475         https://bugs.webkit.org/show_bug.cgi?id=48111
11476
11477         * Android.mk: Removed.
11478
11479 2010-10-21  Kwang Yul Seo  <skyul@company100.net>
11480
11481         Reviewed by Kent Tamura.
11482
11483         [BREWMP] Add a String constructor which takes AECHAR*
11484         https://bugs.webkit.org/show_bug.cgi?id=45043
11485
11486         Add String(const AECHAR*) constructor for convenience.
11487
11488         * wtf/text/WTFString.h:
11489
11490 2010-10-21  Carlos Garcia Campos  <cgarcia@igalia.com>
11491
11492         Reviewed by Martin Robinson.
11493
11494         [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk
11495         https://bugs.webkit.org/show_bug.cgi?id=47896
11496
11497         * wtf/gobject/GTypedefs.h:
11498
11499 2010-10-21  Adam Barth  <abarth@webkit.org>
11500
11501         Unreviewed, rolling out r70174.
11502         http://trac.webkit.org/changeset/70174
11503         https://bugs.webkit.org/show_bug.cgi?id=41948
11504
11505         This patch reverts a change that causes
11506         http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash.
11507
11508         * interpreter/Interpreter.cpp:
11509         (JSC::Interpreter::throwException):
11510
11511 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
11512
11513         Fix the EFL build.
11514
11515         * wtf/CMakeLists.txt:
11516
11517 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
11518
11519         Fix Windows build: export needed symbols.
11520
11521         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
11522
11523 2010-10-19  Simon Fraser  <simon.fraser@apple.com>
11524
11525         Reviewed by Gavin Barraclough.
11526
11527         https://bugs.webkit.org/show_bug.cgi?id=47851
11528         
11529         Add methods to DecimalNumber to return the buffer length
11530         required for decimal and exponential output.
11531         
11532         Make some of the DecimalNumber code non-inline (no
11533         effect on Sunspider), adding DecimalNumber.cpp to various
11534         build systems.
11535         
11536         Make some DecimalNumber methods 'const'.
11537
11538         * Android.mk:
11539         * Android.v8.wtf.mk:
11540         * GNUmakefile.am:
11541         * JavaScriptCore.exp:
11542         * JavaScriptCore.gypi:
11543         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
11544         * JavaScriptCore.xcodeproj/project.pbxproj:
11545         * runtime/NumberPrototype.cpp:
11546         (JSC::numberProtoFuncToExponential):
11547         (JSC::numberProtoFuncToFixed):
11548         (JSC::numberProtoFuncToPrecision):
11549         * wtf/DecimalNumber.cpp: Added.
11550         (WTF::DecimalNumber::bufferLengthForStringDecimal):
11551         (WTF::DecimalNumber::bufferLengthForStringExponential):
11552         (WTF::DecimalNumber::toStringDecimal):
11553         (WTF::DecimalNumber::toStringExponential):
11554         * wtf/DecimalNumber.h:
11555         (WTF::DecimalNumber::sign):
11556         (WTF::DecimalNumber::exponent):
11557         (WTF::DecimalNumber::significand):
11558         (WTF::DecimalNumber::precision):
11559         * wtf/dtoa.cpp:
11560         (WTF::dtoa):
11561         * wtf/dtoa.h:
11562         * wtf/wtf.pri:
11563
11564 2010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>
11565
11566         Unreviewed, rolling out r70165.
11567         http://trac.webkit.org/changeset/70165
11568         https://bugs.webkit.org/show_bug.cgi?id=48007
11569
11570         It broke tests on Qt bot (Requested by Ossy on #webkit).
11571
11572         * GNUmakefile.am:
11573         * JavaScriptCore.gypi:
11574         * JavaScriptCore.xcodeproj/project.pbxproj:
11575         * wtf/text/TextPosition.h: Removed.
11576
11577 2010-10-20  Brian Weinstein  <bweinstein@apple.com>
11578
11579         Reviewed by Adam Roben.
11580
11581         Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build
11582         step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed.
11583
11584         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
11585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
11586
11587 2010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
11588
11589         Unreviewed, fixing the Win build.
11590
11591         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
11592
11593 2010-10-20  Geoffrey Garen  <ggaren@apple.com>
11594
11595         Reviewed by Darin Adler.
11596         
11597         https://bugs.webkit.org/show_bug.cgi?id=41948
11598         REGRESSION(r60392): Registerfile can be unwound too far following an exception
11599
11600         * interpreter/Interpreter.cpp:
11601         (JSC::Interpreter::throwException): Walk the stack to calculate the high
11602         water mark currently in use. It's not safe to assume that the current
11603         CallFrame's high water mark is the highest high water mark because
11604         calls do not always set up at the end of a CallFrame. A large caller
11605         CallFrame can encompass a small callee CallFrame.
11606
11607 2010-10-20  Peter Rybin  <peter.rybin@gmail.com>
11608
11609         Reviewed by Adam Barth.
11610
11611         HTML parser should provide script column position within HTML document to JavaScript engine
11612         https://bugs.webkit.org/show_bug.cgi?id=45271
11613
11614         Adds TextPosition* classes -- a structure that stores line/column/generation
11615         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
11616         wrappers that emphasize whether int number is used as zero-based or
11617         one-based.
11618
11619         * GNUmakefile.am:
11620         * JavaScriptCore.gypi:
11621         * JavaScriptCore.xcodeproj/project.pbxproj:
11622         * wtf/text/TextPosition.h: Added.
11623         (WTF::TextPosition::TextPosition):
11624         (WTF::TextPosition::minimumPosition):
11625         (WTF::TextPosition::belowRangePosition):
11626         (WTF::ZeroBasedNumber::fromZeroBasedInt):
11627         (WTF::ZeroBasedNumber::ZeroBasedNumber):
11628         (WTF::ZeroBasedNumber::zeroBasedInt):
11629         (WTF::ZeroBasedNumber::base):
11630         (WTF::ZeroBasedNumber::belowBase):
11631         (WTF::OneBasedNumber::fromOneBasedInt):
11632         (WTF::OneBasedNumber::OneBasedNumber):
11633         (WTF::OneBasedNumber::oneBasedInt):
11634         (WTF::OneBasedNumber::convertAsZeroBasedInt):
11635         (WTF::OneBasedNumber::convertToZeroBased):
11636         (WTF::OneBasedNumber::base):
11637         (WTF::OneBasedNumber::belowBase):
11638         (WTF::toZeroBasedTextPosition):
11639         (WTF::toOneBasedTextPosition):
11640         (WTF::ZeroBasedNumber::convertToOneBased):
11641
11642 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
11643
11644         Reviewed by David Kilzer.
11645
11646         [BREWMP] Turn off JIT for simulator build
11647         https://bugs.webkit.org/show_bug.cgi?id=47937
11648
11649         We don't need to test x86 JIT.
11650
11651         * wtf/Platform.h:
11652
11653 2010-10-19  Oliver Hunt  <oliver@apple.com>
11654
11655         Reviewed by Geoffrey Garen.
11656
11657         Remove support for JSVALUE32 from JSC
11658         https://bugs.webkit.org/show_bug.cgi?id=47948
11659
11660         Remove all the code for supporting JSVALUE32 from JSC.
11661
11662         * jit/JIT.cpp:
11663         (JSC::JIT::privateCompileMainPass):
11664         (JSC::JIT::privateCompileSlowCases):
11665         * jit/JIT.h:
11666         * jit/JITArithmetic.cpp:
11667         (JSC::JIT::emit_op_lshift):
11668         (JSC::JIT::emitSlow_op_lshift):
11669         (JSC::JIT::emit_op_rshift):
11670         (JSC::JIT::emitSlow_op_rshift):
11671         (JSC::JIT::emit_op_urshift):
11672         (JSC::JIT::emitSlow_op_urshift):
11673         (JSC::JIT::emit_op_jnless):
11674         (JSC::JIT::emitSlow_op_jnless):
11675         (JSC::JIT::emit_op_jless):
11676         (JSC::JIT::emitSlow_op_jless):
11677         (JSC::JIT::emit_op_jlesseq):
11678         (JSC::JIT::emitSlow_op_jlesseq):
11679         (JSC::JIT::emit_op_bitand):
11680         (JSC::JIT::emit_op_post_inc):
11681         (JSC::JIT::emit_op_post_dec):
11682         (JSC::JIT::emit_op_pre_inc):
11683         (JSC::JIT::emit_op_pre_dec):
11684         (JSC::JIT::emit_op_mod):
11685         (JSC::JIT::emitSlow_op_mod):
11686         * jit/JITCall.cpp:
11687         * jit/JITInlineMethods.h:
11688         (JSC::JIT::emitGetFromCallFrameHeaderPtr):
11689         (JSC::JIT::emitGetFromCallFrameHeader32):
11690         * jit/JITOpcodes.cpp:
11691         (JSC::JIT::emit_op_loop_if_lesseq):
11692         (JSC::JIT::emit_op_bitnot):
11693         (JSC::JIT::emit_op_next_pname):
11694         * jit/JITPropertyAccess.cpp:
11695         (JSC::JIT::emit_op_get_by_val):
11696         (JSC::JIT::emit_op_put_by_val):
11697         * jit/JITStubs.h:
11698         * jit/JSInterfaceJIT.h:
11699         * jit/SpecializedThunkJIT.h:
11700         (JSC::SpecializedThunkJIT::returnDouble):
11701         (JSC::SpecializedThunkJIT::tagReturnAsInt32):
11702         * jit/ThunkGenerators.cpp:
11703         (JSC::sqrtThunkGenerator):
11704         (JSC::powThunkGenerator):
11705         * runtime/Collector.cpp:
11706         (JSC::isPossibleCell):
11707         (JSC::typeName):
11708         * runtime/JSCell.h:
11709         * runtime/JSGlobalData.cpp:
11710         (JSC::JSGlobalData::JSGlobalData):
11711         * runtime/JSGlobalData.h:
11712         * runtime/JSGlobalObject.h:
11713         (JSC::Structure::prototypeForLookup):
11714         * runtime/JSImmediate.h:
11715         (JSC::reinterpretIntptrToDouble):
11716         (JSC::JSImmediate::isIntegerNumber):
11717         (JSC::JSImmediate::isDouble):
11718         (JSC::JSImmediate::areBothImmediateIntegerNumbers):
11719         (JSC::JSImmediate::makeDouble):
11720         (JSC::JSImmediate::doubleValue):
11721         (JSC::JSImmediate::toBoolean):
11722         (JSC::JSImmediate::fromNumberOutsideIntegerRange):
11723         (JSC::JSImmediate::from):
11724         (JSC::JSImmediate::toDouble):
11725         (JSC::JSFastMath::rightShiftImmediateNumbers):
11726         * runtime/JSNumberCell.cpp:
11727         * runtime/JSNumberCell.h:
11728         * runtime/JSObject.h:
11729         (JSC::JSObject::JSObject):
11730         * runtime/JSValue.h:
11731         * runtime/NumberObject.h:
11732         * wtf/Platform.h:
11733
11734 2010-10-19  Csaba Osztrogonác  <ossy@webkit.org>
11735
11736         Reviewed by Geoffrey Garen.
11737
11738         BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors
11739         https://bugs.webkit.org/show_bug.cgi?id=47920
11740
11741         * bytecompiler/BytecodeGenerator.cpp:
11742         (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization.
11743
11744 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
11745
11746         Reviewed by David Kilzer.
11747
11748         RVCT fails to compile DateMath.cpp due to overloaded function pow
11749         https://bugs.webkit.org/show_bug.cgi?id=47844
11750
11751         Choose std::pow(double, double) among multiple overloaded pow functions
11752         to fix build for RVCT.
11753
11754         * wtf/DateMath.cpp:
11755         (WTF::parseES5DateFromNullTerminatedCharacters):
11756
11757 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
11758
11759         Reviewed by David Kilzer.
11760
11761         Use UChar instead of wchar_t in UnicodeWinCE
11762         https://bugs.webkit.org/show_bug.cgi?id=47904
11763
11764         Make UnicodeWinCE more portable, so we can use it for other ports too.
11765
11766         * wtf/unicode/wince/UnicodeWinCE.cpp:
11767         (WTF::Unicode::toLower):
11768         (WTF::Unicode::toUpper):
11769         (WTF::Unicode::foldCase):
11770         (WTF::Unicode::isPrintableChar):
11771         (WTF::Unicode::isSpace):
11772         (WTF::Unicode::isLetter):
11773         (WTF::Unicode::isUpper):
11774         (WTF::Unicode::isLower):
11775         (WTF::Unicode::isDigit):
11776         (WTF::Unicode::isPunct):
11777         (WTF::Unicode::isAlphanumeric):
11778         (WTF::Unicode::toTitleCase):
11779         (WTF::Unicode::mirroredChar):
11780         (WTF::Unicode::digitValue):
11781         * wtf/unicode/wince/UnicodeWinCE.h:
11782         (WTF::Unicode::isSeparatorSpace):
11783         (WTF::Unicode::isHighSurrogate):
11784         (WTF::Unicode::isLowSurrogate):
11785         (WTF::Unicode::umemcasecmp):
11786         (WTF::Unicode::surrogateToUcs4):
11787
11788 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
11789
11790         Reviewed by Andreas Kling.
11791
11792         Fix style of UnicodeWinCE
11793         https://bugs.webkit.org/show_bug.cgi?id=47818
11794
11795         * wtf/unicode/wince/UnicodeWinCE.cpp:
11796         (WTF::Unicode::toLower):
11797         (WTF::Unicode::toUpper):
11798         * wtf/unicode/wince/UnicodeWinCE.h:
11799
11800 2010-10-18  Xan Lopez  <xlopez@igalia.com>
11801
11802         Reviewed by Martin Robinson.
11803
11804         * GNUmakefile.am: add missing file.
11805
11806 2010-10-18  Oliver Hunt  <oliver@apple.com>
11807
11808         Reviewed by Sam Weinig.
11809
11810         Strict mode: Functions created with the function constructor don't implement strict mode semantics
11811         https://bugs.webkit.org/show_bug.cgi?id=47860
11812
11813         When creating the FunctionExecutable for a new function the function constructor
11814         was always passing false for whether or not a function was strict, rather than
11815         using the information from the freshly parsed function itself.
11816
11817         * runtime/Executable.cpp:
11818         (JSC::FunctionExecutable::fromGlobalCode):
11819
11820 2010-10-18  Oliver Hunt  <oliver@apple.com>
11821
11822         Reviewed by Darin Adler.
11823
11824         Strict mode: |this| should be undefined if it is not explicitly provided
11825         https://bugs.webkit.org/show_bug.cgi?id=47833
11826
11827         To make strict mode behave correctly we want to pass undefined instead of null
11828         as the default this value.  This has no impact on behaviour outside of strict
11829         mode as both values are replaced with the global object if necessary.
11830
11831         * bytecompiler/NodesCodegen.cpp:
11832         (JSC::FunctionCallValueNode::emitBytecode):
11833         (JSC::FunctionCallResolveNode::emitBytecode):
11834         (JSC::CallFunctionCallDotNode::emitBytecode):
11835         (JSC::ApplyFunctionCallDotNode::emitBytecode):
11836
11837
11838 2010-10-18  Darin Adler  <darin@apple.com>
11839
11840         Reviewed by Anders Carlsson.
11841
11842         Make a nullptr that works with OwnPtr and RefPtr
11843         https://bugs.webkit.org/show_bug.cgi?id=47756
11844
11845         * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h.
11846
11847         * wtf/NullPtr.h: Added.
11848
11849         * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr.
11850         * wtf/OwnPtr.h: Ditto.
11851         * wtf/PassOwnArrayPtr.h: Ditto.
11852         * wtf/PassOwnPtr.h: Ditto.
11853         * wtf/PassRefPtr.h: Ditto.
11854         * wtf/RefPtr.h: Ditto.
11855         * wtf/RetainPtr.h: Ditto.
11856
11857 2010-10-18  Oliver Hunt  <oliver@apple.com>
11858
11859         Reviewed by Sam Weinig.
11860
11861         Strict mode: JIT doesn't check for |this| being an immediate before dereferencing
11862         https://bugs.webkit.org/show_bug.cgi?id=47826
11863
11864         There's no guarantee that |this| will be a cell in a strict mode function, so
11865         don't claim that it is.
11866
11867         * bytecode/CodeBlock.h:
11868         (JSC::CodeBlock::isKnownNotImmediate):
11869
11870 2010-10-18  Zoltan Herczeg  <zherczeg@webkit.org>
11871
11872         Reviewed by Oliver Hunt.
11873
11874         if (0) throw "x" ; else { } throws parse error after r69906
11875         https://bugs.webkit.org/show_bug.cgi?id=47807
11876
11877         r69906 introduced a bug: the semicolon is not parsed after a throw
11878         expression anymore. Thus, the semicolon terminates the "if" parsing
11879         in the example above, and the else token results a parse error.
11880
11881         * parser/JSParser.cpp:
11882         (JSC::JSParser::parseThrowStatement):
11883
11884 2010-10-18  Peter Varga  <pvarga@inf.u-szeged.hu>
11885
11886         Reviewed by Andreas Kling.
11887
11888         Remove some unnecessary lines of code from Parser.cpp
11889         https://bugs.webkit.org/show_bug.cgi?id=47816
11890
11891         * parser/Parser.cpp:
11892
11893 2010-10-18  Xan Lopez  <xlopez@igalia.com>
11894
11895         Reviewed by Csaba Osztrogonác.
11896
11897         Build broken with JIT disabled
11898         https://bugs.webkit.org/show_bug.cgi?id=47801
11899
11900         This is a regression caused by r69940.
11901
11902         * interpreter/Interpreter.cpp:
11903         (JSC::Interpreter::resolveBase):
11904
11905 2010-10-18  Zoltan Horvath  <zoltan@webkit.org>
11906
11907         Reviewed by Darin Adler.
11908
11909         Change FastAllocBase implementation into a macro
11910         https://bugs.webkit.org/show_bug.cgi?id=42998
11911
11912         It was investigated in bug #33896 that inheriting classes from FastAllocBase 
11913         can result in objects getting larger which leads to memory regressions. 
11914         Using a macro instead of inheriting classes from FastAllocBase would solve the issue. 
11915
11916         * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro
11917
11918 2010-10-17  Oliver Hunt  <oliver@apple.com>
11919
11920         Reviewed by Sam Weinig.
11921
11922         Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions
11923         https://bugs.webkit.org/show_bug.cgi?id=47791
11924
11925         Simple fix, check for arguments in addition to eval.
11926
11927         * parser/JSParser.cpp:
11928         (JSC::JSParser::parseUnaryExpression):
11929
11930 2010-10-17  Oliver Hunt  <oliver@apple.com>
11931
11932         Reviewed by Sam Weinig.
11933
11934         Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure
11935         https://bugs.webkit.org/show_bug.cgi?id=47788
11936
11937         Fixing this required a couple of changes:
11938          * resolve_base now has a flag to indicate whether it is being used for a put in strict mode.
11939            this allows us to throw an exception when we're doing a completely generic resolve for
11940            assignment, and that assignment would create a new global.
11941          * There is a new opcode 'op_ensure_property_exists' that is used to determine whether
11942            the property being assigned to already exists on the global object.  This currently
11943            has no caching, but such caching could be added relatively trivially.  It is only used
11944            in the case where we know that a property will be placed on the global object, and
11945            we cannot verify that the property already exists.
11946
11947         In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather
11948         than making op_resolve_base have an additional runtime branch.
11949
11950         There's also a new helper function to create the exception for the invalid assignment.
11951
11952         * bytecode/CodeBlock.cpp:
11953         (JSC::CodeBlock::dump):
11954         * bytecode/Opcode.h:
11955         * bytecompiler/BytecodeGenerator.cpp:
11956         (JSC::BytecodeGenerator::emitResolveBase):
11957         (JSC::BytecodeGenerator::emitResolveBaseForPut):
11958         * bytecompiler/BytecodeGenerator.h:
11959         * bytecompiler/NodesCodegen.cpp:
11960         (JSC::AssignResolveNode::emitBytecode):
11961         (JSC::ForInNode::emitBytecode):
11962         * interpreter/Interpreter.cpp:
11963         (JSC::Interpreter::resolveBase):
11964         (JSC::Interpreter::privateExecute):
11965         * jit/JIT.cpp:
11966         (JSC::JIT::privateCompileMainPass):
11967         * jit/JIT.h:
11968         * jit/JITOpcodes.cpp:
11969         (JSC::JIT::emit_op_resolve_base):
11970         (JSC::JIT::emit_op_ensure_property_exists):
11971         * jit/JITOpcodes32_64.cpp:
11972         (JSC::JIT::emit_op_resolve_base):
11973         (JSC::JIT::emit_op_ensure_property_exists):
11974         * jit/JITStubs.cpp:
11975         (JSC::DEFINE_STUB_FUNCTION):
11976         * jit/JITStubs.h:
11977         * parser/JSParser.cpp:
11978         (JSC::JSParser::parseProgram):
11979         * runtime/ExceptionHelpers.cpp:
11980         (JSC::createErrorForInvalidGlobalAssignment):
11981         * runtime/ExceptionHelpers.h:
11982         * runtime/Operations.h:
11983         (JSC::resolveBase):
11984
11985 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
11986
11987         First part of fix for Windows build failure. Will wait for the
11988         next set of link errors to determine the mangled forms for dtoaRoundSF
11989         and dtoaRoundDP.
11990
11991         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
11992
11993 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
11994
11995         Reviewed by Nikolas Zimmermann.
11996
11997         Very large and small numbers fail to round-trip through CSS
11998         https://bugs.webkit.org/show_bug.cgi?id=20674
11999         
12000         New exports required to use DecimalNumber in WebCore.
12001
12002         * JavaScriptCore.exp:
12003         * JavaScriptCore.xcodeproj/project.pbxproj:
12004
12005 2010-10-16  Kyusun Kim  <maniagoon@company100.net>
12006
12007         Reviewed by Alexey Proskuryakov.
12008
12009         Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters()
12010         https://bugs.webkit.org/show_bug.cgi?id=47758
12011
12012         * wtf/CurrentTime.h:
12013         * wtf/DateMath.h:
12014
12015 2010-10-16  Patrick Gansterer  <paroga@webkit.org>
12016
12017         Reviewed by Adam Barth.
12018
12019         Rename StringHasherFunctions.h to StringHasher.h
12020         https://bugs.webkit.org/show_bug.cgi?id=47200
12021
12022         Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name.
12023
12024         * GNUmakefile.am:
12025         * JavaScriptCore.gypi:
12026         * JavaScriptCore.xcodeproj/project.pbxproj:
12027         * wtf/StringHashFunctions.h: Removed.
12028         * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h.
12029         * wtf/text/StringHash.h:
12030         * wtf/text/StringImpl.h:
12031
12032 2010-10-15  Oliver Hunt  <oliver@apple.com>
12033
12034         Reviewed by Sam Weinig.
12035
12036         Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline
12037         https://bugs.webkit.org/show_bug.cgi?id=47762
12038
12039         The old YACC parser depended on the lexer for some classes of semicolon insertion.
12040         The new parser handles ASI entirely on its own so when the lexer inserts a semicolon
12041         on its own the net result is a spurious semicolon in the input stream.  This can result
12042         in incorrect parsing in some cases:
12043
12044         if (0)
12045             break
12046         ;else {}
12047
12048         Would result in a parse failure as the output from the lexer is essentially
12049
12050         if (0)
12051              break
12052         ;;else
12053
12054         So the second semicolon is interpreted as a empty statement, which terminates the if,
12055         making the else an error.
12056
12057
12058         * parser/JSParser.cpp:
12059         (JSC::JSParser::parseThrowStatement):
12060           Parsing of throw statement was wrong, and only worked due to the weird behaviour
12061           in the lexer
12062         * parser/Lexer.cpp:
12063         (JSC::Lexer::lex):
12064           Remove bogus semicolon insertion from the newline handling
12065
12066 2010-10-15  Nikolas Zimmermann  <nzimmermann@rim.com>
12067
12068         Reviewed by Dirk Schulze.
12069
12070         Replace some String::format() usages by StringConcatenate in WebKit
12071         https://bugs.webkit.org/show_bug.cgi?id=47714
12072
12073         * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString().
12074
12075 2010-10-15  Ilya Tikhonovsky  <loislo@chromium.org>
12076
12077         Unreviewed build fix for Debug Leopard which is failng to compile after r69842.
12078
12079         * yarr/RegexInterpreter.cpp:
12080         (JSC::Yarr::ByteCompiler::emitDisjunction):
12081
12082 2010-10-15  Peter Varga  <pvarga@inf.u-szeged.hu>
12083
12084         Reviewed by Gavin Barraclough.
12085
12086         The parenthetical assertion checking isn't working in some cases with YARR
12087         Interpreter
12088         https://bugs.webkit.org/show_bug.cgi?id=46893
12089
12090         Calculate the countToCheck value of a TypeParentheticalAssertion by
12091         subtracting the number of characters which follows
12092         a TypeParentheticalAssertion term with the number of characters which should
12093         be matched by terms which are contained
12094         in the TypeParentheticalAssertion term (minimumSize).
12095
12096         * yarr/RegexInterpreter.cpp:
12097         (JSC::Yarr::ByteCompiler::emitDisjunction):
12098
12099 2010-10-14  Nathan Vander Wilt  <nate@andyet.net>
12100
12101         Reviewed by Darin Adler.
12102
12103         Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632
12104
12105         * runtime/DateConversion.cpp:
12106         (JSC::parseDate):
12107         * wtf/DateMath.cpp:
12108         (WTF::ymdhmsToSeconds):
12109         (WTF::parseES5DateFromNullTerminatedCharacters):
12110         * wtf/DateMath.h:
12111
12112 2010-10-14  Nikolas Zimmermann  <nzimmermann@rim.com>
12113
12114         Reviewed by Gavin Barraclough.
12115
12116         Replace lots of String::format() usages by StringConcatenate
12117         https://bugs.webkit.org/show_bug.cgi?id=47664
12118
12119         Add StringTypeAdapter<char> to accept single characters for makeString().
12120
12121         * wtf/text/StringConcatenate.h:
12122         (WTF::makeString):
12123
12124 2010-10-14  David Goodwin  <david_goodwin@apple.com>
12125
12126         Reviewed by Darin Adler.
12127
12128         need way to measure size of JITed ARM code
12129         https://bugs.webkit.org/show_bug.cgi?id=47121
12130
12131         * assembler/LinkBuffer.h:
12132         (JSC::LinkBuffer::linkCode):
12133         (JSC::LinkBuffer::dumpLinkStats):
12134         (JSC::LinkBuffer::dumpCode):
12135
12136 2010-10-14  Peter Varga  <pvarga@inf.u-szeged.hu>
12137
12138         Reviewed by Gavin Barraclough.
12139
12140         The backreference checking isn't working in some cases with YARR Interpreter
12141         https://bugs.webkit.org/show_bug.cgi?id=46904
12142
12143         The Interpreter::matchBackReference() function returns true without matching
12144         when a backreference points to the same parentheses where it is.
12145
12146         * yarr/RegexInterpreter.cpp:
12147         (JSC::Yarr::Interpreter::matchBackReference):
12148
12149 2010-10-14  No'am Rosenthal  <noam.rosenthal@nokia.com>
12150
12151         Reviewed by Andreas Kling.
12152
12153         [Qt] Text breaking is slow: enable ICU as an opt-in
12154         https://bugs.webkit.org/show_bug.cgi?id=40332
12155
12156         Added a config flag that enables ICU as an opt-in instead of the Qt specific code.
12157         Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h
12158
12159         * JavaScriptCore.pri:
12160         * wtf/unicode/qt4/UnicodeQt4.h:
12161         (WTF::Unicode::toLower):
12162         (WTF::Unicode::toUpper):
12163         (WTF::Unicode::toTitleCase):
12164         (WTF::Unicode::foldCase):
12165         (WTF::Unicode::isPrintableChar):
12166         (WTF::Unicode::isSeparatorSpace):
12167         (WTF::Unicode::isPunct):
12168         (WTF::Unicode::isLower):
12169         (WTF::Unicode::mirroredChar):
12170         (WTF::Unicode::combiningClass):
12171         (WTF::Unicode::direction):
12172         (WTF::Unicode::category):
12173
12174 2010-10-14  Anton Faern  <anton@bladehawke.com>
12175
12176         Reviewed by Csaba Osztrogonác.
12177
12178         https://bugs.webkit.org/show_bug.cgi?id=47658
12179         NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO
12180         change.  This means that OS(NETBSD) is also undefined.
12181
12182         * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD
12183
12184 2010-10-13  David Goodwin  <david_goodwin@apple.com>
12185
12186         Reviewed by Oliver Hunt.
12187
12188         ARMv7 JIT should generated conditional branches when possible
12189         https://bugs.webkit.org/show_bug.cgi?id=47384
12190
12191         Use different jump padding sizes for conditional and unconditional
12192         jumps (12 bytes and 10 bytes respectively). This allows the JIT to
12193         include the IT instruction as part of the conditional jump sequence
12194         which in turn allows it to optimize away the IT using an ARMv7 
12195         conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for
12196         conditional branches when displacement is in range. Also use IT/B(T4)
12197         for conditional branch when displacement does not fit in B(T3).
12198
12199         For unconditional jump, instruction selection options are:
12200         B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection
12201         options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX.
12202
12203         * assembler/ARMv7Assembler.cpp:
12204         * assembler/ARMv7Assembler.h:
12205         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
12206         (JSC::ARMv7Assembler::ifThenElse):
12207         (JSC::ARMv7Assembler::jumpSizeDelta):
12208         (JSC::ARMv7Assembler::canCompact):
12209         (JSC::ARMv7Assembler::computeJumpType):
12210         (JSC::ARMv7Assembler::link):
12211         (JSC::ARMv7Assembler::canBeJumpT1):
12212         (JSC::ARMv7Assembler::canBeJumpT3):
12213         (JSC::ARMv7Assembler::canBeJumpT4):
12214         (JSC::ARMv7Assembler::linkJumpT1):
12215         (JSC::ARMv7Assembler::linkJumpT3):
12216         (JSC::ARMv7Assembler::linkJumpT4):
12217         (JSC::ARMv7Assembler::linkConditionalJumpT4):
12218         (JSC::ARMv7Assembler::linkBX):
12219         (JSC::ARMv7Assembler::linkConditionalBX):
12220         (JSC::ARMv7Assembler::linkJumpAbsolute):
12221         * assembler/LinkBuffer.h:
12222         (JSC::LinkBuffer::linkCode):
12223         * assembler/MacroAssemblerARMv7.h:
12224         (JSC::MacroAssemblerARMv7::canCompact):
12225         (JSC::MacroAssemblerARMv7::computeJumpType):
12226         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
12227         (JSC::MacroAssemblerARMv7::jump):
12228         (JSC::MacroAssemblerARMv7::nearCall):
12229         (JSC::MacroAssemblerARMv7::call):
12230         (JSC::MacroAssemblerARMv7::ret):
12231         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
12232         (JSC::MacroAssemblerARMv7::makeJump):
12233         (JSC::MacroAssemblerARMv7::makeBranch):
12234
12235 2010-10-13  Fridrich Strba  <fridrich.strba@bluewin.ch>
12236
12237         Reviewed by Darin Adler.
12238
12239         Don't depend on Windows on sched_yield and sched.h
12240         https://bugs.webkit.org/show_bug.cgi?id=45543
12241
12242         sched.h is part of pthreads and sched_yield is implemented
12243         in pthreads-win32 as Sleep(0). This patch avoids a gratuitous
12244         dependency on pthreads-win32 in this file.
12245
12246         * wtf/TCSpinLock.h:
12247         (TCMalloc_SlowLock):
12248
12249 2010-10-13  Kwang Yul Seo  <skyul@company100.net>
12250
12251         Reviewed by Kent Tamura.
12252
12253         [BREWMP] Port unicode
12254         https://bugs.webkit.org/show_bug.cgi?id=45716
12255
12256         Brew MP port uses only the subset of ICU library to reduce the binary size.
12257         Follow the WinCE's implementation.
12258
12259         * wtf/Platform.h:
12260         * wtf/unicode/Unicode.h:
12261         * wtf/unicode/brew/UnicodeBrew.cpp: Added.
12262         (WTF::Unicode::toLower):
12263         (WTF::Unicode::toUpper):
12264         (WTF::Unicode::foldCase):
12265         (WTF::Unicode::isPrintableChar):
12266         (WTF::Unicode::isUpper):
12267         (WTF::Unicode::isLower):
12268         (WTF::Unicode::isDigit):
12269         (WTF::Unicode::isPunct):
12270         (WTF::Unicode::isAlphanumeric):
12271         (WTF::Unicode::toTitleCase):
12272         (WTF::Unicode::direction):
12273         (WTF::Unicode::category):
12274         (WTF::Unicode::decompositionType):
12275         (WTF::Unicode::combiningClass):
12276         (WTF::Unicode::mirroredChar):
12277         (WTF::Unicode::digitValue):
12278         (WTF::Unicode::isSpace):
12279         (WTF::Unicode::isLetter):
12280         * wtf/unicode/brew/UnicodeBrew.h: Added.
12281         (WTF::Unicode::isArabicChar):
12282         (WTF::Unicode::isSeparatorSpace):
12283         (WTF::Unicode::hasLineBreakingPropertyComplexContext):
12284         (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic):
12285         (WTF::Unicode::umemcasecmp):
12286
12287 2010-10-13  Gavin Barraclough  <barraclough@apple.com>
12288
12289         Windows build fix.
12290
12291         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12292
12293 2010-10-13  Adam Barth  <abarth@webkit.org>
12294
12295         Reviewed by Maciej Stachowiak.
12296
12297         [WTFURL] Add URLQueryCanonicalizer
12298         https://bugs.webkit.org/show_bug.cgi?id=45088
12299
12300         This class canonicalizes the query component of URLs.  The main tricky
12301         bit there is the convertCharset function, which I've moved to a
12302         templated dependency.  There'll likely be more about that in future
12303         patches.
12304
12305         * JavaScriptCore.xcodeproj/project.pbxproj:
12306         * wtf/url/src/URLEscape.cpp: Added.
12307         * wtf/url/src/URLEscape.h: Added.
12308         (WTF::appendEscapedCharacter):
12309         * wtf/url/src/URLQueryCanonicalizer.h: Added.
12310         (WTF::URLQueryCanonicalizer::canonicalize):
12311         (WTF::URLQueryCanonicalizer::isAllASCII):
12312         (WTF::URLQueryCanonicalizer::appendRaw8BitQueryString):
12313         (WTF::URLQueryCanonicalizer::convertToQueryEncoding):
12314
12315 2010-10-13  Gavin Barraclough  <barraclough@apple.com>
12316
12317         Reviewed by Oliver Hunt.
12318
12319         Bug 43987 - Downloading using XHR is much slower than before
12320         Change StringBuilder to use overcapacity in a StringImpl, rather than a Vector.
12321         Fundamentally this should be the same (copies current contents to expand capacity,
12322         rather than using a rope), but this approach allows the intermadiate state of the
12323         String to be inspected in the buffer without copying to resolve.
12324
12325         * runtime/JSONObject.cpp:
12326         (JSC::Stringifier::appendQuotedString):
12327         (JSC::Stringifier::Holder::appendNextProperty):
12328             Renamed StringBuilder::size() -> length() (to match other String types).
12329
12330         * runtime/UStringBuilder.h:
12331         (JSC::UStringBuilder::append):
12332         (JSC::UStringBuilder::toUString):
12333             Update for changes in parent class, can just 'using' the append methods.
12334
12335         * wtf/text/StringBuilder.cpp: Added.
12336         (WTF::StringBuilder::reifyString):
12337         (WTF::StringBuilder::resize):
12338         (WTF::StringBuilder::reserveCapacity):
12339         (WTF::StringBuilder::allocateBuffer):
12340         (WTF::StringBuilder::appendUninitialized):
12341         (WTF::StringBuilder::append):
12342         (WTF::StringBuilder::shrinkToFit):
12343         * wtf/text/StringBuilder.h:
12344         (WTF::StringBuilder::StringBuilder):
12345         (WTF::StringBuilder::append):
12346         (WTF::StringBuilder::toString):
12347         (WTF::StringBuilder::toStringPreserveCapacity):
12348         (WTF::StringBuilder::length):
12349         (WTF::StringBuilder::isEmpty):
12350         (WTF::StringBuilder::operator[]):
12351         (WTF::StringBuilder::clear):
12352             Class updated to use overcapacity in a StringImpl, rather than a Vector.
12353
12354         * Android.mk:
12355         * Android.v8.wtf.mk:
12356         * GNUmakefile.am:
12357         * JavaScriptCore.exp:
12358         * JavaScriptCore.gypi:
12359         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
12360         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
12361         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
12362         * JavaScriptCore.xcodeproj/project.pbxproj:
12363         * wtf/CMakeLists.txt:
12364         * wtf/wtf.pri:
12365
12366 2010-10-13  Adam Roben  <aroben@apple.com>
12367
12368         Export tryFastRealloc for WebKit2's benefit
12369
12370         Rubber-stamped by Anders Carlsson.
12371
12372         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
12373         tryFastRealloc. Removed RegExpObject::info, which is now exported via
12374         JS_EXPORTDATA.
12375
12376 2010-10-13  Adam Barth  <abarth@webkit.org>
12377
12378         Reviewed by Maciej Stachowiak.
12379
12380         [WTFURL] Add a mechanism for classifying types of characters
12381         https://bugs.webkit.org/show_bug.cgi?id=45085
12382
12383         Various characters have different escaping rules depending on where
12384         they are in URLs.  This patch adds a table containing that information.
12385
12386         * JavaScriptCore.xcodeproj/project.pbxproj:
12387         * wtf/url/src/URLCharacterTypes.cpp: Added.
12388         * wtf/url/src/URLCharacterTypes.h: Added.
12389         (WTF::URLCharacterTypes::isQueryChar):
12390         (WTF::URLCharacterTypes::isIPv4Char):
12391         (WTF::URLCharacterTypes::isHexChar):
12392         (WTF::URLCharacterTypes::isCharOfType):
12393
12394 2010-10-13  Xan Lopez  <xlopez@igalia.com>
12395
12396         Reviewed by Csaba Osztrogonác.
12397
12398         Missing parameters for bytecode dump of next_pname
12399         https://bugs.webkit.org/show_bug.cgi?id=47590
12400
12401         * bytecode/CodeBlock.cpp:
12402         (JSC::CodeBlock::dump): add missing parameters to the dump.
12403
12404 2010-10-13  Nikolas Zimmermann  <nzimmermann@rim.com>
12405
12406         Reviewed by Dirk Schulze.
12407
12408         Add wtf/text/StringConcatenate
12409         https://bugs.webkit.org/show_bug.cgi?id=47584
12410
12411         Move runtime/StringConcatenate.h to wtf/text, make it work for Strings too.
12412         Add a special runtime/UStringConcatenate.h class that inherits from StringConcatenate, and extends it for use with UString.
12413         Exactly the same design that has been followed while refactoring StringBuilder.
12414
12415         The UString variants can all be removed as soon as WTF::String & JSC::UString converge.
12416
12417         * GNUmakefile.am: Add wtf/text/StringConcatenate.h and runtime/UStringConcatenate.h.
12418         * JavaScriptCore.gypi: Ditto.
12419         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
12420         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
12421         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
12422         * bytecode/CodeBlock.cpp: s/makeString/makeUString/
12423         (JSC::escapeQuotes):
12424         (JSC::valueToSourceString):
12425         (JSC::constantName):
12426         (JSC::idName):
12427         (JSC::CodeBlock::registerName):
12428         (JSC::regexpToSourceString):
12429         (JSC::regexpName):
12430         * bytecompiler/NodesCodegen.cpp: Ditto.
12431         (JSC::substitute):
12432         * profiler/Profiler.cpp: Ditto.
12433         (JSC::Profiler::createCallIdentifier):
12434         * runtime/ExceptionHelpers.cpp: Ditto.
12435         (JSC::createUndefinedVariableError):
12436         (JSC::createErrorMessage):
12437         (JSC::createInvalidParamError):
12438         * runtime/FunctionConstructor.cpp: Ditto.
12439         (JSC::constructFunction):
12440         * runtime/FunctionPrototype.cpp: Ditto.
12441         (JSC::insertSemicolonIfNeeded):
12442         * runtime/JSONObject.cpp: Ditto.
12443         (JSC::Stringifier::indent):
12444         * runtime/JSStringBuilder.h:
12445         (JSC::jsMakeNontrivialString):
12446         * runtime/RegExpConstructor.cpp: Ditto.
12447         (JSC::constructRegExp):
12448         * runtime/RegExpObject.cpp: Ditto.
12449         (JSC::RegExpObject::match):
12450         * runtime/RegExpPrototype.cpp: Ditto.
12451         (JSC::regExpProtoFuncCompile):
12452         * runtime/StringConcatenate.h: Removed.
12453         * runtime/UStringConcatenate.h: Added. Only contains the StringTypeAdapter<JSC::UString> code and the makeUString variants, the rest lives in wtf/text/StringConcatenate.h
12454         (JSC::makeUString):
12455         * wtf/text/StringConcatenate.h: Copied from runtime/StringConcatenate.h.
12456         (WTF::makeString):
12457
12458 2010-10-12  Gavin Barraclough  <barraclough@apple.com>
12459
12460         Windows build fix.
12461
12462         * wtf/text/StringBuilder.h:
12463         (WTF::StringBuilder::length):
12464
12465 2010-10-12  Nikolas Zimmermann  <nzimmermann@rim.com>
12466
12467         Reviewed by Gavin Barraclough.
12468
12469         Unify JSC::StringBuilder & WebCore::StringBuilder
12470         https://bugs.webkit.org/show_bug.cgi?id=47538
12471
12472         Move runtime/StringBuilder.h to wtf/text/StringBuilder.h. Rename build() to toString() and return a WTF::String().
12473         Move the append(const JSC::UString&) method into runtime/UStringBuilder.h.
12474         UStringBuilder inherits from StringBuilder.h and adds append(const JSC::UString&) and UString toUString() functionality.
12475
12476         No new code, just move code around.
12477
12478         * GNUmakefile.am: Add wtf/text/StringBuilder.h / runtime/UStringBuilder.h. Remove runtime/StringBuilder.h.
12479         * JavaScriptCore.gypi: Ditto.
12480         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
12481         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
12482         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
12483         * runtime/Executable.cpp:
12484         (JSC::FunctionExecutable::paramString): Use UStringBuilder, instead of StringBuilder. Rename build() -> toUString().
12485         * runtime/FunctionConstructor.cpp:
12486         (JSC::constructFunction): Ditto.
12487         * runtime/JSGlobalObjectFunctions.cpp:
12488         (JSC::globalFuncUnescape): Ditto.
12489         * runtime/JSONObject.cpp:
12490         (JSC::Stringifier::stringify): Ditto.
12491         (JSC::Stringifier::appendQuotedString): Ditto.
12492         (JSC::Stringifier::appendStringifiedValue): Ditto.
12493         (JSC::Stringifier::startNewLine): Ditto.
12494         (JSC::Stringifier::Holder::appendNextProperty): Ditto.
12495         * runtime/LiteralParser.cpp:
12496         (JSC::LiteralParser::Lexer::lexString): Ditto.
12497         * runtime/NumberPrototype.cpp: Remove unneeded JSStringBuilder.h / StringBuilder.h include.
12498         * runtime/StringBuilder.h: Removed.
12499         * runtime/UStringBuilder.h: Added. Inherits from WTF::StringBuilder, extending it by two methods.
12500         (JSC::UStringBuilder::append): append(const JSC::UString&)
12501         (JSC::UStringBuilder::toUString):
12502         * wtf/text/StringBuilder.h: Copied from runtime/StringBuilder.h. Move JSC::UString parts into runtime/UStringBuilder.h
12503         (WTF::StringBuilder::append): Renamed m_buffer to buffer everywhere.
12504         (WTF::StringBuilder::isEmpty): Ditto (+ constify method). 
12505         (WTF::StringBuilder::reserveCapacity): Ditto.
12506         (WTF::StringBuilder::resize): Ditto.
12507         (WTF::StringBuilder::size): Ditto.
12508         (WTF::StringBuilder::operator[]): Ditto.
12509         (WTF::StringBuilder::toString): Ditto (+ renamed from build()). Returns a String, not an UString. The old build() method is now named toUString() and lives in UStringBuilder.
12510
12511 2010-10-12  Michael Saboff  <msaboff@apple.com>
12512
12513         Reviewed by Oliver Hunt.
12514
12515         Cleaned up the processing of replacements after regular expression
12516         processing, especially the case where there wasn't a match.
12517         Changed to use empty strings instead of computing a zero length sub
12518         string.
12519         https://bugs.webkit.org/show_bug.cgi?id=47506
12520
12521         * runtime/StringPrototype.cpp:
12522         (JSC::jsSpliceSubstringsWithSeparators):
12523         (JSC::stringProtoFuncReplace):
12524
12525 2010-10-11  Patrick Gansterer  <paroga@webkit.org>
12526
12527         Unreviewed.
12528
12529         Clang build fix after r69472.
12530         https://bugs.webkit.org/show_bug.cgi?id=46523
12531
12532         * wtf/text/StringHash.h:
12533
12534 2010-10-11  Oliver Hunt  <oliver@apple.com>
12535
12536         Undo last minute change to 32bit build.
12537
12538         * jit/JITOpcodes32_64.cpp:
12539         (JSC::JIT::emit_op_convert_this_strict):
12540
12541 2010-10-11  Brian Weinstein  <bweinstein@apple.com>
12542
12543         Build fix for Windows. Add a necessary export from r69516.
12544
12545         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12546
12547 2010-10-11  Oliver Hunt  <oliver@apple.com>
12548
12549         Fix interpreter build -- was broken by incorrect merge.
12550
12551         * interpreter/Interpreter.cpp:
12552         (JSC::Interpreter::privateExecute):
12553
12554 2010-10-01  Oliver Hunt  <oliver@apple.com>
12555
12556         Reviewed by Gavin Barraclough.
12557
12558         [ES5] Implement strict mode
12559         https://bugs.webkit.org/show_bug.cgi?id=10701
12560
12561         Initial strict mode implementation.  This is the simplest
12562         implementation that could possibly work and adds (hopefully)
12563         all of the restrictions required by strict mode.  There are
12564         a number of inefficiencies, especially in the handling of
12565         arguments and eval as smart implementations would make this
12566         patch more complicated.  
12567
12568         The SyntaxChecker AST builder has become somewhat more complex
12569         as strict mode does require more parse tree information to
12570         validate the syntax.
12571
12572         Summary of major changes to the parser:
12573             * We track when we enter strict mode (this may come as a surprise)
12574             * Strict mode actually requires a degree of AST knowledge to validate
12575               so the SyntaxChecker now produces values that can be used to distinguish
12576               "node" types.
12577             * We now track variables that are written to.  We do this to
12578               statically identify writes to global properties that don't exist
12579               and abort at that point.  This should actually make it possible
12580               to optimise some other cases in the future but for now it's
12581               purely for validity checking.  Currently writes are only tracked
12582               in strict mode code.
12583             * Labels are now tracked as it is now a syntax error to jump to a label
12584               that does not exist (or to use break, continue, or return in a context
12585               where they would be invalid).
12586
12587         Runtime changes:
12588             * In order to get correct hanlding of the Arguments object all
12589               strict mode functions that reference arguments create and tearoff
12590               the arguments object on entry.  This is not strictly necessary
12591               but was the least work necessary to get the correct behaviour.
12592             * PutPropertySlot now tracks whether it is being used for a strict
12593               mode write, and if so Object::put will throw when a write can't be
12594               completed.
12595             * StrictEvalActivation was added as an "activation" object for strict
12596               mode eval (so that strict eval does not introduce new variables into
12597               the containing scope).
12598
12599         * CMakeLists.txt:
12600         * GNUmakefile.am:
12601         * JavaScriptCore.exp:
12602         * JavaScriptCore.pro:
12603         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12604         * JavaScriptCore.xcodeproj/project.pbxproj:
12605         * bytecode/CodeBlock.cpp:
12606         (JSC::CodeBlock::dump):
12607         (JSC::CodeBlock::CodeBlock):
12608         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
12609         * bytecode/CodeBlock.h:
12610         (JSC::CodeBlock::isStrictMode):
12611         * bytecode/EvalCodeCache.h:
12612         (JSC::EvalCodeCache::get):
12613         * bytecode/Opcode.h:
12614         * bytecompiler/BytecodeGenerator.cpp:
12615         (JSC::BytecodeGenerator::BytecodeGenerator):
12616         (JSC::BytecodeGenerator::createArgumentsIfNecessary):
12617         (JSC::BytecodeGenerator::emitReturn):
12618         * bytecompiler/BytecodeGenerator.h:
12619         (JSC::BytecodeGenerator::isStrictMode):
12620         (JSC::BytecodeGenerator::makeFunction):
12621         * debugger/Debugger.cpp:
12622         (JSC::evaluateInGlobalCallFrame):
12623         * debugger/DebuggerCallFrame.cpp:
12624         (JSC::DebuggerCallFrame::evaluate):
12625         * interpreter/Interpreter.cpp:
12626         (JSC::Interpreter::callEval):
12627         (JSC::Interpreter::unwindCallFrame):
12628         (JSC::Interpreter::execute):
12629         (JSC::Interpreter::privateExecute):
12630         * jit/JIT.cpp:
12631         (JSC::JIT::privateCompileMainPass):
12632         (JSC::JIT::privateCompileSlowCases):
12633         * jit/JIT.h:
12634         * jit/JITOpcodes.cpp:
12635         (JSC::JIT::emit_op_get_pnames):
12636         (JSC::JIT::emit_op_convert_this_strict):
12637         (JSC::JIT::emitSlow_op_convert_this_strict):
12638         * jit/JITOpcodes32_64.cpp:
12639         (JSC::JIT::emit_op_get_pnames):
12640         * jit/JITStubs.cpp:
12641         (JSC::DEFINE_STUB_FUNCTION):
12642         * jit/JITStubs.h:
12643         * parser/ASTBuilder.h:
12644         (JSC::ASTBuilder::createFunctionBody):
12645         (JSC::ASTBuilder::isResolve):
12646         * parser/JSParser.cpp:
12647         (JSC::JSParser::next):
12648         (JSC::JSParser::startLoop):
12649         (JSC::JSParser::endLoop):
12650         (JSC::JSParser::startSwitch):
12651         (JSC::JSParser::endSwitch):
12652         (JSC::JSParser::setStrictMode):
12653         (JSC::JSParser::strictMode):
12654         (JSC::JSParser::isValidStrictMode):
12655         (JSC::JSParser::declareParameter):
12656         (JSC::JSParser::breakIsValid):
12657         (JSC::JSParser::pushLabel):
12658         (JSC::JSParser::popLabel):
12659         (JSC::JSParser::hasLabel):
12660         (JSC::JSParser::DepthManager::DepthManager):
12661         (JSC::JSParser::DepthManager::~DepthManager):
12662         (JSC::JSParser::Scope::Scope):
12663         (JSC::JSParser::Scope::startSwitch):
12664         (JSC::JSParser::Scope::endSwitch):
12665         (JSC::JSParser::Scope::startLoop):
12666         (JSC::JSParser::Scope::endLoop):
12667         (JSC::JSParser::Scope::inLoop):
12668         (JSC::JSParser::Scope::breakIsValid):
12669         (JSC::JSParser::Scope::pushLabel):
12670         (JSC::JSParser::Scope::popLabel):
12671         (JSC::JSParser::Scope::hasLabel):
12672         (JSC::JSParser::Scope::isFunction):
12673         (JSC::JSParser::Scope::declareVariable):
12674         (JSC::JSParser::Scope::declareWrite):
12675         (JSC::JSParser::Scope::deleteProperty):
12676         (JSC::JSParser::Scope::declareParameter):
12677         (JSC::JSParser::Scope::setNeedsFullActivation):
12678         (JSC::JSParser::Scope::collectFreeVariables):
12679         (JSC::JSParser::Scope::getUncapturedWrittenVariables):
12680         (JSC::JSParser::Scope::getDeletedVariables):
12681         (JSC::JSParser::Scope::setStrictMode):
12682         (JSC::JSParser::Scope::strictMode):
12683         (JSC::JSParser::Scope::isValidStrictMode):
12684         (JSC::JSParser::pushScope):
12685         (JSC::JSParser::popScope):
12686         (JSC::JSParser::declareVariable):
12687         (JSC::JSParser::declareWrite):
12688         (JSC::JSParser::deleteProperty):
12689         (JSC::jsParse):
12690         (JSC::JSParser::JSParser):
12691         (JSC::JSParser::parseProgram):
12692         (JSC::JSParser::parseSourceElements):
12693         (JSC::JSParser::parseDoWhileStatement):
12694         (JSC::JSParser::parseWhileStatement):
12695         (JSC::JSParser::parseVarDeclarationList):
12696         (JSC::JSParser::parseConstDeclarationList):
12697         (JSC::JSParser::parseForStatement):
12698         (JSC::JSParser::parseBreakStatement):
12699         (JSC::JSParser::parseContinueStatement):
12700         (JSC::JSParser::parseReturnStatement):
12701         (JSC::JSParser::parseWithStatement):
12702         (JSC::JSParser::parseSwitchStatement):
12703         (JSC::JSParser::parseSwitchClauses):
12704         (JSC::JSParser::parseSwitchDefaultClause):
12705         (JSC::JSParser::parseTryStatement):
12706         (JSC::JSParser::parseBlockStatement):
12707         (JSC::JSParser::parseStatement):
12708         (JSC::JSParser::parseFormalParameters):
12709         (JSC::JSParser::parseFunctionBody):
12710         (JSC::JSParser::parseFunctionInfo):
12711         (JSC::JSParser::parseFunctionDeclaration):
12712         (JSC::JSParser::parseExpressionOrLabelStatement):
12713         (JSC::JSParser::parseIfStatement):
12714         (JSC::JSParser::parseExpression):
12715         (JSC::JSParser::parseAssignmentExpression):
12716         (JSC::JSParser::parseConditionalExpression):
12717         (JSC::JSParser::parseBinaryExpression):
12718         (JSC::JSParser::parseStrictObjectLiteral):
12719         (JSC::JSParser::parsePrimaryExpression):
12720         (JSC::JSParser::parseMemberExpression):
12721         (JSC::JSParser::parseUnaryExpression):
12722         * parser/JSParser.h:
12723         * parser/Lexer.cpp:
12724         (JSC::Lexer::parseString):
12725         (JSC::Lexer::lex):
12726         * parser/Lexer.h:
12727         (JSC::Lexer::isReparsing):
12728         * parser/Nodes.cpp:
12729         (JSC::ScopeNode::ScopeNode):
12730         (JSC::FunctionBodyNode::FunctionBodyNode):
12731         (JSC::FunctionBodyNode::create):
12732         * parser/Nodes.h:
12733         (JSC::ScopeNode::isStrictMode):
12734         * parser/Parser.cpp:
12735         (JSC::Parser::parse):
12736         * parser/Parser.h:
12737         (JSC::Parser::parse):
12738         * parser/SyntaxChecker.h:
12739         (JSC::SyntaxChecker::SyntaxChecker):
12740         (JSC::SyntaxChecker::makeFunctionCallNode):
12741         (JSC::SyntaxChecker::appendToComma):
12742         (JSC::SyntaxChecker::createCommaExpr):
12743         (JSC::SyntaxChecker::makeAssignNode):
12744         (JSC::SyntaxChecker::makePrefixNode):
12745         (JSC::SyntaxChecker::makePostfixNode):
12746         (JSC::SyntaxChecker::makeTypeOfNode):
12747         (JSC::SyntaxChecker::makeDeleteNode):
12748         (JSC::SyntaxChecker::makeNegateNode):
12749         (JSC::SyntaxChecker::makeBitwiseNotNode):
12750         (JSC::SyntaxChecker::createLogicalNot):
12751         (JSC::SyntaxChecker::createUnaryPlus):
12752         (JSC::SyntaxChecker::createVoid):
12753         (JSC::SyntaxChecker::thisExpr):
12754         (JSC::SyntaxChecker::createResolve):
12755         (JSC::SyntaxChecker::createObjectLiteral):
12756         (JSC::SyntaxChecker::createArray):
12757         (JSC::SyntaxChecker::createNumberExpr):
12758         (JSC::SyntaxChecker::createString):
12759         (JSC::SyntaxChecker::createBoolean):
12760         (JSC::SyntaxChecker::createNull):
12761         (JSC::SyntaxChecker::createBracketAccess):
12762         (JSC::SyntaxChecker::createDotAccess):
12763         (JSC::SyntaxChecker::createRegex):
12764         (JSC::SyntaxChecker::createNewExpr):
12765         (JSC::SyntaxChecker::createConditionalExpr):
12766         (JSC::SyntaxChecker::createAssignResolve):
12767         (JSC::SyntaxChecker::createFunctionExpr):
12768         (JSC::SyntaxChecker::createFunctionBody):
12769         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
12770         (JSC::SyntaxChecker::operatorStackPop):
12771         * runtime/Arguments.cpp:
12772         (JSC::Arguments::createStrictModeCallerIfNecessary):
12773         (JSC::Arguments::createStrictModeCalleeIfNecessary):
12774         (JSC::Arguments::getOwnPropertySlot):
12775         (JSC::Arguments::getOwnPropertyDescriptor):
12776         (JSC::Arguments::put):
12777         (JSC::Arguments::deleteProperty):
12778         * runtime/Arguments.h:
12779         (JSC::Arguments::Arguments):
12780         * runtime/CommonIdentifiers.cpp:
12781         (JSC::CommonIdentifiers::CommonIdentifiers):
12782         * runtime/CommonIdentifiers.h:
12783         * runtime/Error.cpp:
12784         (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
12785         (JSC::StrictModeTypeErrorFunction::constructThrowTypeError):
12786         (JSC::StrictModeTypeErrorFunction::getConstructData):
12787         (JSC::StrictModeTypeErrorFunction::callThrowTypeError):
12788         (JSC::StrictModeTypeErrorFunction::getCallData):
12789         (JSC::createTypeErrorFunction):
12790         * runtime/Error.h:
12791         * runtime/Executable.cpp:
12792         (JSC::EvalExecutable::EvalExecutable):
12793         (JSC::ProgramExecutable::ProgramExecutable):
12794         (JSC::FunctionExecutable::FunctionExecutable):
12795         (JSC::EvalExecutable::compileInternal):
12796         (JSC::ProgramExecutable::checkSyntax):
12797         (JSC::ProgramExecutable::compileInternal):
12798         (JSC::FunctionExecutable::compileForCallInternal):
12799         (JSC::FunctionExecutable::compileForConstructInternal):
12800         (JSC::FunctionExecutable::reparseExceptionInfo):
12801         (JSC::EvalExecutable::reparseExceptionInfo):
12802         (JSC::FunctionExecutable::fromGlobalCode):
12803         (JSC::ProgramExecutable::reparseExceptionInfo):
12804         * runtime/Executable.h:
12805         (JSC::ScriptExecutable::ScriptExecutable):
12806         (JSC::ScriptExecutable::isStrictMode):
12807         (JSC::EvalExecutable::create):
12808         (JSC::FunctionExecutable::create):
12809         * runtime/JSActivation.cpp:
12810         (JSC::JSActivation::toStrictThisObject):
12811         * runtime/JSActivation.h:
12812         * runtime/JSFunction.cpp:
12813         (JSC::createDescriptorForThrowingProperty):
12814         (JSC::JSFunction::getOwnPropertySlot):
12815         (JSC::JSFunction::getOwnPropertyDescriptor):
12816         (JSC::JSFunction::put):
12817         * runtime/JSGlobalData.cpp:
12818         (JSC::JSGlobalData::JSGlobalData):
12819         * runtime/JSGlobalData.h:
12820         * runtime/JSGlobalObject.cpp:
12821         (JSC::JSGlobalObject::reset):
12822         * runtime/JSGlobalObject.h:
12823         (JSC::JSGlobalObject::internalFunctionStructure):
12824         * runtime/JSGlobalObjectFunctions.cpp:
12825         (JSC::globalFuncEval):
12826         * runtime/JSObject.cpp:
12827         (JSC::JSObject::put):
12828         (JSC::JSObject::toStrictThisObject):
12829         (JSC::throwTypeError):
12830         * runtime/JSObject.h:
12831         (JSC::JSObject::isStrictModeFunction):
12832         (JSC::JSObject::putDirectInternal):
12833         (JSC::JSObject::putDirect):
12834         (JSC::JSValue::putDirect):
12835         (JSC::JSValue::toStrictThisObject):
12836         * runtime/JSStaticScopeObject.cpp:
12837         (JSC::JSStaticScopeObject::toStrictThisObject):
12838         * runtime/JSStaticScopeObject.h:
12839         * runtime/JSValue.h:
12840         * runtime/JSZombie.h:
12841         (JSC::JSZombie::toStrictThisObject):
12842         * runtime/PutPropertySlot.h:
12843         (JSC::PutPropertySlot::PutPropertySlot):
12844         (JSC::PutPropertySlot::isStrictMode):
12845         * runtime/StrictEvalActivation.cpp: Added.
12846         (JSC::StrictEvalActivation::StrictEvalActivation):
12847         (JSC::StrictEvalActivation::deleteProperty):
12848         (JSC::StrictEvalActivation::toThisObject):
12849         (JSC::StrictEvalActivation::toStrictThisObject):
12850         * runtime/StrictEvalActivation.h: Added.
12851
12852 2010-10-10  Patrick Gansterer  <paroga@webkit.org>
12853
12854         Unreviewed.
12855
12856         Windows build fix after r69472.
12857
12858         * wtf/text/StringHash.h:
12859         (WTF::CaseFoldingHash::hash):
12860
12861 2010-10-10  Patrick Gansterer  <paroga@webkit.org>
12862
12863         Reviewed by Adam Barth.
12864
12865         Use WTF::StringHasher in WTF::CaseFoldingHash
12866         https://bugs.webkit.org/show_bug.cgi?id=46523
12867
12868         * wtf/text/StringHash.h:
12869         (WTF::CaseFoldingHash::foldCase):
12870         (WTF::CaseFoldingHash::hash):
12871
12872 2010-10-09  Pratik Solanki  <psolanki@apple.com>
12873
12874         Reviewed by Xan Lopez.
12875
12876         https://bugs.webkit.org/show_bug.cgi?id=47445
12877         Remove unused function WTFThreadData::initializeIdentifierTable()
12878
12879         * wtf/WTFThreadData.h:
12880
12881 2010-10-08  Michael Saboff  <msaboff@apple.com>
12882
12883         Reviewed by Darin Adler.
12884
12885         Added check to start of subexpression being positive before using
12886         subexpression in replacement.
12887         https://bugs.webkit.org/show_bug.cgi?id=47324
12888
12889         * runtime/StringPrototype.cpp:
12890         (JSC::substituteBackreferencesSlow):
12891
12892 2010-10-08  Chris Evans  <cevans@google.com>
12893
12894         Reviewed by David Levin.
12895
12896         https://bugs.webkit.org/show_bug.cgi?id=47393
12897
12898         Use unsigned consistently to check for max StringImpl length.
12899         Add a few integer overflow checks.
12900         Uses the existing paradigm of CRASH() when we can't reasonably handle a crazily large request.
12901
12902         * wtf/text/WTFString.cpp:
12903         * wtf/text/StringImpl.h:
12904         * wtf/text/StringImpl.cpp:
12905         Better use of size_t vs. unsigned; check for integer overflows.
12906
12907 2010-10-07  David Goodwin  <david_goodwin@apple.com>
12908
12909         Reviewed by Oliver Hunt.
12910
12911         ARM JIT generates undefined operations due to partially uninitialized ShiftTypeAndAmount
12912         https://bugs.webkit.org/show_bug.cgi?id=47356
12913
12914         * assembler/ARMv7Assembler.h:
12915
12916 2010-10-06  Chris Evans  <cevans@google.com>
12917
12918         Reviewed by David Levin.
12919
12920         https://bugs.webkit.org/show_bug.cgi?id=47248
12921
12922         Use size_t consistently in CString, to prevent theoretical trouble
12923         with > 4GB strings on 64-bit platforms.
12924
12925         * wtf/text/CString.h:
12926         * wtf/text/CString.cpp:
12927         Use size_t for string lengths.
12928         * wtf/MD5.cpp:
12929         (WTF::expectMD5): use suitable format string + cast for size_t.
12930         * JavaScriptCore.exp:
12931         Update symbol name.
12932
12933 2010-10-06  Anders Carlsson  <andersca@apple.com>
12934
12935         Reviewed by Sam Weinig.
12936
12937         Start cleaning up Arguments.h
12938         https://bugs.webkit.org/show_bug.cgi?id=47304
12939
12940         * wtf/TypeTraits.h:
12941         * wtf/TypeTraits.cpp:
12942         Add RemoveReference type trait.
12943
12944 2010-10-06  Rafael Antognolli  <antognolli@profusion.mobi>
12945
12946         Unreviewed build fix.
12947
12948         [EFL] Build fix for glib support.
12949         https://bugs.webkit.org/show_bug.cgi?id=47221
12950
12951         If compiling with GLib support enabled, we also need to link wtf against
12952         glib library.
12953
12954         * wtf/CMakeListsEfl.txt:
12955
12956 2010-10-05  Kwang Yul Seo  <skyul@company100.net>
12957
12958         Reviewed by Gavin Barraclough.
12959
12960         [BREWMP] Port ExecutableAllocator::cacheFlush to enable ARM JIT
12961         https://bugs.webkit.org/show_bug.cgi?id=47117
12962
12963         Use IMemCache1 to flush data cache and invalidate instruction cache.
12964
12965         * jit/ExecutableAllocator.h:
12966         (JSC::ExecutableAllocator::cacheFlush):
12967
12968 2010-10-05  Leandro Pereira  <leandro@profusion.mobi>
12969
12970         Unreviewed. Build fix.
12971
12972         Moved "jsc" directory to "shell", so that the name does not clash with the
12973         JavaScriptCore shell in some build systems.
12974         http://webkit.org/b/47049
12975
12976         * CMakeLists.txt: Changed reference from "jsc" to "shell".
12977         * jsc: Removed.
12978         * jsc/CMakeLists.txt: Removed.
12979         * jsc/CMakeListsEfl.txt: Removed.
12980         * shell: Copied from JavaScriptCore/jsc.
12981
12982 2010-10-05  Kwang Yul Seo  <skyul@company100.net>
12983
12984         Reviewed by Kent Tamura.
12985
12986         [BREWMP] Use PlatformRefPtr in randomNumber
12987         https://bugs.webkit.org/show_bug.cgi?id=46989
12988
12989         Use PlatformRefPtr to free memory automatically.
12990
12991         * wtf/RandomNumber.cpp:
12992         (WTF::randomNumber):
12993
12994 2010-10-05  Oliver Hunt  <oliver@apple.com>
12995
12996         Reviewed by Darin Adler.
12997
12998         REGRESSION(r68338): JavaScript error on PowerPC only (crashes on Interpreter built for x86_64)
12999         https://bugs.webkit.org/show_bug.cgi?id=46690
13000
13001         Use the correct register value when initialising the arguments
13002         object in the interpreter.  This is covered by existing tests.
13003
13004         * interpreter/Interpreter.cpp:
13005         (JSC::Interpreter::privateExecute):
13006
13007 2010-10-04  David Goodwin  <david_goodwin@apple.com>
13008
13009         Reviewed by Oliver Hunt.
13010
13011         ARMv7 JIT should take advantage of 2-byte branches to reduce code size
13012         https://bugs.webkit.org/show_bug.cgi?id=47007
13013
13014         * assembler/ARMv7Assembler.cpp:
13015         * assembler/ARMv7Assembler.h:
13016         (JSC::ARMv7Assembler::computeJumpType):
13017         (JSC::ARMv7Assembler::link):
13018         (JSC::ARMv7Assembler::canBeJumpT2):
13019         (JSC::ARMv7Assembler::canBeJumpT4):
13020         (JSC::ARMv7Assembler::linkBX):
13021         (JSC::ARMv7Assembler::linkJumpT4):
13022         (JSC::ARMv7Assembler::linkJumpT2):
13023         (JSC::ARMv7Assembler::linkJumpAbsolute):
13024
13025 2010-10-04  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
13026
13027         Reviewed by Antonio Gomes.
13028
13029         [EFL] Use fast malloc for WebKit EFL
13030         https://bugs.webkit.org/show_bug.cgi?id=46691
13031
13032         Use fast malloc for WebKit EFL because the fast malloc is to allocate
13033         memory quickly.
13034
13035         * wtf/CMakeListsEfl.txt:
13036
13037 2010-10-04  Oliver Hunt  <oliver@apple.com>
13038
13039         Reviewed by Geoff Garen.
13040
13041         Lazily create activation objects
13042         https://bugs.webkit.org/show_bug.cgi?id=47107
13043
13044         Make it possible to lazily create the activation object
13045         for a function that needs one.  This allows us to reduce
13046         the overhead of entering a function that may require
13047         an activation in some cases, but not always.
13048
13049         This does make exception handling a little more complex as
13050         it's now necessary to verify that a callframes activation
13051         has been created, and create it if not, in all of the
13052         paths used in exception handling.
13053
13054         We also need to add logic to check for the existence of
13055         the activation in the scoped_var opcodes, as well as
13056         op_ret, op_ret_object_or_this and op_tearoff_activation
13057         so that we can avoid creating an activation unnecesarily
13058         on function exit. 
13059
13060         * bytecode/CodeBlock.cpp:
13061         (JSC::CodeBlock::dump):
13062         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
13063         (JSC::CodeBlock::createActivation):
13064         * bytecode/CodeBlock.h:
13065         (JSC::CodeBlock::setActivationRegister):
13066         (JSC::CodeBlock::activationRegister):
13067         * bytecode/Opcode.h:
13068         * bytecompiler/BytecodeGenerator.cpp:
13069         (JSC::BytecodeGenerator::BytecodeGenerator):
13070         (JSC::BytecodeGenerator::emitNewFunctionInternal):
13071         (JSC::BytecodeGenerator::emitNewFunctionExpression):
13072         (JSC::BytecodeGenerator::createActivationIfNecessary):
13073         * bytecompiler/BytecodeGenerator.h:
13074         * interpreter/Interpreter.cpp:
13075         (JSC::Interpreter::resolveSkip):
13076         (JSC::Interpreter::resolveGlobalDynamic):
13077         (JSC::Interpreter::resolveBase):
13078         (JSC::Interpreter::unwindCallFrame):
13079         (JSC::Interpreter::throwException):
13080         (JSC::Interpreter::privateExecute):
13081         * jit/JIT.cpp:
13082         (JSC::JIT::privateCompileMainPass):
13083         * jit/JIT.h:
13084         * jit/JITCall32_64.cpp:
13085         (JSC::JIT::emit_op_ret):
13086         (JSC::JIT::emit_op_ret_object_or_this):
13087         * jit/JITOpcodes.cpp:
13088         (JSC::JIT::emit_op_end):
13089         (JSC::JIT::emit_op_get_scoped_var):
13090         (JSC::JIT::emit_op_put_scoped_var):
13091         (JSC::JIT::emit_op_tear_off_activation):
13092         (JSC::JIT::emit_op_ret):
13093         (JSC::JIT::emit_op_ret_object_or_this):
13094         (JSC::JIT::emit_op_create_activation):
13095         (JSC::JIT::emit_op_resolve_global_dynamic):
13096         * jit/JITOpcodes32_64.cpp:
13097         (JSC::JIT::emit_op_get_scoped_var):
13098         (JSC::JIT::emit_op_put_scoped_var):
13099         (JSC::JIT::emit_op_tear_off_activation):
13100         (JSC::JIT::emit_op_create_activation):
13101         * jit/JITStubs.cpp:
13102         (JSC::DEFINE_STUB_FUNCTION):
13103
13104 2010-10-04  Adam Barth  <abarth@webkit.org>
13105
13106         Reviewed by Sam Weinig.
13107
13108         Remove ENABLE_SANDBOX
13109         https://bugs.webkit.org/show_bug.cgi?id=47032
13110
13111         * Configurations/FeatureDefines.xcconfig:
13112
13113 2010-10-01  Pratik Solanki  <psolanki@apple.com>
13114
13115         Reviewed by Geoffrey Garen.
13116         Specify ALWAYS_INLINE at function declaration not function definition
13117         https://bugs.webkit.org/show_bug.cgi?id=46960
13118
13119         For functions defined with ALWAYS_INLINE, add the attribute to the declaration as well.
13120
13121         * bytecompiler/BytecodeGenerator.h:
13122         * wtf/FastMalloc.cpp:
13123
13124 2010-10-01  Kwang Yul Seo  <skyul@company100.net>
13125
13126         Unreviewed.
13127
13128         [BREWMP] Change Collector BLOCK_SIZE to 64KB
13129         https://bugs.webkit.org/show_bug.cgi?id=46436
13130
13131         Lower BLOCK_SIZE to 64KB because Brew MP runs on low end devices.
13132
13133         * runtime/Collector.h:
13134
13135 2010-10-01  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
13136
13137         Reviewed by Andreas Kling.
13138
13139         [Qt] Stack overflow on symbian platform.
13140         https://bugs.webkit.org/show_bug.cgi?id=40598
13141         
13142         Move big allocation in arrayProtoFuncToString from stack to heap.
13143         JSC::arrayProtoFuncToString function can be called recursivly and
13144         1K allocation on stack cahse stack overflow.
13145         Can be useful for other platforms with limited stack size.
13146
13147         * runtime/ArrayPrototype.cpp:
13148         (JSC::arrayProtoFuncToString):
13149
13150 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
13151
13152         Reviewed by Kent Tamura.
13153
13154         [BREWMP] Add a factory function which returns an instance wrapped in PlatformRefPtr.
13155         https://bugs.webkit.org/show_bug.cgi?id=46373
13156
13157         A Brew MP instance has reference count 1 when it is created, so call adoptPlatformRef
13158         to wrap the instance in PlatformRefPtr.
13159
13160         * wtf/brew/ShellBrew.h:
13161         (WTF::createRefPtrInstance):
13162
13163 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
13164
13165         Reviewed by Kent Tamura.
13166
13167         [BREWMP] Port PlatformRefPtr
13168         https://bugs.webkit.org/show_bug.cgi?id=46370
13169
13170         Implement refPlatformPtr and derefPlatformPtr to use PlatformRefPtr in Brew MP.
13171
13172         * wtf/brew/RefPtrBrew.h: Added.
13173         (WTF::refPlatformPtr):
13174         (WTF::derefPlatformPtr):
13175
13176 2010-09-29  Sam Weinig  <sam@webkit.org>
13177
13178         Reviewed by Darin Adler.
13179
13180         Add additional checks to StringBuffer.
13181         <rdar://problem/7756381>
13182
13183         * wtf/text/StringBuffer.h:
13184         (WTF::StringBuffer::StringBuffer):
13185         (WTF::StringBuffer::resize):
13186
13187 2010-09-30  Chris Marrin  <cmarrin@apple.com>
13188
13189         Reviewed by Simon Fraser.
13190
13191         Make 2D accelerated canvas rendering build on Mac
13192         https://bugs.webkit.org/show_bug.cgi?id=46007
13193         
13194         Added ACCELERATED_2D_CANVAS to FeatureDefines
13195
13196         * Configurations/FeatureDefines.xcconfig:
13197
13198 2010-09-30  Kevin Ollivier  <kevino@theolliviers.com>
13199
13200         [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from
13201         the copy so as not to alter global settings.
13202
13203         * wscript:
13204
13205 2010-09-30  Peter Varga  <pvarga@inf.u-szeged.hu>
13206
13207         Reviewed by Gavin Barraclough.
13208
13209         The case-insensitivity backreference checking isn't working with YARR
13210         Interpreter
13211         https://bugs.webkit.org/show_bug.cgi?id=46882
13212
13213         Add ignorecase checking to the Interpreter::tryConsumeBackReference() function.
13214
13215         * yarr/RegexInterpreter.cpp:
13216         (JSC::Yarr::Interpreter::tryConsumeBackReference):
13217
13218 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
13219
13220         Reviewed by Andreas Kling.
13221
13222         [BREWMP] Leave initializeRandomNumberGenerator empty.
13223         https://bugs.webkit.org/show_bug.cgi?id=46851
13224
13225         On Brew MP, AEECLSID_RANDOM initializes itself.
13226
13227         * wtf/RandomNumberSeed.h:
13228         (WTF::initializeRandomNumberGenerator):
13229
13230 2010-09-30  Gabor Loki  <loki@webkit.org>
13231
13232         Reviewed by Csaba Osztrogonác.
13233
13234         Remove unnecessary cacheFlush calls from Thumb-2
13235         https://bugs.webkit.org/show_bug.cgi?id=46702
13236
13237         * assembler/ARMv7Assembler.h:
13238         (JSC::ARMv7Assembler::relinkCall):
13239         (JSC::ARMv7Assembler::repatchInt32):
13240         (JSC::ARMv7Assembler::repatchPointer):
13241
13242 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
13243
13244         Unreviewed.
13245
13246         Next try to fix cygwin build.
13247
13248         * wtf/Assertions.cpp:
13249
13250 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
13251
13252         Unreviewed.
13253
13254         Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN).
13255
13256         * wtf/Assertions.cpp:
13257
13258 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
13259
13260         Unreviewed.
13261
13262         Build fix for cygwin.
13263
13264         * wtf/Assertions.cpp:
13265
13266 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
13267
13268         Reviewed by Andreas Kling.
13269
13270         [WINCE] Buildfix for Assertions.cpp after r68511.
13271         https://bugs.webkit.org/show_bug.cgi?id=46807
13272
13273         Some, but not all WinCE environments have support for IsDebuggerPresent().
13274         Add HAVE(ISDEBUGGERPRESENT) to make this a build option.
13275         HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default.
13276
13277         * wtf/Assertions.cpp:
13278         * wtf/Platform.h:
13279
13280 2010-09-29  Peter Varga  <pvarga@inf.u-szeged.hu>
13281
13282         Reviewed by Csaba Osztrogonác.
13283
13284         JSC compile fails on 32bit platform when Regexp Tracing is enabled
13285         https://bugs.webkit.org/show_bug.cgi?id=46713
13286
13287         Fix the cast of pointer in regexp tracing to avoid the warning.
13288
13289         * runtime/RegExp.cpp:
13290         (JSC::RegExp::match):
13291
13292 2010-09-28  Anders Carlsson  <andersca@apple.com>
13293
13294         Reviewed by Sam Weinig.
13295
13296         Begin hooking up painting in the plug-in process
13297         https://bugs.webkit.org/show_bug.cgi?id=46766
13298
13299         * JavaScriptCore.exp:
13300         Add tryFastRealloc, used by WebKit2.
13301
13302 2010-09-28  Philippe Normand  <pnormand@igalia.com>
13303
13304         Reviewed by Martin Robinson.
13305
13306         Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT)
13307         https://bugs.webkit.org/show_bug.cgi?id=46721
13308
13309         Enable GOwnPtr/GRefPtr build only if glib support has been
13310         explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro.
13311
13312         * wtf/gobject/GOwnPtr.cpp:
13313         * wtf/gobject/GOwnPtr.h:
13314         * wtf/gobject/GRefPtr.cpp:
13315         * wtf/gobject/GRefPtr.h:
13316
13317 2010-09-28  Ä°smail Dönmez  <ismail@namtrac.org>
13318
13319         Reviewed by Andreas Kling.
13320
13321         Test for WINCE instead of WINCEBASIC, compiler always defines WINCE.
13322         Remove reference to unexisting path JavaScriptCore/os-wince.
13323
13324         * JavaScriptCore.pri:
13325         * wtf/Assertions.cpp:
13326
13327 2010-09-27  Michael Saboff  <msaboff@apple.com>
13328
13329         Reviewed by Geoffrey Garen.
13330
13331         Changed the initialization of JSArray objects to have space for 
13332         3 elements for the constructor that takes a ArgList argument.
13333         This improves v8-deltablue performance by about 2.8% by reducing 
13334         the number of realloc() calls.
13335         https://bugs.webkit.org/show_bug.cgi?id=46664
13336
13337         * runtime/JSArray.cpp:
13338         (JSC::JSArray::JSArray):
13339
13340 2010-09-27  Gavin Barraclough  <barraclough@apple.com>
13341
13342         Reviewed by Darin Adler.
13343
13344         Bug 46680 - Inlining string concatenation can regress interpreter performance
13345         <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
13346         Do not inline calls to string concatenation in the interpret loop.
13347
13348         * interpreter/Interpreter.cpp:
13349         (JSC::concatenateStrings):
13350         (JSC::Interpreter::privateExecute):
13351
13352 2010-09-27  Anders Carlsson  <andersca@apple.com>
13353
13354         Fix thinko.
13355
13356         * runtime/JSCell.h:
13357
13358 2010-09-27  Anders Carlsson  <andersca@apple.com>
13359
13360         Reviewed by Adam Roben.
13361
13362         Try to fix Windows build.
13363
13364         * runtime/JSCell.h:
13365         (JSC::MSVCBugWorkaround::MSVCBugWorkaround):
13366         (JSC::MSVCBugWorkaround::~MSVCBugWorkaround):
13367
13368 2010-09-27  Erik Arvidsson  <arv@chromium.org>
13369
13370         Reviewed by Darin Adler.
13371
13372         Add operator == for AtomicString and Vector<Uchar>
13373         https://bugs.webkit.org/show_bug.cgi?id=46509
13374
13375         * JavaScriptCore.exp:
13376         * wtf/text/AtomicString.cpp:
13377         (WTF::operator==):
13378         * wtf/text/AtomicString.h:
13379         (WTF::operator==):
13380         (WTF::operator!=):
13381
13382 2010-09-27  Anders Carlsson  <andersca@apple.com>
13383
13384         Try to fix the Windows build.
13385
13386         * wtf/Noncopyable.h:
13387
13388 2010-09-26  Anders Carlsson  <andersca@apple.com>
13389
13390         Reviewed by Alexey Proskuryakov and Adam Barth.
13391
13392         Add WTF_MAKE_NONCOPYABLE macro
13393         https://bugs.webkit.org/show_bug.cgi?id=46589
13394
13395         Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The
13396         reason for this is that the Itanium C++ ABI states that no empty classes of the same type
13397         can be laid out at the same offset in the class. This can result in objects getting larger
13398         which leads to memory regressions. (One example of this is the String class which grew by
13399         sizeof(void*) when both its base class and its first member variable inherited indirectly
13400         from FastAllocBase).
13401
13402         * wtf/Noncopyable.h:
13403         Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated.
13404         
13405         * runtime/JSCell.h:
13406         * wtf/RefCounted.h:
13407         Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE.
13408
13409 2010-09-27  Philippe Normand  <pnormand@igalia.com>
13410
13411         Reviewed by Martin Robinson.
13412
13413         [GTK] use ENABLE(GLIB_SUPPORT)
13414         https://bugs.webkit.org/show_bug.cgi?id=46630
13415
13416         * wtf/Platform.h: Include GTypedefs.h only if glib support
13417         is explicitly enabled.
13418
13419 2010-09-25  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
13420
13421         Reviewed by Adam Barth.
13422
13423         jsc: Document the strcat opcode.
13424         https://bugs.webkit.org/show_bug.cgi?id=46571
13425
13426         * interpreter/Interpreter.cpp:
13427         (JSC::Interpreter::privateExecute):
13428
13429 2010-09-21  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
13430
13431         Reviewed by Adam Barth.
13432
13433         make-bytecode-docs.pl: Add a comment to the generated HTML
13434         https://bugs.webkit.org/show_bug.cgi?id=46570
13435
13436         Generate an HTML Comment that this file was generated from
13437         Interpreter.cpp with the make-bytecode-docs.pl script.
13438
13439         * docs/make-bytecode-docs.pl:
13440
13441 2010-09-27  Patrick Gansterer  <paroga@webkit.org>
13442
13443         Reviewed by Adam Barth.
13444
13445         Remove WTF::stringHash functions
13446         https://bugs.webkit.org/show_bug.cgi?id=46520
13447
13448         Since r68289 the stringHash functions are only wrappers around StringHasher::createHash.
13449         So use StringHasher::createHash directly and remove stringHash.
13450
13451         * wtf/StringHashFunctions.h:
13452         * wtf/text/StringImpl.h:
13453         (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly.
13454
13455 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
13456
13457         Reviewed by Adam Barth.
13458
13459         Add WTF::StringHasher::createBlobHash
13460         https://bugs.webkit.org/show_bug.cgi?id=46514
13461
13462         Add this function for hashing FormElementKey and QualifiedNameComponents.
13463
13464         * wtf/StringHashFunctions.h:
13465         (WTF::StringHasher::createBlobHash):
13466
13467 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
13468
13469         Reviewed by Adam Barth.
13470
13471         REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
13472         running websocket/tests/bad-sub-protocol-non-ascii.html
13473         https://bugs.webkit.org/show_bug.cgi?id=46553
13474
13475         Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
13476         Add an additional member variable to indicate if we have an pending character
13477         instead of only using an invalid character for this purpose.
13478
13479         * wtf/StringHashFunctions.h:
13480         (WTF::StringHasher::StringHasher):
13481         (WTF::StringHasher::addCharacters):
13482         (WTF::StringHasher::addCharacter):
13483         (WTF::StringHasher::hash):
13484
13485 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
13486
13487         Reviewed by Oliver Hunt.
13488
13489         valueOf called in wrong order in atan2 and date constructors.
13490         https://bugs.webkit.org/show_bug.cgi?id=26978
13491
13492         Fixed the bug where the arguments to atan2 were being evaluated 
13493         out of order.
13494
13495         * runtime/MathObject.cpp:
13496         (JSC::mathProtoFuncATan2):
13497
13498 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
13499
13500         Reviewed by Oliver Hunt.
13501
13502         valueOf called in wrong order in atan2 and date constructors.
13503         https://bugs.webkit.org/show_bug.cgi?id=26978
13504
13505         Fixed the issue where the parameters to the Date constructor
13506         were being evaluated to numbers more than once.
13507
13508         * runtime/DateConstructor.cpp:
13509         (JSC::constructDate):
13510         (JSC::dateUTC):
13511
13512 2010-09-25  Oliver Hunt  <oliver@apple.com>
13513
13514         Fix various builds
13515
13516         Relearning the lesson that last minute changes are bad.
13517
13518         * bytecode/CodeBlock.cpp:
13519         (JSC::CodeBlock::dump):
13520         * bytecompiler/BytecodeGenerator.cpp:
13521         (JSC::BytecodeGenerator::emitGetArgumentsLength):
13522         * jit/JITOpcodes.cpp:
13523         (JSC::JIT::emitSlow_op_get_argument_by_val):
13524
13525 2010-09-25  Oliver Hunt  <oliver@apple.com>
13526
13527         Reviewed by Cameron Zwarich.
13528
13529         Avoid constructing arguments object when accessing length and index properties
13530         https://bugs.webkit.org/show_bug.cgi?id=46572
13531
13532         Add opcodes to read argument length and properties, and then implement them.
13533         Much like other lazy opcodes these opcodes take a fast path when the arguments
13534         object has not been instantiated, and fall back on generic access mechanisms
13535         if they are acting on an instantiated object.
13536
13537         3% win on v8-earleyboyer, no change elsewhere.
13538
13539         * bytecode/CodeBlock.cpp:
13540         (JSC::CodeBlock::dump):
13541         * bytecode/Opcode.h:
13542         * bytecompiler/BytecodeGenerator.cpp:
13543         (JSC::BytecodeGenerator::emitGetArgumentsLength):
13544         (JSC::BytecodeGenerator::emitGetArgumentByVal):
13545         * bytecompiler/BytecodeGenerator.h:
13546         * bytecompiler/NodesCodegen.cpp:
13547         (JSC::BracketAccessorNode::emitBytecode):
13548         (JSC::DotAccessorNode::emitBytecode):
13549         * interpreter/Interpreter.cpp:
13550         (JSC::Interpreter::privateExecute):
13551         * jit/JIT.cpp:
13552         (JSC::JIT::privateCompileMainPass):
13553         (JSC::JIT::privateCompileSlowCases):
13554         * jit/JIT.h:
13555         * jit/JITOpcodes.cpp:
13556         (JSC::JIT::emit_op_get_arguments_length):
13557         (JSC::JIT::emitSlow_op_get_arguments_length):
13558         (JSC::JIT::emit_op_get_argument_by_val):
13559         (JSC::JIT::emitSlow_op_get_argument_by_val):
13560         * jit/JITOpcodes32_64.cpp:
13561         (JSC::JIT::emit_op_get_arguments_length):
13562         (JSC::JIT::emitSlow_op_get_arguments_length):
13563         (JSC::JIT::emit_op_get_argument_by_val):
13564         (JSC::JIT::emitSlow_op_get_argument_by_val):
13565
13566 2010-09-25  Patrick Gansterer  <paroga@webkit.org>
13567
13568         Unreviewed.
13569
13570         Fix typo in StringHasher class
13571         https://bugs.webkit.org/show_bug.cgi?id=45970
13572
13573         * wtf/StringHashFunctions.h:
13574         (WTF::StringHasher::createHash):
13575
13576 2010-09-24  Patrick Gansterer  <paroga@paroga.com>
13577
13578         Reviewed by Gavin Barraclough.
13579
13580         Add WTF::StringHasher
13581         https://bugs.webkit.org/show_bug.cgi?id=45970
13582
13583         StringHasher is a class for calculation stringHash out of character string.
13584         This class will unify the different usages of the same algorithm.
13585
13586         * wtf/StringHashFunctions.h:
13587         (WTF::StringHasher::StringHasher):
13588         (WTF::StringHasher::addCharacters):
13589         (WTF::StringHasher::addCharacter):
13590         (WTF::StringHasher::hash):
13591         (WTF::StringHasher::createHash):
13592         (WTF::StringHasher::defaultCoverter):
13593         (WTF::StringHasher::addCharactersToHash):
13594         (WTF::stringHash):
13595
13596 2010-09-24  Oliver Hunt  <oliver@apple.com>
13597
13598         Reviewed by Geoffrey Garen.
13599
13600         Variable declarations inside a catch scope don't get propogated to the parent scope
13601         https://bugs.webkit.org/show_bug.cgi?id=46501
13602
13603         Add logic to make variable declaration look for a scope for the
13604         new variable.  This allows us to create a scope (eg. for catch)
13605         and then seal it, so that additional variable declarations
13606         contained are propogated to the correct target.  Strangely this
13607         comes out as a performance win, but I think it's mostly cache
13608         effects.
13609
13610         * parser/JSParser.cpp:
13611         (JSC::JSParser::Scope::Scope):
13612         (JSC::JSParser::Scope::preventNewDecls):
13613         (JSC::JSParser::Scope::allowsNewDecls):
13614         (JSC::JSParser::declareVariable):
13615         (JSC::JSParser::parseVarDeclarationList):
13616         (JSC::JSParser::parseConstDeclarationList):
13617         (JSC::JSParser::parseTryStatement):
13618         (JSC::JSParser::parseFormalParameters):
13619         (JSC::JSParser::parseFunctionDeclaration):
13620
13621 2010-09-24  Ä°smail Dönmez  <ismail@namtrac.org>
13622
13623        Reviewed by Csaba Osztrogonác.
13624
13625        Add a Windows compatible inttypes.h header to fix WinCE build.
13626        https://bugs.webkit.org/show_bug.cgi?id=46463
13627
13628        * os-win32/inttypes.h: Added.
13629
13630 2010-09-24  Oliver Hunt  <oliver@apple.com>
13631
13632         Reviewed by Gavin Barraclough.
13633
13634         REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit).
13635         https://bugs.webkit.org/show_bug.cgi?id=46448
13636
13637         Roll this back in, with additional logic to prevent us from delaying construction
13638         of functions named "arguments"
13639
13640         * bytecode/CodeBlock.cpp:
13641         (JSC::CodeBlock::dump):
13642         * bytecode/Opcode.h:
13643         * bytecompiler/BytecodeGenerator.cpp:
13644         (JSC::BytecodeGenerator::BytecodeGenerator):
13645         (JSC::BytecodeGenerator::emitInitLazyRegister):
13646         (JSC::BytecodeGenerator::registerFor):
13647         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
13648         (JSC::BytecodeGenerator::constRegisterFor):
13649         (JSC::BytecodeGenerator::emitNewFunction):
13650         (JSC::BytecodeGenerator::emitLazyNewFunction):
13651         (JSC::BytecodeGenerator::emitNewFunctionInternal):
13652         * bytecompiler/BytecodeGenerator.h:
13653         * interpreter/Interpreter.cpp:
13654         (JSC::Interpreter::privateExecute):
13655         * jit/JIT.cpp:
13656         (JSC::JIT::privateCompileMainPass):
13657         * jit/JIT.h:
13658         * jit/JITOpcodes.cpp:
13659         (JSC::JIT::emit_op_init_lazy_reg):
13660         (JSC::JIT::emit_op_new_func):
13661         * jit/JITOpcodes32_64.cpp:
13662         (JSC::JIT::emit_op_init_lazy_reg):
13663         * parser/Nodes.h:
13664         (JSC::ScopeNode::needsActivationForMoreThanVariables):
13665
13666 2010-09-23  Sheriff Bot  <webkit.review.bot@gmail.com>
13667
13668         Unreviewed, rolling out r68223.
13669         http://trac.webkit.org/changeset/68223
13670         https://bugs.webkit.org/show_bug.cgi?id=46448
13671
13672         It broke 2-3 tests on bots (Requested by Ossy on #webkit).
13673
13674         * bytecode/CodeBlock.cpp:
13675         (JSC::CodeBlock::dump):
13676         * bytecode/Opcode.h:
13677         * bytecompiler/BytecodeGenerator.cpp:
13678         (JSC::BytecodeGenerator::BytecodeGenerator):
13679         (JSC::BytecodeGenerator::registerFor):
13680         (JSC::BytecodeGenerator::constRegisterFor):
13681         (JSC::BytecodeGenerator::emitNewFunction):
13682         * bytecompiler/BytecodeGenerator.h:
13683         * interpreter/Interpreter.cpp:
13684         (JSC::Interpreter::privateExecute):
13685         * jit/JIT.cpp:
13686         (JSC::JIT::privateCompileMainPass):
13687         * jit/JIT.h:
13688         * jit/JITOpcodes.cpp:
13689         (JSC::JIT::emit_op_new_func):
13690         (JSC::JIT::emit_op_init_arguments):
13691         * jit/JITOpcodes32_64.cpp:
13692         (JSC::JIT::emit_op_new_func):
13693         (JSC::JIT::emit_op_init_arguments):
13694         * parser/Nodes.h:
13695
13696 2010-09-23  Oliver Hunt  <oliver@apple.com>
13697
13698         Reviewed by Geoffrey Garen.
13699
13700         Delay construction of functions that aren't captured
13701         https://bugs.webkit.org/show_bug.cgi?id=46433
13702
13703         If a function isn't captured by an activation there's no
13704         way it can be accessed indirectly, so we can delay the
13705         construction until it's used (similar to what we do with
13706         arguments).  We rename the existing op_init_arguments to
13707         op_init_lazy_reg and removed its implicit handling of
13708         the anonymous argument register, and make op_new_function
13709         take a parameter to indicate whether it should null check
13710         the target slot before creating the function object.
13711
13712         * bytecode/CodeBlock.cpp:
13713         (JSC::CodeBlock::dump):
13714         * bytecode/Opcode.h:
13715         * bytecompiler/BytecodeGenerator.cpp:
13716         (JSC::BytecodeGenerator::BytecodeGenerator):
13717         (JSC::BytecodeGenerator::emitInitLazyRegister):
13718         (JSC::BytecodeGenerator::registerFor):
13719         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
13720         (JSC::BytecodeGenerator::constRegisterFor):
13721         (JSC::BytecodeGenerator::emitNewFunction):
13722         (JSC::BytecodeGenerator::emitLazyNewFunction):
13723         (JSC::BytecodeGenerator::emitNewFunctionInternal):
13724         * bytecompiler/BytecodeGenerator.h:
13725         * interpreter/Interpreter.cpp:
13726         (JSC::Interpreter::privateExecute):
13727         * jit/JIT.cpp:
13728         (JSC::JIT::privateCompileMainPass):
13729         * jit/JIT.h:
13730         * jit/JITOpcodes.cpp:
13731         (JSC::JIT::emit_op_init_lazy_reg):
13732         (JSC::JIT::emit_op_new_func):
13733         * jit/JITOpcodes32_64.cpp:
13734         (JSC::JIT::emit_op_init_lazy_reg):
13735         * parser/Nodes.h:
13736         (JSC::ScopeNode::needsActivationForMoreThanVariables):
13737
13738 2010-09-23  David Kilzer  <ddkilzer@apple.com>
13739
13740         <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2
13741         https://bugs.webkit.org/show_bug.cgi?id=46423
13742
13743         Reviewed by Oliver Hunt.
13744
13745         * interpreter/Interpreter.cpp:
13746         (JSC::Interpreter::privateExecute): Disable the gcc computed
13747         goto hacks added in r55564 when compiling with llvm-gcc-4.2.
13748
13749 2010-09-23  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
13750
13751         Reviewed by Darin Adler.
13752
13753         Fix usage of enum as if it was a define
13754         https://bugs.webkit.org/show_bug.cgi?id=46355
13755
13756         pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an
13757         enum.  Hence, it cannot be used by the preprocessor which always
13758         evaluates that condition as true. This was giving a warning when
13759         compiling with gcc and "-Wundef" flag.
13760
13761         The second path, when PTHREAD_MUTEX_DEFAULT is not the same of
13762         PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path
13763         and get rid of that #if.
13764
13765         * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to
13766         set mutex type to PTHREAD_MUTEX_NORMAL.
13767         (WTF::Mutex::Mutex):
13768
13769 2010-09-23  Michael Saboff  <msaboff@apple.com>
13770
13771         Reviewed by Geoffrey Garen.
13772
13773         Removed extraneous truncation of ovector on entry and error exit.
13774         Changed the initialization to -1 of vector to only initialize
13775         the start indecies, which is sufficient for the pattern/subpatterns.
13776         Changed the JIT code to not clear the end index for subpatterns
13777         as it isn't needed.  These changes are worth ~2.7% on v8-regexp.
13778         https://bugs.webkit.org/show_bug.cgi?id=46404
13779
13780         * runtime/RegExp.cpp:
13781         (JSC::RegExp::match):
13782         * yarr/RegexJIT.cpp:
13783         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
13784
13785 2010-09-22  Oliver Hunt  <oliver@apple.com>
13786
13787         Reviewed by Geoff Garen.
13788
13789         Only copy captured variables into activation
13790         https://bugs.webkit.org/show_bug.cgi?id=46330
13791
13792         We now track free variable information which means that
13793         we no longer need to copy every variable defined in a
13794         function.  With this patch activations only retain those
13795         variables needed for correctness.  In order to interact
13796         safely with the inspector this means that JSActivation
13797         now provides its own lookup functions so it can avoid 
13798         trying to read or write to variables that have been
13799         optimised out.
13800
13801         * bytecode/CodeBlock.h:
13802         * bytecompiler/BytecodeGenerator.cpp:
13803         (JSC::BytecodeGenerator::BytecodeGenerator):
13804         * parser/Nodes.h:
13805         (JSC::ScopeNode::capturedVariableCount):
13806         (JSC::ScopeNode::captures):
13807         * runtime/Arguments.h:
13808         (JSC::JSActivation::copyRegisters):
13809         * runtime/Executable.cpp:
13810         (JSC::FunctionExecutable::FunctionExecutable):
13811         (JSC::FunctionExecutable::compileForCallInternal):
13812         (JSC::FunctionExecutable::compileForConstructInternal):
13813         * runtime/Executable.h:
13814         (JSC::FunctionExecutable::capturedVariableCount):
13815         * runtime/JSActivation.cpp:
13816         (JSC::JSActivation::markChildren):
13817         (JSC::JSActivation::symbolTableGet):
13818         (JSC::JSActivation::symbolTablePut):
13819         (JSC::JSActivation::getOwnPropertyNames):
13820         (JSC::JSActivation::symbolTablePutWithAttributes):
13821         * runtime/JSActivation.h:
13822
13823 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
13824
13825         Reviewed by Andreas Kling.
13826
13827         Fix jsc.exe build for Windows CE
13828
13829         * jsc.pro: Add mmtimer.lib for Windows CE.
13830
13831 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
13832
13833         Unreviewed.
13834
13835         JIT should be disabled on Windows CE. Broken in r64176.
13836
13837         * wtf/Platform.h:
13838
13839 2010-09-23  Peter Varga  <pvarga@inf.u-szeged.hu>
13840
13841         Reviewed by Gavin Barraclough.
13842
13843         Reduce the number of BOL checks in YARR Interpreter
13844         https://bugs.webkit.org/show_bug.cgi?id=46260
13845
13846         Extend the YARR Interpreter with an optimization which reduces the number of
13847         BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a
13848         "TypeAssertionBOL" byteTerm it will be checked just one time.
13849
13850         * yarr/RegexInterpreter.cpp:
13851         (JSC::Yarr::Interpreter::matchDisjunction):
13852         (JSC::Yarr::ByteCompiler::compile):
13853         (JSC::Yarr::ByteCompiler::regexBegin):
13854         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
13855         (JSC::Yarr::ByteCompiler::emitDisjunction):
13856         * yarr/RegexInterpreter.h:
13857         (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
13858         (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
13859         (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
13860         (JSC::Yarr::ByteTerm::AlternativeBegin):
13861         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
13862         (JSC::Yarr::ByteTerm::AlternativeEnd):
13863
13864 2010-09-22  Michael Saboff  <msaboff@apple.com>
13865
13866         Reviewed by Gavin Barraclough.
13867
13868         Fixed the cross over from alternatives executed once and
13869         those that loop.  This fixed the problem where the index
13870         was getting messed up for looping alternatives causing an
13871         infinite loop.
13872         https://bugs.webkit.org/show_bug.cgi?id=46189
13873
13874         * yarr/RegexJIT.cpp:
13875         (JSC::Yarr::RegexGenerator::generateDisjunction):
13876
13877 2010-09-22  Steve Falkenburg  <sfalken@apple.com>
13878
13879         Rubber stamped by Jon Honeycutt.
13880
13881         Allow jsc.exe to be run against unversioned ICU.
13882
13883         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
13884
13885 2010-09-22  Kwang Yul Seo  <skyul@company100.net>
13886
13887         Reviewed by Laszlo Gombos.
13888
13889         Use "typedef wchar_t JSChar" when compiled with RVCT
13890         https://bugs.webkit.org/show_bug.cgi?id=40651
13891
13892         Use wchar_t for JSChar and UChar when compiled with RVCT.
13893         Linux is the exception for this rule.
13894
13895         * API/JSStringRef.h:
13896         * wtf/unicode/qt4/UnicodeQt4.h:
13897
13898 2010-09-22  Oliver Hunt  <oliver@apple.com>
13899
13900         Reviewed by Gavin Barraclough.
13901
13902         [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown
13903         https://bugs.webkit.org/show_bug.cgi?id=44245
13904
13905         Remove incorrect code from op_load_varargs in the interpreter.
13906
13907         * interpreter/Interpreter.cpp:
13908         (JSC::Interpreter::privateExecute):
13909
13910 2010-09-22  Oliver Hunt  <oliver@apple.com>
13911
13912         Reviewed by Gavin Barraclough.
13913
13914         [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails
13915         https://bugs.webkit.org/show_bug.cgi?id=44246
13916
13917         JIT code generated for instanceof was not checking to ensure that the prototype property was
13918         an object, this patch ensures that it does.
13919
13920         * jit/JITOpcodes.cpp:
13921         (JSC::JIT::emit_op_instanceof):
13922         (JSC::JIT::emitSlow_op_instanceof):
13923         * jit/JITOpcodes32_64.cpp:
13924         (JSC::JIT::emit_op_instanceof):
13925         (JSC::JIT::emitSlow_op_instanceof):
13926
13927 2010-09-22  Patrick Gansterer  <paroga@webkit.org>
13928
13929         Reviewed by Darin Adler.
13930
13931         Inline UTF8SequenceLength
13932         https://bugs.webkit.org/show_bug.cgi?id=45589
13933
13934         * wtf/unicode/UTF8.cpp:
13935         (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance.
13936
13937 2010-09-21  Oliver Hunt  <oliver@apple.com>
13938
13939         RS=Gavin Barraclough.
13940
13941         Fix codeblock dumping
13942
13943         * bytecode/CodeBlock.cpp:
13944         (JSC::CodeBlock::dump):
13945         * runtime/Executable.h:
13946         (JSC::ScriptExecutable::ScriptExecutable):
13947
13948 2010-09-21  Oliver Hunt  <oliver@apple.com>
13949
13950         Reviewed by Geoffrey Garen.
13951
13952         Speed up function.apply(..., arguments)
13953         https://bugs.webkit.org/show_bug.cgi?id=46207
13954
13955         Add code to do argument copying inline in the case
13956         where we're using Function.apply to forward our arguments
13957         directly.
13958
13959         * jit/JIT.cpp:
13960         (JSC::JIT::privateCompileSlowCases):
13961            Splitted op_load_varargs into fast and slow paths, so add the call
13962            to the slow path generator.
13963         * jit/JIT.h:
13964         * jit/JITCall32_64.cpp:
13965           Remove 32bit specific emit_op_load_varargs as the logic is the
13966           same for all value representations
13967         * jit/JITOpcodes.cpp:
13968         (JSC::JIT::emit_op_load_varargs):
13969           Copy arguments inline
13970         (JSC::JIT::emitSlow_op_load_varargs):
13971
13972 2010-09-21  Geoffrey Garen  <ggaren@apple.com>
13973
13974         Reviewed by Oliver Hunt.
13975
13976         <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in
13977         interpreter due to 54724 and 54596
13978         
13979         Fixed a typo (using "UNLIKELY" instead of "LIKELY").
13980         
13981         * wtf/PassRefPtr.h:
13982         (WTF::refIfNotNull):
13983         (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs
13984         hold real data. Also, in cases where they do not hold real data, the
13985         compiler usually sees a call to release() right before the call to the
13986         destructor, so it can probably optimize out the test completely.
13987
13988 2010-09-21  Fridrich Strba  <fridrich.strba@bluewin.ch>
13989
13990         Reviewed by Martin Robinson.
13991
13992         Build issues with Windows versions of the GTK+ port
13993         https://bugs.webkit.org/show_bug.cgi?id=45844
13994
13995         Link with winmm.dll when necessary and specify the executable extension
13996         explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@
13997         rule actually works.
13998
13999         Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses
14000         a section in ThreadSpecific.cpp
14001
14002         * GNUmakefile.am:
14003
14004 2010-09-21  Martin Robinson  <mrobinson@igalia.com>
14005
14006         Reviewed by Xan Lopez.
14007
14008         [GTK] 'make dist' should be fixed in preparation for the next release
14009         https://bugs.webkit.org/show_bug.cgi?id=46129
14010
14011         * GNUmakefile.am: Update the sources list to include missing headers.
14012
14013 2010-09-21  Dave Tapuska  <dtapuska@rim.com>
14014
14015         Reviewed by Csaba Osztrogonác.
14016
14017         https://bugs.webkit.org/show_bug.cgi?id=45673
14018
14019         r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be
14020         8 byte aligned. A non 8 byte divisible value for this will
14021         cause the sp to become non 8 byte aligned.
14022
14023         Verify and correct offset values that r65596 effected that
14024         weren't updated.
14025
14026         * jit/JITStubs.cpp:
14027         * jit/JITStubs.h:
14028
14029 2010-09-21  Xan Lopez  <xlopez@igalia.com>
14030
14031         Reviewed by Martin Robinson.
14032
14033         Fix Opcode stats compilation
14034         https://bugs.webkit.org/show_bug.cgi?id=46079
14035
14036         The FixedArray API had changed, and <stdio.h> was not included for
14037         printf.
14038
14039         * bytecode/Opcode.cpp:
14040         (JSC::OpcodeStats::~OpcodeStats):
14041
14042 2010-09-20  Michael Saboff  <msaboff@apple.com>
14043
14044         Reviewed by Gavin Barraclough.
14045
14046         Fixed detection of alternative smaller than the first alternative
14047         to only check looping alternatives.
14048         https://bugs.webkit.org/show_bug.cgi?id=46049
14049
14050         * yarr/RegexJIT.cpp:
14051         (JSC::Yarr::RegexGenerator::generateDisjunction):
14052
14053 2010-09-20  Peter Varga  <pvarga@inf.u-szeged.hu>
14054
14055         Reviewed by Geoffrey Garen.
14056
14057         REGRESSION(67790): jsc tests are failed with YARR interpreter
14058         https://bugs.webkit.org/show_bug.cgi?id=46083
14059
14060         Fix the initializing of the lastSubpatternId member of
14061         parentheses.
14062
14063         * yarr/RegexCompiler.cpp:
14064         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
14065
14066 2010-09-20  Gavin Barraclough  <barraclough@apple.com>
14067
14068         Reviewed by Oliver Hunt.
14069
14070         Bug 46077 - ASSERT failure in YARR JIT
14071
14072         We will currently attempt to loop if there are multiple alternatives, they are all
14073         BOL predicated, and the last alternative is longer then the first - however if all
14074         alternatives are BOL predicated the head of loop label will not have been set, and
14075         we'll try to link a jump to an undefined label. Stop doing so.
14076
14077         * yarr/RegexJIT.cpp:
14078         (JSC::Yarr::RegexGenerator::generateDisjunction):
14079
14080 2010-09-20  Adam Roben  <aroben@apple.com>
14081
14082         Export RegExpObject::info from JavaScriptCore
14083
14084         This allows obj->inherits(&RegExpObject::info) to work correctly from
14085         outside JavaScriptCore.dll on Windows.
14086
14087         Fixes <http://webkit.org/b/46098>
14088         fast/loader/stateobjects/pushstate-object-types.html fails on Windows
14089
14090         Reviewed by John Sullivan.
14091
14092         * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as
14093         we already have for some other classes whose info members have to be
14094         used from outside the DLL.
14095
14096 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
14097
14098         Windows build fix pt 2.
14099
14100         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14101
14102 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
14103
14104         Windows build fix pt 1.
14105
14106         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14107
14108 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
14109
14110         Build fix - implicit double-to-int conversion invalid on 32-bit.
14111
14112         * runtime/DatePrototype.cpp:
14113         (JSC::fillStructuresUsingDateArgs):
14114         (JSC::dateProtoFuncSetYear):
14115
14116 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
14117
14118         Reviewed by Oliver Hunt.
14119
14120         Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod.
14121
14122         These methods implement the same conversion (see discussion in the notes
14123         of sections of 9.5 and 9.6 of the spec), only differing in how the result
14124         is interpretted.
14125
14126         Date prototype is incorrectly using toInt32, and this is causing us to
14127         provide an output value indicating whether the input to ToInt32 was finite
14128         (the corresponding methods on Date are actually spec'ed to use ToInteger,
14129         not ToInt32).  This patch partially fixes this in order to remove this
14130         bogus output value, hoewever more work will be require to bring Date
14131         fully up to spec compliance (the constructor is still performing ToInt32
14132         conversions).
14133
14134         * JavaScriptCore.exp:
14135         * runtime/DatePrototype.cpp:
14136         (JSC::fillStructuresUsingTimeArgs):
14137         (JSC::fillStructuresUsingDateArgs):
14138         (JSC::dateProtoFuncSetYear):
14139         * runtime/JSValue.cpp:
14140         (JSC::toInt32):
14141         * runtime/JSValue.h:
14142         (JSC::toUInt32):
14143         (JSC::JSValue::toInt32):
14144         (JSC::JSValue::toUInt32):
14145
14146 2010-09-18  Darin Adler  <darin@apple.com>
14147
14148         First step in fixing Windows build.
14149
14150         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14151         Removed incorrect symbol. The build will probably still fail,
14152         but the failure will tell us what symbol to add.
14153
14154 2010-09-18  Michael Saboff  <msaboff@apple.com>
14155
14156         Reviewed by Gavin Barraclough.
14157
14158         Added code to unroll regular expressions containing ^.
14159         Alternatives that begin with ^ are tagged during parsing
14160         and rolled up in containing sub expression structs.
14161         After parsing, a regular expression flagged as containing
14162         a ^ (a.k.a. BOL) is processed further in optimizeBOL().
14163         A copy of the disjunction is made excluding alternatives that
14164         are rooted with BOL.  The original alternatives are flagged
14165         to only be executed once.  The copy of the other alternatives are
14166         added to the original expression.
14167         In the case that all original alternatives are flagged, there
14168         won't be any looping alternatives.
14169         The JIT generator will emit code accordingly, executing the
14170         original alternatives once and then looping over the
14171         alternatives that aren't anchored with a BOL (if any).
14172         https://bugs.webkit.org/show_bug.cgi?id=45787
14173
14174         * yarr/RegexCompiler.cpp:
14175         (JSC::Yarr::RegexPatternConstructor::assertionBOL):
14176         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
14177         (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
14178         (JSC::Yarr::RegexPatternConstructor::copyTerm):
14179         (JSC::Yarr::RegexPatternConstructor::optimizeBOL):
14180         (JSC::Yarr::compileRegex):
14181         * yarr/RegexJIT.cpp:
14182         (JSC::Yarr::RegexGenerator::generateDisjunction):
14183         * yarr/RegexPattern.h:
14184         (JSC::Yarr::PatternAlternative::PatternAlternative):
14185         (JSC::Yarr::PatternAlternative::setOnceThrough):
14186         (JSC::Yarr::PatternAlternative::onceThrough):
14187         (JSC::Yarr::PatternDisjunction::PatternDisjunction):
14188         (JSC::Yarr::RegexPattern::RegexPattern):
14189         (JSC::Yarr::RegexPattern::reset):
14190
14191 2010-09-18  Patrick Gansterer  <paroga@paroga.com>
14192
14193         Reviewed by Darin Adler.
14194
14195         Rename Wince files to WinCE
14196         https://bugs.webkit.org/show_bug.cgi?id=37287
14197
14198         * wtf/unicode/Unicode.h:
14199         * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp.
14200         * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h.
14201         * wtf/unicode/wince/UnicodeWince.cpp: Removed.
14202         * wtf/unicode/wince/UnicodeWince.h: Removed.
14203         * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h.
14204         * wtf/wince/FastMallocWince.h: Removed.
14205
14206 2010-09-18  Ademar de Souza Reis Jr  <ademar.reis@openbossa.org>
14207
14208         Reviewed by Kenneth Rohde Christiansen.
14209
14210         Enable Platform Strategies on Qt
14211
14212         [Qt] Turn on PLATFORM_STRATEGIES
14213         https://bugs.webkit.org/show_bug.cgi?id=45831
14214
14215         * wtf/Platform.h: Enable Platform Strategies when building QtWebkit
14216
14217 2010-09-17  Oliver Hunt  <oliver@apple.com>
14218
14219         Reviewed by Gavin Barraclough.
14220
14221         Imprecise tracking of variable capture leads to overly pessimistic creation of activations
14222         https://bugs.webkit.org/show_bug.cgi?id=46020
14223
14224         The old logic for track free and captured variables would cause us
14225         to decide we needed an activation in every function along the scope
14226         chain between a variable capture and its declaration.  We now track
14227         captured variables precisely which requires a bit of additional work
14228
14229         The most substantial change is that the parsing routine needs to
14230         be passed the list of function parameters when reparsing a function
14231         as when reparsing we don't parse the function declaration itself only
14232         its body.
14233
14234         * JavaScriptCore.exp:
14235         * parser/JSParser.cpp:
14236         (JSC::JSParser::Scope::Scope):
14237         (JSC::JSParser::Scope::needsFullActivation):
14238            We need to distinguish between use of a feature that requires
14239            an activation and eval so we now get this additional flag.
14240         (JSC::JSParser::Scope::collectFreeVariables):
14241         (JSC::JSParser::Scope::getCapturedVariables):
14242            We can't simply return the list of "capturedVariables" now as
14243            is insufficiently precise, so we compute them instead.
14244         (JSC::JSParser::popScope):
14245         (JSC::jsParse):
14246         (JSC::JSParser::JSParser):
14247         (JSC::JSParser::parseProgram):
14248         (JSC::JSParser::parseWithStatement):
14249         (JSC::JSParser::parseTryStatement):
14250         (JSC::JSParser::parseFunctionInfo):
14251         (JSC::JSParser::parseFunctionDeclaration):
14252         (JSC::JSParser::parseProperty):
14253         (JSC::JSParser::parseMemberExpression):
14254         * parser/JSParser.h:
14255         * parser/Parser.cpp:
14256         (JSC::Parser::parse):
14257         * parser/Parser.h:
14258         (JSC::Parser::parse):
14259         * runtime/Executable.cpp:
14260         (JSC::EvalExecutable::compileInternal):
14261         (JSC::ProgramExecutable::checkSyntax):
14262         (JSC::ProgramExecutable::compileInternal):
14263         (JSC::FunctionExecutable::compileForCallInternal):
14264         (JSC::FunctionExecutable::compileForConstructInternal):
14265         (JSC::FunctionExecutable::reparseExceptionInfo):
14266         (JSC::EvalExecutable::reparseExceptionInfo):
14267         (JSC::FunctionExecutable::fromGlobalCode):
14268            Pass function parameters (if available) to the parser.
14269
14270 2010-09-17  Anders Carlsson  <andersca@apple.com>
14271
14272         Reviewed by Sam Weinig.
14273
14274         Add IsFloatingPoint and IsArithmetic type traits
14275         https://bugs.webkit.org/show_bug.cgi?id=46018
14276
14277         * wtf/TypeTraits.h:
14278         * wtf/TypeTraits.cpp:
14279
14280 2010-09-17  Martin Robinson  <mrobinson@igalia.com>
14281
14282         Reviewed by Oliver Hunt.
14283
14284         [GTK] FontPlatformDataFreeType should use smart pointers to hold its members
14285         https://bugs.webkit.org/show_bug.cgi?id=45917
14286
14287         Added support to PlatformRefPtr for handling HashTableDeletedValue.
14288
14289         * wtf/PlatformRefPtr.h:
14290         (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue.
14291         (WTF::PlatformRefPtr::isHashTableDeletedValue): Added.
14292
14293 2010-09-16  Oliver Hunt  <oliver@apple.com>
14294
14295         Reviewed by Geoffrey Garen.
14296
14297         Crash due to timer triggered GC on one heap while another heap is active
14298         https://bugs.webkit.org/show_bug.cgi?id=45932
14299         <rdar://problem/8318446>
14300
14301         The GC timer may trigger for one heap while another heap is active.  This
14302         is safe, but requires us to ensure that we have temporarily associated the
14303         thread's identifierTable with the heap we're collecting on.  Otherwise we
14304         may end up with the identifier tables in an inconsistent state leading to
14305         an eventual crash.
14306
14307         * runtime/Collector.cpp:
14308         (JSC::Heap::allocate):
14309         (JSC::Heap::reset):
14310         (JSC::Heap::collectAllGarbage):
14311            Add assertions to ensure we have the correct identifierTable active
14312            while collecting.
14313         * runtime/GCActivityCallbackCF.cpp:
14314         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
14315            Temporarily make the expected IdentifierTable active
14316         * wtf/WTFThreadData.h:
14317         (JSC::IdentifierTable::remove):
14318            Make it possible to see when IdentifierTable::remove has succeeded
14319         * wtf/text/StringImpl.cpp:
14320         (WTF::StringImpl::~StringImpl):
14321            CRASH if an StringImpl is an Identifier but isn't present in the
14322            active IdentifierTable.  If we get to this state something has
14323            gone wrong and we should just crash immediately.
14324
14325 2010-09-16  Martin Robinson  <mrobinson@igalia.com>
14326
14327         Reviewed by Xan Lopez.
14328
14329         [GTK] Implement dissolveDragImageToFraction
14330         https://bugs.webkit.org/show_bug.cgi?id=45826
14331
14332         * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose.
14333
14334 2010-09-16  Eric Uhrhane  <ericu@chromium.org>
14335
14336         Reviewed by Jian Li.
14337
14338         Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
14339         https://bugs.webkit.org/show_bug.cgi?id=45798
14340
14341         * Configurations/FeatureDefines.xcconfig:
14342
14343 2010-09-15  Oliver Hunt  <oliver@apple.com>
14344
14345         Reviewed by Geoffrey Garen.
14346
14347         Use free variable analysis to improve activation performance
14348         https://bugs.webkit.org/show_bug.cgi?id=45837
14349
14350         Adds free and captured variable tracking to the JS parser.  This
14351         allows us to avoid construction of an activation object in some
14352         cases.  Future patches will make more use of this information to
14353         improve those cases where activations are still needed.
14354
14355         * parser/ASTBuilder.h:
14356         * parser/JSParser.cpp:
14357         (JSC::JSParser::Scope::Scope):
14358         (JSC::JSParser::Scope::declareVariable):
14359         (JSC::JSParser::Scope::useVariable):
14360         (JSC::JSParser::Scope::collectFreeVariables):
14361         (JSC::JSParser::Scope::capturedVariables):
14362         (JSC::JSParser::ScopeRef::ScopeRef):
14363         (JSC::JSParser::ScopeRef::operator->):
14364         (JSC::JSParser::ScopeRef::index):
14365         (JSC::JSParser::currentScope):
14366         (JSC::JSParser::pushScope):
14367         (JSC::JSParser::popScope):
14368         (JSC::JSParser::parseProgram):
14369         (JSC::JSParser::parseVarDeclarationList):
14370         (JSC::JSParser::parseConstDeclarationList):
14371         (JSC::JSParser::parseTryStatement):
14372         (JSC::JSParser::parseFormalParameters):
14373         (JSC::JSParser::parseFunctionInfo):
14374         (JSC::JSParser::parseFunctionDeclaration):
14375         (JSC::JSParser::parsePrimaryExpression):
14376         * parser/Nodes.cpp:
14377         (JSC::ScopeNodeData::ScopeNodeData):
14378         (JSC::ScopeNode::ScopeNode):
14379         (JSC::ProgramNode::ProgramNode):
14380         (JSC::ProgramNode::create):
14381         (JSC::EvalNode::EvalNode):
14382         (JSC::EvalNode::create):
14383         (JSC::FunctionBodyNode::FunctionBodyNode):
14384         (JSC::FunctionBodyNode::create):
14385         * parser/Nodes.h:
14386         (JSC::ScopeNode::needsActivation):
14387         (JSC::ScopeNode::hasCapturedVariables):
14388         * parser/Parser.cpp:
14389         (JSC::Parser::didFinishParsing):
14390         * parser/Parser.h:
14391         (JSC::Parser::parse):
14392         * parser/SyntaxChecker.h:
14393         * runtime/Executable.cpp:
14394         (JSC::EvalExecutable::compileInternal):
14395         (JSC::ProgramExecutable::compileInternal):
14396         (JSC::FunctionExecutable::compileForCallInternal):
14397         (JSC::FunctionExecutable::compileForConstructInternal):
14398         * runtime/Executable.h:
14399         (JSC::ScriptExecutable::needsActivation):
14400         (JSC::ScriptExecutable::recordParse):
14401
14402 2010-09-14  Hyung Song  <beergun@company100.net>
14403
14404         Reviewed by Kent Tamura.
14405
14406         [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type.
14407         https://bugs.webkit.org/show_bug.cgi?id=44764
14408
14409         * wtf/OwnPtrCommon.h:
14410         * wtf/brew/OwnPtrBrew.cpp:
14411         (WTF::deleteOwnedPtr):
14412
14413 2010-09-14  Darin Adler  <darin@apple.com>
14414
14415         Reviewed by Geoffrey Garen.
14416
14417         Sort with non-numeric custom sort function fails on array with length but no values
14418         https://bugs.webkit.org/show_bug.cgi?id=45781
14419
14420         * runtime/JSArray.cpp:
14421         (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead
14422         exit for any array without values, even if it has a non-0 length.
14423
14424 2010-09-14  Steve Falkenburg  <sfalken@apple.com>
14425
14426         Windows production build fix.
14427         Roll out r65143.
14428
14429         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
14430
14431 2010-09-14  Kwang Yul Seo  <skyul@company100.net>
14432
14433         Reviewed by Darin Adler.
14434
14435         Share UnicodeMacrosFromICU.h
14436         https://bugs.webkit.org/show_bug.cgi?id=45710
14437
14438         glib, qt4 and wince use the same macros from ICU.
14439         Remove the code duplication and use the same header file.
14440
14441         * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h.
14442         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed.
14443         * wtf/unicode/qt4/UnicodeQt4.h:
14444         * wtf/unicode/wince/UnicodeWince.h:
14445
14446 2010-09-13  Darin Adler  <darin@apple.com>
14447
14448         Reviewed by Adam Barth.
14449
14450         Preparation for eliminating deprecatedParseURL
14451         https://bugs.webkit.org/show_bug.cgi?id=45695
14452
14453         * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from
14454         the HTML tree builder.
14455
14456 2010-09-13  Darin Fisher  <darin@chromium.org>
14457
14458         Reviewed by David Levin.
14459
14460         Add option to conditionally compile smooth scrolling support.
14461         https://bugs.webkit.org/show_bug.cgi?id=45689
14462
14463         ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms.
14464
14465         * wtf/Platform.h:
14466
14467 2010-09-13  Adam Roben  <aroben@apple.com>
14468
14469         Copy JavaScriptCore's generated sources to the right directory
14470
14471         * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo.
14472
14473 2010-09-13  Kwang Yul Seo  <skyul@company100.net>
14474
14475         Reviewed by Kent Tamura.
14476
14477         [BREWMP] Don't call _msize
14478         https://bugs.webkit.org/show_bug.cgi?id=45556
14479
14480         Because Brew MP uses its own memory allocator, it is not correct to use
14481         _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard.
14482
14483         * wtf/FastMalloc.cpp:
14484         (WTF::fastMallocSize):
14485
14486 2010-09-11  Simon Hausmann  <simon.hausmann@nokia.com>
14487
14488         Reviewed by Andreas Kling.
14489
14490         [Qt] V8 port: webcore project files changes
14491         https://bugs.webkit.org/show_bug.cgi?id=45141
14492
14493         * JavaScriptCore.pro: Moved wtf specific files to wtf.pri,
14494         so that they can also be used from WebCore.pro for v8 builds.
14495         * wtf/wtf.pri: Added.
14496
14497 2010-09-10  Fridrich Strba  <fridrich.strba@bluewin.ch>
14498
14499         Reviewed by Andreas Kling.
14500
14501         Add a define missing when building with glib unicode backend
14502         https://bugs.webkit.org/show_bug.cgi?id=45544
14503
14504         * wtf/unicode/glib/UnicodeMacrosFromICU.h:
14505
14506 2010-09-10  Stephanie Lewis  <slewis@apple.com>
14507
14508         Reviewed by Alexey Proskuryakov.
14509         
14510         Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know 
14511         about the JIT and other implementation details of JavaScriptCore.  Necessary 
14512         to fix PPC build.
14513         
14514         https://bugs.webkit.org/show_bug.cgi?id=45528
14515
14516         * JavaScriptCore.exp:
14517         * JavaScriptCore.xcodeproj/project.pbxproj:
14518         * runtime/MemoryStatistics.cpp: Added.
14519         (JSC::memoryStatistics):
14520         * runtime/MemoryStatistics.h: Added.
14521
14522 2010-09-09  Michael Saboff  <msaboff@apple.com>
14523
14524         Reviewed by Gavin Barraclough.
14525
14526         Added a regular expression tracing facility.  This tracing is connected
14527         to jsc.  Every compiled regular expression object is added to a list.
14528         When the process exits, each regular expression dumps its pattern,
14529         JIT address, number of times it was executed and the number of matches.
14530         This tracing is controlled by the macro ENABLE_REGEXP_TRACING in
14531         wtf/Platform.h.
14532         https://bugs.webkit.org/show_bug.cgi?id=45401
14533
14534         * JavaScriptCore.exp:
14535         * jsc.cpp:
14536         (runWithScripts):
14537         * runtime/JSGlobalData.cpp:
14538         (JSC::JSGlobalData::JSGlobalData):
14539         (JSC::JSGlobalData::~JSGlobalData):
14540         (JSC::JSGlobalData::addRegExpToTrace):
14541         (JSC::JSGlobalData::dumpRegExpTrace):
14542         * runtime/JSGlobalData.h:
14543         * runtime/RegExp.cpp:
14544         (JSC::RegExp::RegExp):
14545         (JSC::RegExp::create):
14546         (JSC::RegExp::match):
14547         * runtime/RegExp.h:
14548         * wtf/Platform.h:
14549         * yarr/RegexJIT.h:
14550         (JSC::Yarr::RegexCodeBlock::getAddr):
14551
14552 2010-09-09  John Therrell  <jtherrell@apple.com>
14553
14554         32-bit build fix.
14555
14556         * jit/ExecutableAllocator.cpp:
14557         (JSC::ExecutableAllocator::committedByteCount):
14558
14559 2010-09-09  John Therrell  <jtherrell@apple.com>
14560
14561         Reviewed by Alexey Proskuryakov.
14562
14563         Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes
14564         https://bugs.webkit.org/show_bug.cgi?id=45134
14565
14566         Added thread-safe committed byte counting and reporting functionality to RegisterFile and 
14567         ExecutableAllocator.
14568
14569         * JavaScriptCore.exp:
14570         Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes.
14571         
14572         * interpreter/RegisterFile.cpp:
14573         (JSC::registerFileStatisticsMutex):
14574         Added function which returns a static Mutex used for locking during read/write access to
14575         static committed byte count variable.
14576         (JSC::RegisterFile::~RegisterFile):
14577         Added call to addToStatistics since memory is decommitted here.
14578         (JSC::RegisterFile::releaseExcessCapacity):
14579         Added call to addToStatistics since memory is decommitted here.
14580         (JSC::RegisterFile::initializeThreading):
14581         Added function which calls registerFileStatisticsMutex().
14582         (JSC::RegisterFile::committedByteCount):
14583         Added function which returns the current committed byte count for RegisterFile.
14584         (JSC::RegisterFile::addToCommittedByteCount):
14585         Added function which updates committed byte count.
14586         
14587         * interpreter/RegisterFile.h:
14588         (JSC::RegisterFile::RegisterFile):
14589         Added call to addToStatistics since memory is committed here.
14590         (JSC::RegisterFile::grow):
14591         Added call to addToStatistics since memory is committed here.
14592         
14593         * jit/ExecutableAllocator.h:
14594         Added function prototype for public static function committedByteCount().
14595         
14596         * jit/ExecutableAllocatorFixedVMPool.cpp:
14597         (JSC::FixedVMPoolAllocator::release):
14598         Added call to addToStatistics since memory is decommitted here.
14599         (JSC::FixedVMPoolAllocator::reuse):
14600         Added call to addToStatistics since memory is committed here.
14601         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
14602         Added function which updates committed byte count.
14603         (JSC::ExecutableAllocator::committedByteCount):
14604         Added function which returns the current committed byte count for ExecutableAllocator.
14605         
14606         * runtime/InitializeThreading.cpp:
14607         (JSC::initializeThreadingOnce):
14608         Added call to RegisterFile::initializeThreading.
14609
14610 2010-09-09  Mark Rowe  <mrowe@apple.com>
14611
14612         Reviewed by Oliver Hunt.
14613
14614         <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims
14615
14616         * API/JSObjectRef.cpp:
14617         (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion
14618         failure. Instead map NULL directly to the null JSValue.
14619         * API/tests/testapi.c:
14620         (main): Add test coverage for the NULL value case.
14621
14622 2010-09-09  Csaba Osztrogonác  <ossy@webkit.org>
14623
14624         Reviewed by Gavin Barraclough.
14625
14626         [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler
14627         https://bugs.webkit.org/show_bug.cgi?id=29268
14628
14629         * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now.
14630
14631 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
14632
14633         Reviewed by Darin Adler.
14634
14635         Removing doneSemicolon label in the lexer
14636         https://bugs.webkit.org/show_bug.cgi?id=45289
14637
14638         As a side effect of moving the multiline comment parsing
14639         to a separate function, an opportunity raised to simplify
14640         the single line comment parsing, and removing doneSemicolon
14641         label. Slight performance increase on --parse-only
14642         tests (from 32.8ms to 31.5ms)
14643
14644         * parser/Lexer.cpp:
14645         (JSC::Lexer::lex):
14646
14647 2010-09-08  Xan Lopez  <xlopez@igalia.com>
14648
14649         Reviewed by Alexey Proskuryakov.
14650
14651         Remove accessor for private member variable in JSParser
14652         https://bugs.webkit.org/show_bug.cgi?id=45378
14653
14654         m_token is private to JSParser, so it does not seem to be useful
14655         to have an accessor for it. On top of that, the file was both
14656         using the accessor and directly accessing the member variable,
14657         only one style should be used.
14658
14659 2010-09-08  Csaba Osztrogonác  <ossy@webkit.org>
14660
14661         Reviewed by Oliver Hunt.
14662
14663         [Qt] REGRESSION(63348): jsc is broken
14664         https://bugs.webkit.org/show_bug.cgi?id=42818
14665
14666         Need fastcall conventions on Qt/Win/MinGW.
14667         Based on patches of Gavin Barraclough: r63947 and r63948.
14668
14669         * jit/JITStubs.cpp:
14670         * jit/JITStubs.h:
14671
14672 2010-09-08  Robert Hogan  <robert@webkit.org>
14673
14674         Reviewed by Antonio Gomes.
14675
14676         Remove some unnecessary duplicate calls to string functions
14677
14678         https://bugs.webkit.org/show_bug.cgi?id=45314
14679
14680         * wtf/text/WTFString.cpp:
14681         (WTF::String::format):
14682
14683 2010-09-08  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
14684
14685         Reviewed by Andreas Kling.
14686
14687         Re-Disable JIT for MSVC 64bit to fix the build on this compiler.
14688         https://bugs.webkit.org/show_bug.cgi?id=45382
14689
14690         It was enabled in the cleanup made in r64176, though it is still
14691         not implemented.
14692
14693         * wtf/Platform.h:
14694
14695 2010-09-08  Martin Robinson  <mrobinson@igalia.com>
14696
14697         Reviewed by Xan Lopez.
14698
14699         [GTK] Need a WebSocket implementation
14700         https://bugs.webkit.org/show_bug.cgi?id=45197
14701
14702         Add a GIO-based WebSocket implementation.
14703
14704         * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource.
14705         (WTF::refPlatformPtr):
14706         (WTF::derefPlatformPtr):
14707         * wtf/gobject/GRefPtr.h: Added new template specialization declarations.
14708         * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations.
14709
14710 2010-08-30  Maciej Stachowiak  <mjs@apple.com>
14711
14712         Reviewed by Darin Adler.
14713
14714         Handle MediaQueryExp memory management exclusively with smart pointers
14715         https://bugs.webkit.org/show_bug.cgi?id=44874
14716         
14717         Implemented a non-copying sort function to make it possible to sort a Vector
14718         of OwnPtrs (which cannot be copied). This is required for the above.
14719
14720         * wtf/NonCopyingSort.h: Added.
14721         (WTF::nonCopyingSort): It's secretly heapsort.
14722         (WTF::heapSort): heapsort implementation.
14723         (WTF::siftDown): Helper function for heapsort.
14724         (WTF::heapify): ditto
14725
14726         Adjust build systems.
14727         
14728         * GNUmakefile.am:
14729         * JavaScriptCore.gypi:
14730         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
14731         * JavaScriptCore.xcodeproj/project.pbxproj:
14732
14733 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
14734
14735         Reviewed by Darin Adler.
14736
14737         Refactoring multiline comments in the lexer
14738         https://bugs.webkit.org/show_bug.cgi?id=45289
14739
14740         MultiLine comment parsing is moved to a separate function.
14741
14742         Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms)
14743         SunSpider reports no change (from 523.1ms to 521.2ms).
14744
14745         * parser/Lexer.cpp:
14746         (JSC::Lexer::parseMultilineComment):
14747         (JSC::Lexer::lex):
14748         * parser/Lexer.h:
14749
14750 2010-09-07  James Robinson  <jamesr@chromium.org>
14751
14752         Compile fix attempt for windows.
14753
14754         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14755
14756 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
14757
14758         Reviewed by James Robinson.
14759
14760         Fix Windows build after r66936
14761         https://bugs.webkit.org/show_bug.cgi?id=45348
14762
14763         Add symbol names that were missing from r66936.
14764
14765         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14766
14767 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
14768
14769         Reviewed by Oliver Hunt.
14770
14771         pushState and replaceState do not clone RegExp objects correctly
14772         https://bugs.webkit.org/show_bug.cgi?id=44718
14773         
14774         Move internal representation of JSC::RegExp (which depends on wether
14775         YARR and YARR_JIT is enabled) into RegExpRepresentation which can live
14776         in the implementation only. This makes it feasible to use RegExp in
14777         WebCore without bringing in all of YARR.
14778
14779         * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are
14780         needed inside WebCore's JSC bindings.
14781         * runtime/RegExp.cpp:
14782         (JSC::RegExpRepresentation::~RegExpRepresentation):
14783         (JSC::RegExp::RegExp):
14784         (JSC::RegExp::~RegExp):
14785         (JSC::RegExp::compile):
14786         (JSC::RegExp::match):
14787         * runtime/RegExp.h:
14788
14789 2010-09-07  Anders Carlsson  <andersca@apple.com>
14790
14791         Reviewed by Darin Adler.
14792
14793         <rdar://problem/8381749> -Wcast-align warning emitted when building with clang
14794
14795         Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc.
14796
14797         * Configurations/Base.xcconfig:
14798
14799 2010-09-07  Zoltan Horvath  <zoltan@webkit.org>
14800
14801         Reviewed by Darin Adler.
14802
14803         REGRESSION(66741): Undefined pthread macros
14804         https://bugs.webkit.org/show_bug.cgi?id=45246
14805
14806         PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, 
14807         but used in a statement. Add an additional check to test this.
14808
14809         * wtf/FastMalloc.cpp:
14810         (WTF::TCMalloc_PageHeap::initializeScavenger):
14811
14812 2010-09-06  Oliver Hunt  <oliver@apple.com>
14813
14814         Windows build fix
14815
14816 2010-09-05  Oliver Hunt  <oliver@apple.com>
14817
14818         Reviewed by Sam Weinig.
14819
14820         SerializedScriptValue needs to use a flat storage mechanism
14821         https://bugs.webkit.org/show_bug.cgi?id=45244
14822
14823         Export JSArray::put
14824
14825         * JavaScriptCore.exp:
14826
14827 2010-09-06  Chao-ying Fu  <fu@mips.com>
14828
14829         Reviewed by Oliver Hunt.
14830
14831         Support JSVALUE32_64 on MIPS
14832         https://bugs.webkit.org/show_bug.cgi?id=43999
14833
14834         Add missing functions to support JSVALUE32_64 on MIPS.
14835         Remove JSVALUE32 as the default for MIPS.
14836
14837         * assembler/MIPSAssembler.h:
14838         (JSC::MIPSAssembler::divd):
14839         (JSC::MIPSAssembler::mthc1):
14840         (JSC::MIPSAssembler::cvtwd):
14841         * assembler/MacroAssemblerMIPS.h:
14842         (JSC::MacroAssemblerMIPS::neg32):
14843         (JSC::MacroAssemblerMIPS::branchOr32):
14844         (JSC::MacroAssemblerMIPS::set8):
14845         (JSC::MacroAssemblerMIPS::loadDouble):
14846         (JSC::MacroAssemblerMIPS::divDouble):
14847         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
14848         (JSC::MacroAssemblerMIPS::branchDouble):
14849         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
14850         (JSC::MacroAssemblerMIPS::zeroDouble):
14851         * jit/JIT.h:
14852         * jit/JITOpcodes32_64.cpp:
14853         (JSC::JIT::privateCompileCTINativeCall):
14854         * jit/JITPropertyAccess32_64.cpp:
14855         (JSC::JIT::privateCompilePutByIdTransition):
14856         * jit/JITStubs.cpp:
14857         (JSC::JITThunks::JITThunks):
14858         * jit/JITStubs.h:
14859         * wtf/Platform.h:
14860
14861 2010-09-06  Robert Hogan  <robert@webkit.org>
14862
14863         Unreviewed, compile fix.
14864
14865         Fix compile failure in r66843
14866
14867         Revert to original patch in bugzilla. Leave bug open for
14868         discussion on potential removal of double utf8 conversion.
14869
14870         https://bugs.webkit.org/show_bug.cgi?id=45240
14871
14872         * wtf/text/WTFString.cpp:
14873         (WTF::String::format):
14874
14875 2010-09-06  Robert Hogan  <robert@webkit.org>
14876
14877         Reviewed by Andreas Kling.
14878
14879         [Qt] utf8 encoding of console() messages
14880
14881         Unskip:
14882         http/tests/security/xssAuditor/embed-tag-null-char.html
14883         http/tests/security/xssAuditor/object-embed-tag-null-char.html
14884
14885         Both tests failed because Qt's implementation of String::format()
14886         is casting a utf8 result to String, which assumes latin1 in
14887         its constructor. So instead of casting a QString to a String, use
14888         StringImpl::create() instead. Unfortunately, this involves a lot
14889         of extra casts but the end result is correct.
14890
14891         https://bugs.webkit.org/show_bug.cgi?id=45240
14892
14893         * wtf/text/WTFString.cpp:
14894         (WTF::String::format):
14895
14896 2010-09-03  Alexey Proskuryakov  <ap@apple.com>
14897
14898         Reviewed by Darin Adler.
14899
14900         https://bugs.webkit.org/show_bug.cgi?id=45135
14901         <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data
14902
14903         * wtf/FastMalloc.cpp:
14904         (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex
14905         regardless of platform default, so that we can assert that it's held (this is for platforms
14906         that don't have libdispatch).
14907         (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look
14908         at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock
14909         is held.
14910         (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before
14911         manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we
14912         can make unbalanced calls to dispatch_resume().
14913
14914 2010-09-03  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
14915
14916         Reviewed by Martin Robinson.
14917
14918         [EFL] Regression (66531) Build break with Glib Support
14919         https://bugs.webkit.org/show_bug.cgi?id=45011
14920
14921         Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory
14922         since when glib is enabled, EFL port needs it, too.
14923
14924         * CMakeListsEfl.txt: Include gobject directory to find new header
14925         file.
14926         * GNUmakefile.am: Ditto.
14927         * wtf/CMakeListsEfl.txt: Ditto.
14928         * wtf/Platform.h: Include header if port is EFL and glib support is
14929         enabled.
14930         * wtf/gtk/GtkTypedefs.h: Removed.
14931         * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now
14932         guarded by PLATFORM(GTK).
14933
14934 2010-09-03  Csaba Osztrogonác  <ossy@webkit.org>
14935
14936         Reviewed by Simon Hausmann.
14937
14938         Fix warning in wtf/ByteArray.h
14939         https://bugs.webkit.org/show_bug.cgi?id=44672
14940
14941         * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers.
14942
14943 2010-09-02  Adam Barth  <abarth@webkit.org>
14944
14945         Reviewed by Eric Seidel.
14946
14947         Actually parse a URL from ParsedURL
14948         https://bugs.webkit.org/show_bug.cgi?id=45080
14949
14950         This patch only handles standard URLs.  At some point we'll need to
14951         distinguish between standard URLs and other kinds of URLs.
14952
14953         * wtf/url/api/ParsedURL.cpp:
14954         (WTF::ParsedURL::ParsedURL):
14955
14956 2010-09-02  Adam Barth  <abarth@webkit.org>
14957
14958         Reviewed by Eric Seidel.
14959
14960         Add ParsedURL and URLString to WTFURL API
14961         https://bugs.webkit.org/show_bug.cgi?id=45078
14962
14963         Currently there's no actual URL parsing going on, but this patch is a
14964         start to sketching out the API.
14965
14966         * JavaScriptCore.xcodeproj/project.pbxproj:
14967         * wtf/url/api/ParsedURL.cpp: Added.
14968         (WTF::ParsedURL::ParsedURL):
14969         (WTF::ParsedURL::scheme):
14970         (WTF::ParsedURL::username):
14971         (WTF::ParsedURL::password):
14972         (WTF::ParsedURL::host):
14973         (WTF::ParsedURL::port):
14974         (WTF::ParsedURL::path):
14975         (WTF::ParsedURL::query):
14976         (WTF::ParsedURL::fragment):
14977         (WTF::ParsedURL::segment):
14978         * wtf/url/api/ParsedURL.h: Added.
14979         (WTF::ParsedURL::spec):
14980         * wtf/url/api/URLString.h: Added.
14981         (WTF::URLString::URLString):
14982         (WTF::URLString::string):
14983
14984 2010-09-02  Adam Barth  <abarth@webkit.org>
14985
14986         Reviewed by Eric Seidel.
14987
14988         Add WTFURL to the JavaScriptCore build on Mac
14989         https://bugs.webkit.org/show_bug.cgi?id=45075
14990
14991         Building code is good.
14992
14993         * JavaScriptCore.xcodeproj/project.pbxproj:
14994
14995 2010-09-02  Alexey Proskuryakov  <ap@apple.com>
14996
14997         Reviewed by Oliver Hunt.
14998
14999         https://bugs.webkit.org/show_bug.cgi?id=43230
15000         <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser
15001
15002         One can't delete a ThreadSpecific object that has data in it. It's not even possible to
15003         enumerate data objects in all threads, much less destroy them from a thread that's destroying
15004         the ThreadSpecific.
15005
15006         * parser/JSParser.cpp:
15007         (JSC::JSParser::JSParser):
15008         * runtime/JSGlobalData.h: 
15009         * wtf/WTFThreadData.cpp:
15010         (WTF::WTFThreadData::WTFThreadData):
15011         * wtf/WTFThreadData.h:
15012         (WTF::WTFThreadData::approximatedStackStart):
15013         Moved stack guard tracking from JSGlobalData to WTFThreadData.
15014
15015         * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't
15016         ever face a situation where we'd want to delete a ThreadSpecific object.
15017
15018 2010-09-01  Gavin Barraclough  <barraclough@apple.com>
15019
15020         Rubber stamped by Oliver Hunt.
15021
15022         Ecma-262 15.11.1.1 states that if the argument is undefined then an
15023         Error object's message property should be set to the empty string.
15024
15025         * runtime/ErrorInstance.cpp:
15026         (JSC::ErrorInstance::ErrorInstance):
15027         (JSC::ErrorInstance::create):
15028         * runtime/ErrorInstance.h:
15029         * runtime/ErrorPrototype.cpp:
15030         (JSC::ErrorPrototype::ErrorPrototype):
15031
15032 2010-08-31  Darin Adler  <darin@apple.com>
15033
15034         Reviewed by Anders Carlsson.
15035
15036         * wtf/FastMalloc.cpp:
15037         (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that
15038         mixed types with code that uses size_t.
15039
15040         * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning.
15041
15042 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
15043
15044         Reviewed by Gustavo Noronha Silva.
15045
15046         [GTK] Isolate all GTK+ typedefs into one file
15047         https://bugs.webkit.org/show_bug.cgi?id=44900
15048
15049         * GNUmakefile.am: Add GtkTypedefs.h to the source lists.
15050         * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build.
15051         * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs.
15052         * wtf/gobject/GOwnPtr.h: Ditto.
15053         * wtf/gobject/GRefPtr.h: Ditto.
15054         * wtf/gtk/GtkTypedefs.h: Added.
15055
15056 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
15057
15058         Reviewed by Gustavo Noronha Silva.
15059
15060         [GTK] Fix 'make dist' in preparation of the 1.3.3 release
15061         https://bugs.webkit.org/show_bug.cgi?id=44978
15062
15063         * GNUmakefile.am: Adding missing headers to the sources list.
15064
15065 2010-08-31  Chao-ying Fu  <fu@mips.com>
15066
15067         Reviewed by Oliver Hunt.
15068
15069         Support emit_op_mod() for MIPS
15070         https://bugs.webkit.org/show_bug.cgi?id=42855
15071
15072         This patch uses MIPS div instructions for op_mod to improve performance.
15073
15074         * assembler/MIPSAssembler.h:
15075         (JSC::MIPSAssembler::div):
15076         * jit/JITArithmetic.cpp:
15077         (JSC::JIT::emit_op_mod):
15078         (JSC::JIT::emitSlow_op_mod):
15079
15080 2010-08-31  Csaba Osztrogonác  <ossy@webkit.org>
15081
15082         Reviewed by Darin Adler.
15083
15084         Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED.
15085         https://bugs.webkit.org/show_bug.cgi?id=44870
15086
15087         * wtf/Assertions.h:
15088         * wtf/UnusedParam.h:
15089
15090 2010-08-31  Benjamin Poulain  <benjamin.poulain@nokia.com>
15091
15092         Reviewed by Kenneth Rohde Christiansen.
15093
15094         JSC TimeoutChecker::didTimeOut overflows on ARM
15095         https://bugs.webkit.org/show_bug.cgi?id=38538
15096
15097         Make getCPUTime() return values relative to the first call.
15098         The previous implementation relied on simply on currentTime(), which
15099         return a time since epoch and not a time since the thread started. This
15100         made the return value of getCPUTime() overflow on 32 bits.
15101
15102         * runtime/TimeoutChecker.cpp:
15103         (JSC::getCPUTime):
15104
15105 2010-08-30  Mihai Parparita  <mihaip@chromium.org>
15106
15107         Reviewed by Adam Barth.
15108
15109         HISTORY_ALWAYS_ASYNC should be removed (history should always be async)
15110         https://bugs.webkit.org/show_bug.cgi?id=44315
15111
15112         Remove ENABLE_HISTORY_ALWAYS_ASYNC #define.
15113
15114         * wtf/Platform.h: 
15115
15116 2010-08-30  Chris Rogers  <crogers@google.com>
15117
15118         Reviewed by Kenneth Russell.
15119
15120         Fix namespace for wtf/Complex.h and wtf/Vector3.h
15121         https://bugs.webkit.org/show_bug.cgi?id=44892
15122
15123         * wtf/Complex.h:
15124         * wtf/Vector3.h:
15125
15126 2010-08-30  Andy Estes  <aestes@apple.com>
15127
15128         Reviewed by Eric Carlson.
15129
15130         Strings returned by asciiDebug() should be NULL-terminated.
15131         https://bugs.webkit.org/show_bug.cgi?id=44866
15132
15133         * wtf/text/WTFString.cpp:
15134         (asciiDebug):
15135
15136 2010-08-30  Zoltan Herczeg  <zherczeg@webkit.org>
15137
15138         Reviewed by Darin Adler.
15139
15140         Refactor number parsing in the lexer
15141         https://bugs.webkit.org/show_bug.cgi?id=44104
15142
15143         Number parsing was full of gotos, and needed a complete
15144         redesign to remove them (Only one remained). Furthermore
15145         integer arithmetic is empolyed for fast cases (= small
15146         integer numbers).
15147
15148         * parser/Lexer.cpp:
15149         (JSC::Lexer::parseHex):
15150         (JSC::Lexer::parseOctal):
15151         (JSC::Lexer::parseDecimal):
15152         (JSC::Lexer::parseNumberAfterDecimalPoint):
15153         (JSC::Lexer::parseNumberAfterExponentIndicator):
15154         (JSC::Lexer::lex):
15155         * parser/Lexer.h:
15156
15157 2010-08-29  Darin Adler  <darin@apple.com>
15158
15159         Fix Qt build.
15160
15161         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP.
15162         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
15163         * wtf/unicode/wince/UnicodeWince.h: Ditto.
15164
15165 2010-08-29  Kwang Yul Seo  <skyul@company100.net>
15166
15167         Reviewed by Kent Tamura.
15168
15169         [BREWMP] Port vprintf_stderr_common
15170         https://bugs.webkit.org/show_bug.cgi?id=33568
15171
15172         Use BREW's DBGPRINTF to output debug messages.
15173
15174         * wtf/Assertions.cpp:
15175
15176 2010-08-28  Gavin Barraclough  <barraclough@apple.com>
15177
15178         Reviewed by Oliver Hunt.
15179
15180         Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values
15181
15182         We are in places casting doubles to unsigneds, and unsigneds to ints, without always check
15183         that the result is within bounds. This is problematic in the case of double-to-unsigned
15184         conversion because we should be saturating to array length.
15185
15186         Also, the error return value from Array.splice should be [], not undefined.
15187
15188         I don't see any security concerns here. These methods are spec'ed in such a way that they
15189         can be applied to non Array objects, so in all cases the (potentially bogus) indices are
15190         being passed to functions that will safely check accesses are within bounds.
15191
15192         * runtime/ArrayPrototype.cpp:
15193         (JSC::argumentClampedIndexFromStartOrEnd):
15194         (JSC::arrayProtoFuncJoin):
15195         (JSC::arrayProtoFuncConcat):
15196         (JSC::arrayProtoFuncReverse):
15197         (JSC::arrayProtoFuncShift):
15198         (JSC::arrayProtoFuncSlice):
15199         (JSC::arrayProtoFuncSort):
15200         (JSC::arrayProtoFuncSplice):
15201         (JSC::arrayProtoFuncUnShift):
15202         (JSC::arrayProtoFuncFilter):
15203         (JSC::arrayProtoFuncMap):
15204         (JSC::arrayProtoFuncEvery):
15205         (JSC::arrayProtoFuncForEach):
15206         (JSC::arrayProtoFuncSome):
15207         (JSC::arrayProtoFuncReduce):
15208         (JSC::arrayProtoFuncReduceRight):
15209         (JSC::arrayProtoFuncIndexOf):
15210         (JSC::arrayProtoFuncLastIndexOf):
15211         * runtime/JSValue.h:
15212         (JSC::JSValue::toUInt32):
15213
15214 2010-08-28  Pratik Solanki  <psolanki@apple.com>
15215
15216         Reviewed by Dan Bernstein.
15217
15218         Add an ENABLE define for purgeable memory support
15219         https://bugs.webkit.org/show_bug.cgi?id=44777
15220
15221         * wtf/Platform.h:
15222
15223 2010-08-27  Kimmo Kinnunen  <kimmo.t.kinnunen@nokia.com>
15224
15225         Reviewed by Kenneth Rohde Christiansen.
15226
15227         [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
15228         https://bugs.webkit.org/show_bug.cgi?id=43179
15229
15230         Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent
15231         NPAPI Plugin Cache. The flag is enabled by default.
15232
15233         * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE
15234
15235 2010-07-27  Jer Noble  <jer.noble@apple.com>
15236
15237         Reviewed by Eric Carlson.
15238
15239         Add JavaScript API to allow a page to go fullscreen.
15240         rdar://problem/6867795
15241         https://bugs.webkit.org/show_bug.cgi?id=43099
15242
15243         * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS).
15244
15245 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
15246
15247         Windows build fix pt 2.
15248
15249         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15250
15251 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
15252
15253         Windows build fix pt 1.
15254
15255         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15256
15257 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
15258
15259         Reviewed by Oliver Hunt.
15260
15261         Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate.
15262
15263         These methods should be using a version of dtoa that can generate results accurate
15264         to the requested precision, whereas our version of dtoa is only currently able to
15265         support producing results sufficiently accurate to distinguish the value from any
15266         other IEEE-754 double precision number.
15267
15268         This change has no impact on benchmarks we track.
15269
15270         On microbenchmarks for these functions, this is a slight regression where a high
15271         precision is requested (dtoa now need to iterate further to generate a a greater
15272         number of digits), but with smaller precision values (hopefully more common) this
15273         improves performance, since it reduced the accurate of result dtoa is required,
15274         to produce, and removes the need to pre-round values before calling dtoa. 
15275
15276         * JavaScriptCore.exp:
15277             doubleToStringInJavaScriptFormat renamed to numberToString
15278
15279         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15280             doubleToStringInJavaScriptFormat renamed to numberToString
15281
15282         * runtime/UString.cpp:
15283         (JSC::UString::number):
15284             doubleToStringInJavaScriptFormat renamed to numberToString
15285
15286         * wtf/DecimalNumber.h:
15287         (WTF::DecimalNumber::DecimalNumber):
15288         (WTF::DecimalNumber::toStringDecimal):
15289         (WTF::DecimalNumber::toStringExponential):
15290             Remove all pre-rounding of values, instead call dtoa correctly.
15291
15292         * wtf/dtoa.cpp:
15293         (WTF::dtoa):
15294         * wtf/dtoa.h:
15295             Reenable support for rounding to specific-figures/decimal-places in dtoa.
15296             Modify to remove unbiased rounding, provide ECMA required away-from-zero.
15297             Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to
15298             numberToString.
15299
15300 2010-08-27  Chao-ying Fu  <fu@mips.com>
15301
15302         Reviewed by Oliver Hunt.
15303
15304         Byte alignment issue on MIPS
15305         https://bugs.webkit.org/show_bug.cgi?id=29415
15306
15307         MIPS accesses one byte at a time for now to avoid the help from the
15308         kernel to fix unaligned accesses.
15309
15310         * wtf/text/AtomicString.cpp:
15311         (WebCore::equal):
15312         * wtf/text/StringHash.h:
15313         (WebCore::StringHash::equal):
15314
15315 2010-08-27  Xan Lopez  <xlopez@igalia.com>
15316
15317         Reviewed by Tor Arne Vestbø.
15318
15319         Fix a couple of typos in comment.
15320
15321         * bytecode/CodeBlock.h:
15322
15323 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
15324
15325         Windows build fix.
15326
15327         * wtf/dtoa.cpp:
15328
15329 2010-08-26  Gavin Barraclough  <baraclough@apple.com>
15330
15331         Reviewed by Sam Weinig.
15332
15333         Bug 44735 - Clean up dtoa.cpp
15334         Remove unused & unmaintained code paths, reformat code to match
15335         coding standard & use platform #defines from Platform.h directly.
15336
15337         * wtf/dtoa.cpp:
15338         (WTF::storeInc):
15339         (WTF::multadd):
15340         (WTF::s2b):
15341         (WTF::lo0bits):
15342         (WTF::mult):
15343         (WTF::pow5mult):
15344         (WTF::lshift):
15345         (WTF::diff):
15346         (WTF::ulp):
15347         (WTF::b2d):
15348         (WTF::d2b):
15349         (WTF::ratio):
15350         (WTF::):
15351         (WTF::strtod):
15352         (WTF::quorem):
15353         (WTF::dtoa):
15354
15355 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
15356
15357         Rubber Stamped by Oliver Hunt.
15358
15359         Partially revert r65959. The toString changes regressed the v8 tests,
15360         but keep the toFixed/toExponential/toPrecision changes.
15361
15362         * JavaScriptCore.exp:
15363         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15364         * runtime/NumberPrototype.cpp:
15365         * runtime/UString.cpp:
15366         (JSC::UString::number):
15367         * wtf/DecimalNumber.h:
15368         * wtf/dtoa.cpp:
15369         (WTF::append):
15370         (WTF::doubleToStringInJavaScriptFormat):
15371         * wtf/dtoa.h:
15372         * wtf/text/WTFString.cpp:
15373         * wtf/text/WTFString.h:
15374
15375 2010-08-26  James Robinson  <jamesr@chromium.org>
15376
15377         Reviewed by Darin Fisher.
15378
15379         [chromium] Remove the USE(GLES2_RENDERING) define and associated code
15380         https://bugs.webkit.org/show_bug.cgi?id=43761
15381
15382         Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused.
15383
15384         * wtf/Platform.h:
15385
15386 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
15387
15388         Rolling out r64608, this regressed performance.
15389
15390         * JavaScriptCore.xcodeproj/project.pbxproj:
15391         * assembler/ARMAssembler.cpp:
15392         (JSC::ARMAssembler::executableCopy):
15393         * assembler/LinkBuffer.h:
15394         (JSC::LinkBuffer::LinkBuffer):
15395         (JSC::LinkBuffer::~LinkBuffer):
15396         (JSC::LinkBuffer::performFinalization):
15397         * assembler/MIPSAssembler.h:
15398         (JSC::MIPSAssembler::executableCopy):
15399         * assembler/X86Assembler.h:
15400         (JSC::X86Assembler::executableCopy):
15401         * bytecode/StructureStubInfo.h:
15402         (JSC::StructureStubInfo::initGetByIdProto):
15403         (JSC::StructureStubInfo::initGetByIdChain):
15404         (JSC::StructureStubInfo::initGetByIdSelfList):
15405         (JSC::StructureStubInfo::initGetByIdProtoList):
15406         (JSC::StructureStubInfo::initPutByIdTransition):
15407         * jit/ExecutableAllocator.cpp:
15408         (JSC::ExecutablePool::systemAlloc):
15409         * jit/ExecutableAllocator.h:
15410         (JSC::ExecutablePool::create):
15411         (JSC::ExecutableAllocator::ExecutableAllocator):
15412         (JSC::ExecutableAllocator::poolForSize):
15413         (JSC::ExecutablePool::ExecutablePool):
15414         (JSC::ExecutablePool::poolAllocate):
15415         * jit/ExecutableAllocatorFixedVMPool.cpp:
15416         (JSC::FixedVMPoolAllocator::allocInternal):
15417         * jit/JIT.cpp:
15418         (JSC::JIT::privateCompile):
15419         * jit/JIT.h:
15420         (JSC::JIT::compileGetByIdProto):
15421         (JSC::JIT::compileGetByIdSelfList):
15422         (JSC::JIT::compileGetByIdProtoList):
15423         (JSC::JIT::compileGetByIdChainList):
15424         (JSC::JIT::compileGetByIdChain):
15425         (JSC::JIT::compilePutByIdTransition):
15426         (JSC::JIT::compilePatchGetArrayLength):
15427         * jit/JITOpcodes.cpp:
15428         (JSC::JIT::privateCompileCTIMachineTrampolines):
15429         * jit/JITOpcodes32_64.cpp:
15430         (JSC::JIT::privateCompileCTIMachineTrampolines):
15431         (JSC::JIT::privateCompileCTINativeCall):
15432         * jit/JITPropertyAccess.cpp:
15433         (JSC::JIT::stringGetByValStubGenerator):
15434         (JSC::JIT::privateCompilePutByIdTransition):
15435         (JSC::JIT::privateCompilePatchGetArrayLength):
15436         (JSC::JIT::privateCompileGetByIdProto):
15437         (JSC::JIT::privateCompileGetByIdSelfList):
15438         (JSC::JIT::privateCompileGetByIdProtoList):
15439         (JSC::JIT::privateCompileGetByIdChainList):
15440         (JSC::JIT::privateCompileGetByIdChain):
15441         * jit/JITPropertyAccess32_64.cpp:
15442         (JSC::JIT::stringGetByValStubGenerator):
15443         (JSC::JIT::privateCompilePutByIdTransition):
15444         (JSC::JIT::privateCompilePatchGetArrayLength):
15445         (JSC::JIT::privateCompileGetByIdProto):
15446         (JSC::JIT::privateCompileGetByIdSelfList):
15447         (JSC::JIT::privateCompileGetByIdProtoList):
15448         (JSC::JIT::privateCompileGetByIdChainList):
15449         (JSC::JIT::privateCompileGetByIdChain):
15450         * jit/JITStubs.cpp:
15451         (JSC::JITThunks::tryCachePutByID):
15452         (JSC::JITThunks::tryCacheGetByID):
15453         (JSC::DEFINE_STUB_FUNCTION):
15454         (JSC::getPolymorphicAccessStructureListSlot):
15455         * jit/JITStubs.h:
15456         * jit/SpecializedThunkJIT.h:
15457         (JSC::SpecializedThunkJIT::finalize):
15458         * runtime/ExceptionHelpers.cpp:
15459         * runtime/ExceptionHelpers.h:
15460         * runtime/Executable.cpp:
15461         (JSC::EvalExecutable::compileInternal):
15462         (JSC::ProgramExecutable::compileInternal):
15463         (JSC::FunctionExecutable::compileForCallInternal):
15464         (JSC::FunctionExecutable::compileForConstructInternal):
15465         (JSC::FunctionExecutable::reparseExceptionInfo):
15466         (JSC::EvalExecutable::reparseExceptionInfo):
15467         * yarr/RegexJIT.cpp:
15468         (JSC::Yarr::RegexGenerator::compile):
15469
15470 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
15471
15472         Reviewed by Brady Eidson.
15473
15474         Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl.
15475
15476         * wtf/text/WTFString.cpp:
15477         (asciiDebug):
15478             Return a Vector<char> containing the contents of a string as ASCII.
15479
15480 2010-08-26  Sam Weinig  <sam@webkit.org>
15481
15482         Reviewed by Darin Adler.
15483
15484         Add PassOwnArrayPtr
15485         https://bugs.webkit.org/show_bug.cgi?id=44627
15486
15487         * GNUmakefile.am:
15488         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
15489         * JavaScriptCore.xcodeproj/project.pbxproj:
15490         Add the new files.
15491
15492         * wtf/Forward.h:
15493         Forward declare PassOwnArrayPtr.
15494         
15495         * wtf/OwnArrayPtr.h:
15496         Mimic the OwnPtr interface.
15497
15498         * wtf/OwnArrayPtrCommon.h: Added.
15499         (WTF::deleteOwnedArrayPtr):
15500         Move delete function here so it can be shared by OwnArrayPtr and
15501         PassOwnArrayPtr.
15502
15503         * wtf/PassOwnArrayPtr.h: Added.
15504         Mimic the PassOwnPtr interface.
15505
15506 2010-08-26  Oliver Hunt  <oliver@apple.com>
15507
15508         Reviewed by Gavin Barraclough.
15509
15510         [JSC] JavaScript parsing error when loading Equifax web page
15511         https://bugs.webkit.org/show_bug.cgi?id=42900
15512
15513         '-->' is ostensibly only meant to occur when there is only
15514         whitespace preceeding it on the line.  However firefox treats
15515         multiline comments as a space character, so they are allowed.
15516         One side effect of the firefox model is that any line terminators
15517         inside the multiline comment are ignored, so
15518
15519             foo/*
15520             */-->
15521
15522         is treated as
15523
15524             foo -->
15525
15526         and so '-->' will not be a comment in this case.  Happily this simply
15527         means that to fix this issue all we need to do is stop updating
15528         m_atLineStart when handling multiline comments.
15529
15530         * parser/Lexer.cpp:
15531         (JSC::Lexer::lex):
15532
15533 2010-08-25  Oliver Hunt  <oliver@apple.com>
15534
15535         Reviewed by Geoffrey Garen.
15536
15537         Improve overflow handling in StringImpl::Replace
15538         https://bugs.webkit.org/show_bug.cgi?id=42502
15539         <rdar://problem/8203794>
15540
15541         Harden StringImpl::replace against overflow -- I can't see how this
15542         could be abused, but it's better to be safe than sorry.
15543
15544         * wtf/text/StringImpl.cpp:
15545         (WTF::StringImpl::replace):
15546
15547 2010-08-26  Martin Robinson  <mrobinson@igalia.com>
15548
15549         Reviewed by Xan Lopez.
15550
15551         [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions
15552         https://bugs.webkit.org/show_bug.cgi?id=44624
15553
15554         Clean up GNUmakefile.am.
15555
15556         * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move
15557         a couple include lines from the top-level GNUmakefile.am.
15558
15559 2010-08-25  Xan Lopez  <xlopez@igalia.com>
15560
15561         Reviewed by Kent Tamura.
15562
15563         Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used
15564         https://bugs.webkit.org/show_bug.cgi?id=29259
15565
15566         Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang.
15567
15568         * wtf/dtoa.cpp:
15569         (WTF::s2b):
15570
15571 2010-08-25  Kwang Yul Seo  <skyul@company100.net>
15572
15573         Reviewed by Kevin Ollivier.
15574
15575         [BREWMP] Add build system
15576         https://bugs.webkit.org/show_bug.cgi?id=44645
15577
15578         Make waf script portable so that we can add more ports.
15579
15580         * wscript:
15581
15582 2010-08-25  Michael Saboff  <msaboff@apple.com>
15583
15584         Reviewed by Sam Weinig.
15585
15586         Remove the single entry regular expression cache introduced as part of
15587         the fix for https://bugs.webkit.org/show_bug.cgi?id=41238.
15588         The performance problem in Dromaeo that initiated that bug is no 
15589         longer present. Dromaeo has been modified so that the regular
15590         expression tests are somewhat random and don't benefit from a
15591         single entry cache.
15592
15593         * runtime/RegExp.cpp:
15594         (JSC::RegExp::RegExp):
15595         (JSC::RegExp::match):
15596         * runtime/RegExp.h:
15597
15598 2010-08-25  Martin Robinson  <mrobinson@igalia.com>
15599
15600         Reviewed by Gustavo Noronha Silva.
15601
15602         Cairo and EFL port shouldn't depend on glib.
15603         https://bugs.webkit.org/show_bug.cgi?id=44354
15604
15605         Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in
15606         GRefPtr.h.
15607
15608         * GNUmakefile.am: Add PlatformRefPtr.h to the source list.
15609         * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h.
15610         (WTF::PlatformRefPtr::PlatformRefPtr): Ditto.
15611         (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto.
15612         (WTF::PlatformRefPtr::clear): Ditto.
15613         (WTF::PlatformRefPtr::get): Ditto.
15614         (WTF::PlatformRefPtr::operator*): Ditto.
15615         (WTF::PlatformRefPtr::operator->): Ditto.
15616         (WTF::PlatformRefPtr::operator!): Ditto.
15617         (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto.
15618         (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto.
15619         (WTF::::operator): Ditto.
15620         (WTF::::swap): Ditto.
15621         (WTF::swap): Ditto.
15622         (WTF::operator==): Ditto.
15623         (WTF::operator!=): Ditto.
15624         (WTF::static_pointer_cast): Ditto.
15625         (WTF::const_pointer_cast): Ditto.
15626         (WTF::getPtr): Ditto.
15627         (WTF::adoptPlatformRef): Ditto.
15628         * wtf/gobject/GRefPtr.cpp: Changes to reflect new names.
15629         (WTF::refPlatformPtr):
15630         (WTF::derefPlatformPtr):
15631         * wtf/gobject/GRefPtr.h: Ditto.
15632         (WTF::refPlatformPtr):
15633         (WTF::derefPlatformPtr):
15634
15635 2010-08-25  Xan Lopez  <xlopez@igalia.com>
15636
15637         Reviewed by Alexey Proskuryakov.
15638
15639         Remove dead code in JSGlobalObject
15640         https://bugs.webkit.org/show_bug.cgi?id=44615
15641
15642         The recursion data member in the JSGlobalObject and its getter
15643         plus inc/dec methods seems to be unused, remove them.
15644
15645         * runtime/JSGlobalObject.cpp:
15646         (JSC::JSGlobalObject::init):
15647         * runtime/JSGlobalObject.h:
15648
15649 2010-08-25  Michael Saboff  <msaboff@apple.com>
15650
15651         Reviewed by Geoffrey Garen.
15652
15653         Changed the initial and subsequent allocation of vector storage to
15654         Array()s. The changes are to limit sparse arrays to 100000 entries
15655         and fixed the sparse map to vector storage conversion to use the 
15656         minimum amount of memory needed to store the current number of entries.
15657         These changes address https://bugs.webkit.org/show_bug.cgi?id=43707
15658
15659         * runtime/JSArray.cpp:
15660         (JSC::JSArray::putSlowCase):
15661         (JSC::JSArray::getNewVectorLength):
15662
15663 2010-08-16  Gabor Loki  <loki@webkit.org>
15664
15665         Reviewed by Gavin Barraclough.
15666
15667         Avoid increasing required alignment of target type warning
15668         https://bugs.webkit.org/show_bug.cgi?id=43963
15669
15670         Fix platform independent alignment warnings.
15671
15672         * wtf/ListHashSet.h:
15673         (WTF::ListHashSetNodeAllocator::pool):
15674
15675 2010-08-19  Gabor Loki  <loki@webkit.org>
15676
15677         Reviewed by Gavin Barraclough.
15678
15679         Enable truncated floating point feature on ARM
15680         https://bugs.webkit.org/show_bug.cgi?id=44233
15681
15682         Enable truncated floating point feature with the help of VCVTR.S32.F64
15683         instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit
15684         integer/register, it saturates at INT_MAX or INT_MIN. Testing this
15685         looks quicker than testing FPSCR for exception.
15686
15687         Inspired by Jacob Bramley's patch from JaegerMonkey
15688
15689         * assembler/ARMAssembler.h:
15690         (JSC::ARMAssembler::):
15691         (JSC::ARMAssembler::cmn_r):
15692         (JSC::ARMAssembler::vcvtr_s32_f64_r):
15693         * assembler/MacroAssemblerARM.h:
15694         (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
15695         (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
15696
15697 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
15698
15699         Windows build fix.
15700
15701         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15702
15703 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
15704
15705         Windows build fix.
15706
15707         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15708         * wtf/DecimalNumber.h:
15709         (WTF::DecimalNumber::intPow10):
15710         * wtf/dtoa.cpp:
15711         * wtf/dtoa.h:
15712
15713 2010-08-23  Gavin Barraclough  <barraclough@apple.com>
15714
15715         Reviewed by Oliver Hunt.
15716
15717         https://bugs.webkit.org/show_bug.cgi?id=44487
15718
15719         Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated
15720         code & unnecessary complexity. Add a new DecimalNumber class to encapsulate
15721         double to string conversion, share the implementations of rounding &
15722         decimal-fraction/exponential formatting.
15723
15724         * JavaScriptCore.exp:
15725             Update exports.
15726
15727         * runtime/NumberPrototype.cpp:
15728         (JSC::toThisNumber):
15729         (JSC::getIntegerArgumentInRange):
15730             Helper methods used in implementing toExponential/toFixed/toString.
15731         (JSC::numberProtoFuncToExponential):
15732         (JSC::numberProtoFuncToFixed):
15733         (JSC::numberProtoFuncToPrecision):
15734             Reimplemented using new DecimalNumber class.
15735             
15736         * runtime/UString.cpp:
15737         (JSC::UString::number):
15738             Updated to call numberToString.
15739
15740         * wtf/DecimalNumber.h: Added.
15741         (WTF::):
15742         (WTF::DecimalNumber::DecimalNumber):
15743         (WTF::DecimalNumber::toStringDecimal):
15744         (WTF::DecimalNumber::toStringExponential):
15745         (WTF::DecimalNumber::sign):
15746         (WTF::DecimalNumber::exponent):
15747         (WTF::DecimalNumber::significand):
15748         (WTF::DecimalNumber::precision):
15749         (WTF::DecimalNumber::init):
15750         (WTF::DecimalNumber::isZero):
15751         (WTF::DecimalNumber::roundToPrecision):
15752             New class to perform double to string conversion.
15753             Has three constructors, which allow conversion with no rounding,
15754             rounding to significant-figures, or rounding to decimal-places,
15755             and two methods for formatting strings, either using decimal
15756             fraction or exponential encoding. Internal implementation uses
15757             pre-rounding of the values before calling dtoa rather than
15758             relying on dtoa to correctly round, which does not produce
15759             fully accurate results. Hopefully we can address this in the
15760             near future.
15761
15762         * wtf/dtoa.cpp:
15763         (WTF::intPow10):
15764         * wtf/dtoa.h:
15765             intPow10 is used internally by DecimalNumber.
15766             
15767         * wtf/text/WTFString.cpp:
15768         (WTF::copyToString):
15769         (WTF::nanOrInfToString):
15770             Used internally in numberToString for NaN/Infinity handling.
15771         (WTF::numberToString):
15772             Added new method to convert doubles to strings.
15773
15774         * wtf/text/WTFString.h:
15775             Added declaration for numberToString. This is here because
15776             we should switch over to using this for all double to string
15777             conversion in WebCore (see section 2.4.4.3 of the HTML5 spec).
15778
15779 2010-08-24  Oliver Hunt  <oliver@apple.com>
15780
15781         Reviewed by Geoff Garen.
15782
15783         Don't seed the JS random number generator from time()
15784         https://bugs.webkit.org/show_bug.cgi?id=41868
15785         <rdar://problem/8171025>
15786
15787         Switch to using the secure random number generator to
15788         seed the fast random generator, and make the generator
15789         be per global object.
15790
15791         * runtime/JSGlobalData.cpp:
15792         (JSC::JSGlobalData::JSGlobalData):
15793         * runtime/JSGlobalData.h:
15794         * runtime/JSGlobalObject.h:
15795         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
15796         (JSC::JSGlobalObject::weakRandomNumber):
15797         * runtime/MathObject.cpp:
15798         (JSC::mathProtoFuncRandom):
15799
15800 2010-08-24  Oliver Hunt  <oliver@apple.com>
15801
15802         Reviewed by Beth Dakin.
15803
15804         Make overflow guards in UString::utf8 explicit
15805         https://bugs.webkit.org/show_bug.cgi?id=44540
15806
15807         Add an explicit overflow check prior to allocating our buffer,
15808         rather than implicitly relying on the guard in convertUTF16ToUTF8.
15809
15810         * runtime/UString.cpp:
15811         (JSC::UString::utf8):
15812
15813 2010-08-24  Yael Aharon  <yael.aharon@nokia.com>
15814
15815         Reviewed by Simon Hausmann.
15816
15817         [Symbian] Fix commit/decommit of system memory using RChunk
15818
15819         Swap accidentially reversed start and m_base values for determining the
15820         offset within the RChunk.
15821
15822         * wtf/PageReservation.h:
15823         (WTF::PageReservation::systemCommit):
15824         (WTF::PageReservation::systemDecommit):
15825
15826 2010-08-23  Patrick Gansterer  <paroga@paroga.com>
15827
15828         Rubber-stamped by Gabor Loki.
15829
15830         [WINCE] Buildfix for GeneratedJITStubs after r64818
15831         https://bugs.webkit.org/show_bug.cgi?id=44469
15832
15833         Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#".
15834
15835         * jit/JITStubs.cpp:
15836
15837 2010-08-23  Oliver Hunt  <oliver@apple.com>
15838
15839         Reviewed by Darin Adler.
15840
15841         [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition
15842         https://bugs.webkit.org/show_bug.cgi?id=44240
15843         <rdar://problem/8328995>
15844
15845         Fix an error I introduced when cleaning up the interpreter side of the logic
15846         to prevent setters being called in object initialisers.
15847
15848         * interpreter/Interpreter.cpp:
15849         (JSC::Interpreter::privateExecute):
15850
15851 2010-08-23  Michael Saboff  <msaboff@apple.com>
15852
15853         Reviewed by Oliver Hunt.
15854
15855         Fixed case where a single character search string in a string.replace()
15856         did not properly handle back reference replacement.  The fix is to 
15857         check for a '$' as part of the check to see if we can execute the
15858         single character replace optimization.
15859         https://bugs.webkit.org/show_bug.cgi?id=44067
15860
15861         * runtime/StringPrototype.cpp:
15862         (JSC::stringProtoFuncReplace):
15863
15864 2010-08-23  Oliver Hunt  <oliver@apple.com>
15865
15866         Reviewed by Gavin Barraclough.
15867
15868         JSON.stringify is much slower than Firefox on particular pathological input
15869         https://bugs.webkit.org/show_bug.cgi?id=44456
15870
15871         Make StringBuilder::reserveCapacity reserve additional space so we don't end up
15872         repeatedly copying the entire result string.
15873
15874         * runtime/StringBuilder.h:
15875         (JSC::StringBuilder::append):
15876         (JSC::StringBuilder::reserveCapacity):
15877
15878 2010-08-23  Jian Li  <jianli@chromium.org>
15879
15880         Reviewed by Darin Fisher.
15881
15882         Handle blob resource.
15883         https://bugs.webkit.org/show_bug.cgi?id=43941
15884
15885         * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle.
15886
15887 2010-08-19  Andreas Kling  <andreas.kling@nokia.com>
15888
15889         Reviewed by Geoffrey Garen.
15890
15891         JSC: Move the static_cast into to(U)Int32 fast case
15892         https://bugs.webkit.org/show_bug.cgi?id=44037
15893
15894         Do the static_cast<(u)int32_t> inline to avoid the function call overhead
15895         for easily converted values (within (u)int32_t range.)
15896
15897         * runtime/JSValue.cpp:
15898         (JSC::toInt32SlowCase):
15899         (JSC::toUInt32SlowCase):
15900         * runtime/JSValue.h:
15901         (JSC::JSValue::toInt32):
15902         (JSC::JSValue::toUInt32):
15903
15904 2010-08-18  Andreas Kling  <andreas.kling@nokia.com>
15905
15906         Reviewed by Geoffrey Garen.
15907
15908         REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript
15909         https://bugs.webkit.org/show_bug.cgi?id=43742
15910
15911         Add codegen for pow() to return Int32 values when possible.
15912
15913         * jit/ThunkGenerators.cpp:
15914         (JSC::powThunkGenerator):
15915
15916 2010-08-18  Gabor Loki  <loki@webkit.org>
15917
15918         Reviewed by Gavin Barraclough.
15919
15920         The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64
15921         https://bugs.webkit.org/show_bug.cgi?id=43897
15922
15923         A 64 bits wide member in a structure is aligned to 8 bytes on ARM by
15924         default, but this is not taken into account in the offset defines of
15925         JITStackFrame.
15926
15927         * jit/JITStubs.cpp:
15928         * jit/JITStubs.h:
15929
15930 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
15931
15932         Rubber stamped by Sam Weinig.
15933
15934         Rename UString::substr to substringSharingImpl, add to WTF::String.
15935         Now WTF::String can do everything that JSC::UString can do!
15936
15937         * JavaScriptCore.exp:
15938         * bytecode/CodeBlock.cpp:
15939         (JSC::escapeQuotes):
15940         * bytecompiler/NodesCodegen.cpp:
15941         (JSC::substitute):
15942         * parser/SourceProvider.h:
15943         (JSC::UStringSourceProvider::getRange):
15944         * runtime/FunctionPrototype.cpp:
15945         (JSC::insertSemicolonIfNeeded):
15946         * runtime/JSGlobalObjectFunctions.cpp:
15947         (JSC::parseInt):
15948         * runtime/JSONObject.cpp:
15949         (JSC::gap):
15950         (JSC::Stringifier::indent):
15951         (JSC::Stringifier::unindent):
15952         * runtime/JSString.cpp:
15953         (JSC::JSString::replaceCharacter):
15954         * runtime/NumberPrototype.cpp:
15955         (JSC::numberProtoFuncToFixed):
15956         (JSC::numberProtoFuncToPrecision):
15957         * runtime/StringPrototype.cpp:
15958         (JSC::stringProtoFuncReplace):
15959         (JSC::trimString):
15960         * runtime/UString.cpp:
15961         (JSC::UString::substringSharingImpl):
15962         * runtime/UString.h:
15963         * wtf/text/WTFString.cpp:
15964         (WTF::String::substringSharingImpl):
15965         * wtf/text/WTFString.h:
15966
15967 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
15968
15969         Windows build fix.
15970
15971         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15972         * JavaScriptCore.xcodeproj/project.pbxproj:
15973
15974 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
15975
15976         Windows build fix.
15977
15978         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15979         * JavaScriptCore.xcodeproj/project.pbxproj:
15980
15981 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
15982
15983         Reviewed by Sam Weinig.
15984
15985         Bug 44146 - Remove toDouble/toUInt32 methods from UString.
15986
15987         These methods all implement JavaScript language specific behaviour, and as such
15988         are not suited to being on a generic string object.  They are also inefficient
15989         and incorrectly used, refactor & cleanup.  Uses of these methods really divide
15990         out into two cases.
15991
15992         ToNumber:
15993         Uses of toDouble from JSString and from parseFloat are implementing ecma's
15994         ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble
15995         should largely just be moved out to a global jsToNumber function.  ToNumber is
15996         capable of recognizing either decimal or hexadecimal numbers, but parseFloat
15997         should only recognize decimal values.  This is currently handled by testing for
15998         hexadecimal before calling toDouble, which should unnecessary - instead we can
15999         just split out the two parts to the grammar into separate functions. Also,
16000         strtod recognizes a set of literals (nan, inf, and infinity - all with any
16001         capitalization) - which are not defined by any of the specs we are implementing.
16002         To handle this we need to perform additional work in toDouble to convert the
16003         unsupported cases of infinities back to NaNs.  Instead we should simply remove
16004         support for this literals from strtod.  This should provide a more desirable
16005         behaviour for all clients of strtod.
16006
16007         Indexed properties:
16008         Uses of the toStrictUInt32 methods are were all converting property names to
16009         indices, and all uses of toUInt32 were incorrect; in all cases we should have
16010         been calling toUInt32.  This error results in some incorrect behaviour in the
16011         DOM (accessing property "0 " of a NodeList should fail; it currently does not).
16012         Move this method onto Identifier (our canonical property name), and make it
16013         always perform a strict conversion. Add a layout test to check NodeList does
16014         convert indexed property names correctly.
16015
16016         * JavaScriptCore.exp:
16017         * runtime/Arguments.cpp:
16018         (JSC::Arguments::getOwnPropertySlot):
16019         (JSC::Arguments::getOwnPropertyDescriptor):
16020         (JSC::Arguments::put):
16021         (JSC::Arguments::deleteProperty):
16022         * runtime/Identifier.cpp:
16023         (JSC::Identifier::toUInt32):
16024         * runtime/Identifier.h:
16025         (JSC::Identifier::toUInt32):
16026         * runtime/JSArray.cpp:
16027         (JSC::JSArray::getOwnPropertySlot):
16028         (JSC::JSArray::getOwnPropertyDescriptor):
16029         (JSC::JSArray::put):
16030         (JSC::JSArray::deleteProperty):
16031         * runtime/JSArray.h:
16032         (JSC::Identifier::toArrayIndex):
16033         * runtime/JSByteArray.cpp:
16034         (JSC::JSByteArray::getOwnPropertySlot):
16035         (JSC::JSByteArray::getOwnPropertyDescriptor):
16036         (JSC::JSByteArray::put):
16037         * runtime/JSGlobalObjectFunctions.cpp:
16038         (JSC::isInfinity):
16039         (JSC::jsHexIntegerLiteral):
16040         (JSC::jsStrDecimalLiteral):
16041         (JSC::jsToNumber):
16042         (JSC::parseFloat):
16043         * runtime/JSGlobalObjectFunctions.h:
16044         * runtime/JSString.cpp:
16045         (JSC::JSString::getPrimitiveNumber):
16046         (JSC::JSString::toNumber):
16047         (JSC::JSString::getStringPropertyDescriptor):
16048         * runtime/JSString.h:
16049         (JSC::JSString::getStringPropertySlot):
16050         * runtime/ObjectPrototype.cpp:
16051         (JSC::ObjectPrototype::put):
16052         * runtime/StringObject.cpp:
16053         (JSC::StringObject::deleteProperty):
16054         * runtime/UString.cpp:
16055         * runtime/UString.h:
16056         * wtf/dtoa.cpp:
16057         (WTF::strtod):
16058
16059 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
16060
16061         Reviewed by Sam Weinig.
16062
16063         Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find
16064
16065         Bug 44080 introuduced a couple of cases in which array bounds could be overrun.
16066         One of these was fixed in r65493, this patch fixes the other and address the
16067         concerns voiced in comment #6 by restructuring the loops to remove the code
16068         dupliction without introducing an additional if check.
16069
16070         * wtf/text/StringImpl.cpp:
16071         (WTF::StringImpl::find):
16072         (WTF::StringImpl::findIgnoringCase):
16073         (WTF::StringImpl::reverseFind):
16074         (WTF::StringImpl::reverseFindIgnoringCase):
16075
16076 2010-08-17  No'am Rosenthal  <noam.rosenthal@nokia.com>
16077
16078         Reviewed by Ariya Hidayat.
16079
16080         [Qt] Move the accelerated compositing build flag to the right place
16081         https://bugs.webkit.org/show_bug.cgi?id=43882
16082
16083         * wtf/Platform.h:
16084
16085 2010-08-17  Yuta Kitamura  <yutak@chromium.org>
16086
16087         Reviewed by Shinichiro Hamaji.
16088
16089         Avoid uninitialized memory read in StringImpl::find().
16090
16091         REGRESSION(r65468): Crashes in StringImpl::find
16092         https://bugs.webkit.org/show_bug.cgi?id=44099
16093
16094         * wtf/text/StringImpl.cpp:
16095         (WTF::StringImpl::find):
16096
16097 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
16098
16099         Rubber stamped by Sam Weinig
16100
16101         Add VectorTraits to String & DefaultHash traits to UString to unify behaviour.
16102
16103         * runtime/UString.h:
16104         (JSC::UStringHash::hash):
16105         (JSC::UStringHash::equal):
16106         (WTF::):
16107         * wtf/text/WTFString.h:
16108         (WTF::):
16109
16110 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
16111
16112         Rubber stamped by Sam Weinig
16113
16114         Remove unnecessary includes from UString.h, add new includes as necessary.
16115
16116         * profiler/CallIdentifier.h:
16117         * profiler/ProfileNode.h:
16118         * runtime/DateConversion.cpp:
16119         * runtime/Identifier.h:
16120         (JSC::IdentifierRepHash::hash):
16121         * runtime/RegExpCache.h:
16122         * runtime/RegExpKey.h:
16123         * runtime/UString.cpp:
16124         (JSC::UString::substr):
16125         * runtime/UString.h:
16126         * wtf/text/WTFString.h:
16127
16128 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
16129
16130         Reviewed by Sam Weinig
16131
16132         Bug 44080 - String find/reverseFind methods need tidying up
16133         These methods have a couple of problems with their interface, and implementation.
16134
16135         These methods take and int index, and return an int - however this is problematic
16136         since on 64-bit string indices may have a full 32-bit range.  This spills out into
16137         surrounding code, which unsafely casts string indices from unsigned to int. Code
16138         checking the result of these methods check for a mix of "== -1", "< 0", and
16139         "== notFound".  Clean this up by changing these methods to take an unsigned
16140         starting index, and return a size_t. with a failed match indicated by notFound.
16141         reverseFind also has a special meaning for the starting index argument, in that a
16142         negative index is interpreted as an offset back from the end of the string. Remove
16143         this functionality, in the (1!) case where it is used we should just calculate the
16144         offset by subtracting from the string's length.
16145
16146         The implementation has a few problems too.  The code is not in webkit style, in
16147         using assorted abbreviations in variable names, and implementations of similar
16148         find methods with differing argument types were unnecessarily inconsistent. When
16149         find is passed const char* data the string would be handled as latin1 (zero
16150         extended to UTF-16) for all characters but the first; this is sign extended.
16151         Case-insensitive find is broken for unicode strings; the hashing optimization is
16152         not unicode safe, and could result in false negatives.
16153
16154         Unify UString find methods to match String.
16155
16156         * JavaScriptCore.exp:
16157         * bytecode/CodeBlock.cpp:
16158         (JSC::escapeQuotes):
16159         * bytecompiler/NodesCodegen.cpp:
16160         (JSC::substitute):
16161         * runtime/JSString.cpp:
16162         (JSC::JSString::replaceCharacter):
16163         * runtime/RegExp.cpp:
16164         (JSC::RegExp::RegExp):
16165         * runtime/RegExpKey.h:
16166         (JSC::RegExpKey::getFlagsValue):
16167         * runtime/StringPrototype.cpp:
16168         (JSC::substituteBackreferencesSlow):
16169         (JSC::substituteBackreferences):
16170         (JSC::stringProtoFuncReplace):
16171         (JSC::stringProtoFuncIndexOf):
16172         (JSC::stringProtoFuncLastIndexOf):
16173         (JSC::stringProtoFuncSplit):
16174         * runtime/UString.cpp:
16175         * runtime/UString.h:
16176         (JSC::UString::find):
16177         (JSC::UString::reverseFind):
16178         * wtf/text/AtomicString.h:
16179         (WTF::AtomicString::find):
16180         * wtf/text/StringImpl.cpp:
16181         (WTF::StringImpl::find):
16182         (WTF::StringImpl::findCaseInsensitive):
16183         (WTF::StringImpl::reverseFind):
16184         (WTF::StringImpl::reverseFindCaseInsensitive):
16185         (WTF::StringImpl::endsWith):
16186         (WTF::StringImpl::replace):
16187         * wtf/text/StringImpl.h:
16188         (WTF::StringImpl::startsWith):
16189         * wtf/text/WTFString.cpp:
16190         (WTF::String::split):
16191         * wtf/text/WTFString.h:
16192         (WTF::String::find):
16193         (WTF::String::reverseFind):
16194         (WTF::String::findCaseInsensitive):
16195         (WTF::String::reverseFindCaseInsensitive):
16196         (WTF::String::contains):
16197         (WTF::find):
16198         (WTF::reverseFind):
16199
16200 2010-08-16  Kevin Ollivier  <kevino@theolliviers.com>
16201
16202         [wx] Build fix, do not build WebCore as a convenience library as this leads to
16203         errors in the Win build w/export symbols and causes problems with DOM bindings
16204         debugging in gdb. 
16205
16206         * wscript:
16207
16208 2010-08-16  Leandro Pereira  <leandro@profusion.mobi>
16209
16210         [EFL] Build fix after r65366.
16211
16212         * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if
16213         they're empty.
16214         * jsc/CMakeLists.txt: Ditto.
16215         * wtf/CMakeLists.txt: Ditto.
16216
16217 2010-08-15  Kevin Ollivier  <kevino@theolliviers.com>
16218
16219         [wx] Build fix, don't build intermediate source in DerivedSources dir.
16220
16221         * wscript:
16222
16223 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
16224
16225         Reviewed by Kenneth Rohde Christiansen.
16226
16227         [CMake] Add preprocessor detection for generator scripts
16228         https://bugs.webkit.org/show_bug.cgi?id=43984
16229
16230         * CMakeLists.txt:
16231
16232 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
16233
16234         Reviewed by Kenneth Rohde Christiansen.
16235
16236         [CMake] Set target properties only if available
16237         https://bugs.webkit.org/show_bug.cgi?id=43978
16238
16239         * CMakeLists.txt:
16240         * jsc/CMakeLists.txt:
16241         * wtf/CMakeLists.txt:
16242
16243 2010-08-13  Kevin Ollivier  <kevino@theolliviers.com>
16244
16245         [wx] Build fix, add CString to the list of forwards.
16246
16247         * wtf/Forward.h:
16248
16249 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
16250
16251         Windows build fix
16252
16253         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16254
16255 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
16256
16257         Windows build fix
16258
16259         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16260
16261 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
16262
16263         Windows build fix
16264
16265         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16266
16267 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
16268
16269         Rubber stamped by Sam Weinig.
16270         Switch String::/UString::ascii() to return a CString.
16271
16272         * JavaScriptCore.exp:
16273         * JavaScriptCore.xcodeproj/project.pbxproj:
16274         * bytecode/CodeBlock.cpp:
16275         (JSC::CodeBlock::dump):
16276         * bytecode/SamplingTool.cpp:
16277         (JSC::SamplingTool::dump):
16278         * interpreter/CallFrame.cpp:
16279         (JSC::CallFrame::dumpCaller):
16280         * jsc.cpp:
16281         (runWithScripts):
16282         (runInteractive):
16283         * runtime/Identifier.h:
16284         (JSC::Identifier::ascii):
16285         * runtime/ScopeChain.cpp:
16286         (JSC::ScopeChainNode::print):
16287         * runtime/UString.cpp:
16288         (JSC::UString::ascii):
16289         (JSC::UString::latin1):
16290         * runtime/UString.h:
16291         * wtf/text/StringImpl.cpp:
16292         (WTF::StringImpl::asciiOLD):
16293         * wtf/text/StringImpl.h:
16294         * wtf/text/WTFString.cpp:
16295         (WTF::String::ascii):
16296         (WTF::String::latin1):
16297         * wtf/text/WTFString.h:
16298
16299 2010-08-13  Gabor Loki  <loki@webkit.org>
16300
16301         Reviewed by Gavin Barraclough.
16302
16303         Avoid increasing required alignment of target type warning on ARM
16304         https://bugs.webkit.org/show_bug.cgi?id=38045
16305
16306         The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
16307         sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
16308         increases required alignment of target type warnings.
16309         Casting the type of [pointer to Type2] object to void* bypasses the
16310         warning.
16311
16312         * assembler/ARMAssembler.cpp:
16313         (JSC::ARMAssembler::executableCopy):
16314         * assembler/AssemblerBuffer.h:
16315         (JSC::AssemblerBuffer::putShortUnchecked):
16316         (JSC::AssemblerBuffer::putIntUnchecked):
16317         (JSC::AssemblerBuffer::putInt64Unchecked):
16318         * interpreter/RegisterFile.h:
16319         (JSC::RegisterFile::RegisterFile):
16320         (JSC::RegisterFile::grow):
16321         * jit/JITStubs.cpp:
16322         * pcre/pcre_compile.cpp:
16323         (jsRegExpCompile):
16324         * runtime/JSArray.cpp:
16325         (JSC::JSArray::putSlowCase):
16326         (JSC::JSArray::increaseVectorLength):
16327         (JSC::JSArray::increaseVectorPrefixLength):
16328         (JSC::JSArray::shiftCount):
16329         (JSC::JSArray::unshiftCount):
16330         * wtf/FastMalloc.cpp:
16331         (WTF::PageHeapAllocator::New):
16332         (WTF::TCMalloc_Central_FreeList::Populate):
16333         * wtf/MD5.cpp:
16334         (WTF::reverseBytes):
16335         (WTF::MD5::addBytes):
16336         (WTF::MD5::checksum):
16337         * wtf/StdLibExtras.h:
16338         (isPointerTypeAlignmentOkay):
16339         (reinterpret_cast_ptr):
16340         * wtf/Vector.h:
16341         (WTF::VectorBuffer::inlineBuffer):
16342         * wtf/qt/StringQt.cpp:
16343         (WTF::String::String):
16344
16345 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
16346
16347         Reviewed by Sam Weinig
16348
16349         Unify UString::UTF8String() & String::utf8() methods,
16350         remove UString::cost() & make atArrayIndex a free function.
16351
16352         * JavaScriptCore.exp:
16353         * bytecode/CodeBlock.cpp:
16354         (JSC::constantName):
16355         (JSC::idName):
16356         (JSC::CodeBlock::registerName):
16357         (JSC::regexpName):
16358         (JSC::printGlobalResolveInfo):
16359         (JSC::printStructureStubInfo):
16360         (JSC::CodeBlock::printStructure):
16361         (JSC::CodeBlock::printStructures):
16362         * jsc.cpp:
16363         (functionPrint):
16364         (functionDebug):
16365         (runInteractive):
16366         (fillBufferWithContentsOfFile):
16367         * pcre/pcre_exec.cpp:
16368         (Histogram::~Histogram):
16369         * profiler/CallIdentifier.h:
16370         (JSC::CallIdentifier::c_str):
16371         * profiler/Profile.cpp:
16372         (JSC::Profile::debugPrintDataSampleStyle):
16373         * profiler/ProfileGenerator.cpp:
16374         (JSC::ProfileGenerator::willExecute):
16375         (JSC::ProfileGenerator::didExecute):
16376         * profiler/ProfileNode.cpp:
16377         (JSC::ProfileNode::debugPrintData):
16378         (JSC::ProfileNode::debugPrintDataSampleStyle):
16379         * runtime/Arguments.cpp:
16380         (JSC::Arguments::getOwnPropertySlot):
16381         (JSC::Arguments::getOwnPropertyDescriptor):
16382         (JSC::Arguments::put):
16383         (JSC::Arguments::deleteProperty):
16384         * runtime/DateConversion.cpp:
16385         (JSC::parseDate):
16386         * runtime/Identifier.h:
16387         (JSC::Identifier::toStrictUInt32):
16388         * runtime/JSArray.cpp:
16389         (JSC::JSArray::getOwnPropertySlot):
16390         (JSC::JSArray::getOwnPropertyDescriptor):
16391         (JSC::JSArray::put):
16392         (JSC::JSArray::deleteProperty):
16393         * runtime/JSArray.h:
16394         (JSC::toArrayIndex):
16395         * runtime/JSGlobalObjectFunctions.cpp:
16396         (JSC::encode):
16397         (JSC::parseInt):
16398         (JSC::globalFuncJSCPrint):
16399         * runtime/JSString.h:
16400         (JSC::RopeBuilder::JSString):
16401         * runtime/UString.cpp:
16402         (JSC::UString::toDouble):
16403         (JSC::putUTF8Triple):
16404         (JSC::UString::utf8):
16405         * runtime/UString.h:
16406         (JSC::UString::~UString):
16407         (JSC::UString::isNull):
16408         (JSC::UString::isEmpty):
16409         (JSC::UString::impl):
16410         * wtf/text/WTFString.cpp:
16411         (WTF::String::utf8):
16412         * wtf/text/WTFString.h:
16413         (WTF::String::~String):
16414         (WTF::String::swap):
16415         (WTF::String::isNull):
16416         (WTF::String::isEmpty):
16417         (WTF::String::impl):
16418         (WTF::String::length):
16419         (WTF::String::String):
16420         (WTF::String::isHashTableDeletedValue):
16421
16422 2010-08-12  Zoltan Herczeg  <zherczeg@webkit.org>
16423
16424         Reviewed by Gavin Barraclough.
16425
16426         Refactoring the fpu code generator for the ARM port
16427         https://bugs.webkit.org/show_bug.cgi?id=43842
16428
16429         Support up to 32 double precision registers, and the
16430         recent VFP instruction formats. This patch is mainly
16431         a style change which keeps the current functionality.
16432
16433         * assembler/ARMAssembler.h:
16434         (JSC::ARMRegisters::):
16435         (JSC::ARMAssembler::):
16436         (JSC::ARMAssembler::emitInst):
16437         (JSC::ARMAssembler::emitDoublePrecisionInst):
16438         (JSC::ARMAssembler::emitSinglePrecisionInst):
16439         (JSC::ARMAssembler::vadd_f64_r):
16440         (JSC::ARMAssembler::vdiv_f64_r):
16441         (JSC::ARMAssembler::vsub_f64_r):
16442         (JSC::ARMAssembler::vmul_f64_r):
16443         (JSC::ARMAssembler::vcmp_f64_r):
16444         (JSC::ARMAssembler::vsqrt_f64_r):
16445         (JSC::ARMAssembler::vmov_vfp_r):
16446         (JSC::ARMAssembler::vmov_arm_r):
16447         (JSC::ARMAssembler::vcvt_f64_s32_r):
16448         (JSC::ARMAssembler::vcvt_s32_f64_r):
16449         (JSC::ARMAssembler::vmrs_apsr):
16450         * assembler/MacroAssemblerARM.h:
16451         (JSC::MacroAssemblerARM::addDouble):
16452         (JSC::MacroAssemblerARM::divDouble):
16453         (JSC::MacroAssemblerARM::subDouble):
16454         (JSC::MacroAssemblerARM::mulDouble):
16455         (JSC::MacroAssemblerARM::sqrtDouble):
16456         (JSC::MacroAssemblerARM::convertInt32ToDouble):
16457         (JSC::MacroAssemblerARM::branchDouble):
16458         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
16459
16460 2010-08-12  Sheriff Bot  <webkit.review.bot@gmail.com>
16461
16462         Unreviewed, rolling out r65295.
16463         http://trac.webkit.org/changeset/65295
16464         https://bugs.webkit.org/show_bug.cgi?id=43950
16465
16466         It broke 4 sputnik tests (Requested by Ossy on #webkit).
16467
16468         * JavaScriptCore.exp:
16469         * bytecode/CodeBlock.cpp:
16470         (JSC::constantName):
16471         (JSC::idName):
16472         (JSC::CodeBlock::registerName):
16473         (JSC::regexpName):
16474         (JSC::printGlobalResolveInfo):
16475         (JSC::printStructureStubInfo):
16476         (JSC::CodeBlock::printStructure):
16477         (JSC::CodeBlock::printStructures):
16478         * jsc.cpp:
16479         (functionPrint):
16480         (functionDebug):
16481         (runInteractive):
16482         (fillBufferWithContentsOfFile):
16483         * pcre/pcre_exec.cpp:
16484         (Histogram::~Histogram):
16485         * profiler/CallIdentifier.h:
16486         (JSC::CallIdentifier::c_str):
16487         * profiler/Profile.cpp:
16488         (JSC::Profile::debugPrintDataSampleStyle):
16489         * profiler/ProfileGenerator.cpp:
16490         (JSC::ProfileGenerator::willExecute):
16491         (JSC::ProfileGenerator::didExecute):
16492         * profiler/ProfileNode.cpp:
16493         (JSC::ProfileNode::debugPrintData):
16494         (JSC::ProfileNode::debugPrintDataSampleStyle):
16495         * runtime/Arguments.cpp:
16496         (JSC::Arguments::getOwnPropertySlot):
16497         (JSC::Arguments::getOwnPropertyDescriptor):
16498         (JSC::Arguments::put):
16499         (JSC::Arguments::deleteProperty):
16500         * runtime/DateConversion.cpp:
16501         (JSC::parseDate):
16502         * runtime/Identifier.h:
16503         (JSC::Identifier::Identifier):
16504         (JSC::Identifier::toArrayIndex):
16505         * runtime/JSArray.cpp:
16506         (JSC::JSArray::getOwnPropertySlot):
16507         (JSC::JSArray::getOwnPropertyDescriptor):
16508         (JSC::JSArray::put):
16509         (JSC::JSArray::deleteProperty):
16510         * runtime/JSArray.h:
16511         * runtime/JSGlobalObjectFunctions.cpp:
16512         (JSC::encode):
16513         (JSC::parseInt):
16514         (JSC::globalFuncJSCPrint):
16515         * runtime/JSString.h:
16516         (JSC::RopeBuilder::JSString):
16517         * runtime/UString.cpp:
16518         (JSC::UString::toDouble):
16519         (JSC::UString::UTF8String):
16520         * runtime/UString.h:
16521         (JSC::UString::isNull):
16522         (JSC::UString::isEmpty):
16523         (JSC::UString::impl):
16524         (JSC::UString::cost):
16525         (JSC::UString::~UString):
16526         (JSC::UString::toArrayIndex):
16527         * wtf/text/WTFString.cpp:
16528         (WTF::String::utf8):
16529         * wtf/text/WTFString.h:
16530         (WTF::String::String):
16531         (WTF::String::isHashTableDeletedValue):
16532         (WTF::String::length):
16533         (WTF::String::operator[]):
16534         (WTF::String::isNull):
16535         (WTF::String::isEmpty):
16536         (WTF::String::impl):
16537
16538 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
16539
16540         Windows build fix.
16541
16542         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16543
16544 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
16545
16546         Reviewed by Sam Weinig
16547
16548         Unify UString::UTF8String() & String::utf8() methods,
16549         remove UString::cost() & make atArrayIndex a free function.
16550
16551         * JavaScriptCore.exp:
16552         * bytecode/CodeBlock.cpp:
16553         (JSC::constantName):
16554         (JSC::idName):
16555         (JSC::CodeBlock::registerName):
16556         (JSC::regexpName):
16557         (JSC::printGlobalResolveInfo):
16558         (JSC::printStructureStubInfo):
16559         (JSC::CodeBlock::printStructure):
16560         (JSC::CodeBlock::printStructures):
16561         * jsc.cpp:
16562         (functionPrint):
16563         (functionDebug):
16564         (runInteractive):
16565         (fillBufferWithContentsOfFile):
16566         * pcre/pcre_exec.cpp:
16567         (Histogram::~Histogram):
16568         * profiler/CallIdentifier.h:
16569         (JSC::CallIdentifier::c_str):
16570         * profiler/Profile.cpp:
16571         (JSC::Profile::debugPrintDataSampleStyle):
16572         * profiler/ProfileGenerator.cpp:
16573         (JSC::ProfileGenerator::willExecute):
16574         (JSC::ProfileGenerator::didExecute):
16575         * profiler/ProfileNode.cpp:
16576         (JSC::ProfileNode::debugPrintData):
16577         (JSC::ProfileNode::debugPrintDataSampleStyle):
16578         * runtime/Arguments.cpp:
16579         (JSC::Arguments::getOwnPropertySlot):
16580         (JSC::Arguments::getOwnPropertyDescriptor):
16581         (JSC::Arguments::put):
16582         (JSC::Arguments::deleteProperty):
16583         * runtime/DateConversion.cpp:
16584         (JSC::parseDate):
16585         * runtime/Identifier.h:
16586         (JSC::Identifier::toStrictUInt32):
16587         * runtime/JSArray.cpp:
16588         (JSC::JSArray::getOwnPropertySlot):
16589         (JSC::JSArray::getOwnPropertyDescriptor):
16590         (JSC::JSArray::put):
16591         (JSC::JSArray::deleteProperty):
16592         * runtime/JSArray.h:
16593         (JSC::toArrayIndex):
16594         * runtime/JSGlobalObjectFunctions.cpp:
16595         (JSC::encode):
16596         (JSC::parseInt):
16597         (JSC::globalFuncJSCPrint):
16598         * runtime/JSString.h:
16599         (JSC::RopeBuilder::JSString):
16600         * runtime/UString.cpp:
16601         (JSC::UString::toDouble):
16602         (JSC::putUTF8Triple):
16603         (JSC::UString::utf8):
16604         * runtime/UString.h:
16605         (JSC::UString::~UString):
16606         (JSC::UString::isNull):
16607         (JSC::UString::isEmpty):
16608         (JSC::UString::impl):
16609         * wtf/text/WTFString.cpp:
16610         (WTF::String::utf8):
16611         * wtf/text/WTFString.h:
16612         (WTF::String::~String):
16613         (WTF::String::swap):
16614         (WTF::String::isNull):
16615         (WTF::String::isEmpty):
16616         (WTF::String::impl):
16617         (WTF::String::length):
16618         (WTF::String::String):
16619         (WTF::String::isHashTableDeletedValue):
16620
16621 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
16622
16623         Eeerk! - revert accidentally committed changes in UString!
16624
16625         * JavaScriptCore.exp:
16626         * runtime/UString.cpp:
16627         (JSC::UString::UString):
16628         * runtime/UString.h:
16629
16630 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
16631
16632         Reviewed by Sam Weinig
16633
16634         Change UString constructors to match those in WTF::String.
16635         This changes behaviour of UString((char*)0) to create null
16636         strings, akin to UString() rather than UString::empty().
16637         (This matches String).  Remove unused constructors from
16638         UString, and add null-terminated UTF-16 constructor, to
16639         match String.  Move String's constructor into the .cpp to
16640         match UString.
16641
16642         * JavaScriptCore.exp:
16643         * debugger/DebuggerCallFrame.cpp:
16644         (JSC::DebuggerCallFrame::calculatedFunctionName):
16645         * runtime/RegExpKey.h:
16646         (JSC::RegExpKey::RegExpKey):
16647         * runtime/SmallStrings.cpp:
16648         (JSC::SmallStrings::createSingleCharacterString):
16649         * runtime/UString.cpp:
16650         (JSC::UString::UString):
16651         * runtime/UString.h:
16652         (JSC::UString::UString):
16653         (JSC::UString::swap):
16654         (JSC::UString::adopt):
16655         (JSC::UString::operator[]):
16656         * wtf/text/WTFString.h:
16657         (WTF::String::String):
16658         (WTF::String::adopt):
16659         (WTF::String::operator[]):
16660
16661 2010-08-12  David Levin  <levin@chromium.org>
16662
16663         Reviewed by NOBODY (build fix).
16664
16665         * runtime/UString.h: Removed unneccessary #include.
16666
16667 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
16668
16669         Reviewed by Sam Weinig
16670
16671         Revert changes to ALWAYS_INLINEness of a couple of functions in UString.
16672         This appears to have degraded performance.
16673
16674         * runtime/UString.cpp:
16675         (JSC::UString::ascii):
16676         * runtime/UString.h:
16677         (JSC::UString::length):
16678         (JSC::UString::isEmpty):
16679         (JSC::UString::~UString):
16680
16681 2010-08-12  Csaba Osztrogonác  <ossy@webkit.org>
16682
16683         Reviewed by Antonio Gomes.
16684
16685         [Qt] Fix warnings: unknown conversion type character 'l' in format
16686         https://bugs.webkit.org/show_bug.cgi?id=43359
16687
16688         Qt port doesn't call any printf in String::format(...), consequently
16689         using __attribute__((format(printf,m,n))) is incorrect and causes
16690         false positive warnings on Windows if you build with MinGW.
16691
16692         Qt port calls QString::vsprintf(...) , which is platform
16693         independent, and handles %lli, %llu and %llx on all platforms.
16694         (http://trac.webkit.org/changeset/35712)
16695
16696         * wtf/text/WTFString.h:
16697
16698 2010-08-12  Gabor Loki  <loki@webkit.org>
16699
16700         Reviewed by Geoffrey Garen.
16701
16702         Fix the array subscript is above array bounds warning in ByteArray on ARM.
16703         https://bugs.webkit.org/show_bug.cgi?id=43358
16704
16705         The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861
16706
16707         * wtf/ByteArray.cpp:
16708         (WTF::ByteArray::create):
16709
16710 2010-08-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
16711
16712         Reviewed by Martin Robinson.
16713
16714         [GTK] Use GSettings to save/restore Web Inspector settings
16715         https://bugs.webkit.org/show_bug.cgi?id=43512
16716
16717         * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our
16718         GSettings support.
16719         (WTF::refGPtr):
16720         (WTF::derefGPtr):
16721         * wtf/gobject/GRefPtr.h:
16722
16723 2010-08-12  Gabor Loki  <loki@webkit.org>
16724
16725         Reviewed by Simon Hausmann.
16726
16727         The scratch register should be saved in YARR with ARM JIT
16728         https://bugs.webkit.org/show_bug.cgi?id=43910
16729
16730         Reported by Jocelyn Turcotte.
16731
16732         * yarr/RegexJIT.cpp:
16733         (JSC::Yarr::RegexGenerator::generateEnter):
16734         (JSC::Yarr::RegexGenerator::generateReturn):
16735
16736 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
16737
16738         Windows build fix.
16739
16740         * JavaScriptCore.xcodeproj/project.pbxproj:
16741         * wtf/Forward.h:
16742
16743 2010-08-11  Leo Yang  <leo.yang@torchmobile.com.cn>
16744
16745         Reviewed by Geoffrey Garen.
16746
16747         Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date,
16748         which means isNaN(new Date("")) should return true.
16749         https://bugs.webkit.org/show_bug.cgi?id=43793
16750         Tests: fast/js/date-constructor.html
16751
16752         * runtime/JSGlobalData.cpp:
16753         (JSC::JSGlobalData::resetDateCache):
16754
16755 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
16756
16757         Windows & !JIT build fix.
16758
16759         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16760         * JavaScriptCore.xcodeproj/project.pbxproj:
16761         * runtime/RegExp.cpp:
16762         (JSC::RegExp::match):
16763
16764 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
16765
16766         Rubber stamp by sam weinig
16767
16768         Touch a file to stop the bot rolling a bit change out!
16769
16770         * runtime/UString.cpp:
16771         (JSC::UString::ascii):
16772
16773 2010-08-11  Kevin Ollivier  <kevino@theolliviers.com>
16774
16775         [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards.
16776
16777         * wtf/Forward.h:
16778
16779 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
16780
16781         Rubber stamps by Darin Adler & Sam Weinig.
16782
16783         Bug 43867 - Some UString cleanup
16784
16785         Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String.
16786         Move string concatenation methods to a new header to simplify down UString.h.  Remove is8Bit().
16787
16788         * API/JSClassRef.cpp:
16789         (OpaqueJSClass::~OpaqueJSClass):
16790         (OpaqueJSClass::className):
16791         * API/OpaqueJSString.cpp:
16792         (OpaqueJSString::create):
16793         * JavaScriptCore.exp:
16794         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16795         * JavaScriptCore.xcodeproj/project.pbxproj:
16796         * bytecode/CodeBlock.cpp:
16797         (JSC::constantName):
16798         (JSC::idName):
16799         (JSC::CodeBlock::registerName):
16800         (JSC::regexpName):
16801         * bytecode/EvalCodeCache.h:
16802         (JSC::EvalCodeCache::get):
16803         * bytecompiler/NodesCodegen.cpp:
16804         (JSC::ResolveNode::emitBytecode):
16805         (JSC::FunctionCallResolveNode::emitBytecode):
16806         (JSC::ReadModifyResolveNode::emitBytecode):
16807         (JSC::processClauseList):
16808         * parser/ASTBuilder.h:
16809         (JSC::ASTBuilder::createRegex):
16810         * parser/ParserArena.h:
16811         (JSC::IdentifierArena::makeNumericIdentifier):
16812         * parser/SourceProvider.h:
16813         (JSC::UStringSourceProvider::data):
16814         (JSC::UStringSourceProvider::length):
16815         * profiler/Profiler.cpp:
16816         * runtime/Arguments.cpp:
16817         (JSC::Arguments::getOwnPropertySlot):
16818         (JSC::Arguments::getOwnPropertyNames):
16819         (JSC::Arguments::put):
16820         (JSC::Arguments::deleteProperty):
16821         * runtime/ArrayPrototype.cpp:
16822         (JSC::arrayProtoFuncToString):
16823         * runtime/DatePrototype.cpp:
16824         (JSC::formatLocaleDate):
16825         * runtime/ExceptionHelpers.cpp:
16826         * runtime/FunctionConstructor.cpp:
16827         * runtime/FunctionPrototype.cpp:
16828         (JSC::insertSemicolonIfNeeded):
16829         * runtime/Identifier.h:
16830         (JSC::Identifier::characters):
16831         (JSC::Identifier::length):
16832         * runtime/JSGlobalObjectFunctions.cpp:
16833         (JSC::decode):
16834         (JSC::parseInt):
16835         (JSC::parseFloat):
16836         (JSC::globalFuncEscape):
16837         (JSC::globalFuncUnescape):
16838         * runtime/JSNumberCell.cpp:
16839         (JSC::JSNumberCell::toString):
16840         * runtime/JSONObject.cpp:
16841         (JSC::gap):
16842         (JSC::Stringifier::appendQuotedString):
16843         (JSC::Stringifier::appendStringifiedValue):
16844         (JSC::Stringifier::indent):
16845         (JSC::Stringifier::unindent):
16846         (JSC::Walker::walk):
16847         * runtime/JSString.cpp:
16848         (JSC::JSString::replaceCharacter):
16849         (JSC::JSString::getIndexSlowCase):
16850         * runtime/JSString.h:
16851         (JSC::RopeBuilder::JSString):
16852         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
16853         (JSC::RopeBuilder::fiberCount):
16854         (JSC::jsSingleCharacterSubstring):
16855         (JSC::jsNontrivialString):
16856         (JSC::JSString::getIndex):
16857         (JSC::jsString):
16858         (JSC::jsStringWithFinalizer):
16859         (JSC::jsSubstring):
16860         (JSC::jsOwnedString):
16861         * runtime/JSStringBuilder.h:
16862         (JSC::JSStringBuilder::append):
16863         * runtime/LiteralParser.h:
16864         (JSC::LiteralParser::Lexer::Lexer):
16865         * runtime/NumberPrototype.cpp:
16866         (JSC::numberProtoFuncToString):
16867         (JSC::numberProtoFuncToFixed):
16868         (JSC::numberProtoFuncToExponential):
16869         (JSC::numberProtoFuncToPrecision):
16870         * runtime/NumericStrings.h:
16871         (JSC::NumericStrings::add):
16872         (JSC::NumericStrings::lookupSmallString):
16873         * runtime/Operations.h:
16874         (JSC::jsString):
16875         * runtime/RegExp.cpp:
16876         (JSC::RegExp::match):
16877         * runtime/RegExpCache.cpp:
16878         (JSC::RegExpCache::lookupOrCreate):
16879         (JSC::RegExpCache::create):
16880         * runtime/RegExpConstructor.cpp:
16881         (JSC::RegExpConstructor::getRightContext):
16882         * runtime/RegExpObject.cpp:
16883         (JSC::RegExpObject::match):
16884         * runtime/RegExpPrototype.cpp:
16885         (JSC::regExpProtoFuncToString):
16886         * runtime/StringBuilder.h:
16887         (JSC::StringBuilder::append):
16888         * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h.
16889         (JSC::):
16890         (JSC::sumWithOverflow):
16891         (JSC::tryMakeString):
16892         (JSC::makeString):
16893         * runtime/StringObject.cpp:
16894         (JSC::StringObject::getOwnPropertyNames):
16895         * runtime/StringPrototype.cpp:
16896         (JSC::substituteBackreferencesSlow):
16897         (JSC::localeCompare):
16898         (JSC::jsSpliceSubstringsWithSeparators):
16899         (JSC::stringProtoFuncReplace):
16900         (JSC::stringProtoFuncCharAt):
16901         (JSC::stringProtoFuncCharCodeAt):
16902         (JSC::stringProtoFuncIndexOf):
16903         (JSC::stringProtoFuncLastIndexOf):
16904         (JSC::stringProtoFuncSlice):
16905         (JSC::stringProtoFuncSplit):
16906         (JSC::stringProtoFuncSubstr):
16907         (JSC::stringProtoFuncSubstring):
16908         (JSC::stringProtoFuncToLowerCase):
16909         (JSC::stringProtoFuncToUpperCase):
16910         (JSC::stringProtoFuncFontsize):
16911         (JSC::stringProtoFuncLink):
16912         (JSC::trimString):
16913         * runtime/UString.cpp:
16914         (JSC::UString::number):
16915         (JSC::UString::ascii):
16916         (JSC::UString::operator[]):
16917         (JSC::UString::toDouble):
16918         (JSC::UString::find):
16919         (JSC::UString::rfind):
16920         (JSC::UString::substr):
16921         (JSC::operator==):
16922         (JSC::operator<):
16923         (JSC::operator>):
16924         (JSC::UString::UTF8String):
16925         * runtime/UString.h:
16926         (JSC::UString::UString):
16927         (JSC::UString::adopt):
16928         (JSC::UString::length):
16929         (JSC::UString::characters):
16930         (JSC::UString::isNull):
16931         (JSC::UString::isEmpty):
16932         (JSC::UString::impl):
16933         (JSC::UString::cost):
16934         (JSC::operator==):
16935         (JSC::operator!=):
16936         (JSC::codePointCompare):
16937         (JSC::UString::toArrayIndex):
16938         (JSC::IdentifierRepHash::hash):
16939         (WTF::):
16940         * yarr/RegexJIT.cpp:
16941         (JSC::Yarr::jitCompileRegex):
16942         * yarr/RegexParser.h:
16943         (JSC::Yarr::Parser::Parser):
16944
16945 2010-08-11  Gabor Loki  <loki@webkit.org>
16946
16947         Qt build fix (ARMv7).
16948
16949         Fix invalid conversion from int to Condition.
16950         Add ARMv7Assembler.cpp to JavaScriptCore.pro.
16951
16952         * JavaScriptCore.pro:
16953         * assembler/ARMv7Assembler.h:
16954         (JSC::ARMv7Assembler::):
16955         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
16956
16957 2010-08-11  Nathan Lawrence  <nlawrence@apple.com>
16958
16959         Reviewed by Geoffrey Garen.
16960
16961         At collection time, we frequently want to mark a cell, while checking
16962         whether it was originally checked.  Previously, this was a get
16963         operation follwed by a set operation.  Fusing the two saves
16964         computation and gives a 0.5% sunspider speedup.
16965
16966         * runtime/Collector.h:
16967         (JSC::CollectorBitmap::getset):
16968         (JSC::Heap::checkMarkCell):
16969         * runtime/JSArray.h:
16970         (JSC::MarkStack::drain):
16971         * runtime/JSCell.h:
16972         (JSC::MarkStack::append):
16973
16974 2010-08-11  Steve Falkenburg  <sfalken@apple.com>
16975
16976         Reviewed by Adam Roben.
16977
16978         Improve vsprops copying for Windows build
16979         https://bugs.webkit.org/show_bug.cgi?id=41982
16980
16981         When we detect a new SDK, always copy a new set of vsprops files.
16982         Previously, if someone updated their SDK after updating their sources,
16983         they could end up with out-of-date vsprops files.
16984
16985         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
16986
16987 2010-08-10  Darin Adler  <darin@apple.com>
16988
16989         Reviewed by Sam Weinig.
16990
16991         Add leakRef and clear to all RefPtr variants
16992         https://bugs.webkit.org/show_bug.cgi?id=42389
16993
16994         * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do
16995         "template<...>". We should probably put this in the style guide and do it
16996         consitently. Fixed other minor style issues. Defined many of the inlined
16997         functions outside the class definition, to avoid style checker warnings
16998         about multiple statements on a single line and for slightly better clarity
16999         of the class definition itself. Renamed releaseRef to leakRef. Added a
17000         releaseRef that calls leakRef so we don't have to rename all callers oat
17001         once. Added a clear function.
17002
17003         * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef.
17004 n
17005         * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do
17006         "template<...>". Tidied up declarations and comments a bit.
17007          Changed all uses of releaseRef to leakRef.
17008
17009         * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do
17010         "template<...>". Defined many of the inlined functions outside the class
17011         definition, to avoid style checker warnings about multiple statements on
17012         a single line and for slightly better clarity of the class definition itself.
17013         Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we
17014         don't have to rename all callers at once. Added a clear function.
17015
17016 2010-08-10  Dumitru Daniliuc  <dumi@chromium.org>
17017
17018         Unreviewed, reverting an unintentional change to a file submitted in r65108.
17019
17020         * bytecode/CodeBlock.h:
17021         (JSC::binaryChop):
17022
17023 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
17024
17025         Rubber stamped by Sam Weinig
17026
17027         Bug 43817 - Remove UString::Rep
17028         UString::Rep has for a long time been replaced by UStringImpl (Rep
17029         remaining as a typedef).  UStringImpl has since been removed too
17030         (unified with StringImpl). Remove Rep, rename rep() to impl() and
17031         m_rep to m_impl.  Also add impl() method to Identifier, and rename
17032         its UString member from _ustring to m_string.
17033
17034         * API/JSCallbackObject.h:
17035         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
17036         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
17037         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
17038         * API/JSCallbackObjectFunctions.h:
17039         (JSC::::getOwnPropertySlot):
17040         (JSC::::put):
17041         (JSC::::deleteProperty):
17042         (JSC::::getOwnPropertyNames):
17043         (JSC::::staticValueGetter):
17044         (JSC::::staticFunctionGetter):
17045         * API/JSClassRef.cpp:
17046         (tryCreateStringFromUTF8):
17047         (OpaqueJSClass::OpaqueJSClass):
17048         (OpaqueJSClass::~OpaqueJSClass):
17049         (OpaqueJSClassContextData::OpaqueJSClassContextData):
17050         * API/JSClassRef.h:
17051         * API/OpaqueJSString.cpp:
17052         (OpaqueJSString::ustring):
17053         * bytecode/EvalCodeCache.h:
17054         (JSC::EvalCodeCache::get):
17055         * bytecode/JumpTable.h:
17056         (JSC::StringJumpTable::offsetForValue):
17057         (JSC::StringJumpTable::ctiForValue):
17058         * bytecompiler/BytecodeGenerator.cpp:
17059         (JSC::BytecodeGenerator::addVar):
17060         (JSC::BytecodeGenerator::addGlobalVar):
17061         (JSC::BytecodeGenerator::BytecodeGenerator):
17062         (JSC::BytecodeGenerator::addParameter):
17063         (JSC::BytecodeGenerator::registerFor):
17064         (JSC::BytecodeGenerator::willResolveToArguments):
17065         (JSC::BytecodeGenerator::uncheckedRegisterForArguments):
17066         (JSC::BytecodeGenerator::constRegisterFor):
17067         (JSC::BytecodeGenerator::isLocal):
17068         (JSC::BytecodeGenerator::isLocalConstant):
17069         (JSC::BytecodeGenerator::addConstant):
17070         (JSC::BytecodeGenerator::emitLoad):
17071         (JSC::BytecodeGenerator::findScopedProperty):
17072         (JSC::keyForCharacterSwitch):
17073         (JSC::prepareJumpTableForStringSwitch):
17074         * bytecompiler/BytecodeGenerator.h:
17075         * bytecompiler/NodesCodegen.cpp:
17076         (JSC::processClauseList):
17077         * interpreter/Interpreter.cpp:
17078         (JSC::Interpreter::privateExecute):
17079         * jit/JITStubs.cpp:
17080         (JSC::DEFINE_STUB_FUNCTION):
17081         * parser/JSParser.cpp:
17082         (JSC::JSParser::parseStrictObjectLiteral):
17083         * pcre/pcre_exec.cpp:
17084         (Histogram::add):
17085         * profiler/CallIdentifier.h:
17086         (JSC::CallIdentifier::Hash::hash):
17087         * profiler/Profile.cpp:
17088         * profiler/ProfileNode.cpp:
17089         (JSC::ProfileNode::debugPrintDataSampleStyle):
17090         * profiler/ProfileNode.h:
17091         * runtime/ArrayPrototype.cpp:
17092         (JSC::arrayProtoFuncToString):
17093         * runtime/Identifier.cpp:
17094         (JSC::Identifier::equal):
17095         (JSC::IdentifierCStringTranslator::hash):
17096         (JSC::IdentifierCStringTranslator::equal):
17097         (JSC::IdentifierCStringTranslator::translate):
17098         (JSC::Identifier::add):
17099         (JSC::IdentifierUCharBufferTranslator::hash):
17100         (JSC::IdentifierUCharBufferTranslator::equal):
17101         (JSC::IdentifierUCharBufferTranslator::translate):
17102         (JSC::Identifier::addSlowCase):
17103         * runtime/Identifier.h:
17104         (JSC::Identifier::Identifier):
17105         (JSC::Identifier::ustring):
17106         (JSC::Identifier::impl):
17107         (JSC::Identifier::data):
17108         (JSC::Identifier::size):
17109         (JSC::Identifier::ascii):
17110         (JSC::Identifier::isNull):
17111         (JSC::Identifier::isEmpty):
17112         (JSC::Identifier::toUInt32):
17113         (JSC::Identifier::toStrictUInt32):
17114         (JSC::Identifier::toArrayIndex):
17115         (JSC::Identifier::toDouble):
17116         (JSC::Identifier::equal):
17117         (JSC::Identifier::add):
17118         * runtime/InitializeThreading.cpp:
17119         (JSC::initializeThreadingOnce):
17120         * runtime/InternalFunction.cpp:
17121         (JSC::InternalFunction::displayName):
17122         * runtime/JSFunction.cpp:
17123         (JSC::JSFunction::displayName):
17124         * runtime/JSGlobalObject.h:
17125         (JSC::JSGlobalObject::addStaticGlobals):
17126         * runtime/JSStaticScopeObject.h:
17127         (JSC::JSStaticScopeObject::JSStaticScopeObject):
17128         * runtime/JSString.h:
17129         (JSC::):
17130         (JSC::RopeBuilder::appendStringInConstruct):
17131         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
17132         (JSC::jsSingleCharacterSubstring):
17133         (JSC::jsSubstring):
17134         * runtime/JSVariableObject.cpp:
17135         (JSC::JSVariableObject::deleteProperty):
17136         (JSC::JSVariableObject::symbolTableGet):
17137         * runtime/JSVariableObject.h:
17138         (JSC::JSVariableObject::symbolTableGet):
17139         (JSC::JSVariableObject::symbolTablePut):
17140         (JSC::JSVariableObject::symbolTablePutWithAttributes):
17141         * runtime/Lookup.cpp:
17142         (JSC::HashTable::createTable):
17143         (JSC::HashTable::deleteTable):
17144         * runtime/Lookup.h:
17145         (JSC::HashEntry::initialize):
17146         (JSC::HashEntry::setKey):
17147         (JSC::HashEntry::key):
17148         (JSC::HashTable::entry):
17149         * runtime/PropertyMapHashTable.h:
17150         (JSC::PropertyMapEntry::PropertyMapEntry):
17151         * runtime/PropertyNameArray.cpp:
17152         (JSC::PropertyNameArray::add):
17153         * runtime/PropertyNameArray.h:
17154         (JSC::PropertyNameArray::add):
17155         (JSC::PropertyNameArray::addKnownUnique):
17156         * runtime/RegExp.cpp:
17157         (JSC::RegExp::match):
17158         * runtime/RegExpCache.cpp:
17159         (JSC::RegExpCache::create):
17160         * runtime/RegExpKey.h:
17161         (JSC::RegExpKey::RegExpKey):
17162         * runtime/SmallStrings.cpp:
17163         (JSC::SmallStringsStorage::rep):
17164         (JSC::SmallStrings::singleCharacterStringRep):
17165         * runtime/SmallStrings.h:
17166         * runtime/StringPrototype.cpp:
17167         (JSC::jsSpliceSubstringsWithSeparators):
17168         (JSC::stringProtoFuncMatch):
17169         (JSC::stringProtoFuncSearch):
17170         * runtime/Structure.cpp:
17171         (JSC::Structure::~Structure):
17172         (JSC::Structure::despecifyDictionaryFunction):
17173         (JSC::Structure::addPropertyTransitionToExistingStructure):
17174         (JSC::Structure::addPropertyTransition):
17175         (JSC::Structure::copyPropertyTable):
17176         (JSC::Structure::get):
17177         (JSC::Structure::despecifyFunction):
17178         (JSC::Structure::put):
17179         (JSC::Structure::hasTransition):
17180         (JSC::Structure::remove):
17181         (JSC::Structure::checkConsistency):
17182         * runtime/Structure.h:
17183         (JSC::Structure::get):
17184         (JSC::Structure::hasTransition):
17185         * runtime/StructureTransitionTable.h:
17186         * runtime/SymbolTable.h:
17187         * runtime/UString.cpp:
17188         (JSC::UString::UString):
17189         (JSC::UString::toStrictUInt32):
17190         (JSC::UString::substr):
17191         * runtime/UString.h:
17192         (JSC::UString::UString):
17193         (JSC::UString::adopt):
17194         (JSC::UString::data):
17195         (JSC::UString::size):
17196         (JSC::UString::isNull):
17197         (JSC::UString::isEmpty):
17198         (JSC::UString::impl):
17199         (JSC::UString::cost):
17200         (JSC::operator==):
17201         (JSC::codePointCompare):
17202         (JSC::IdentifierRepHash::hash):
17203         (WTF::):
17204
17205 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
17206
17207         Bug 43816 - Remove UStringImpl
17208         The class was actually removed a long time ago, replaced by StringImpl.
17209         UStringImpl is just a typedef onto StringImpl.  Remove this.
17210
17211         * API/JSClassRef.cpp:
17212         (OpaqueJSClass::OpaqueJSClass):
17213         * JavaScriptCore.xcodeproj/project.pbxproj:
17214         * runtime/JSString.cpp:
17215         (JSC::JSString::resolveRope):
17216         (JSC::JSString::replaceCharacter):
17217         * runtime/JSString.h:
17218         (JSC::RopeBuilder::RopeIterator::operator*):
17219         (JSC::RopeBuilder::JSString):
17220         (JSC::RopeBuilder::appendStringInConstruct):
17221         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
17222         (JSC::jsSingleCharacterSubstring):
17223         (JSC::jsSubstring):
17224         * runtime/JSStringBuilder.h:
17225         (JSC::jsMakeNontrivialString):
17226         * runtime/RopeImpl.cpp:
17227         (JSC::RopeImpl::derefFibersNonRecursive):
17228         * runtime/RopeImpl.h:
17229         (JSC::RopeImpl::deref):
17230         * runtime/SmallStrings.cpp:
17231         (JSC::SmallStringsStorage::SmallStringsStorage):
17232         * runtime/StringConstructor.cpp:
17233         (JSC::stringFromCharCodeSlowCase):
17234         * runtime/StringPrototype.cpp:
17235         (JSC::jsSpliceSubstringsWithSeparators):
17236         (JSC::stringProtoFuncFontsize):
17237         (JSC::stringProtoFuncLink):
17238         * runtime/UString.cpp:
17239         (JSC::initializeUString):
17240         * runtime/UString.h:
17241         (JSC::UString::adopt):
17242         (JSC::tryMakeString):
17243         (JSC::makeString):
17244         * runtime/UStringImpl.h: Removed.
17245
17246 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
17247
17248         Reviewed by Eric Seidel.
17249
17250         Make FastMalloc more portable.
17251         https://bugs.webkit.org/show_bug.cgi?id=41790
17252
17253         * wtf/FastMalloc.cpp:
17254         (WTF::TCMalloc_Central_FreeList::Populate):
17255         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
17256
17257 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
17258
17259         Reviewed by David Levin.
17260
17261         [WINCE] Buildfix for CE 6.0
17262         https://bugs.webkit.org/show_bug.cgi?id=43027
17263
17264         CE 6.0 doesn't define localtime in the system include files.
17265
17266         * wtf/Platform.h: Include ce_time.h on all OS(WINCE).
17267
17268 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
17269
17270         Rubber stamped by Sam Weinig.
17271
17272         Bug 43786 - Move AtomicStringHash from WebCore to WTF
17273         Also remove deprecated string headers from WebCore/platform/text.
17274
17275         * GNUmakefile.am:
17276         * JavaScriptCore.gypi:
17277         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
17278         * JavaScriptCore.xcodeproj/project.pbxproj:
17279         * wtf/text/AtomicString.h:
17280         * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h.
17281
17282 2010-08-09  Oliver Hunt  <oliver@apple.com>
17283
17284         Fix Qt/ARM again, this time including the other changed file.
17285
17286         * jit/JIT.h:
17287
17288 2010-08-09  Oliver Hunt  <oliver@apple.com>
17289
17290         Fix Qt/ARM
17291
17292         C++ overload resolution I stab at thee
17293
17294         * jit/JITInlineMethods.h:
17295         (JSC::JIT::beginUninterruptedSequence):
17296         (JSC::JIT::endUninterruptedSequence):
17297
17298 2010-08-09  Oliver Hunt  <oliver@apple.com>
17299
17300         Reviewed by Gavin Barraclough.
17301
17302         Allow an assembler/macroassembler to compact branches to more concise forms when linking
17303         https://bugs.webkit.org/show_bug.cgi?id=43745
17304
17305         This patch makes it possible for an assembler to convert jumps into a different
17306         (presumably more efficient) form at link time.  Currently implemented in the
17307         ARMv7 JIT as that already had logic to delay linking of jumps until the end of
17308         compilation already.  The ARMv7 JIT chooses between either a 4 byte short jump
17309         or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does
17310         not yet produce the most compact form possible.  The general design of the linker
17311         should make it relatively simple to introduce new branch types with little effort,
17312         as the linker has no knowledge of the exact form of any of the branches.
17313
17314         * JavaScriptCore.xcodeproj/project.pbxproj:
17315         * assembler/ARMv7Assembler.cpp: Added.
17316         (JSC::):
17317           Record jump sizes
17318
17319         * assembler/ARMv7Assembler.h:
17320         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
17321         (JSC::ARMv7Assembler::LinkRecord::from):
17322         (JSC::ARMv7Assembler::LinkRecord::setFrom):
17323         (JSC::ARMv7Assembler::LinkRecord::to):
17324         (JSC::ARMv7Assembler::LinkRecord::type):
17325         (JSC::ARMv7Assembler::LinkRecord::linkType):
17326         (JSC::ARMv7Assembler::LinkRecord::setLinkType):
17327           Encapsulate LinkRecord fields so we can compress the values somewhat
17328
17329         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
17330           Need to record the jump type now
17331
17332         (JSC::ARMv7Assembler::b):
17333         (JSC::ARMv7Assembler::blx):
17334         (JSC::ARMv7Assembler::bx):
17335           Need to pass the jump types
17336
17337         (JSC::ARMv7Assembler::executableOffsetFor):
17338         (JSC::ARMv7Assembler::jumpSizeDelta):
17339         (JSC::ARMv7Assembler::linkRecordSourceComparator):
17340         (JSC::ARMv7Assembler::computeJumpType):
17341         (JSC::ARMv7Assembler::convertJumpTo):
17342         (JSC::ARMv7Assembler::recordLinkOffsets):
17343         (JSC::ARMv7Assembler::jumpsToLink):
17344         (JSC::ARMv7Assembler::link):
17345         (JSC::ARMv7Assembler::unlinkedCode):
17346           Helper functions for the linker
17347
17348         (JSC::ARMv7Assembler::linkJump):
17349         (JSC::ARMv7Assembler::canBeShortJump):
17350         (JSC::ARMv7Assembler::linkLongJump):
17351         (JSC::ARMv7Assembler::linkShortJump):
17352         (JSC::ARMv7Assembler::linkJumpAbsolute):
17353            Moving code around for the various jump linking functions
17354
17355         * assembler/AbstractMacroAssembler.h:
17356         (JSC::AbstractMacroAssembler::beginUninterruptedSequence):
17357         (JSC::AbstractMacroAssembler::endUninterruptedSequence):
17358           We have to track uninterrupted sequences in any assembler that compacts
17359           branches as that's not something we're allowed to do in such sequences.
17360           AbstractMacroAssembler has a nop version of these functions as it makes the
17361           code elsewhere nicer.
17362
17363         * assembler/LinkBuffer.h:
17364         (JSC::LinkBuffer::LinkBuffer):
17365         (JSC::LinkBuffer::link):
17366         (JSC::LinkBuffer::patch):
17367         (JSC::LinkBuffer::locationOf):
17368         (JSC::LinkBuffer::locationOfNearCall):
17369         (JSC::LinkBuffer::returnAddressOffset):
17370         (JSC::LinkBuffer::trampolineAt):
17371           Updated these functions to adjust for any changed offsets in the linked code
17372
17373         (JSC::LinkBuffer::applyOffset):
17374           A helper function to deal with the now potentially moved labels
17375
17376         (JSC::LinkBuffer::linkCode):
17377           The new and mighty linker function
17378
17379         * assembler/MacroAssemblerARMv7.h:
17380         (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
17381         (JSC::MacroAssemblerARMv7::beginUninterruptedSequence):
17382         (JSC::MacroAssemblerARMv7::endUninterruptedSequence):
17383         (JSC::MacroAssemblerARMv7::jumpsToLink):
17384         (JSC::MacroAssemblerARMv7::unlinkedCode):
17385         (JSC::MacroAssemblerARMv7::computeJumpType):
17386         (JSC::MacroAssemblerARMv7::convertJumpTo):
17387         (JSC::MacroAssemblerARMv7::recordLinkOffsets):
17388         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
17389         (JSC::MacroAssemblerARMv7::link):
17390         (JSC::MacroAssemblerARMv7::jump):
17391         (JSC::MacroAssemblerARMv7::branchMul32):
17392         (JSC::MacroAssemblerARMv7::breakpoint):
17393         (JSC::MacroAssemblerARMv7::nearCall):
17394         (JSC::MacroAssemblerARMv7::call):
17395         (JSC::MacroAssemblerARMv7::ret):
17396         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
17397         (JSC::MacroAssemblerARMv7::executableOffsetFor):
17398         (JSC::MacroAssemblerARMv7::inUninterruptedSequence):
17399         (JSC::MacroAssemblerARMv7::makeJump):
17400         (JSC::MacroAssemblerARMv7::makeBranch):
17401            All branches need to pass on their type now
17402
17403         * jit/ExecutableAllocator.h:
17404         (JSC::ExecutablePool::returnLastBytes):
17405            We can't know ahead of time how much space will be necessary to
17406            hold the linked code if we're compacting branches, this new
17407            function allows us to return the unused bytes at the end of linking
17408
17409         * jit/JIT.cpp:
17410         (JSC::JIT::JIT):
17411         (JSC::JIT::privateCompile):
17412         * jit/JIT.h:
17413         (JSC::JIT::compile):
17414            The JIT class now needs to take a linker offset so that recompilation
17415            can generate the same jumps when using branch compaction.
17416         * jit/JITArithmetic32_64.cpp:
17417         (JSC::JIT::emitSlow_op_mod):
17418         * jit/JITOpcodes.cpp:
17419         (JSC::JIT::privateCompileCTIMachineTrampolines):
17420         * jit/JITOpcodes32_64.cpp:
17421         (JSC::JIT::privateCompileCTIMachineTrampolines):
17422         (JSC::JIT::privateCompileCTINativeCall):
17423           Update for new trampolineAt changes
17424
17425         * wtf/FastMalloc.cpp:
17426         (WTF::TCMallocStats::):
17427         * wtf/Platform.h:
17428
17429 2010-08-09  Gavin Barraclough  <barraclough@apple.com>
17430
17431         Qt build fix III.
17432
17433         * wtf/text/WTFString.h:
17434
17435 2010-08-09  Gavin Barraclough  <barraclough@apple.com>
17436
17437         Qt build fix.
17438
17439         * wtf/qt/StringQt.cpp:
17440
17441 2010-08-06  Gavin Barraclough  <barraclough@apple.com>
17442
17443         Rubber stamped by Sam Weinig
17444
17445         Bug 43594 - Add string forwards to Forward.h
17446         This allows us to remove forward declarations for these classes from
17447         WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
17448
17449         * JavaScriptCore.xcodeproj/project.pbxproj:
17450         * wtf/Forward.h:
17451
17452 2010-08-07  Sheriff Bot  <webkit.review.bot@gmail.com>
17453
17454         Unreviewed, rolling out r64938.
17455         http://trac.webkit.org/changeset/64938
17456         https://bugs.webkit.org/show_bug.cgi?id=43685
17457
17458         Did not compile on several ports (Requested by abarth on
17459         #webkit).
17460
17461         * Android.mk:
17462         * CMakeLists.txt:
17463         * GNUmakefile.am:
17464         * JavaScriptCore.gypi:
17465         * JavaScriptCore.pro:
17466         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17467         * JavaScriptCore.xcodeproj/project.pbxproj:
17468         * assembler/AbstractMacroAssembler.h:
17469         * assembler/MacroAssembler.h:
17470         * assembler/MacroAssemblerX86.h:
17471         (JSC::MacroAssemblerX86::load32):
17472         (JSC::MacroAssemblerX86::store32):
17473         * assembler/X86Assembler.h:
17474         (JSC::X86Assembler::movl_rm):
17475         (JSC::X86Assembler::movl_mr):
17476         * bytecode/CodeBlock.cpp:
17477         (JSC::CodeBlock::markAggregate):
17478         * bytecode/Instruction.h:
17479         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
17480         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
17481         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
17482         * bytecode/StructureStubInfo.cpp:
17483         (JSC::StructureStubInfo::deref):
17484         * bytecode/StructureStubInfo.h:
17485         (JSC::StructureStubInfo::initGetByIdProto):
17486         (JSC::StructureStubInfo::initGetByIdChain):
17487         (JSC::StructureStubInfo::):
17488         * jit/JIT.h:
17489         * jit/JITMarkObjects.cpp: Removed.
17490         * jit/JITPropertyAccess.cpp:
17491         (JSC::JIT::compileGetDirectOffset):
17492         (JSC::JIT::testPrototype):
17493         (JSC::JIT::privateCompilePutByIdTransition):
17494         (JSC::JIT::privateCompileGetByIdProto):
17495         (JSC::JIT::privateCompileGetByIdProtoList):
17496         (JSC::JIT::privateCompileGetByIdChainList):
17497         (JSC::JIT::privateCompileGetByIdChain):
17498         * jit/JITPropertyAccess32_64.cpp:
17499         (JSC::JIT::compileGetDirectOffset):
17500         (JSC::JIT::testPrototype):
17501         (JSC::JIT::privateCompilePutByIdTransition):
17502         (JSC::JIT::privateCompileGetByIdProto):
17503         (JSC::JIT::privateCompileGetByIdProtoList):
17504         (JSC::JIT::privateCompileGetByIdChainList):
17505         (JSC::JIT::privateCompileGetByIdChain):
17506         * jit/JITStubs.cpp:
17507         (JSC::setupPolymorphicProtoList):
17508         * wtf/Platform.h:
17509
17510 2010-08-07  Nathan Lawrence  <nlawrence@apple.com>
17511
17512         Reviewed by Geoffrey Garen.
17513
17514         The JIT code contains a number of direct references to GC'd objects.
17515         When we have movable objects, these references will need to be
17516         updated.
17517
17518         * Android.mk:
17519         * CMakeLists.txt:
17520         * GNUmakefile.am:
17521         * JavaScriptCore.gypi:
17522         * JavaScriptCore.pro:
17523         * JavaScriptCore.xcodeproj/project.pbxproj:
17524         * assembler/AbstractMacroAssembler.h:
17525         (JSC::AbstractMacroAssembler::int32AtLocation):
17526         (JSC::AbstractMacroAssembler::pointerAtLocation):
17527         (JSC::AbstractMacroAssembler::jumpTarget):
17528         * assembler/MacroAssembler.h:
17529         (JSC::MacroAssembler::loadPtrWithPatch):
17530             Normally, loadPtr will optimize when the register is eax.  Since
17531             the slightly smaller instruction changes the offsets, it messes up
17532             our ability to repatch the code.  We added this new instruction
17533             that garuntees a constant size.
17534         * assembler/MacroAssemblerX86.h:
17535         (JSC::MacroAssemblerX86::load32WithPatch):
17536             Changed load32 in the same way described above.
17537         (JSC::MacroAssemblerX86::load32):
17538             Moved the logic to optimize laod32 from movl_mr to load32
17539         (JSC::MacroAssemblerX86::store32):
17540             Moved the logic to optimize store32 from movl_rm to store32
17541         * assembler/X86Assembler.h:
17542         (JSC::X86Assembler::movl_rm):
17543         (JSC::X86Assembler::movl_mr):
17544         (JSC::X86Assembler::int32AtLocation):
17545         (JSC::X86Assembler::pointerAtLocation):
17546         (JSC::X86Assembler::jumpTarget):
17547         * bytecode/CodeBlock.cpp:
17548         (JSC::CodeBlock::markAggregate):
17549         * bytecode/Instruction.h:
17550             As described in StructureStubInfo.h, we needed to add additional
17551             fields to both StructureStubInfo and
17552             PolymorphicAccessStructureList so that we can determine the
17553             structure of the JITed code at patch time.
17554         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
17555         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
17556         * bytecode/StructureStubInfo.cpp:
17557         (JSC::StructureStubInfo::markAggregate):
17558             Added this function to mark the JITed code that correosponds to
17559             this structure stub info.
17560         * bytecode/StructureStubInfo.h:
17561         (JSC::StructureStubInfo::initGetByIdProto):
17562         (JSC::StructureStubInfo::initGetByIdChain):
17563         (JSC::StructureStubInfo::):
17564         * jit/JIT.h:
17565         * jit/JITMarkObjects.cpp: Added.
17566         (JSC::JIT::patchPrototypeStructureAddress):
17567         (JSC::JIT::patchGetDirectOffset):
17568         (JSC::JIT::markGetByIdProto):
17569         (JSC::JIT::markGetByIdChain):
17570         (JSC::JIT::markGetByIdProtoList):
17571         (JSC::JIT::markPutByIdTransition):
17572         (JSC::JIT::markGlobalObjectReference):
17573         * jit/JITPropertyAccess.cpp:
17574             Added asserts for the patch offsets.
17575         (JSC::JIT::compileGetDirectOffset):
17576         (JSC::JIT::testPrototype):
17577         (JSC::JIT::privateCompilePutByIdTransition):
17578         (JSC::JIT::privateCompileGetByIdProto):
17579         (JSC::JIT::privateCompileGetByIdProtoList):
17580         (JSC::JIT::privateCompileGetByIdChainList):
17581         (JSC::JIT::privateCompileGetByIdChain):
17582         * jit/JITPropertyAccess32_64.cpp:
17583         (JSC::JIT::compileGetDirectOffset):
17584         (JSC::JIT::testPrototype):
17585         (JSC::JIT::privateCompilePutByIdTransition):
17586         (JSC::JIT::privateCompileGetByIdProto):
17587         (JSC::JIT::privateCompileGetByIdProtoList):
17588         (JSC::JIT::privateCompileGetByIdChainList):
17589         (JSC::JIT::privateCompileGetByIdChain):
17590         * jit/JITStubs.cpp:
17591         (JSC::setupPolymorphicProtoList):
17592         * wtf/Platform.h:
17593             Added ENABLE_MOVABLE_GC_OBJECTS flag
17594
17595 2010-08-07  Michael Saboff  <msaboff@apple.com>
17596
17597         Reviewed by Geoffrey Garen.
17598
17599         Revert JSArray to point to the beginning of the contained ArrayStorage
17600         struct.  This is described in
17601         https://bugs.webkit.org/show_bug.cgi?id=43526.
17602
17603         * jit/JITPropertyAccess.cpp:
17604         (JSC::JIT::emit_op_get_by_val):
17605         (JSC::JIT::emit_op_put_by_val):
17606         (JSC::JIT::privateCompilePatchGetArrayLength):
17607         * jit/JITPropertyAccess32_64.cpp:
17608         (JSC::JIT::emit_op_get_by_val):
17609         (JSC::JIT::emit_op_put_by_val):
17610         (JSC::JIT::privateCompilePatchGetArrayLength):
17611         * runtime/JSArray.cpp:
17612         (JSC::JSArray::JSArray):
17613         (JSC::JSArray::~JSArray):
17614         (JSC::JSArray::getOwnPropertySlot):
17615         (JSC::JSArray::getOwnPropertyDescriptor):
17616         (JSC::JSArray::put):
17617         (JSC::JSArray::putSlowCase):
17618         (JSC::JSArray::deleteProperty):
17619         (JSC::JSArray::getOwnPropertyNames):
17620         (JSC::JSArray::getNewVectorLength):
17621         (JSC::JSArray::increaseVectorLength):
17622         (JSC::JSArray::increaseVectorPrefixLength):
17623         (JSC::JSArray::setLength):
17624         (JSC::JSArray::pop):
17625         (JSC::JSArray::push):
17626         (JSC::JSArray::shiftCount):
17627         (JSC::JSArray::unshiftCount):
17628         (JSC::JSArray::sortNumeric):
17629         (JSC::JSArray::sort):
17630         (JSC::JSArray::fillArgList):
17631         (JSC::JSArray::copyToRegisters):
17632         (JSC::JSArray::compactForSorting):
17633         (JSC::JSArray::subclassData):
17634         (JSC::JSArray::setSubclassData):
17635         (JSC::JSArray::checkConsistency):
17636         * runtime/JSArray.h:
17637         (JSC::JSArray::length):
17638         (JSC::JSArray::canGetIndex):
17639         (JSC::JSArray::getIndex):
17640         (JSC::JSArray::setIndex):
17641         (JSC::JSArray::uncheckedSetIndex):
17642         (JSC::JSArray::markChildrenDirect):
17643
17644 2010-08-07  Kwang Yul Seo  <skyul@company100.net>
17645
17646         Reviewed by Eric Seidel.
17647
17648         Add ENABLE(YARR) guard around JSGlobalData::m_regexAllocator
17649         https://bugs.webkit.org/show_bug.cgi?id=43399
17650
17651         m_regexAllocator is used only by RegExp::compile which is guarded with ENABLE(YARR).
17652
17653         * runtime/JSGlobalData.h:
17654
17655 2010-08-07  Patrick Roland Gansterer  <paroga@paroga.com>
17656
17657         Reviewed by Eric Seidel.
17658
17659         [Qt] Enable JIT on WinCE
17660         https://bugs.webkit.org/show_bug.cgi?id=43303
17661
17662         Add ExtraCompiler for generating GeneratedJITStubs_MSVC.asm.
17663
17664         * DerivedSources.pro:
17665
17666 2010-08-07  Dan Bernstein  <mitz@apple.com>
17667
17668         Reviewed by Anders Carlsson.
17669
17670         Created a separate SimpleFontData constructor exclusively for SVG fonts and moved the CTFontRef
17671         from SimpleFontData to FontPlatformData.
17672         https://bugs.webkit.org/show_bug.cgi?id=43674
17673
17674         * wtf/Platform.h: Moved definitions of WTF_USE_CORE_TEXT and WTF_USE_ATSUI here from WebCore/config.h.
17675
17676 2010-08-07  Zoltan Herczeg  <zherczeg@webkit.org>
17677
17678         Reviewed by Eric Seidel.
17679
17680         Bitmap.h has no default constructor
17681         https://bugs.webkit.org/show_bug.cgi?id=43619
17682
17683         Without a constructor, the initial bits of the Bitmap class
17684         are undefinied. If only a few, or zero bits are 0, the memory
17685         area provided by AlignedMemoryAllocator can be easly exhausted.
17686
17687         Csaba Osztrogonác helped to find this bug.
17688
17689         * wtf/Bitmap.h:
17690         (WTF::::Bitmap):
17691
17692 2010-08-06  Rafael Antognolli  <antognolli@profusion.mobi>
17693
17694         [EFL] Build fix.
17695
17696         * CMakeLists.txt: add runtime/CGHandle.cpp.
17697
17698 2010-08-06  Jessie Berlin  <jberlin@apple.com>
17699
17700         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
17701         Unreviewed.
17702
17703         * JavaScriptCore.xcodeproj/project.pbxproj:
17704         * wtf/Forward.h:
17705
17706 2010-08-06  Jessie Berlin  <jberlin@apple.com>
17707
17708         Windows Build Fix (continued). Unreviewed.
17709
17710         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
17711
17712 2010-08-06  Jessie Berlin  <jberlin@apple.com>
17713
17714         Windows Build Fix. Unreviewed.
17715
17716         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17717         Add GCHandle.h and GCHandle.cpp.
17718
17719 2010-08-06  Nathan Lawrence  <nlawrence@apple.com>
17720
17721         Reviewed by Geoffrey Garen.
17722
17723         https://bugs.webkit.org/show_bug.cgi?id=43207
17724
17725         WeakGCPtr's should instead of directly pointing to the GC'd object
17726         should be directed to an array of pointers that can be updated for
17727         movable objects.
17728
17729         * Android.mk:
17730         * GNUmakefile.am:
17731         * JavaScriptCore.exp:
17732         * JavaScriptCore.gypi:
17733         * JavaScriptCore.pro:
17734         * JavaScriptCore.xcodeproj/project.pbxproj:
17735         * runtime/Collector.cpp:
17736         (JSC::Heap::destroy):
17737         (JSC::Heap::allocateBlock):
17738         (JSC::Heap::freeBlock):
17739         (JSC::Heap::updateWeakGCHandles):
17740         (JSC::WeakGCHandlePool::update):
17741         (JSC::Heap::addWeakGCHandle):
17742         (JSC::Heap::markRoots):
17743         * runtime/Collector.h:
17744         (JSC::Heap::weakGCHandlePool):
17745         * runtime/GCHandle.cpp: Added.
17746         (JSC::WeakGCHandle::pool):
17747         (JSC::WeakGCHandlePool::WeakGCHandlePool):
17748         (JSC::WeakGCHandlePool::allocate):
17749         (JSC::WeakGCHandlePool::free):
17750         (JSC::WeakGCHandlePool::operator new):
17751         * runtime/GCHandle.h: Added.
17752         (JSC::WeakGCHandle::isValidPtr):
17753         (JSC::WeakGCHandle::isPtr):
17754         (JSC::WeakGCHandle::isNext):
17755         (JSC::WeakGCHandle::invalidate):
17756         (JSC::WeakGCHandle::get):
17757         (JSC::WeakGCHandle::set):
17758         (JSC::WeakGCHandle::getNextInFreeList):
17759         (JSC::WeakGCHandle::setNextInFreeList):
17760         (JSC::WeakGCHandlePool::isFull):
17761         * runtime/WeakGCPtr.h:
17762         (JSC::WeakGCPtr::WeakGCPtr):
17763         (JSC::WeakGCPtr::~WeakGCPtr):
17764         (JSC::WeakGCPtr::get):
17765         (JSC::WeakGCPtr::clear):
17766         (JSC::WeakGCPtr::assign):
17767         (JSC::get):
17768
17769 2010-08-06  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
17770
17771         Reviewed by Antonio Gomes.
17772
17773         [Qt] Fix warnings about difference in symbol visiblity on Mac OS X
17774
17775         * jsc.pro:
17776
17777 2010-08-06  Zoltan Herczeg  <zherczeg@webkit.org>
17778
17779         Reviewed by Darin Adler.
17780
17781         Refactor identifier parsing in lexer
17782         https://bugs.webkit.org/show_bug.cgi?id=41845
17783
17784         The code is refactored to avoid gotos. The new code
17785         has the same performance as the old one.
17786
17787         SunSpider --parse-only: no change (from 34.0ms to 33.6ms)
17788         SunSpider: no change (from 523.2ms to 523.5ms)
17789
17790         * parser/Lexer.cpp:
17791         (JSC::Lexer::parseIdent):
17792         (JSC::Lexer::lex):
17793         * parser/Lexer.h:
17794
17795 2010-08-06  Gabor Loki  <loki@webkit.org>
17796
17797         Reviewed by Gavin Barraclough.
17798
17799         The ARM JIT does not support JSValue32_64 with RVCT
17800         https://bugs.webkit.org/show_bug.cgi?id=43411
17801
17802         JSValue32_64 is enabled for RVCT by default.
17803
17804         * create_jit_stubs:
17805         * jit/JITStubs.cpp:
17806         (JSC::ctiTrampoline):
17807         (JSC::ctiVMThrowTrampoline):
17808         (JSC::ctiOpThrowNotCaught):
17809         * wtf/Platform.h:
17810
17811 2010-08-05  Chao-ying Fu  <fu@mips.com>
17812
17813         Reviewed by Darin Adler.
17814
17815         Define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER for MIPS
17816         https://bugs.webkit.org/show_bug.cgi?id=43514
17817
17818         MIPS needs to define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER, so that
17819         RenderArena::allocate() can return 8-byte aligned memory to avoid
17820         exceptions on sdc1/ldc1.
17821
17822         * wtf/Platform.h:
17823
17824 2010-08-05  Gavin Barraclough  <barraclough@apple.com>
17825
17826         Rubber stamped by Sam Weinig
17827
17828         Bug 43594 - Add string forwards to Forward.h
17829         This allows us to remove forward declarations for these classes from
17830         WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
17831
17832         * JavaScriptCore.xcodeproj/project.pbxproj:
17833         * wtf/Forward.h:
17834
17835 2010-08-05  Geoffrey Garen  <ggaren@apple.com>
17836
17837         Reviewed by Mark Rowe.
17838
17839         Fixed leak seen on buildbot.
17840
17841         * runtime/GCActivityCallbackCF.cpp:
17842         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
17843         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
17844         (JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr,
17845         since anything less would be uncivilized.
17846
17847 2010-08-05  Andy Estes  <aestes@apple.com>
17848
17849         Reviewed by David Kilzer.
17850
17851         Rename iOS-related OS and PLATFORM macros.
17852         https://bugs.webkit.org/show_bug.cgi?id=43493
17853         
17854         Rename WTF_OS_IPHONE_OS to WTF_OS_IOS, WTF_PLATFORM_IPHONE to
17855         WTF_PLATFORM_IOS, and WTF_PLATFORM_IPHONE_SIMULATOR to
17856         WTF_PLATFORM_IOS_SIMULATOR.
17857
17858         * jit/ExecutableAllocator.h:
17859         * jit/JITStubs.cpp:
17860         * profiler/ProfilerServer.mm:
17861         (-[ProfilerServer init]):
17862         * wtf/FastMalloc.cpp:
17863         (WTF::TCMallocStats::):
17864         * wtf/Platform.h:
17865         * wtf/unicode/icu/CollatorICU.cpp:
17866         (WTF::Collator::userDefault):
17867
17868 2010-08-05  Nathan Lawrence  <nlawrence@apple.com>
17869
17870         Reviewed by Darin Adler.
17871
17872         https://bugs.webkit.org/show_bug.cgi?id=43464
17873
17874         Currently, the global object is being embedded in the JavaScriptCore
17875         bytecode, however since the global object is the same for all opcodes
17876         in a code block, we can have the global object just be a member of the
17877         associated code block.
17878
17879         Additionally, I added an assert inside of emitOpcode that verifies
17880         that the last generated opcode was of the correct length.
17881
17882         * bytecode/CodeBlock.cpp:
17883         (JSC::CodeBlock::CodeBlock):
17884         (JSC::CodeBlock::derefStructures):
17885         (JSC::CodeBlock::markAggregate):
17886         * bytecode/CodeBlock.h:
17887         (JSC::CodeBlock::globalObject):
17888         (JSC::GlobalCodeBlock::GlobalCodeBlock):
17889         (JSC::ProgramCodeBlock::ProgramCodeBlock):
17890         (JSC::EvalCodeBlock::EvalCodeBlock):
17891         (JSC::FunctionCodeBlock::FunctionCodeBlock):
17892         * bytecode/Opcode.h:
17893         (JSC::opcodeLength):
17894         * bytecompiler/BytecodeGenerator.cpp:
17895         (JSC::BytecodeGenerator::BytecodeGenerator):
17896         (JSC::BytecodeGenerator::emitOpcode):
17897             Added an assert to check that the last generated opcode is the
17898             correct length.
17899         (JSC::BytecodeGenerator::rewindBinaryOp):
17900             Changed the last opcode to op_end since the length will no longer
17901             be correct.
17902         (JSC::BytecodeGenerator::rewindUnaryOp):
17903             Changed the last opcode to op_end since the length will no longer
17904             be correct.
17905         (JSC::BytecodeGenerator::emitResolve):
17906         (JSC::BytecodeGenerator::emitGetScopedVar):
17907         (JSC::BytecodeGenerator::emitPutScopedVar):
17908         (JSC::BytecodeGenerator::emitResolveWithBase):
17909         * bytecompiler/BytecodeGenerator.h:
17910         * interpreter/Interpreter.cpp:
17911         (JSC::Interpreter::resolveGlobal):
17912         (JSC::Interpreter::resolveGlobalDynamic):
17913         (JSC::Interpreter::privateExecute):
17914         * jit/JITOpcodes.cpp:
17915         (JSC::JIT::emit_op_get_global_var):
17916         (JSC::JIT::emit_op_put_global_var):
17917         (JSC::JIT::emit_op_resolve_global):
17918         (JSC::JIT::emitSlow_op_resolve_global):
17919         (JSC::JIT::emit_op_resolve_global_dynamic):
17920         (JSC::JIT::emitSlow_op_resolve_global_dynamic):
17921         * jit/JITOpcodes32_64.cpp:
17922         (JSC::JIT::emit_op_get_global_var):
17923         (JSC::JIT::emit_op_put_global_var):
17924         (JSC::JIT::emit_op_resolve_global):
17925         (JSC::JIT::emitSlow_op_resolve_global):
17926         * jit/JITStubs.cpp:
17927         (JSC::cti_op_resolve_global):
17928         * runtime/Executable.cpp:
17929         (JSC::FunctionExecutable::compileForCallInternal):
17930         (JSC::FunctionExecutable::compileForConstructInternal):
17931         (JSC::FunctionExecutable::reparseExceptionInfo):
17932
17933 2010-08-05  Gavin Barraclough  <barraclough@apple.com>
17934
17935         Reviewed by Sam Weinig.
17936
17937         Bug 43185 - Switch RegisterFile over to use PageAllocation
17938
17939         Remove platform-specific memory allocation code.
17940
17941         * interpreter/RegisterFile.cpp:
17942         (JSC::RegisterFile::~RegisterFile):
17943         (JSC::RegisterFile::releaseExcessCapacity):
17944         * interpreter/RegisterFile.h:
17945         (JSC::RegisterFile::RegisterFile):
17946         (JSC::RegisterFile::grow):
17947         (JSC::RegisterFile::checkAllocatedOkay):
17948         * wtf/PageAllocation.cpp:
17949         (WTF::PageAllocation::lastError):
17950         * wtf/PageAllocation.h:
17951         (WTF::PageAllocation::allocate):
17952         (WTF::PageAllocation::allocateAt):
17953         (WTF::PageAllocation::allocateAligned):
17954         (WTF::PageAllocation::pageSize):
17955         (WTF::PageAllocation::isPageAligned):
17956         (WTF::PageAllocation::isPowerOfTwo):
17957         * wtf/PageReservation.h:
17958         (WTF::PageReservation::commit):
17959         (WTF::PageReservation::decommit):
17960         (WTF::PageReservation::reserve):
17961         (WTF::PageReservation::reserveAt):
17962
17963 2010-08-05  Michael Saboff  <msaboff@apple.com>
17964
17965         Reviewed by Darin Adler.
17966
17967         Fixed https://bugs.webkit.org/show_bug.cgi?id=43401 where array 
17968         content aren't properly initialized as part of unshift.  
17969
17970         * runtime/JSArray.cpp:
17971         (JSC::JSArray::unshiftCount):
17972
17973 2010-08-05  Jian Li  <jianli@chromium.org>
17974
17975         Reviewed by David Levin.
17976
17977         Unify blob related feature defines to ENABLE(BLOB).
17978         https://bugs.webkit.org/show_bug.cgi?id=43081
17979
17980         * Configurations/FeatureDefines.xcconfig:
17981
17982 2010-08-05  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
17983
17984         Rubber-stamped by Xan Lopez.
17985
17986         Remove GHashTable left-overs. GHashTable is ref-counted, and is
17987         correctly supported by GRefPtr.
17988
17989         * wtf/gobject/GOwnPtr.h:
17990
17991 2010-08-05  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
17992
17993         Unreviewed.
17994
17995         Typo fix that makes distcheck happy.
17996
17997         * GNUmakefile.am:
17998
17999 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
18000
18001         Reviewed by Oliver Hunt and Beth Dakin.
18002
18003         https://bugs.webkit.org/show_bug.cgi?id=43461
18004         Invalid NaN parsing
18005         
18006         * wtf/dtoa.cpp: Turn off the dtoa feature that allows you to specify a
18007         non-standard NaN representation, since our NaN encoding assumes that all
18008         true NaNs have the standard bit pattern.
18009
18010         * API/JSValueRef.cpp:
18011         (JSValueMakeNumber): Don't allow an API client to accidentally specify
18012         a non-standard NaN either.
18013
18014 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
18015
18016         Windows build fix part II.
18017
18018         * wtf/PageReservation.h:
18019         (WTF::PageReservation::systemReserve):
18020
18021 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
18022
18023         Windows build fix.
18024
18025         * wtf/PageReservation.h:
18026         (WTF::PageReservation::systemReserve):
18027
18028 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
18029
18030         Build fix - add new header to !Mac projects.
18031
18032         * GNUmakefile.am:
18033         * JavaScriptCore.gypi:
18034         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
18035
18036 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
18037
18038         Reviewed by Sam Weinig.
18039
18040         Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation.
18041
18042         The PageAllocation class has a number of issues:
18043         * Changes in bug #43269 accidentally switched SYMBIAN over to use malloc/free to allocate
18044           blocks of memory for the GC heap, instead of allocating RChunks.  Revert this change in
18045           behaviour.
18046         * In order for PageAllocation to work correctly on WinCE we should be decommitting memory
18047           before deallocating.  In order to simplify understanding the expected state at deallocate,
18048           split behaviour out into PageAllocation and PageReservation classes.  Require that all
18049           memory be decommitted before calling deallocate on a PageReservation, add asserts to
18050           enforce this.
18051         * add many missing asserts.
18052         * inline more functions.
18053         * remove ability to create sub-PageAllocations from an existing PageAllocations object -
18054           this presented an interface that would allow sub regions to be deallocated, which would
18055           not have provided expected behaviour.
18056         * remove writable/executable arguments to commit, this value can be cached at the point
18057           the memory is reserved.
18058         * remove writable/executable arguments to allocateAligned, protection other than RW is not
18059           supported.
18060         * add missing checks for overflow & failed allocation to mmap path through allocateAligned.
18061
18062         * JavaScriptCore.xcodeproj/project.pbxproj:
18063         * jit/ExecutableAllocator.cpp:
18064         (JSC::ExecutableAllocator::intializePageSize):
18065         * jit/ExecutableAllocator.h:
18066         (JSC::ExecutablePool::Allocation::Allocation):
18067         (JSC::ExecutablePool::Allocation::base):
18068         (JSC::ExecutablePool::Allocation::size):
18069         (JSC::ExecutablePool::Allocation::operator!):
18070         * jit/ExecutableAllocatorFixedVMPool.cpp:
18071         (JSC::FixedVMPoolAllocator::reuse):
18072         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
18073         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
18074         (JSC::FixedVMPoolAllocator::alloc):
18075         (JSC::FixedVMPoolAllocator::free):
18076         (JSC::FixedVMPoolAllocator::allocInternal):
18077         * runtime/AlignedMemoryAllocator.h:
18078         (JSC::::allocate):
18079         (JSC::::AlignedMemoryAllocator):
18080         * runtime/Collector.cpp:
18081         (JSC::Heap::allocateBlock):
18082         * runtime/Collector.h:
18083         * wtf/PageAllocation.cpp:
18084         * wtf/PageAllocation.h:
18085         (WTF::PageAllocation::operator!):
18086         (WTF::PageAllocation::allocate):
18087         (WTF::PageAllocation::allocateAt):
18088         (WTF::PageAllocation::allocateAligned):
18089         (WTF::PageAllocation::deallocate):
18090         (WTF::PageAllocation::pageSize):
18091         (WTF::PageAllocation::systemAllocate):
18092         (WTF::PageAllocation::systemAllocateAt):
18093         (WTF::PageAllocation::systemAllocateAligned):
18094         (WTF::PageAllocation::systemDeallocate):
18095         (WTF::PageAllocation::systemPageSize):
18096         * wtf/PageReservation.h: Copied from JavaScriptCore/wtf/PageAllocation.h.
18097         (WTF::PageReservation::PageReservation):
18098         (WTF::PageReservation::commit):
18099         (WTF::PageReservation::decommit):
18100         (WTF::PageReservation::reserve):
18101         (WTF::PageReservation::reserveAt):
18102         (WTF::PageReservation::deallocate):
18103         (WTF::PageReservation::systemCommit):
18104         (WTF::PageReservation::systemDecommit):
18105         (WTF::PageReservation::systemReserve):
18106         (WTF::PageReservation::systemReserveAt):
18107         * wtf/Platform.h:
18108
18109 2010-08-04  Sheriff Bot  <webkit.review.bot@gmail.com>
18110
18111         Unreviewed, rolling out r64655.
18112         http://trac.webkit.org/changeset/64655
18113         https://bugs.webkit.org/show_bug.cgi?id=43496
18114
18115         JavaScriptCore references patch seems to have caused
18116         regressions in QT and GTK builds (Requested by nlawrence on
18117         #webkit).
18118
18119         * bytecode/CodeBlock.cpp:
18120         (JSC::CodeBlock::markAggregate):
18121         * runtime/Collector.cpp:
18122         (JSC::Heap::markConservatively):
18123         * runtime/JSCell.h:
18124         (JSC::JSValue::asCell):
18125         (JSC::MarkStack::append):
18126         * runtime/JSGlobalObject.cpp:
18127         (JSC::markIfNeeded):
18128         * runtime/JSONObject.cpp:
18129         (JSC::Stringifier::Holder::object):
18130         * runtime/JSObject.h:
18131         (JSC::JSObject::prototype):
18132         * runtime/JSStaticScopeObject.cpp:
18133         (JSC::JSStaticScopeObject::markChildren):
18134         * runtime/JSValue.h:
18135         (JSC::JSValue::):
18136         (JSC::JSValue::JSValue):
18137         (JSC::JSValue::asCell):
18138         * runtime/MarkStack.h:
18139         * runtime/NativeErrorConstructor.cpp:
18140         * runtime/NativeErrorConstructor.h:
18141         * runtime/Structure.h:
18142         (JSC::Structure::storedPrototype):
18143
18144 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
18145
18146         Rubber stamped by Sam Weinig.
18147
18148         Enable JSVALUE64 for CPU(PPC64).
18149         Basic browsing seems to work.
18150
18151         * wtf/Platform.h:
18152
18153 2010-08-04  Nathan Lawrence  <nlawrence@apple.com>
18154
18155         Reviewed by Darin Adler.
18156
18157         Refactoring MarkStack::append to take a reference.  This is in
18158         preparation for movable objects when we will need to update pointers.
18159         http://bugs.webkit.org/show_bug.cgi?id=41177
18160
18161         Unless otherwise noted, all changes are to either return by reference
18162         or pass a reference to MarkStack::append.
18163
18164         * bytecode/CodeBlock.cpp:
18165         (JSC::CodeBlock::markAggregate):
18166         * runtime/Collector.cpp:
18167         (JSC::Heap::markConservatively):
18168             Added a temporary variable to prevent marking from changing an
18169             unknown value on the stack
18170         * runtime/JSCell.h:
18171         (JSC::JSValue::asCell):
18172         (JSC::MarkStack::append):
18173         (JSC::MarkStack::appendInternal):
18174         * runtime/JSGlobalObject.cpp:
18175         (JSC::markIfNeeded):
18176         * runtime/JSONObject.cpp:
18177         (JSC::Stringifier::Holder::object):
18178         * runtime/JSObject.h:
18179         (JSC::JSObject::prototype):
18180         * runtime/JSStaticScopeObject.cpp:
18181         (JSC::JSStaticScopeObject::markChildren):
18182         * runtime/JSValue.h:
18183         (JSC::JSValue::JSValue):
18184         (JSC::JSValue::asCell):
18185         * runtime/MarkStack.h:
18186         * runtime/NativeErrorConstructor.cpp:
18187         (JSC::NativeErrorConstructor::createStructure):
18188             Changed the structure flags to include a custom markChildren.
18189         (JSC::NativeErrorConstructor::markChildren):
18190             Update the prototype of the stored structure.
18191         * runtime/NativeErrorConstructor.h:
18192             Added structure flags.
18193         * runtime/Structure.h:
18194         (JSC::Structure::storedPrototype):
18195
18196 2010-08-03  Nathan Lawrence  <nlawrence@apple.com>
18197
18198         Reviewed by Oliver Hunt.
18199
18200         Tightened up some get_by_id_chain* code generation
18201         https://bugs.webkit.org/show_bug.cgi?id=40935
18202
18203         This is in the style of
18204         https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to
18205         call accessor functions when it was not necessary to directly access
18206         the private variables.
18207
18208         * jit/JIT.h:
18209         * jit/JITPropertyAccess.cpp:
18210         (JSC::JIT::compileGetDirectOffset):
18211         (JSC::JIT::testPrototype):
18212         (JSC::JIT::privateCompilePutByIdTransition):
18213         (JSC::JIT::privateCompileGetByIdChainList):
18214         (JSC::JIT::privateCompileGetByIdChain):
18215         * jit/JITPropertyAccess32_64.cpp:
18216         (JSC::JIT::testPrototype):
18217         (JSC::JIT::privateCompilePutByIdTransition):
18218         (JSC::JIT::privateCompileGetByIdChainList):
18219         (JSC::JIT::privateCompileGetByIdChain):
18220
18221 2010-08-03  Adam Roben  <aroben@apple.com>
18222
18223         Turn on PLATFORM_STRATEGIES on Windows
18224
18225         Fixes <http://webkit.org/b/43431>.
18226
18227         Reviewed by Anders Carlsson.
18228
18229         * wtf/Platform.h:
18230
18231 2010-08-04  Gabor Loki  <loki@webkit.org>
18232
18233         Reviewed by Geoffrey Garen.
18234
18235         Enable JSValue32_64 for GCC on ARM by default
18236         https://bugs.webkit.org/show_bug.cgi?id=43410
18237
18238         * wtf/Platform.h:
18239
18240 2010-08-03  Gavin Barraclough  <barraclough@apple.com>
18241
18242         Speculative windows build fix.
18243
18244         * wtf/Bitmap.h:
18245
18246 2010-08-03  Gavin Barraclough  <barraclough@apple.com>
18247
18248         Build fix following r64624.
18249
18250         * JavaScriptCore.xcodeproj/project.pbxproj:
18251         * wtf/PageAllocation.h:
18252
18253 2010-08-03  Nathan Lawrence  <nlawrence@apple.com>
18254
18255         Reviewed by Gavin Barraclough.
18256
18257         https://bugs.webkit.org/show_bug.cgi?id=43269
18258
18259         Added new allocateAligned methods to PageAllocation.  In order to
18260         prevent a regress in performance, the function needs to be inlined.
18261
18262         Additionally, I ported the symbian block allocator to use
18263         PageAllocation and added a new WTF::Bitmap class to support this.
18264
18265         * GNUmakefile.am:
18266         * JavaScriptCore.gypi:
18267         * JavaScriptCore.xcodeproj/project.pbxproj:
18268         * runtime/AlignedMemoryAllocator.h: Added.
18269         (JSC::AlignedMemory::deallocate):
18270         (JSC::AlignedMemory::base):
18271         (JSC::AlignedMemory::AlignedMemory):
18272         (JSC::AlignedMemoryAllocator::destroy):
18273         (JSC::AlignedMemoryAllocator::allocate):
18274         (JSC::AlignedMemoryAllocator::AlignedMemoryAllocator):
18275         (JSC::AlignedMemoryAllocator::~AlignedMemoryAllocator):
18276         (JSC::AlignedMemoryAllocator::free):
18277         * runtime/Collector.cpp:
18278         (JSC::Heap::Heap):
18279         (JSC::Heap::destroy):
18280         (JSC::Heap::allocateBlock):
18281         (JSC::Heap::freeBlock):
18282         (JSC::Heap::freeBlocks):
18283         (JSC::Heap::allocate):
18284         (JSC::Heap::shrinkBlocks):
18285         (JSC::Heap::markConservatively):
18286         (JSC::Heap::clearMarkBits):
18287         (JSC::Heap::markedCells):
18288         * runtime/Collector.h:
18289         (JSC::CollectorHeap::collectorBlock):
18290         * runtime/CollectorHeapIterator.h:
18291         (JSC::CollectorHeapIterator::operator*):
18292         (JSC::LiveObjectIterator::operator++):
18293         (JSC::DeadObjectIterator::operator++):
18294         * wtf/Bitmap.h: Added.
18295         (WTF::Bitmap::get):
18296         (WTF::Bitmap::set):
18297         (WTF::Bitmap::clear):
18298         (WTF::Bitmap::clearAll):
18299         (WTF::Bitmap::advanceToNextFreeBit):
18300         (WTF::Bitmap::count):
18301         (WTF::Bitmap::isEmpty):
18302         (WTF::Bitmap::isFull):
18303         * wtf/PageAllocation.h:
18304         (WTF::PageAllocation::operator UnspecifiedBoolType):
18305         (WTF::PageAllocation::allocateAligned):
18306         (WTF::PageAllocation::reserveAligned):
18307         * wtf/Platform.h:
18308         * wtf/symbian: Removed.
18309         * wtf/symbian/BlockAllocatorSymbian.cpp: Removed.
18310         * wtf/symbian/BlockAllocatorSymbian.h: Removed.
18311
18312 2010-08-03  Michael Saboff  <msaboff@apple.com>
18313
18314         Reviewed by Gavin Barraclough.
18315
18316         Fix for https://bugs.webkit.org/show_bug.cgi?id=43314.  The prior code
18317         was using the wrong "length" value to move array contents when adding
18318         space to the beginning of an array for an unshift() or similar
18319         operation.  Instead of using m_vectorLength, the length of the
18320         allocated JSValue array, the code was using m_length, the declared
18321         length of the array.  These two values do not need to match.
18322
18323         * JavaScriptCore.xcodeproj/project.pbxproj:
18324         * runtime/JSArray.cpp:
18325         (JSC::JSArray::increaseVectorPrefixLength):
18326
18327 2010-08-03  Chao-ying Fu  <fu@mips.com>
18328
18329         Reviewed by Gavin Barraclough.
18330
18331         Fix following https://bugs.webkit.org/show_bug.cgi?id=43089
18332         (accidentally inverted a compiler version check).
18333
18334         * jit/ExecutableAllocator.h:
18335         (JSC::ExecutableAllocator::cacheFlush):
18336
18337 2010-08-03  Patrick Gansterer  <paroga@paroga.com>
18338
18339         Reviewed by Gavin Barraclough.
18340
18341         Implement DEFINE_STUB_FUNCTION for WinCE.
18342         https://bugs.webkit.org/show_bug.cgi?id=34953
18343
18344         * jit/JITStubs.cpp:
18345         (JSC::):
18346         (JSC::DEFINE_STUB_FUNCTION):
18347
18348 2010-08-02  Gavin Barraclough  <barraclough@apple.com>
18349
18350         Reviewed by Oliver Hunt.
18351
18352         Bug 43390 - Do not CRASH if we run out of room for jit code.
18353
18354         Change the ExecutableAllocator implementations not to crash, and to return 0 if memory cannot be allocated.
18355         The assemblers should pass this through without trying to use it in executableCopy.
18356         Change the LinkBuffer to handle this, and to provide an allocationSuccessful() method to test for this.
18357
18358         Change the JIT to throw an exception if allocation fails.
18359         Make JIT optimizations fail gracefully if memory cannot be allocated (use non-optimized path).
18360         Change YARR JIT to fallback to PCRE 
18361
18362         * assembler/ARMAssembler.cpp:
18363         (JSC::ARMAssembler::executableCopy):
18364         * assembler/ARMv7Assembler.h:
18365         (JSC::ARMv7Assembler::executableCopy):
18366         * assembler/LinkBuffer.h:
18367         (JSC::LinkBuffer::allocationSuccessful):
18368         * assembler/MIPSAssembler.h:
18369         (JSC::MIPSAssembler::executableCopy):
18370         * assembler/X86Assembler.h:
18371         (JSC::X86Assembler::executableCopy):
18372         * bytecode/StructureStubInfo.h:
18373         (JSC::StructureStubInfo::initGetByIdProto):
18374         (JSC::StructureStubInfo::initGetByIdChain):
18375         (JSC::StructureStubInfo::initGetByIdSelfList):
18376         (JSC::StructureStubInfo::initGetByIdProtoList):
18377         (JSC::StructureStubInfo::initPutByIdTransition):
18378         * jit/ExecutableAllocator.cpp:
18379         (JSC::ExecutablePool::systemAlloc):
18380         * jit/ExecutableAllocatorFixedVMPool.cpp:
18381         (JSC::FixedVMPoolAllocator::allocInternal):
18382         * jit/JIT.cpp:
18383         (JSC::JIT::privateCompile):
18384         * jit/JIT.h:
18385         (JSC::JIT::compileGetByIdProto):
18386         (JSC::JIT::compileGetByIdSelfList):
18387         (JSC::JIT::compileGetByIdProtoList):
18388         (JSC::JIT::compileGetByIdChainList):
18389         (JSC::JIT::compileGetByIdChain):
18390         (JSC::JIT::compilePutByIdTransition):
18391         (JSC::JIT::compilePatchGetArrayLength):
18392         * jit/JITOpcodes.cpp:
18393         (JSC::JIT::privateCompileCTIMachineTrampolines):
18394         * jit/JITOpcodes32_64.cpp:
18395         (JSC::JIT::privateCompileCTIMachineTrampolines):
18396         (JSC::JIT::privateCompileCTINativeCall):
18397         * jit/JITPropertyAccess.cpp:
18398         (JSC::JIT::stringGetByValStubGenerator):
18399         (JSC::JIT::privateCompilePutByIdTransition):
18400         (JSC::JIT::privateCompilePatchGetArrayLength):
18401         (JSC::JIT::privateCompileGetByIdProto):
18402         (JSC::JIT::privateCompileGetByIdSelfList):
18403         (JSC::JIT::privateCompileGetByIdProtoList):
18404         (JSC::JIT::privateCompileGetByIdChainList):
18405         (JSC::JIT::privateCompileGetByIdChain):
18406         * jit/JITPropertyAccess32_64.cpp:
18407         (JSC::JIT::stringGetByValStubGenerator):
18408         (JSC::JIT::privateCompilePutByIdTransition):
18409         (JSC::JIT::privateCompilePatchGetArrayLength):
18410         (JSC::JIT::privateCompileGetByIdProto):
18411         (JSC::JIT::privateCompileGetByIdSelfList):
18412         (JSC::JIT::privateCompileGetByIdProtoList):
18413         (JSC::JIT::privateCompileGetByIdChainList):
18414         (JSC::JIT::privateCompileGetByIdChain):
18415         * jit/JITStubs.cpp:
18416         (JSC::JITThunks::tryCachePutByID):
18417         (JSC::JITThunks::tryCacheGetByID):
18418         (JSC::DEFINE_STUB_FUNCTION):
18419         (JSC::setupPolymorphicProtoList):
18420         * jit/JITStubs.h:
18421         * jit/SpecializedThunkJIT.h:
18422         (JSC::SpecializedThunkJIT::finalize):
18423         * runtime/ExceptionHelpers.cpp:
18424         (JSC::createOutOfMemoryError):
18425         * runtime/ExceptionHelpers.h:
18426         * runtime/Executable.cpp:
18427         (JSC::EvalExecutable::compileInternal):
18428         (JSC::ProgramExecutable::compileInternal):
18429         (JSC::FunctionExecutable::compileForCallInternal):
18430         (JSC::FunctionExecutable::compileForConstructInternal):
18431         (JSC::FunctionExecutable::reparseExceptionInfo):
18432         (JSC::EvalExecutable::reparseExceptionInfo):
18433         * yarr/RegexJIT.cpp:
18434         (JSC::Yarr::RegexGenerator::compile):
18435
18436 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
18437
18438         Reviewed by Oliver Hunt.
18439
18440         Fixed a crash seen on the GTK 64bit buildbot.
18441         
18442         When JSArray is allocated for the vptr stealing hack, it's not allocated
18443         in the heap, so the JSArray constructor can't safely call Heap::heap().
18444         
18445         Since this was subtle enough to confuse smart people, I've changed JSArray
18446         to have an explicit vptr stealing constructor.
18447
18448         * JavaScriptCore.xcodeproj/project.pbxproj:
18449         * runtime/JSArray.cpp:
18450         (JSC::JSArray::JSArray):
18451         * runtime/JSArray.h:
18452         (JSC::JSArray::):
18453         * runtime/JSGlobalData.cpp:
18454         (JSC::JSGlobalData::storeVPtrs):
18455
18456 2010-08-03  Alex Milowski  <alex@milowski.com>
18457
18458         Reviewed by Beth Dakin.
18459
18460         Changed the ENABLE_MATHML value to enable MathML by default.
18461
18462         * Configurations/FeatureDefines.xcconfig:
18463
18464 2010-08-03  Michael Saboff  <msaboff@apple.com>
18465
18466         Reviewed by Gavin Barraclough.
18467
18468         Change to keep returned pointer from malloc family functions to
18469         quiet memory leak detect.  The pointer is saved in the new m_allocBase
18470         member of the ArrayStorage structure.  This fixes the issue found in 
18471         https://bugs.webkit.org/show_bug.cgi?id=43229.
18472
18473         As part of this change, we use m_allocBase when reallocating and
18474         freeing the memory associated with ArrayStorage.
18475
18476         * runtime/JSArray.cpp:
18477         (JSC::JSArray::JSArray):
18478         (JSC::JSArray::~JSArray):
18479         (JSC::JSArray::putSlowCase):
18480         (JSC::JSArray::increaseVectorLength):
18481         (JSC::JSArray::increaseVectorPrefixLength):
18482         * runtime/JSArray.h:
18483
18484 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
18485
18486         Reviewed by Mark Rowe.
18487
18488         https://bugs.webkit.org/show_bug.cgi?id=43444
18489         PLATFORM(CF) is false on Windows in JavaScriptCore
18490
18491         Moved some PLATFORM(WIN) #defines down into JavaScriptCore.
18492
18493         * wtf/Platform.h: Added WTF_PLATFORM_CF 1 and WTF_USE_PTHREADS 0, inherited
18494         from WebCore/config.h. Removed WTF_USE_WININET 1 since WebCore/config.h
18495         just #undefined that later.
18496
18497 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
18498
18499         Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since
18500         PLATFORM(CF) is not defined on Windows.
18501         
18502         We'll need to enable the GC activity callback some other way, but this
18503         change should get the build back to normal.
18504
18505         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
18506
18507         * runtime/GCActivityCallbackCF.cpp: Make it easier to detect this error
18508         in the future with an explicit error message.
18509
18510 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
18511
18512         Try to fix Windows build: update .def file.
18513
18514         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18515
18516 2010-08-03  Nathan Lawrence  <nlawrence@apple.com>
18517
18518         Reviewed by Oliver Hunt.
18519
18520         https://bugs.webkit.org/show_bug.cgi?id=41318
18521         GC should reclaim garbage even when new objects are not being allocated rapidly
18522
18523         Added a callback in JavaScriptCore that gets triggered after an
18524         allocation causes the heap to reset.  This is useful for adding a
18525         timer that will trigger garbage collection after the "last" allocation.
18526
18527         Also needed was to add lock and unlock methods to JSLock that needed
18528         only a JSGlobalData object versus an ExecState object.
18529
18530         * CMakeLists.txt:
18531         * GNUmakefile.am:
18532         * JavaScriptCore.exp:
18533         * JavaScriptCore.gypi:
18534         * JavaScriptCore.pro:
18535         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
18536         * JavaScriptCore.xcodeproj/project.pbxproj:
18537         * jit/JITPropertyAccess.cpp:
18538         (JSC::JIT::emit_op_put_by_val):
18539         * runtime/Collector.cpp:
18540         (JSC::Heap::Heap):
18541         (JSC::Heap::reset):
18542         (JSC::Heap::setActivityCallback):
18543         * runtime/Collector.h:
18544         * runtime/GCActivityCallback.cpp: Added.
18545         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
18546         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
18547         (JSC::DefaultGCActivityCallback::operator()):
18548         * runtime/GCActivityCallback.h: Added.
18549         (JSC::GCActivityCallback::~GCActivityCallback):
18550         (JSC::GCActivityCallback::operator()):
18551         (JSC::GCActivityCallback::GCActivityCallback):
18552         (JSC::DefaultGCActivityCallback::create):
18553         * runtime/GCActivityCallbackCF.cpp: Added.
18554         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
18555         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
18556         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
18557         (JSC::DefaultGCActivityCallback::operator()):
18558         * runtime/JSLock.cpp:
18559         (JSC::JSLock::JSLock):
18560         * runtime/JSLock.h:
18561
18562 2010-08-02  Kevin Ollivier  <kevino@theolliviers.com>
18563
18564         [wx] Build fix after removal of need to compile ExecutableAllocatorPosix.cpp
18565
18566         * wscript:
18567
18568 2010-08-02  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
18569
18570         Reviewed by Simon Hausmann.
18571
18572         [QT] build fix for symbian
18573         https://bugs.webkit.org/show_bug.cgi?id=43234
18574
18575         1) wrong order of passing param's
18576         2) static_cast complains on symbian so using reinterpret_cast
18577
18578         No new tests added. Just a build fix for qt symbian
18579
18580         * wtf/PageAllocation.cpp:
18581         (WTF::PageAllocation::commit):
18582         (WTF::PageAllocation::decommit):
18583         (WTF::PageAllocation::reserve):
18584
18585 2010-07-30  Luiz Agostini  <luiz.agostini@openbossa.org>
18586
18587         Reviewed by Simon Fraser.
18588
18589         Enabling view modes to all platforms
18590         https://bugs.webkit.org/show_bug.cgi?id=37505
18591
18592         Removing ENABLE_WIDGETS_10_SUPPORT flag.
18593
18594         As view mode media feature is not part of widget 1.0 specification
18595         any more the ENABLE_WIDGETS_10_SUPPORT flag may be removed. The only use
18596         of this flag was related to view mode media feature implementation in Qt. 
18597
18598         * wtf/Platform.h:
18599
18600 2010-07-30  Andy Estes  <aestes@apple.com>
18601
18602         Reviewed by David Kilzer.
18603
18604         Add Xcode support for compiling WebKit against iOS SDKs.
18605         https://bugs.webkit.org/show_bug.cgi?id=42796
18606
18607         * Configurations/Base.xcconfig:
18608         * Configurations/DebugRelease.xcconfig:
18609         * Configurations/FeatureDefines.xcconfig:
18610
18611 2010-07-30  Dumitru Daniliuc  <dumi@chromium.org>
18612
18613         Reviewed by Davin Levin.
18614
18615         Added a yield() function.
18616         https://bugs.webkit.org/show_bug.cgi?id=42843
18617
18618         * JavaScriptCore.exp:
18619         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18620         * wtf/Threading.h:
18621         * wtf/ThreadingPthreads.cpp:
18622         (WTF::yield):
18623         * wtf/ThreadingWin.cpp:
18624         (WTF::yield):
18625         * wtf/gtk/ThreadingGtk.cpp:
18626         (WTF::yield):
18627         * wtf/qt/ThreadingQt.cpp:
18628         (WTF::yield):
18629
18630 2010-07-30  Rafael Antognolli  <antognolli@profusion.mobi>
18631
18632         Reviewed by Antonio Gomes.
18633
18634         [EFL] Add library version and soname to EFL generated libraries and binary.
18635         https://bugs.webkit.org/show_bug.cgi?id=43212
18636
18637         Add version and soname to libjavascriptcore.so and libwtf.so in case of
18638         linking as shared libraries, and version to jsc executable.
18639
18640         * CMakeLists.txt:
18641         * jsc/CMakeLists.txt:
18642         * wtf/CMakeLists.txt:
18643
18644 2010-07-30  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
18645
18646         Reviewed by Simon Hausmann.
18647
18648         [QT] build fix for symbian
18649         https://bugs.webkit.org/show_bug.cgi?id=43234
18650
18651         * wtf/PageAllocation.h:
18652         (WTF::PageAllocation::PageAllocation):
18653
18654 2010-07-29  Sheriff Bot  <webkit.review.bot@gmail.com>
18655
18656         Unreviewed, rolling out r64313.
18657         http://trac.webkit.org/changeset/64313
18658         https://bugs.webkit.org/show_bug.cgi?id=43233
18659
18660         Some Chromium bots are not happy with it for some unknown
18661         reason. (Requested by dumi on #webkit).
18662
18663         * JavaScriptCore.exp:
18664         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18665         * wtf/Threading.h:
18666         * wtf/ThreadingPthreads.cpp:
18667         * wtf/ThreadingWin.cpp:
18668         * wtf/gtk/ThreadingGtk.cpp:
18669         * wtf/qt/ThreadingQt.cpp:
18670
18671 2010-07-29  Sheriff Bot  <webkit.review.bot@gmail.com>
18672
18673         Unreviewed, rolling out r64302.
18674         http://trac.webkit.org/changeset/64302
18675         https://bugs.webkit.org/show_bug.cgi?id=43223
18676
18677         Assertion is bogus (Requested by olliej on #webkit).
18678
18679         * assembler/ARMAssembler.cpp:
18680         (JSC::ARMAssembler::executableCopy):
18681         * assembler/AssemblerBuffer.h:
18682         (JSC::AssemblerBuffer::putShortUnchecked):
18683         (JSC::AssemblerBuffer::putIntUnchecked):
18684         (JSC::AssemblerBuffer::putInt64Unchecked):
18685         * jit/JITStubs.cpp:
18686         * pcre/pcre_compile.cpp:
18687         (jsRegExpCompile):
18688         * wtf/FastMalloc.cpp:
18689         (WTF::PageHeapAllocator::New):
18690         (WTF::TCMalloc_Central_FreeList::Populate):
18691         * wtf/MD5.cpp:
18692         (WTF::reverseBytes):
18693         (WTF::MD5::addBytes):
18694         (WTF::MD5::checksum):
18695         * wtf/StdLibExtras.h:
18696         * wtf/Vector.h:
18697         (WTF::VectorBuffer::inlineBuffer):
18698         * wtf/qt/StringQt.cpp:
18699         (WebCore::String::String):
18700
18701 2010-07-29  Michael Saboff  <msaboff@apple.com>
18702
18703         Reviewed by Gavin Barraclough.
18704
18705         Changed the handling for removing and adding elements at the front
18706         of an array.  The code now keeps a bias that indicates the amount of
18707         JSValue sized holes are prior to the ArrayStorage block.  This means
18708         that shift operations are now memmove's of the header part of
18709         the ArrayStorage and unshift operations are similar, but may require a
18710         realloc first to create the space.  Similar operations are performed
18711         for special cases of splice and slice.
18712         Also optimized the new Array(size) case so that we don't allocate and
18713         initialize array elements until the JS code starts using elements.
18714         The array growth code is slightly more aggressive for initial growth
18715         based on size growth of any previous array.
18716
18717         * Configurations/JavaScriptCore.xcconfig:
18718         * jit/JITPropertyAccess.cpp:
18719         (JSC::JIT::emit_op_get_by_val):
18720         (JSC::JIT::emit_op_put_by_val):
18721         (JSC::JIT::privateCompilePatchGetArrayLength):
18722         * jit/JITPropertyAccess32_64.cpp:
18723         (JSC::JIT::emit_op_get_by_val):
18724         (JSC::JIT::emit_op_put_by_val):
18725         (JSC::JIT::privateCompilePatchGetArrayLength):
18726         * runtime/ArrayPrototype.cpp:
18727         (JSC::arrayProtoFuncShift):
18728         (JSC::arrayProtoFuncSplice):
18729         (JSC::arrayProtoFuncUnShift):
18730         * runtime/JSArray.cpp:
18731         (JSC::JSArray::JSArray):
18732         (JSC::JSArray::~JSArray):
18733         (JSC::JSArray::getOwnPropertySlot):
18734         (JSC::JSArray::getOwnPropertyDescriptor):
18735         (JSC::JSArray::put):
18736         (JSC::JSArray::putSlowCase):
18737         (JSC::JSArray::deleteProperty):
18738         (JSC::JSArray::getOwnPropertyNames):
18739         (JSC::JSArray::getNewVectorLength):
18740         (JSC::JSArray::increaseVectorLength):
18741         (JSC::JSArray::increaseVectorPrefixLength):
18742         (JSC::JSArray::setLength):
18743         (JSC::JSArray::pop):
18744         (JSC::JSArray::push):
18745         (JSC::JSArray::shiftCount):
18746         (JSC::JSArray::unshiftCount):
18747         (JSC::JSArray::sortNumeric):
18748         (JSC::JSArray::sort):
18749         (JSC::JSArray::fillArgList):
18750         (JSC::JSArray::copyToRegisters):
18751         (JSC::JSArray::compactForSorting):
18752         (JSC::JSArray::subclassData):
18753         (JSC::JSArray::setSubclassData):
18754         (JSC::JSArray::checkConsistency):
18755         * runtime/JSArray.h:
18756         (JSC::JSArray::length):
18757         (JSC::JSArray::canGetIndex):
18758         (JSC::JSArray::getIndex):
18759         (JSC::JSArray::setIndex):
18760         (JSC::JSArray::uncheckedSetIndex):
18761         (JSC::JSArray::arrayStorage):
18762         (JSC::JSArray::setArrayStorage):
18763         (JSC::JSArray::markChildrenDirect):
18764
18765 2010-07-29  Michael Saboff  <msaboff@apple.com>
18766
18767         Reviewed by Darin Adler.
18768
18769         Changed MINIMUM_CELL_SIZE to be fixed at 64 bytes.
18770
18771         * runtime/Collector.h:
18772
18773 2010-07-28  Dumitru Daniliuc  <dumi@chromium.org>
18774
18775         Reviewed by David Levin.
18776
18777         Added a yield() function.
18778         https://bugs.webkit.org/show_bug.cgi?id=42843
18779
18780         * JavaScriptCore.exp:
18781         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18782         * wtf/Threading.h:
18783         * wtf/ThreadingPthreads.cpp:
18784         (WTF::yield):
18785         * wtf/ThreadingWin.cpp:
18786         (WTF::yield):
18787         * wtf/gtk/ThreadingGtk.cpp:
18788         (WTF::yield):
18789         * wtf/qt/ThreadingQt.cpp:
18790         (WTF::yield):
18791
18792 2010-07-29  Michael Saboff  <msaboff@apple.com>
18793
18794         Reviewed by Oliver Hunt.
18795
18796         Fixed issue where RegExp greedy jit code loops when no input is
18797         consumed.  Changed the code to only loop if some input was consumed,
18798         but fall through if we successfully match an alternative that 
18799         doesn't consume any input.
18800         https://bugs.webkit.org/show_bug.cgi?id=42664
18801
18802         * yarr/RegexJIT.cpp:
18803         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
18804
18805 2010-07-29  Gabor Loki  <loki@webkit.org>
18806
18807         Reviewed by Gavin Barraclough.
18808
18809         Avoid increasing required alignment of target type warning on ARM
18810         https://bugs.webkit.org/show_bug.cgi?id=38045
18811
18812         The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
18813         sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
18814         increases required alignment of target type warnings.
18815         Casting the type of [pointer to Type2] object to void* bypasses the
18816         warning.
18817
18818         * assembler/ARMAssembler.cpp:
18819         (JSC::ARMAssembler::executableCopy):
18820         * assembler/AssemblerBuffer.h:
18821         (JSC::AssemblerBuffer::putShortUnchecked):
18822         (JSC::AssemblerBuffer::putIntUnchecked):
18823         (JSC::AssemblerBuffer::putInt64Unchecked):
18824         * jit/JITStubs.cpp:
18825         * pcre/pcre_compile.cpp:
18826         (jsRegExpCompile):
18827         * wtf/FastMalloc.cpp:
18828         (WTF::PageHeapAllocator::New):
18829         (WTF::TCMalloc_Central_FreeList::Populate):
18830         * wtf/MD5.cpp:
18831         (WTF::reverseBytes):
18832         (WTF::MD5::addBytes):
18833         (WTF::MD5::checksum):
18834         * wtf/StdLibExtras.h:
18835         (reinterpret_cast_ptr):
18836         * wtf/Vector.h:
18837         (WTF::VectorBuffer::inlineBuffer):
18838         * wtf/qt/StringQt.cpp:
18839         (WebCore::String::String):
18840
18841 2010-07-29  Martin Robinson  <mrobinson@igalia.com>
18842
18843         Unreviewed build fix.
18844
18845         Include a missing header in the source list to fix 'make dist.'
18846
18847         * GNUmakefile.am: Include missing header.
18848
18849 2010-07-28  Gavin Barraclough  <barraclough@apple.com>
18850
18851         Reviewed by Darin Adler.
18852
18853         Bug 43162 - Add support for MADV_FREE to PageAllocation.
18854
18855         * wtf/PageAllocation.cpp:
18856         (WTF::PageAllocation::commit):
18857         (WTF::PageAllocation::decommit):
18858
18859 2010-07-27  Kinuko Yasuda  <kinuko@chromium.org>
18860
18861         Reviewed by Ojan Vafai.
18862
18863         Add FILE_SYSTEM build flag for FileSystem API
18864         https://bugs.webkit.org/show_bug.cgi?id=42915
18865
18866         * Configurations/FeatureDefines.xcconfig:
18867
18868 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
18869
18870         Temporarily rolling out http://trac.webkit.org/changeset/64177,
18871         this seems to give QT ARM/Win a headache (specifically, looks
18872         like structure layour differs, objects get too large - 
18873         "..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:41:"
18874         "error: size of array 'dummyclass_fits_in_cell' is negative").
18875
18876         * jit/JITPropertyAccess.cpp:
18877         (JSC::JIT::emit_op_get_by_val):
18878         (JSC::JIT::emit_op_put_by_val):
18879         (JSC::JIT::privateCompilePatchGetArrayLength):
18880         * jit/JITPropertyAccess32_64.cpp:
18881         (JSC::JIT::emit_op_get_by_val):
18882         (JSC::JIT::emit_op_put_by_val):
18883         (JSC::JIT::privateCompilePatchGetArrayLength):
18884         * runtime/ArrayPrototype.cpp:
18885         (JSC::arrayProtoFuncShift):
18886         (JSC::arrayProtoFuncSplice):
18887         (JSC::arrayProtoFuncUnShift):
18888         * runtime/JSArray.cpp:
18889         (JSC::increasedVectorLength):
18890         (JSC::JSArray::JSArray):
18891         (JSC::JSArray::~JSArray):
18892         (JSC::JSArray::getOwnPropertySlot):
18893         (JSC::JSArray::getOwnPropertyDescriptor):
18894         (JSC::JSArray::put):
18895         (JSC::JSArray::putSlowCase):
18896         (JSC::JSArray::deleteProperty):
18897         (JSC::JSArray::getOwnPropertyNames):
18898         (JSC::JSArray::increaseVectorLength):
18899         (JSC::JSArray::setLength):
18900         (JSC::JSArray::pop):
18901         (JSC::JSArray::push):
18902         (JSC::JSArray::sortNumeric):
18903         (JSC::JSArray::sort):
18904         (JSC::JSArray::fillArgList):
18905         (JSC::JSArray::copyToRegisters):
18906         (JSC::JSArray::compactForSorting):
18907         (JSC::JSArray::subclassData):
18908         (JSC::JSArray::setSubclassData):
18909         (JSC::JSArray::checkConsistency):
18910         * runtime/JSArray.h:
18911         (JSC::JSArray::length):
18912         (JSC::JSArray::canGetIndex):
18913         (JSC::JSArray::getIndex):
18914         (JSC::JSArray::setIndex):
18915         (JSC::JSArray::uncheckedSetIndex):
18916         (JSC::JSArray::markChildrenDirect):
18917
18918 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
18919
18920         Speculative build fix for Chromium/Win
18921
18922         * wtf/Platform.h:
18923
18924 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
18925
18926         Oh! that makes more sense!  Maybe C++-style comments are bringing teh bad mojo.
18927
18928         * wtf/Platform.h:
18929
18930 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
18931
18932         Speculative build fix for GTK/64 ... seems to be barfing on a comment o_O
18933
18934         * wtf/Platform.h:
18935
18936 2010-07-27  Michael Saboff  <msaboff@apple.com>
18937
18938         Reviewed by Gavin Barraclough.
18939
18940         Changed the handling for removing and adding elements at the front
18941         of an array.  The code now keeps a bias that indicates the amount of
18942         JSValue sized holes are prior to the ArrayStorage block.  This means
18943         that shift operations are now memmove's of the header part of
18944         the ArrayStorage and unshift operations are similar, but may require a
18945         realloc first to create the space.  Similar operations are performed
18946         for special cases of splice and slice.
18947         Also optimized the new Array(size) case so that we don't allocate and
18948         initialize array elements until the JS code starts using elements.
18949         The array growth code is slightly more aggressive for initial growth
18950         based on size growth of any previous array.
18951
18952         * Configurations/JavaScriptCore.xcconfig:
18953         * jit/JITPropertyAccess.cpp:
18954         (JSC::JIT::emit_op_get_by_val):
18955         (JSC::JIT::emit_op_put_by_val):
18956         (JSC::JIT::privateCompilePatchGetArrayLength):
18957         * jit/JITPropertyAccess32_64.cpp:
18958         (JSC::JIT::emit_op_get_by_val):
18959         (JSC::JIT::emit_op_put_by_val):
18960         (JSC::JIT::privateCompilePatchGetArrayLength):
18961         * runtime/ArrayPrototype.cpp:
18962         (JSC::arrayProtoFuncShift):
18963         (JSC::arrayProtoFuncSplice):
18964         (JSC::arrayProtoFuncUnShift):
18965         * runtime/JSArray.cpp:
18966         (JSC::JSArray::JSArray):
18967         (JSC::JSArray::~JSArray):
18968         (JSC::JSArray::getOwnPropertySlot):
18969         (JSC::JSArray::getOwnPropertyDescriptor):
18970         (JSC::JSArray::put):
18971         (JSC::JSArray::putSlowCase):
18972         (JSC::JSArray::deleteProperty):
18973         (JSC::JSArray::getOwnPropertyNames):
18974         (JSC::JSArray::getNewVectorLength):
18975         (JSC::JSArray::increaseVectorLength):
18976         (JSC::JSArray::increaseVectorPrefixLength):
18977         (JSC::JSArray::setLength):
18978         (JSC::JSArray::pop):
18979         (JSC::JSArray::push):
18980         (JSC::JSArray::shiftCount):
18981         (JSC::JSArray::unshiftCount):
18982         (JSC::JSArray::sortNumeric):
18983         (JSC::JSArray::sort):
18984         (JSC::JSArray::fillArgList):
18985         (JSC::JSArray::copyToRegisters):
18986         (JSC::JSArray::compactForSorting):
18987         (JSC::JSArray::subclassData):
18988         (JSC::JSArray::setSubclassData):
18989         (JSC::JSArray::checkConsistency):
18990         * runtime/JSArray.h:
18991         (JSC::JSArray::length):
18992         (JSC::JSArray::canGetIndex):
18993         (JSC::JSArray::getIndex):
18994         (JSC::JSArray::setIndex):
18995         (JSC::JSArray::uncheckedSetIndex):
18996         (JSC::JSArray::arrayStorage):
18997         (JSC::JSArray::setArrayStorage):
18998         (JSC::JSArray::markChildrenDirect):
18999
19000 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
19001
19002         Reviewed by Oliver Hunt.
19003
19004         Bug 43089 - Cleanup JIT related switched in Platform.h
19005
19006         The code the enable to JIT checks every permutation of platform & OS individually, but
19007         now the JIT is enabled on the majority much all x86/x86-64/ARM/MIPS systems.  It should
19008         be cleaner to just enable by default on these platforms, and explicitly disable on configs
19009         that don't aren't supported.
19010
19011         Also, rename ENABLE_JIT_OPTIMIZE_MOD to ENABLE_JIT_USE_SOFT_MODULO.  I always find this
19012         confusing since enabling this "optimization" would be possible, but would be a regression
19013         on x86/x86-64 systems!  I think it's clearer to reserve "JIT_OPTIMIZE" for compiler
19014         technologies applicable to all platforms, and make a more optional behaviour like this a
19015         "USE".
19016
19017         * jit/ExecutableAllocator.h:
19018         (JSC::ExecutableAllocator::cacheFlush):
19019         * jit/JIT.h:
19020         * jit/JITArithmetic.cpp:
19021         (JSC::JIT::emit_op_mod):
19022         (JSC::JIT::emitSlow_op_mod):
19023         * jit/JITArithmetic32_64.cpp:
19024         (JSC::JIT::emit_op_mod):
19025         (JSC::JIT::emitSlow_op_mod):
19026         * jit/JITOpcodes.cpp:
19027         (JSC::JIT::privateCompileCTIMachineTrampolines):
19028         * jit/JITOpcodes32_64.cpp:
19029         (JSC::JIT::privateCompileCTIMachineTrampolines):
19030         * wtf/Platform.h:
19031
19032 2010-07-27  James Robinson  <jamesr@chromium.org>
19033
19034         Reviewed by Darin Fisher.
19035
19036         [chromium] Make PLATFORM(CHROMIUM) and not OS(MAC) turn USE(GLES2_RENDERING) on
19037         https://bugs.webkit.org/show_bug.cgi?id=43084
19038
19039         This turns USE(GLES2_RENDERING) on for chromium on windows/linux.  This causes no
19040         change in behavior, that's all controlled by ENABLE() macros that are currently off.
19041
19042         * wtf/Platform.h:
19043
19044 2010-07-23  Helder Correia  <heldercorreia@codeaurora.org>
19045
19046         Reviewed by Darin Adler.
19047
19048         Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
19049         failing. For canvas image data manipulation, the values passed should
19050         be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
19051         to expect wrapping rather than clamping, and add some new checkings.
19052         https://bugs.webkit.org/show_bug.cgi?id=40272
19053
19054         * runtime/JSByteArray.h:
19055         (JSC::JSByteArray::setIndex):
19056         (JSC::JSByteArray::JSByteArray):
19057
19058 2010-07-27  Gavin Barraclough  <barraclough@apple.com>
19059
19060         Reviewed by Oliver Hunt.
19061
19062         Bug 42621 - Add a bump allocator for the YARR interpreter
19063
19064         The regex engine requires lifo allocation, however currently uses the general purpose
19065         malloc/free memory allocation.  A simple bump pointer allocator should provide a lower
19066         overhead allocation solution.
19067
19068         When using YARR interpreter, 15% progression on v8-regex.
19069
19070         * JavaScriptCore.xcodeproj/project.pbxproj:
19071         * runtime/JSGlobalData.h:
19072         * runtime/RegExp.cpp:
19073         (JSC::RegExp::compile):
19074         * wtf/BumpPointerAllocator.h: Added.
19075         (WTF::BumpPointerPool::ensureCapacity):
19076         (WTF::BumpPointerPool::alloc):
19077         (WTF::BumpPointerPool::dealloc):
19078         (WTF::BumpPointerPool::operator new):
19079         (WTF::BumpPointerPool::BumpPointerPool):
19080         (WTF::BumpPointerPool::create):
19081         (WTF::BumpPointerPool::shrink):
19082         (WTF::BumpPointerPool::destroy):
19083         (WTF::BumpPointerPool::ensureCapacityCrossPool):
19084         (WTF::BumpPointerPool::deallocCrossPool):
19085         (WTF::BumpPointerAllocator::BumpPointerAllocator):
19086         (WTF::BumpPointerAllocator::~BumpPointerAllocator):
19087         (WTF::BumpPointerAllocator::startAllocator):
19088         (WTF::BumpPointerAllocator::stopAllocator):
19089         * yarr/RegexInterpreter.cpp:
19090         (JSC::Yarr::Interpreter::allocDisjunctionContext):
19091         (JSC::Yarr::Interpreter::freeDisjunctionContext):
19092         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
19093         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
19094         (JSC::Yarr::Interpreter::interpret):
19095         (JSC::Yarr::Interpreter::Interpreter):
19096         (JSC::Yarr::ByteCompiler::compile):
19097         (JSC::Yarr::byteCompileRegex):
19098         * yarr/RegexInterpreter.h:
19099         (JSC::Yarr::BytecodePattern::BytecodePattern):
19100
19101 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19102
19103         Windows build fix from Chromium/GTK build fix!
19104
19105         * wtf/PageAllocation.cpp:
19106
19107 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19108
19109         Chromium/GTK build fix
19110
19111         * wtf/PageAllocation.cpp:
19112
19113 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19114
19115         Build fix for !Mac platforms.
19116
19117         * Android.mk:
19118         * CMakeLists.txt:
19119         * GNUmakefile.am:
19120         * JavaScriptCore.gypi:
19121         * JavaScriptCore.pro:
19122         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
19123
19124 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19125
19126         Reviewed by Oliver Hunt.
19127
19128         Bug 43009 - Abstract out page allocation from executable allocators
19129
19130         It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
19131
19132         In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
19133         I think this will match current behaviour for the next client we will want to port across (RegisterFile &
19134         Collector).
19135
19136         * CMakeListsEfl.txt:
19137         * GNUmakefile.am:
19138         * JavaScriptCore.gypi:
19139         * JavaScriptCore.pro:
19140         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19141         * JavaScriptCore.xcodeproj/project.pbxproj:
19142         * jit/ExecutableAllocator.cpp:
19143         (JSC::ExecutableAllocator::intializePageSize):
19144         (JSC::ExecutablePool::systemAlloc):
19145         (JSC::ExecutablePool::systemRelease):
19146         (JSC::ExecutableAllocator::isValid):
19147         * jit/ExecutableAllocator.h:
19148         (JSC::ExecutablePool::ExecutablePool):
19149         (JSC::ExecutablePool::poolAllocate):
19150         * jit/ExecutableAllocatorFixedVMPool.cpp:
19151         (JSC::FixedVMPoolAllocator::release):
19152         (JSC::FixedVMPoolAllocator::reuse):
19153         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19154         (JSC::FixedVMPoolAllocator::alloc):
19155         (JSC::FixedVMPoolAllocator::free):
19156         (JSC::FixedVMPoolAllocator::isValid):
19157         (JSC::FixedVMPoolAllocator::isWithinVMPool):
19158         (JSC::ExecutablePool::systemAlloc):
19159         (JSC::ExecutablePool::systemRelease):
19160         * jit/ExecutableAllocatorPosix.cpp: Removed.
19161         * jit/ExecutableAllocatorSymbian.cpp: Removed.
19162         * jit/ExecutableAllocatorWin.cpp: Removed.
19163         * wscript:
19164         * wtf/PageAllocator.cpp: Added.
19165         (WTF::protection):
19166         (WTF::PageAllocation::commit):
19167         (WTF::PageAllocation::decommit):
19168         (WTF::PageAllocator::allocate):
19169         (WTF::PageAllocator::reserve):
19170         (WTF::PageAllocator::deallocate):
19171         (WTF::PageAllocator::pagesize):
19172         * wtf/PageAllocator.h: Added.
19173         (WTF::PageAllocation::PageAllocation):
19174         (WTF::PageAllocation::base):
19175         (WTF::PageAllocation::size):
19176         (WTF::PageAllocation::chunk):
19177         (WTF::PageAllocation::operator!):
19178         (WTF::PageAllocator::):
19179
19180 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19181
19182         Rolling out r64097:64100, oops, more b0rked than I relized by my last changes, sorry!
19183
19184         * CMakeListsEfl.txt:
19185         * GNUmakefile.am:
19186         * JavaScriptCore.gypi:
19187         * JavaScriptCore.pro:
19188         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19189         * JavaScriptCore.xcodeproj/project.pbxproj:
19190         * jit/ExecutableAllocator.cpp:
19191         (JSC::ExecutableAllocator::reprotectRegion):
19192         (JSC::ExecutableAllocator::cacheFlush):
19193         * jit/ExecutableAllocator.h:
19194         (JSC::ExecutablePool::ExecutablePool):
19195         (JSC::ExecutablePool::poolAllocate):
19196         * jit/ExecutableAllocatorFixedVMPool.cpp:
19197         (JSC::FixedVMPoolAllocator::release):
19198         (JSC::FixedVMPoolAllocator::reuse):
19199         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19200         (JSC::FixedVMPoolAllocator::alloc):
19201         (JSC::FixedVMPoolAllocator::free):
19202         (JSC::FixedVMPoolAllocator::isValid):
19203         (JSC::FixedVMPoolAllocator::isWithinVMPool):
19204         (JSC::ExecutablePool::systemAlloc):
19205         (JSC::ExecutablePool::systemRelease):
19206         * jit/ExecutableAllocatorPosix.cpp: Added.
19207         (JSC::ExecutableAllocator::intializePageSize):
19208         (JSC::ExecutablePool::systemAlloc):
19209         (JSC::ExecutablePool::systemRelease):
19210         (JSC::ExecutableAllocator::isValid):
19211         * jit/ExecutableAllocatorSymbian.cpp: Added.
19212         (JSC::ExecutableAllocator::intializePageSize):
19213         (JSC::ExecutablePool::systemAlloc):
19214         (JSC::ExecutablePool::systemRelease):
19215         (JSC::ExecutableAllocator::isValid):
19216         * jit/ExecutableAllocatorWin.cpp: Added.
19217         (JSC::ExecutableAllocator::intializePageSize):
19218         (JSC::ExecutablePool::systemAlloc):
19219         (JSC::ExecutablePool::systemRelease):
19220         (JSC::ExecutableAllocator::isValid):
19221         * wscript:
19222         * wtf/PageAllocation.cpp: Removed.
19223         * wtf/PageAllocation.h: Removed.
19224
19225 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19226
19227         Speculative !debug build fix II.
19228
19229         * wtf/PageAllocation.h:
19230         (WTF::PageAllocation::PageAllocation):
19231
19232 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19233
19234         Speculative !debug build fix.
19235
19236         * wtf/PageAllocation.h:
19237         (WTF::PageAllocation::PageAllocation):
19238
19239 2010-07-26  Gavin Barraclough  <barraclough@apple.com>
19240
19241         Reviewed by Oliver Hunt.
19242
19243         Bug 43009 - Abstract out page allocation from executable allocators
19244
19245         It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
19246
19247         In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
19248         I think this will match current behaviour for the next client we will want to port across (RegisterFile &
19249         Collector).
19250
19251         * CMakeListsEfl.txt:
19252         * GNUmakefile.am:
19253         * JavaScriptCore.gypi:
19254         * JavaScriptCore.pro:
19255         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19256         * JavaScriptCore.xcodeproj/project.pbxproj:
19257         * jit/ExecutableAllocator.cpp:
19258         (JSC::ExecutableAllocator::intializePageSize):
19259         (JSC::ExecutablePool::systemAlloc):
19260         (JSC::ExecutablePool::systemRelease):
19261         (JSC::ExecutableAllocator::isValid):
19262         * jit/ExecutableAllocator.h:
19263         (JSC::ExecutablePool::ExecutablePool):
19264         (JSC::ExecutablePool::poolAllocate):
19265         * jit/ExecutableAllocatorFixedVMPool.cpp:
19266         (JSC::FixedVMPoolAllocator::release):
19267         (JSC::FixedVMPoolAllocator::reuse):
19268         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19269         (JSC::FixedVMPoolAllocator::alloc):
19270         (JSC::FixedVMPoolAllocator::free):
19271         (JSC::FixedVMPoolAllocator::isValid):
19272         (JSC::FixedVMPoolAllocator::isWithinVMPool):
19273         (JSC::ExecutablePool::systemAlloc):
19274         (JSC::ExecutablePool::systemRelease):
19275         * jit/ExecutableAllocatorPosix.cpp: Removed.
19276         * jit/ExecutableAllocatorSymbian.cpp: Removed.
19277         * jit/ExecutableAllocatorWin.cpp: Removed.
19278         * wscript:
19279         * wtf/PageAllocator.cpp: Added.
19280         (WTF::protection):
19281         (WTF::PageAllocation::commit):
19282         (WTF::PageAllocation::decommit):
19283         (WTF::PageAllocator::allocate):
19284         (WTF::PageAllocator::reserve):
19285         (WTF::PageAllocator::deallocate):
19286         (WTF::PageAllocator::pagesize):
19287         * wtf/PageAllocator.h: Added.
19288         (WTF::PageAllocation::PageAllocation):
19289         (WTF::PageAllocation::base):
19290         (WTF::PageAllocation::size):
19291         (WTF::PageAllocation::chunk):
19292         (WTF::PageAllocation::operator!):
19293         (WTF::PageAllocator::):
19294
19295 2009-10-30  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
19296
19297         Reviewed by Kenneth Rohde Christiansen.
19298
19299         [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml()
19300
19301         This ensures that long-running JavaScript (for example due to a modal alert() dialog),
19302         will not trigger a deferred load after only 500ms (the default tokenizer delay) while
19303         still giving a reasonable timeout (10 seconds) to prevent deadlock.
19304
19305         https://bugs.webkit.org/show_bug.cgi?id=29381
19306
19307         * runtime/TimeoutChecker.h: Add getter for the timeout interval
19308
19309 2010-07-25  Patrick Gansterer  <paroga@paroga.com>
19310
19311         Reviewed by Kent Tamura.
19312
19313         [WINCE] Buildfix for JSC in release mode
19314         https://bugs.webkit.org/show_bug.cgi?id=42934
19315
19316         * jsc.cpp: Don't use __try on WinCE.
19317
19318 2010-07-24  Patrick Gansterer  <paroga@paroga.com>
19319
19320         Reviewed by Darin Adler.
19321
19322         [MSVC] Ensure 4 byte alignment on ARM
19323         https://bugs.webkit.org/show_bug.cgi?id=42935
19324
19325         * jit/JITStubs.h: Added #pragma pack(4) around JITStackFrame.
19326
19327 2010-07-24  Patrick Gansterer  <paroga@paroga.com>
19328
19329         Reviewed by Darin Adler.
19330
19331         [WINCE] Cleanup defines in Platform.h
19332         https://bugs.webkit.org/show_bug.cgi?id=42933
19333
19334         * wtf/Platform.h:
19335
19336 2010-07-23  Rafael Antognolli  <antognolli@profusion.mobi>
19337
19338         Reviewed by Antonio Gomes.
19339
19340         [EFL] Cleanup glib support (make it optional)
19341         https://bugs.webkit.org/show_bug.cgi?id=42480
19342
19343         Remove gobject/GRefPtr.cpp if not using soup/glib.
19344
19345         * wtf/CMakeListsEfl.txt:
19346
19347 2010-07-23  Patrick Gansterer  <paroga@paroga.com>
19348
19349         Reviewed by Adam Roben.
19350
19351         [WINCE] Implement TCSpinLock.
19352         https://bugs.webkit.org/show_bug.cgi?id=41792
19353
19354         Implement the SpinLock with InterlockedExchange from the Windows API.
19355
19356         * wtf/TCSpinLock.h:
19357         (TCMalloc_SpinLock::Lock):
19358         (TCMalloc_SpinLock::Unlock):
19359         (TCMalloc_SpinLock::IsHeld):
19360         (TCMalloc_SpinLock::Init):
19361         (TCMalloc_SlowLock):
19362
19363 2010-07-22  Csaba Osztrogonác  <ossy@webkit.org>
19364
19365         Unreviewed rolling out r63947 and r63948, because they broke Qt Windows build.
19366
19367         * jit/JITStubs.cpp:
19368         * jit/JITStubs.h:
19369
19370 2010-07-22  Gavin Barraclough  <barraclough@apple.com>
19371
19372         Eeeep! r63947 hosed all non-x86 builds!
19373
19374         * jit/JITStubs.h:
19375
19376 2010-07-22  Gavin Barraclough  <barraclough@apple.com>
19377
19378         Reviewed by Oliver Hunt.
19379
19380         Bug 42818 - [Qt] REGRESSION(63348): jsc is broken
19381         Speculative fix, need fastcall conventions on Qt/Win.
19382
19383         * jit/JITStubs.cpp:
19384         * jit/JITStubs.h:
19385
19386 2010-07-22  Oliver Hunt  <oliver@apple.com>
19387
19388         Reviewed by Gavin Barraclough.
19389
19390         Do more constant folding
19391         https://bugs.webkit.org/show_bug.cgi?id=42867
19392
19393         Constant fold a few more operations.  SunSpider says this is
19394         a win but I suspect that's just code motion at play.
19395
19396         * parser/ASTBuilder.h:
19397         (JSC::ASTBuilder::makeModNode):
19398         (JSC::ASTBuilder::makeURightShiftNode):
19399         (JSC::ASTBuilder::makeBitOrNode):
19400         (JSC::ASTBuilder::makeBitAndNode):
19401         (JSC::ASTBuilder::makeBitXOrNode):
19402         (JSC::ASTBuilder::makeBinaryNode):
19403
19404 2010-07-22  Kent Hansen  <kent.hansen@nokia.com>
19405
19406         Reviewed by Kent Tamura.
19407
19408         Error properties of the Global Object are missing the DontEnum attribute
19409         https://bugs.webkit.org/show_bug.cgi?id=28771
19410
19411         Add the attributes to become spec compliant.
19412
19413         * runtime/JSGlobalObject.cpp:
19414         (JSC::JSGlobalObject::reset):
19415
19416 2010-07-20  Steve Falkenburg  <sfalken@apple.com>
19417
19418         Reviewed by Adam Roben.
19419
19420         WebKit on Windows should build optionally with an unversioned ICU DLL
19421         https://bugs.webkit.org/show_bug.cgi?id=42722
19422         <rdar://problem/8211743> JavaScriptCore needs to link against unversioned ICU
19423         
19424         Dynamically create a new header, ICUVersion.h, as part of build-generated-files.sh.
19425         Header contains a preprocessor define (U_DISABLE_RENAMING) indicating to ICU whether the ICU API
19426         should be namespaced with the current ICU version number. Proper value is determined
19427         by checking for the presence of libicuuc.lib, the unversioned copy of ICU.
19428         
19429         To get the proper value for U_DISABLE_RENAMING into all source files, we force
19430         the include of ICUVersion.h (our generated header) via the compiler options.
19431         
19432         Since the versioned and unversioned ICU have different filenames (libicuuc.lib vs icuuc.lib)
19433         we copy the ICU lib to an intermediate location under obj with a common name. This
19434         allows us to link properly with either without adding a new build configuration.
19435
19436         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
19437         Copy ICU libs into a common location with a common name.
19438         Add additional library search path to pick up icu lib.
19439         Change ICU library filename specified to linker.
19440         Add forced include of ICUVersion.h.
19441         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Generate ICUVersion.h
19442         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Add forced include of ICUVersion.h.
19443         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
19444         Copy ICU libs into a common location with a common name.
19445         Add additional library search path to pick up icu lib.
19446         Change ICU library filename specified to linker.
19447         Add forced include of ICUVersion.h.
19448         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
19449         Copy ICU libs into a common location with a common name.
19450         Add additional library search path to pick up icu lib.
19451         Change ICU library filename specified to linker.
19452         Add forced include of ICUVersion.h.
19453
19454 2010-07-20  Steve Falkenburg  <sfalken@apple.com>
19455
19456         Re-save vsprops files after no-op edits in Visual Studio
19457         to fix manual edit issues.
19458
19459 2010-07-20  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
19460
19461         Reviewed by Steve Block.
19462
19463         Need to be able to configure Geolocation policy regarding user permissions
19464         https://bugs.webkit.org/show_bug.cgi?id=42068
19465
19466         If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
19467         by default 
19468
19469         * wtf/Platform.h:
19470         
19471 2010-07-20  Sheriff Bot  <webkit.review.bot@gmail.com>
19472
19473         Unreviewed, rolling out r63742.
19474         http://trac.webkit.org/changeset/63742
19475         https://bugs.webkit.org/show_bug.cgi?id=42641
19476
19477         Broke Leopard Intel build. (Requested by bbandix on #webkit).
19478
19479         * wtf/Platform.h:
19480
19481 2010-07-20  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
19482
19483         Reviewed by Steve Block.
19484
19485         Need to be able to configure Geolocation policy regarding user permissions
19486         https://bugs.webkit.org/show_bug.cgi?id=42068
19487
19488         If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
19489         by default 
19490
19491         * wtf/Platform.h:
19492         
19493 2010-07-19  Dirk Schulze  <krit@webkit.org>
19494
19495         Reviewed by Nikolas Zimmermann.
19496
19497         SVG CleanUp of SVGPathData parsing
19498         https://bugs.webkit.org/show_bug.cgi?id=41410
19499
19500         Added piOverTwo to MathExtras.
19501
19502         * wtf/MathExtras.h:
19503
19504 2010-07-19  Mike Moretti  <mike.moretti@nokia.com>
19505
19506         Reviewed by Laszlo Gombos.
19507
19508         [Symbian] Build fix after r63404.
19509
19510         Implement isValid() function for the Symbian executable allocator.
19511
19512         * jit/ExecutableAllocatorSymbian.cpp:
19513         (JSC::ExecutableAllocator::isValid):
19514
19515 2010-07-19  Chris Marrin  <cmarrin@apple.com>
19516
19517         Reviewed by Darin Adler.
19518
19519         https://bugs.webkit.org/show_bug.cgi?id=42118
19520         Disable WebGL on Leopard for now. 
19521
19522         LayoutTests fail on some graphics hardware on Leopard because one of the features we use,
19523         GL_ARB_framebuffer_object, is not universally available in Leopard like it is in
19524         SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a
19525         software OpenGL driver on machines without this support.
19526
19527         * Configurations/FeatureDefines.xcconfig:
19528
19529 2010-07-16  Darin Adler  <darin@apple.com>
19530
19531         Reviewed by Sam Weinig.
19532
19533         Use OwnPtr for CodeBlock objects
19534         https://bugs.webkit.org/show_bug.cgi?id=42490
19535
19536         * runtime/Executable.cpp:
19537         (JSC::EvalExecutable::EvalExecutable): Moved this here and made it non-inline.
19538         Eliminated the code that used to initialize the raw pointer since it's now
19539         an OwnPtr.
19540         (JSC::EvalExecutable::~EvalExecutable): Removed the explicit delete here.
19541         (JSC::ProgramExecutable::ProgramExecutable): Ditto.
19542         (JSC::ProgramExecutable::~ProgramExecutable): Ditto.
19543         (JSC::FunctionExecutable::FunctionExecutable): Ditto.
19544         (JSC::FunctionExecutable::~FunctionExecutable): Ditto.
19545         (JSC::EvalExecutable::compileInternal): Added use of adoptPtr and get.
19546         (JSC::ProgramExecutable::compileInternal): Ditto.
19547         (JSC::FunctionExecutable::compileForCallInternal): Ditto.
19548         (JSC::FunctionExecutable::compileForConstructInternal): Ditto.
19549         (JSC::FunctionExecutable::recompile): Use clear instead of delete followed
19550         by assignment of 0.
19551
19552         * runtime/Executable.h: Moved constructors to the cpp file and changed
19553         raw pointers to OwnPtr.
19554
19555 2010-07-19  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
19556
19557         Reviewed by Kenneth Rohde Christiansen.
19558
19559         [EFL] Fix build on 64-bit systems. According to
19560         JavaScriptCore/wtf/Platform.h, x86_64 uses fixed allocator, which
19561         needs jit/ExecutableAllocatorFixedVMPool.cpp to be included in build
19562         system.
19563         https://bugs.webkit.org/show_bug.cgi?id=42559
19564
19565         * CMakeListsEfl.txt: add missing file for x86_64.
19566
19567 2010-07-16  Leandro Pereira  <leandro@profusion.mobi>
19568
19569         [EFL] Unreviewed build system cleanup.
19570
19571         Move ExecutableAllocator{FixedVMPool,Posix,Symbian,Win}.cpp from
19572         root CMakeLists.txt to the platform CMakeLists.txt.
19573
19574         * CMakeLists.txt:
19575         * CMakeListsEfl.txt: Add ExecutableAllocatorPosix.cpp.
19576
19577 2010-07-16  Oliver Hunt  <oliver@apple.com>
19578
19579         Reviewed by Geoffrey Garen.
19580
19581         ES5 allows use of reserved words as IdentifierName
19582         https://bugs.webkit.org/show_bug.cgi?id=42471
19583
19584         Modify the lexer to allow us to avoid identifying reserved
19585         words in those contexts where they are valid identifiers, and
19586         we know it's safe.  Additionally tag the reserved word tokens
19587         so we can easily identify them in those cases where we can't
19588         guarantee that we've skipped reserved word identification.
19589
19590         * parser/JSParser.cpp:
19591         (JSC::JSParser::next):
19592         (JSC::JSParser::parseProperty):
19593         (JSC::JSParser::parseMemberExpression):
19594         * parser/JSParser.h:
19595         (JSC::):
19596         * parser/Lexer.cpp:
19597         (JSC::Lexer::lex):
19598         * parser/Lexer.h:
19599         (JSC::Lexer::):
19600
19601 2010-07-16  Anders Carlsson  <andersca@apple.com>
19602
19603         Reviewed by Sam Weinig.
19604
19605         clang++ build fixes for JavaScriptCore and WebCore
19606         https://bugs.webkit.org/show_bug.cgi?id=42478
19607
19608         * runtime/RegExpKey.h:
19609         (JSC::operator==):
19610         Move the RegExpKey equals operator into the JSC namespace so it can be found by ADL.
19611
19612 2010-07-16  Anders Carlsson  <andersca@apple.com>
19613
19614         Reviewed by David Levin.
19615
19616         Really add WARN_UNUSED_RESULT to leakRef
19617         https://bugs.webkit.org/show_bug.cgi?id=42464
19618
19619         * wtf/PassRefPtr.h:
19620         (WTF::PassRefPtr::):
19621         (WTF::NonNullPassRefPtr::):
19622         Put the WARN_UNUSED_RESULT attribute at the right place.
19623
19624         * wtf/RetainPtr.h:
19625         (WTF::RetainPtr::releaseRef):
19626         Remove WARN_UNUSED_RESULT here for now, it leads to two warnings that need
19627         to be fixed first.
19628
19629 2010-07-15  Victor Wang  <victorw@chromium.org>
19630
19631         Reviewed by David Levin.
19632
19633         [Chromium] Disable c4291 for chromium windows multi dll build.
19634
19635         https://bugs.webkit.org/show_bug.cgi?id=42177
19636
19637         * JavaScriptCore.gyp/JavaScriptCore.gyp:
19638
19639 2010-07-15  Geoffrey Garen  <ggaren@apple.com>
19640
19641         Reviewed by Maciej Stachowiak.
19642
19643         Crash entering mail.yahoo.com
19644         https://bugs.webkit.org/show_bug.cgi?id=42394
19645     
19646         * bytecompiler/BytecodeGenerator.cpp:
19647         (JSC::BytecodeGenerator::argumentNumberFor): Added a NULL check. If the
19648         identifier we're resolving is not a local variable, registerFor returns
19649         NULL.
19650
19651         * bytecompiler/NodesCodegen.cpp:
19652         (JSC::FunctionBodyNode::emitBytecode): Unrelated to the crash, but I
19653         noticed this while working on it: No need to NULL-check returnNode,
19654         since an early return has already done so.
19655
19656 2010-07-15  Martin Robinson  <mrobinson@igalia.com>
19657
19658         Reviewed by Oliver Hunt.
19659
19660         [GTK] Simplify the distribution step
19661         https://bugs.webkit.org/show_bug.cgi?id=42414
19662
19663         * GNUmakefile.am: Add extra dist files directly to EXTRA_DIST instead
19664         of adding them by proxy via javascriptcore_dist. Sort the EXTRA_DIST list.
19665         Refer to create_hash_table and create_regexp_tables directly, as is the
19666         behavior with other code generation scripts.
19667
19668 2010-07-15  Oliver Hunt  <oliver@apple.com>
19669
19670         Reviewed by Geoff Garen.
19671
19672         Fix dumping of op_put_by_id.
19673
19674         * bytecode/CodeBlock.cpp:
19675         (JSC::CodeBlock::printPutByIdOp):
19676
19677 2010-07-15  Zoltan Herczeg  <zherczeg@webkit.org>
19678
19679         Reviewed by Darin Adler.
19680
19681         Refactoring some parts of the lexer
19682         https://bugs.webkit.org/show_bug.cgi?id=41845
19683
19684         This patch is a precursor of refactoring the identifier
19685         parsing, which currently slows down the lexer, and not
19686         ready for landing. This patch contains those sources,
19687         which does not slow down the lexer (mainly style changes).
19688
19689         SunSpider: no change (529.4ms to 528.7ms)
19690         --parse-only: no change (31.0ms to 31.2ms)
19691
19692         * parser/Lexer.cpp:
19693         (JSC::isIdentStart): using typesOfASCIICharacters to determine
19694              whether the current character is in identifier start
19695         (JSC::isIdentPart): using typesOfASCIICharacters to determine
19696              whether the current character is in identifier part
19697         (JSC::Lexer::parseString): style fix
19698         (JSC::Lexer::lex): removing the else after the main which
19699              which reduces code duplication
19700
19701 2010-07-15  Mark Rowe  <mrowe@apple.com>
19702
19703         Update the sorting in the Xcode project files.
19704
19705         * JavaScriptCore.xcodeproj/project.pbxproj:
19706
19707 2010-07-14  Oliver Hunt  <oliver@apple.com>
19708
19709         Reviewed by Gavin Barraclough.
19710
19711         Make sure that mixed interpreter/jit builds don't try to use the jit if the allocator fails
19712         https://bugs.webkit.org/show_bug.cgi?id=42310
19713
19714         Add some null checks to deal with the Fixed VM allocator failing
19715         to get the requested executable region, delay the creation of the
19716         JITStubs in JSGlobalData until after we know whether we're using
19717         the JIT.
19718
19719         * jit/ExecutableAllocator.h:
19720         (JSC::ExecutableAllocator::ExecutableAllocator):
19721         (JSC::ExecutableAllocator::poolForSize):
19722         * jit/ExecutableAllocatorFixedVMPool.cpp:
19723         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19724         (JSC::FixedVMPoolAllocator::alloc):
19725         (JSC::FixedVMPoolAllocator::free):
19726         (JSC::FixedVMPoolAllocator::isValid):
19727         (JSC::ExecutableAllocator::isValid):
19728         (JSC::ExecutablePool::systemAlloc):
19729         (JSC::ExecutablePool::systemRelease):
19730         * jit/ExecutableAllocatorPosix.cpp:
19731         (JSC::ExecutableAllocator::isValid):
19732         * jit/ExecutableAllocatorWin.cpp:
19733         (JSC::ExecutableAllocator::isValid):
19734         * jit/JIT.cpp:
19735         (JSC::JIT::linkCall):
19736         (JSC::JIT::linkConstruct):
19737         * jit/JIT.h:
19738         (JSC::JIT::compileCTIMachineTrampolines):
19739         (JSC::JIT::compileCTINativeCall):
19740         * jit/JITArithmetic.cpp:
19741         (JSC::JIT::emit_op_mod):
19742         * jit/JITArithmetic32_64.cpp:
19743         (JSC::JIT::emit_op_mod):
19744         * jit/JITCall.cpp:
19745         (JSC::JIT::compileOpCallVarargs):
19746         (JSC::JIT::compileOpCall):
19747         (JSC::JIT::compileOpCallSlowCase):
19748         * jit/JITCall32_64.cpp:
19749         (JSC::JIT::compileOpCallVarargs):
19750         (JSC::JIT::compileOpCall):
19751         (JSC::JIT::compileOpCallSlowCase):
19752         * jit/JITOpcodes.cpp:
19753         (JSC::JIT::privateCompileCTINativeCall):
19754         * jit/JITStubs.cpp:
19755         (JSC::JITThunks::JITThunks):
19756         (JSC::JITThunks::tryCacheGetByID):
19757         (JSC::JITThunks::hostFunctionStub):
19758         * jit/ThunkGenerators.cpp:
19759         (JSC::charCodeAtThunkGenerator):
19760         (JSC::charAtThunkGenerator):
19761         (JSC::fromCharCodeThunkGenerator):
19762         (JSC::sqrtThunkGenerator):
19763         (JSC::powThunkGenerator):
19764         * runtime/Executable.h:
19765         (JSC::NativeExecutable::create):
19766         * runtime/JSGlobalData.cpp:
19767         (JSC::JSGlobalData::JSGlobalData):
19768         (JSC::JSGlobalData::getHostFunction):
19769         * runtime/JSGlobalData.h:
19770         (JSC::JSGlobalData::getCTIStub):
19771         * yarr/RegexJIT.cpp:
19772         (JSC::Yarr::jitCompileRegex):
19773
19774 2010-07-14  Gavin Barraclough  <barraclough@apple.com>
19775
19776         Speculative Qt/Windows build fix.
19777
19778         * jit/JITStubs.h:
19779
19780 2010-07-14  Gavin Barraclough  <barraclough@apple.com>
19781
19782         Reviewed by Oliver Hunt.
19783
19784         https://bugs.webkit.org/show_bug.cgi?id=42280
19785         JIT_STUB_ARGUMENT_VA_LIST is only slowing us down! Remove it!
19786
19787         * jit/JIT.h:
19788         * jit/JITInlineMethods.h:
19789         (JSC::JIT::restoreArgumentReferenceForTrampoline):
19790         * jit/JITStubs.cpp:
19791         * jit/JITStubs.h:
19792         * wtf/Platform.h:
19793
19794 2010-07-14  Oliver Hunt  <oliver@apple.com>
19795
19796         RS=Geoff Garen.
19797
19798         Guard the CF path of interpreter vs. jit selection with PLATFORM(CF)
19799
19800         This allows the code to work on windows as well.  Also unifies the
19801         environment variable with the preference name.
19802
19803         * runtime/JSGlobalData.cpp:
19804         (JSC::JSGlobalData::JSGlobalData):
19805
19806 2010-07-14  Oliver Hunt  <oliver@apple.com>
19807
19808         Reviewed by Don Melton.
19809
19810         Crash when trying to enable JIT and Interpreter in a single build.
19811
19812         CFPreferences code added at the last minute failed to account for
19813         the preference not being present and then attempted to CFRelease
19814         a null value.
19815
19816         * runtime/JSGlobalData.cpp:
19817         (JSC::JSGlobalData::JSGlobalData):
19818
19819 2010-07-14  Zoltan Herczeg  <zherczeg@webkit.org>
19820
19821         Reviewed by Darin Adler.
19822
19823         Change indentations in the lexer
19824         https://bugs.webkit.org/show_bug.cgi?id=41845
19825
19826         This patch fixes an old, indentation error comes from kjs,
19827         as webkit has a different style rule for switches, and change
19828         the indentation of the main switch, which is a temporary
19829         style error. This change makes easier to see the behavioural
19830         changes in the follow-up patch.
19831
19832         No behavioural changes.
19833
19834         * parser/Lexer.cpp:
19835         (JSC::singleEscape):
19836         (JSC::Lexer::lex):
19837
19838 2010-07-13  Sheriff Bot  <webkit.review.bot@gmail.com>
19839
19840         Unreviewed, rolling out r63262.
19841         http://trac.webkit.org/changeset/63262
19842         https://bugs.webkit.org/show_bug.cgi?id=42229
19843
19844         broke Windows compile (Requested by bweinstein on #webkit).
19845
19846         * API/tests/testapi.c:
19847         (assertEqualsAsCharactersPtr):
19848         (main):
19849         * testapi.pro: Removed.
19850
19851 2010-07-13  Oliver Hunt  <oliver@apple.com>
19852
19853         Reviewed by Gavin Barraclough.
19854
19855         ES5 requires BOMs to be treated as whitespace
19856         https://bugs.webkit.org/show_bug.cgi?id=42218
19857
19858         Add BOM character to the Lexer's definition of whitespace,
19859         and remove the logic that dealt with stripping BOMs and
19860         caching the cleaned string.
19861
19862         * parser/Lexer.h:
19863         (JSC::Lexer::isWhiteSpace):
19864         * parser/SourceProvider.h:
19865         (JSC::UStringSourceProvider::create):
19866         (JSC::UStringSourceProvider::UStringSourceProvider):
19867         * wtf/text/StringImpl.h:
19868
19869 2010-07-13  Andreas Kling  <andreas.kling@nokia.com>
19870
19871         Reviewed by Darin Adler.
19872
19873         Avoid slow-path for put() in Array.splice()
19874         https://bugs.webkit.org/show_bug.cgi?id=41920
19875
19876         Defer creation of the returned array until its final size is known
19877         to avoid growing it while adding elements.
19878
19879         * runtime/JSArray.cpp:
19880         (JSC::JSArray::JSArray): Add two modes of creation, CreateInitialized (old)
19881         and CreateCompact (which should only be used when constructing arrays whose
19882         size and contents are known at the time of creation.)
19883         (JSC::JSArray::setLength): Skip first consistency check if in CreateCompact
19884         initialization mode. (Only applies to non-empty arrays.)
19885         (JSC::JSArray::checkConsistency): Build fix (JSValue::type() is gone)
19886         * runtime/JSArray.h:
19887         (JSC::JSArray::uncheckedSetIndex): Added for fast initialization of compact
19888         arrays. Does no bounds or other sanity checking.
19889         * runtime/ArrayPrototype.cpp:
19890         (JSC::arrayProtoFuncSplice): Optimized creation of the returned JSArray.
19891         * runtime/ArrayConstructor.cpp:
19892         (JSC::constructArrayWithSizeQuirk): Pass CreateInitialized to ctor.
19893         * runtime/JSGlobalObject.h:
19894         (JSC::constructEmptyArray): Pass CreateInitialized to ctor.
19895         * runtime/RegExpConstructor.cpp:
19896         (JSC::RegExpMatchesArray::RegExpMatchesArray): Pass CreateInitialized to ctor.
19897
19898 2010-07-13  Gavin Barraclough  <barraclough@apple.com>
19899
19900         Reviewed by Oliver Hunt.
19901
19902         Bug 42207 - Clean up interface to compile executables, always check for exceptions
19903
19904         Presently interface to compile executable is inconsistent between eval/program and
19905         function code, and is error prone in allowing a caller to byte compile without JIT
19906         compiling an executable (we rely on all executables with codeblocks having JIT code).
19907         Unify on an interface where all compilation is performed by a single compile (with
19908         ForCall|ForConstruct variants) method, and make all clients check for errors.
19909
19910         * interpreter/Interpreter.cpp:
19911         (JSC::Interpreter::unwindCallFrame):
19912         (JSC::Interpreter::execute):
19913         (JSC::Interpreter::executeCall):
19914         (JSC::Interpreter::executeConstruct):
19915         (JSC::Interpreter::prepareForRepeatCall):
19916         (JSC::Interpreter::privateExecute):
19917         * jit/JITStubs.cpp:
19918         (JSC::DEFINE_STUB_FUNCTION):
19919         * parser/Parser.h:
19920         (JSC::Parser::isFunctionBodyNode):
19921         (JSC::Parser::parse):
19922         * runtime/ArrayPrototype.cpp:
19923         (JSC::isNumericCompareFunction):
19924         * runtime/ExceptionHelpers.cpp:
19925         (JSC::createStackOverflowError):
19926         * runtime/ExceptionHelpers.h:
19927         * runtime/Executable.cpp:
19928         (JSC::EvalExecutable::compileInternal):
19929         (JSC::ProgramExecutable::checkSyntax):
19930         (JSC::ProgramExecutable::compileInternal):
19931         (JSC::FunctionExecutable::compileForCallInternal):
19932         (JSC::FunctionExecutable::compileForConstructInternal):
19933         (JSC::FunctionExecutable::reparseExceptionInfo):
19934         (JSC::EvalExecutable::reparseExceptionInfo):
19935         (JSC::FunctionExecutable::fromGlobalCode):
19936         * runtime/Executable.h:
19937         (JSC::EvalExecutable::compile):
19938         (JSC::EvalExecutable::generatedBytecode):
19939         (JSC::EvalExecutable::generatedJITCode):
19940         (JSC::ProgramExecutable::compile):
19941         (JSC::ProgramExecutable::generatedBytecode):
19942         (JSC::ProgramExecutable::generatedJITCode):
19943         (JSC::FunctionExecutable::generatedBytecode):
19944         (JSC::FunctionExecutable::compileForCall):
19945         (JSC::FunctionExecutable::compileForConstruct):
19946         (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
19947         * runtime/FunctionConstructor.cpp:
19948         (JSC::constructFunction):
19949         * runtime/JSActivation.cpp:
19950         (JSC::JSActivation::argumentsGetter):
19951         * runtime/JSGlobalData.h:
19952         (JSC::JSGlobalData::canUseJIT):
19953
19954 2010-07-13  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
19955
19956         Reviewed by Oliver Hunt.
19957
19958         testapi.c depends on the Core Foundation.
19959         https://bugs.webkit.org/show_bug.cgi?id=40058
19960
19961         Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it
19962         to compile in Qt environments.
19963
19964         All tests should work except for the JSStringCreateWithCharacters() function,
19965         because its tests depend on Core Foundation specific functions.
19966
19967         * API/tests/testapi.c:
19968         (testJSStringRefCF): moved CoreFoundation specific tests to this function.
19969         (main): The moves plus some minor tweaks.
19970         * testapi.pro: Added.
19971
19972 2010-07-13  Gavin Barraclough  <barraclough@apple.com>
19973
19974         Reviewed by Oliver Hunt.
19975
19976         Bug 42182 - Change how numeric compare functions are detected
19977
19978         There are three problems with the current mechanism:
19979           * It requires that a function executable be bytecode compiled without
19980             being JIT generated (in order to copy the bytecode from the numeric
19981             compare function).  This is a problem since we have an invariant when
19982             running with the JIT that functions are never bytecode compiled without
19983             also being JIT generated (after checking the codeblock we assume the
19984             function has JIT code).  To help maintain this invariant 
19985           * This implementation will prevent us from experimenting with alternate
19986             compilation paths which do not compile via bytecode.
19987           * It doesn't work.  Functions passing more than two arguments will match
19988             if they are comparing their last two arguments, not the first two.
19989             Generally the mapping back from bytecode to semantics may be more
19990             complex then initially expected.
19991
19992         * bytecompiler/BytecodeGenerator.cpp:
19993         (JSC::BytecodeGenerator::generate):
19994         (JSC::BytecodeGenerator::setIsNumericCompareFunction):
19995         (JSC::BytecodeGenerator::argumentNumberFor):
19996         * bytecompiler/BytecodeGenerator.h:
19997         * bytecompiler/NodesCodegen.cpp:
19998         (JSC::BlockNode::singleStatement):
19999         (JSC::FunctionBodyNode::emitBytecode):
20000         * parser/Nodes.h:
20001         (JSC::ExpressionNode::isSubtract):
20002         (JSC::BinaryOpNode::lhs):
20003         (JSC::BinaryOpNode::rhs):
20004         (JSC::SubNode::isSubtract):
20005         (JSC::ReturnNode::value):
20006         * runtime/JSGlobalData.cpp:
20007         (JSC::JSGlobalData::JSGlobalData):
20008         * runtime/JSGlobalData.h:
20009
20010 2010-07-12  Oliver Hunt  <oliver@apple.com>
20011
20012         Reviewed by Gavin Barraclough.
20013
20014         REGRESSION: Crash at JSC::JIT::privateCompile(JSC::MacroAssemblerCodePtr*)
20015         https://bugs.webkit.org/show_bug.cgi?id=41763
20016
20017         There are two parts to this patch, the first is to fix the actual
20018         problem.  When calling copyStringWithoutBOMs on a string we know
20019         to contain BOMs we return a value indicating that there are no
20020         BOMs.
20021
20022         The second part of this fix is simply to harden the path that
20023         led to a crash when parsing failed.
20024
20025         * jit/JITOpcodes.cpp:
20026         (JSC::JIT::privateCompileCTIMachineTrampolines):
20027         * jit/JITOpcodes32_64.cpp:
20028         (JSC::JIT::privateCompileCTIMachineTrampolines):
20029         * jit/JITStubs.cpp:
20030         (JSC::DEFINE_STUB_FUNCTION):
20031            Harden compilation stubs against parser failure.
20032         * parser/Lexer.cpp:
20033         (JSC::Lexer::sourceCode):
20034            Add assertions to ensure that subranges into a source provider
20035            are always actually braces.  Hopefully this should catch similar
20036            failures in future.  These assertions fire on existing tests
20037            without this fix.
20038         * runtime/Executable.h:
20039         (JSC::FunctionExecutable::tryJitCodeForCall):
20040         (JSC::FunctionExecutable::tryJitCodeForConstruct):
20041         * wtf/text/StringImpl.h:
20042         (WebCore::StringImpl::copyStringWithoutBOMs):
20043            Make copyStringWithBOMs do the right thing.
20044
20045 2010-07-13  Gabor Loki  <loki@webkit.org>
20046
20047         Reviewed by Gavin Barraclough.
20048
20049         Fix the constant encoding in data transfer instructions on ARM
20050         https://bugs.webkit.org/show_bug.cgi?id=42166
20051
20052         The getImm function is designed to produce modified immediate constant
20053         for data processing instructions. It should not be used to encode
20054         any constant for data transfer. In the current situation there is no
20055         way to use any immediate constant for data transfer. So, the moveImm
20056         function is the desired method to pass the offset value to the data
20057         transfer instructions.
20058
20059         Reported by Jacob Bramley.
20060
20061         * assembler/ARMAssembler.cpp:
20062         (JSC::ARMAssembler::dataTransfer32):
20063         * assembler/MacroAssemblerARM.h:
20064         (JSC::MacroAssemblerARM::call32):
20065
20066 2010-07-09  Darin Adler  <darin@apple.com>
20067
20068         Reviewed by Geoffrey Garen.
20069
20070         String to number coercion is not spec compliant
20071         https://bugs.webkit.org/show_bug.cgi?id=31349
20072
20073         ToNumber should ignore NBSP (\u00a0)
20074         https://bugs.webkit.org/show_bug.cgi?id=25490
20075
20076         * runtime/JSGlobalObjectFunctions.cpp:
20077         (JSC::parseIntOverflow): Added a version that works on UChar.
20078         * runtime/JSGlobalObjectFunctions.h: Ditto.
20079
20080         * runtime/UString.cpp:
20081         (JSC::isInfinity): Added helper functions.
20082         (JSC::UString::toDouble): Use isStrWhiteSpace instead of
20083         isSASCIISpace to define what we should skip. Got rid of the
20084         code that used CString and UTF8String, instead processing the
20085         UChar of the string directly, except for when we call strtod.
20086         For strtod, use our own home-grown conversion function that
20087         does not try to do any UTF-16 processing. Tidied up the logic
20088         a bit as well.
20089
20090 2010-07-12  Martin Robinson  <mrobinson@igalia.com>
20091
20092         Reviewed by Xan Lopez.
20093
20094         [GTK] make dist is broken because of missing headers and other miscellaneous reasons
20095         https://bugs.webkit.org/show_bug.cgi?id=42107
20096
20097         * GNUmakefile.am: Add missing header to the sources list.
20098
20099 2010-07-12  Adam Roben  <aroben@apple.com>
20100
20101         Stop generating stripped symbols for Release builds
20102
20103         It turns out we can strip the symbols after-the-fact using PDBCopy.
20104
20105         Fixes <http://webkit.org/b/42085>.
20106
20107         Reviewed by Steve Falkenburg.
20108
20109         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
20110         Removed the pre-link event, which just created the public\sym
20111         directory.
20112
20113 2010-07-12  Anders Carlsson  <andersca@apple.com>
20114
20115         Reviewed by Dan Bernstein.
20116
20117         Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions
20118         https://bugs.webkit.org/show_bug.cgi?id=42086
20119
20120         * wtf/OwnPtr.h:
20121         * wtf/PassOwnPtr.h:
20122         * wtf/PassRefPtr.h:
20123         (WTF::PassRefPtr::releaseRef):
20124         (WTF::NonNullPassRefPtr::leakRef):
20125         (WTF::NonNullPassRefPtr::releaseRef):
20126         * wtf/RetainPtr.h:
20127         (WTF::RetainPtr::releaseRef):
20128
20129 2010-07-10  Oliver Hunt  <oliver@apple.com>
20130
20131         Reviewed by Maciej Stachowiak.
20132
20133         HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled
20134         https://bugs.webkit.org/show_bug.cgi?id=42039
20135
20136         Separate the existence of computed goto support in the compiler
20137         from whether or not we are using the interpreter.  All the current
20138         HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like
20139         the option of using it elsewhere.  The interpreter now uses
20140         ENABLE(COMPUTED_GOTO_INTERPRETER) 
20141
20142         * bytecode/Instruction.h:
20143         (JSC::Instruction::Instruction):
20144         * bytecode/Opcode.h:
20145         * interpreter/Interpreter.cpp:
20146         (JSC::Interpreter::Interpreter):
20147         (JSC::Interpreter::isOpcode):
20148         (JSC::Interpreter::privateExecute):
20149         * interpreter/Interpreter.h:
20150         (JSC::Interpreter::getOpcode):
20151         (JSC::Interpreter::getOpcodeID):
20152         * wtf/Platform.h:
20153
20154 2010-07-10  Oliver Hunt  <oliver@apple.com>
20155
20156         Reviewed by Gavin Barraclough.
20157
20158         Remove switches from inner expression loops in the parser
20159         https://bugs.webkit.org/show_bug.cgi?id=42035
20160
20161         Use bitmasks and flags on the token types to identify unary and
20162         binary operators, rather than switching on the token type to
20163         identify them.
20164
20165         * parser/JSParser.cpp:
20166         (JSC::isUnaryOp):
20167         (JSC::JSParser::isBinaryOperator):
20168         * parser/JSParser.h:
20169         (JSC::):
20170
20171 2010-07-09  Leon Clarke  <leonclarke@google.com>
20172
20173         Reviewed by Adam Barth.
20174
20175         add support for link prefetching
20176         https://bugs.webkit.org/show_bug.cgi?id=3652
20177
20178         * Configurations/FeatureDefines.xcconfig:
20179
20180 2010-07-09  Oliver Hunt  <oliver@apple.com>
20181
20182         Reviewed by Darin Adler.
20183
20184         Tidy up lexer token ids
20185         https://bugs.webkit.org/show_bug.cgi?id=42014
20186
20187         Stop using character literals to identify single character tokens
20188         and instead use symbolic names for all tokens.
20189
20190         * parser/ASTBuilder.h:
20191         (JSC::ASTBuilder::makeBinaryNode):
20192         * parser/JSParser.cpp:
20193         (JSC::JSParser::consume):
20194         (JSC::JSParser::match):
20195         (JSC::JSParser::autoSemiColon):
20196         (JSC::JSParser::JSParser):
20197         (JSC::JSParser::parseProgram):
20198         (JSC::JSParser::allowAutomaticSemicolon):
20199         (JSC::JSParser::parseDoWhileStatement):
20200         (JSC::JSParser::parseWhileStatement):
20201         (JSC::JSParser::parseVarDeclarationList):
20202         (JSC::JSParser::parseConstDeclarationList):
20203         (JSC::JSParser::parseForStatement):
20204         (JSC::JSParser::parseReturnStatement):
20205         (JSC::JSParser::parseWithStatement):
20206         (JSC::JSParser::parseSwitchStatement):
20207         (JSC::JSParser::parseSwitchClauses):
20208         (JSC::JSParser::parseSwitchDefaultClause):
20209         (JSC::JSParser::parseTryStatement):
20210         (JSC::JSParser::parseDebuggerStatement):
20211         (JSC::JSParser::parseStatement):
20212         (JSC::JSParser::parseFormalParameters):
20213         (JSC::JSParser::parseFunctionInfo):
20214         (JSC::JSParser::parseExpressionOrLabelStatement):
20215         (JSC::JSParser::parseIfStatement):
20216         (JSC::JSParser::parseExpression):
20217         (JSC::JSParser::parseAssignmentExpression):
20218         (JSC::JSParser::parseConditionalExpression):
20219         (JSC::isUnaryOp):
20220         (JSC::JSParser::isBinaryOperator):
20221         (JSC::JSParser::parseBinaryExpression):
20222         (JSC::JSParser::parseProperty):
20223         (JSC::JSParser::parseObjectLiteral):
20224         (JSC::JSParser::parseStrictObjectLiteral):
20225         (JSC::JSParser::parseArrayLiteral):
20226         (JSC::JSParser::parsePrimaryExpression):
20227         (JSC::JSParser::parseArguments):
20228         (JSC::JSParser::parseMemberExpression):
20229         (JSC::JSParser::parseUnaryExpression):
20230         * parser/JSParser.h:
20231         (JSC::):
20232         * parser/Lexer.cpp:
20233         (JSC::):
20234         (JSC::Lexer::lex):
20235         * parser/Lexer.h:
20236
20237 2010-07-09  Gavin Barraclough  <barraclough@apple.com>
20238
20239         Reviewed by Oliver Hunt.
20240
20241         Bug 42015 - Enable JSValue32_64 on ARMv7
20242
20243         * Configurations/JavaScriptCore.xcconfig:
20244         * jit/JIT.h:
20245         * jit/JITStubs.cpp:
20246         * wtf/Platform.h:
20247
20248 2010-07-09  Kenneth Russell  <kbr@google.com>
20249
20250         Reviewed by Dimitri Glazkov.
20251
20252         Assertion failure in String::utf8() for certain invalid UTF16 inputs
20253         https://bugs.webkit.org/show_bug.cgi?id=41983
20254
20255         * wtf/text/WTFString.cpp:
20256         (WebCore::String::utf8):
20257          - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8.
20258
20259 2010-07-09  Oliver Hunt  <oliver@apple.com>
20260
20261         Reviewed by Geoffrey Garen.
20262
20263         Remove a couple of excess writes from the lexer
20264         https://bugs.webkit.org/show_bug.cgi?id=41981
20265
20266         Remove a couple of fields from JSTokenInfo, and rename the remaining ones
20267         to something more accurate
20268
20269         * parser/JSParser.cpp:
20270         (JSC::JSParser::next):
20271         (JSC::JSParser::tokenStart):
20272         (JSC::JSParser::tokenLine):
20273         (JSC::JSParser::tokenEnd):
20274         * parser/JSParser.h:
20275         (JSC::JSTokenInfo::JSTokenInfo):
20276         * parser/Lexer.cpp:
20277         (JSC::Lexer::lex):
20278
20279 2010-07-08  Oliver Hunt  <oliver@apple.com>
20280
20281         Reviewed by Sam Weinig.
20282
20283         Property declarations in an object literal should not consider the prototype chain when being added to the new object
20284         https://bugs.webkit.org/show_bug.cgi?id=41929
20285
20286         To fix this all we need to do is ensure that all new properties are
20287         added with putDirect rather than a fully generic call to put.  This
20288         is safe as an object literal is by definition going to produce a
20289         completely normal object.
20290
20291         Rather than duplicating all the put_by_id logic we add an additional
20292         flag to op_put_by_id to indicate it should be using putDirect.  In
20293         the interpreter this adds a runtime branch, but in the jit this is
20294         essentially free as the branch is taken at compile time.  This does
20295         actually improve object literal creation time even in the interpreter
20296         as we no longer need to walk the prototype chain to verify that the
20297         cached put is safe.
20298
20299         We still emit normal put_by_id code when emitting __proto__ as we want
20300         to get the correct handling for changing the prototype.
20301
20302         Sunspider claims this is a 0.7% speedup which is conceivably real due
20303         to the performance improvement in object literals, but I suspect its
20304         really just the result of code motion.
20305
20306         * bytecode/Opcode.h:
20307         * bytecompiler/BytecodeGenerator.cpp:
20308         (JSC::BytecodeGenerator::emitPutById):
20309         (JSC::BytecodeGenerator::emitDirectPutById):
20310         * bytecompiler/BytecodeGenerator.h:
20311         * bytecompiler/NodesCodegen.cpp:
20312         (JSC::PropertyListNode::emitBytecode):
20313         * interpreter/Interpreter.cpp:
20314         (JSC::Interpreter::privateExecute):
20315         * jit/JIT.h:
20316         (JSC::JIT::compilePutByIdTransition):
20317         * jit/JITPropertyAccess.cpp:
20318         (JSC::JIT::emit_op_put_by_id):
20319         (JSC::JIT::emitSlow_op_put_by_id):
20320         (JSC::JIT::privateCompilePutByIdTransition):
20321         (JSC::JIT::patchPutByIdReplace):
20322         * jit/JITPropertyAccess32_64.cpp:
20323         (JSC::JIT::emitSlow_op_put_by_id):
20324         (JSC::JIT::privateCompilePutByIdTransition):
20325         (JSC::JIT::patchPutByIdReplace):
20326         * jit/JITStubs.cpp:
20327         (JSC::JITThunks::tryCachePutByID):
20328         (JSC::DEFINE_STUB_FUNCTION):
20329         * jit/JITStubs.h:
20330         (JSC::):
20331         * runtime/JSGlobalData.cpp:
20332         (JSC::JSGlobalData::JSGlobalData):
20333         * runtime/JSObject.h:
20334         (JSC::JSObject::putDirect):
20335         (JSC::JSValue::putDirect):
20336         * runtime/JSValue.h:
20337
20338 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20339
20340         Reviewed by Sam Weinig.
20341
20342         String.prototype methods should CheckObjectCoercible (test this is not null or undefined).
20343
20344         * runtime/StringPrototype.cpp:
20345         (JSC::stringProtoFuncCharAt):
20346         (JSC::stringProtoFuncCharCodeAt):
20347         (JSC::stringProtoFuncConcat):
20348         (JSC::stringProtoFuncIndexOf):
20349         (JSC::stringProtoFuncLastIndexOf):
20350         (JSC::stringProtoFuncMatch):
20351         (JSC::stringProtoFuncSearch):
20352         (JSC::stringProtoFuncSlice):
20353         (JSC::stringProtoFuncSplit):
20354         (JSC::stringProtoFuncSubstr):
20355         (JSC::stringProtoFuncSubstring):
20356         (JSC::stringProtoFuncToLowerCase):
20357         (JSC::stringProtoFuncToUpperCase):
20358         (JSC::stringProtoFuncLocaleCompare):
20359         (JSC::trimString):
20360
20361 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20362
20363         Reviewed by Sam Weinig.
20364
20365         Date.prototype.toJSON takes one argument, report this correctly.
20366
20367         * runtime/DatePrototype.cpp:
20368
20369 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20370
20371         Reviewed by Sam Weinig.
20372
20373         RegExp's prototype should be an object of type RegExp.
20374
20375         * runtime/RegExpPrototype.cpp:
20376         (JSC::RegExpPrototype::RegExpPrototype):
20377         * runtime/RegExpPrototype.h:
20378
20379 2010-07-08  Oliver Hunt  <oliver@apple.com>
20380
20381         Reviewed by Gavin Barraclough.
20382
20383         JavaScript parser violates ECMA automatic semicolon insertion rule
20384         https://bugs.webkit.org/show_bug.cgi?id=41844
20385
20386         Remove (very) old and bogus logic that automatically inserted a semicolon
20387         at the end of a script's source.
20388
20389         * parser/Lexer.cpp:
20390         (JSC::Lexer::lex):
20391
20392 2010-07-08  Oliver Hunt  <oliver@apple.com>
20393
20394         Reviewed by Anders Carlson.
20395
20396         Tidy up the lexer
20397
20398         Remove some of the old yacc/lex-isms still present in the lexer
20399
20400         * parser/JSParser.h:
20401         (JSC::):
20402         * parser/Lexer.cpp:
20403         (JSC::Lexer::parseString):
20404         (JSC::Lexer::lex):
20405         * parser/Lexer.h:
20406
20407 2010-07-08  Oliver Hunt  <oliver@apple.com>
20408
20409         Reviewed by Gavin Barraclough.
20410
20411         Make object-literal parsing conformant with the spec.
20412         https://bugs.webkit.org/show_bug.cgi?id=41892
20413
20414         Bring our parsing of object literals into conformance with the ES5 spec.
20415         Basically disallow conflicting accessor vs. normal property definitions
20416         The bulk of this patch is just fiddling to maintain performance.
20417
20418         * parser/ASTBuilder.h:
20419         (JSC::ASTBuilder::createGetterOrSetterProperty):
20420         (JSC::ASTBuilder::createProperty):
20421         (JSC::ASTBuilder::getName):
20422         (JSC::ASTBuilder::getType):
20423         * parser/JSParser.cpp:
20424         (JSC::jsParse):
20425         (JSC::JSParser::JSParser):
20426         (JSC::JSParser::parseProperty):
20427         (JSC::JSParser::parseObjectLiteral):
20428         (JSC::JSParser::parseStrictObjectLiteral):
20429         * parser/JSParser.h:
20430         * parser/Lexer.cpp:
20431         (JSC::Lexer::clear):
20432         * parser/Lexer.h:
20433         (JSC::Lexer::currentOffset):
20434         (JSC::Lexer::setOffset):
20435           Add logic to allow us to roll the lexer back in the input stream.
20436         * parser/Nodes.h:
20437         (JSC::PropertyNode::):
20438         (JSC::PropertyNode::type):
20439         * parser/Parser.cpp:
20440         (JSC::Parser::parse):
20441         * parser/SourceProvider.h:
20442         (JSC::SourceProvider::SourceProvider):
20443         (JSC::SourceProvider::isValid):
20444         (JSC::SourceProvider::setValid):
20445           SourceProvider now records whether the input text
20446           has already been validated.
20447         * parser/SyntaxChecker.h:
20448         (JSC::SyntaxChecker::SyntaxChecker):
20449         (JSC::SyntaxChecker::Property::Property):
20450         (JSC::SyntaxChecker::Property::operator!):
20451         (JSC::SyntaxChecker::createProperty):
20452         (JSC::SyntaxChecker::createPropertyList):
20453         (JSC::SyntaxChecker::createGetterOrSetterProperty):
20454           The SyntaxChecker mode now needs to maintain a bit more information
20455           to ensure that we can validate object literals correctly.
20456
20457 2010-07-08  Darin Adler  <darin@apple.com>
20458
20459         * runtime/JSGlobalData.cpp:
20460         (JSC::JSGlobalData::sharedInstance): Fix typo.
20461
20462 2010-07-08  Darin Adler  <darin@apple.com>
20463
20464         Reviewed by Oliver Hunt.
20465
20466         Fix assertion seen on the Leopard buildbot.
20467         The single shared instance of JSGlobalData was not being
20468         adopted after creation.
20469
20470         * runtime/JSGlobalData.cpp:
20471         (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef.
20472
20473 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20474
20475         Reviewed by Sam Weinig.
20476
20477         BOMs are whitespace.
20478
20479         * runtime/JSGlobalObjectFunctions.cpp:
20480         (JSC::isStrWhiteSpace):
20481
20482 2010-07-08  Martin Robinson  <mrobinson@igalia.com>
20483
20484         Unreviewed.
20485
20486         Try fix the GTK+ build by touching this file.
20487
20488         * jit/ExecutableAllocatorFixedVMPool.cpp:
20489
20490 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20491
20492         GTK build fix take two.
20493
20494         * GNUmakefile.am:
20495
20496 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20497
20498         GTK build fix.
20499
20500         * GNUmakefile.am:
20501
20502 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
20503
20504         Reviewed by Sam Weinig.
20505
20506         https://bugs.webkit.org/show_bug.cgi?id=41641
20507
20508         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
20509         other than x86-64 (this may be useful on 32-bit platforms, too).
20510
20511         Simplify ifdefs by dividing into thwo broad allocation strategies
20512         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
20513
20514         Rename constant used in the code to have names descriptive of their purpose,
20515         rather than their specific value on a given platform.
20516
20517         * jit/ExecutableAllocator.cpp:
20518         (JSC::ExecutableAllocator::reprotectRegion):
20519         (JSC::ExecutableAllocator::cacheFlush):
20520         * jit/ExecutableAllocatorFixedVMPool.cpp:
20521         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20522         (JSC::FixedVMPoolAllocator::free):
20523         (JSC::ExecutablePool::systemAlloc):
20524         * jit/ExecutableAllocatorPosix.cpp:
20525         * jit/ExecutableAllocatorSymbian.cpp:
20526         * jit/ExecutableAllocatorWin.cpp:
20527         * wtf/Platform.h:
20528
20529 2010-07-08  Xan Lopez  <xlopez@igalia.com>
20530
20531         Reviewed by Gustavo Noronha.
20532
20533         Silence a few noisy build rules.
20534
20535         * GNUmakefile.am:
20536
20537 2010-07-08  Sheriff Bot  <webkit.review.bot@gmail.com>
20538
20539         Unreviewed, rolling out r62765.
20540         http://trac.webkit.org/changeset/62765
20541         https://bugs.webkit.org/show_bug.cgi?id=41840
20542
20543         All jscore and layout tests crash on Qt bot (Requested by Ossy
20544         on #webkit).
20545
20546         * wtf/FastMalloc.cpp:
20547         (WTF::TCMalloc_PageHeap::initializeScavenger):
20548         (WTF::TCMalloc_PageHeap::signalScavenger):
20549         (WTF::TCMalloc_PageHeap::scavengerThread):
20550
20551 2010-07-08  Andreas Kling  <andreas.kling@nokia.com>
20552
20553         Reviewed by Oliver Hunt.
20554
20555         Interpreter: Crash in op_load_varargs on 64-bit
20556         https://bugs.webkit.org/show_bug.cgi?id=41795
20557
20558         Added missing cast of argCount to int32_t in op_load_varargs.
20559
20560         * interpreter/Interpreter.cpp:
20561         (JSC::Interpreter::privateExecute):
20562
20563 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
20564
20565         Reviewed by Geoffrey Garen.
20566
20567         Make FastMalloc more portable.
20568         https://bugs.webkit.org/show_bug.cgi?id=41790
20569
20570         Use WTF::Mutex instead of pthread_mutex_t and
20571         replace pthread_cond_t with WTF::ThreadCondition.
20572
20573         * wtf/FastMalloc.cpp:
20574         (WTF::TCMalloc_PageHeap::initializeScavenger):
20575         (WTF::TCMalloc_PageHeap::signalScavenger):
20576         (WTF::TCMalloc_PageHeap::scavengerThread):
20577
20578 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
20579
20580         Reviewed by Darin Adler.
20581
20582         Remove needless #include <fcntl.h> from TCSystemAlloc.cpp.
20583         https://bugs.webkit.org/show_bug.cgi?id=41777
20584
20585         * wtf/TCSystemAlloc.cpp:
20586
20587 2010-07-07  Darin Adler  <darin@apple.com>
20588
20589         Fixed build in configurations like PowerPC.
20590
20591         * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h.
20592         * runtime/RegExpObject.cpp: Ditto.
20593         * wtf/SizeLimits.cpp: Changed compile time assertion to work
20594         even on platforms where two bool members do not end up taking
20595         the same size as one int member!
20596
20597 2010-07-07  Oliver Hunt  <oliver@apple.com>
20598
20599         Reviewed by Geoffrey Garen.
20600
20601         Lazy mode of parser allows invalid syntax in object literals.
20602         https://bugs.webkit.org/show_bug.cgi?id=41809
20603
20604         Make the parser itself validate getter and setter syntax rather
20605         than offloading it to the AST builder.
20606
20607         * parser/ASTBuilder.h:
20608         (JSC::ASTBuilder::createGetterOrSetterProperty):
20609         * parser/JSParser.cpp:
20610         (JSC::JSParser::parseProperty):
20611
20612 2010-07-07  Dumitru Daniliuc  <dumi@chromium.org>
20613
20614         Reviewed by Adam Roben.
20615
20616         Revert r62689.
20617         https://bugs.webkit.org/show_bug.cgi?id=41804
20618
20619         * runtime/Collector.cpp:
20620         (JSC::Heap::freeBlocks):
20621
20622 2010-07-07  Adam Barth  <abarth@webkit.org>
20623
20624         Reviewed by Sam Weinig.
20625
20626         Add reverseFind to Vector and deploy in HTML5 parser
20627         https://bugs.webkit.org/show_bug.cgi?id=41778
20628
20629         This method seems generally useful.  I'm slightly surprised we don't
20630         have it already.
20631
20632         * wtf/Vector.h:
20633         (WTF::::reverseFind):
20634
20635 2010-07-07  Darin Adler  <darin@apple.com>
20636
20637         Reviewed by Adam Barth.
20638
20639         Turn on adoptRef assertion for RefCounted
20640         https://bugs.webkit.org/show_bug.cgi?id=41547
20641
20642         * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other
20643         WTF headers should use "" includes; consistent in most WTF headers.
20644         Added a call to relaxAdoptionRequirement.
20645
20646         * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED.
20647         Added relaxAdoptionRequirement.
20648
20649 2010-07-07  Anders Carlsson  <andersca@apple.com>
20650
20651         Try to fix the Windows build.
20652
20653         * runtime/Collector.cpp:
20654         (JSC::Heap::freeBlocks):
20655
20656 2010-07-07  Darin Adler  <darin@apple.com>
20657
20658         Reviewed by Adam Barth.
20659
20660         More OwnPtr work
20661         https://bugs.webkit.org/show_bug.cgi?id=41727
20662
20663         * API/JSCallbackObject.h:
20664         (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr.
20665         * API/JSCallbackObjectFunctions.h:
20666         (JSC::JSCallbackObject::JSCallbackObject): Ditto.
20667         * bytecode/CodeBlock.cpp:
20668         (JSC::CodeBlock::CodeBlock): Ditto.
20669         * bytecode/CodeBlock.h:
20670         (JSC::CodeBlock::createRareDataIfNecessary): Ditto.
20671         * parser/Nodes.cpp:
20672         (JSC::ScopeNode::ScopeNode): Ditto.
20673         * parser/ParserArena.cpp:
20674         (JSC::ParserArena::ParserArena): Ditto.
20675         * runtime/Arguments.h:
20676         (JSC::Arguments::Arguments): Ditto.
20677         * runtime/Executable.cpp:
20678         (JSC::EvalExecutable::compile): Ditto.
20679         (JSC::ProgramExecutable::compile): Ditto.
20680         (JSC::FunctionExecutable::compileForCall): Ditto.
20681         (JSC::FunctionExecutable::compileForConstruct): Ditto.
20682         (JSC::FunctionExecutable::reparseExceptionInfo): Ditto.
20683         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
20684         * runtime/JSArray.cpp:
20685         (JSC::JSArray::sort): Ditto.
20686         * runtime/RegExpConstructor.cpp:
20687         (JSC::RegExpConstructor::RegExpConstructor): Ditto.
20688         * runtime/RegExpObject.cpp:
20689         (JSC::RegExpObject::RegExpObject): Ditto.
20690         * runtime/SmallStrings.cpp:
20691         (JSC::SmallStrings::createSingleCharacterString): Ditto.
20692         (JSC::SmallStrings::singleCharacterStringRep): Ditto.
20693
20694         * wtf/unicode/icu/CollatorICU.cpp:
20695         (WTF::Collator::userDefault): Use adoptPtr.
20696         * yarr/RegexInterpreter.cpp:
20697         (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto.
20698         (JSC::Yarr::ByteCompiler::compile): Ditto.
20699         (JSC::Yarr::ByteCompiler::regexBegin): Ditto.
20700         (JSC::Yarr::byteCompileRegex): Ditto.
20701         * yarr/RegexInterpreter.h:
20702         (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto.
20703
20704 2010-07-07  Darin Adler  <darin@apple.com>
20705
20706         Reviewed by Adam Barth.
20707
20708         Make clear set the pointer to 0 before deletion
20709         https://bugs.webkit.org/show_bug.cgi?id=41727
20710
20711         * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new
20712         value before deleting the old one, including in the set function and the
20713         clear function. This required changing safeDelete.
20714         * wtf/OwnPtr.h: Ditto. Also removed some extra null checks.
20715         * wtf/PassOwnPtr.h: Ditto.
20716
20717         * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new
20718         value before deref'ing the old one in the clear function. Also added a
20719         leakRef function for NonNullPassRefPtr.
20720         * wtf/RefPtr.h: Ditto.
20721
20722         * wtf/gobject/GOwnPtr.h: More of the same.
20723         * wtf/gobject/GRefPtr.h: Ditto.
20724
20725 2010-07-07  Zoltan Herczeg  <zherczeg@webkit.org>
20726
20727         Reviewed by Oliver Hunt.
20728
20729         Refactored string parsing inside the lexer
20730         https://bugs.webkit.org/show_bug.cgi?id=41606
20731
20732         Does not use goto. Although the last sunspider
20733         parse-only tests yields 1.044x speedup, I think the
20734         patch can have a slight improvement at most.
20735
20736         * parser/Lexer.cpp:
20737         (JSC::singleEscape):
20738         (JSC::Lexer::parseString):
20739         (JSC::Lexer::lex):
20740         * parser/Lexer.h:
20741
20742 2010-07-06  Oliver Hunt  <oliver@apple.com>
20743
20744         Reviewed by Maciej Stachowiak.
20745
20746         Make it possible to have both the JIT and Interpreter available in a single build
20747         https://bugs.webkit.org/show_bug.cgi?id=41722
20748
20749         Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible
20750         to have both JIT and INTERPRETER enabled at the same time.  This doesn't add
20751         support for mix mode execution, but it does allow a single build to contain all
20752         the code needed to use either the interpreter or the jit.
20753
20754         If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment
20755         variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter.
20756
20757         This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER),
20758         or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif
20759         #if ENABLE(INTERPRETER), etc.  There are also a few functions that need to be
20760         renamed to resolve return type ambiguity.
20761
20762         * bytecode/CodeBlock.cpp:
20763         (JSC::CodeBlock::~CodeBlock):
20764         (JSC::CodeBlock::shrinkToFit):
20765         * bytecode/CodeBlock.h:
20766         * interpreter/CallFrame.h:
20767         (JSC::ExecState::returnVPC):
20768         * interpreter/Interpreter.cpp:
20769         (JSC::Interpreter::unwindCallFrame):
20770         (JSC::Interpreter::throwException):
20771         (JSC::Interpreter::execute):
20772         (JSC::Interpreter::executeCall):
20773         (JSC::Interpreter::executeConstruct):
20774         (JSC::Interpreter::prepareForRepeatCall):
20775         (JSC::Interpreter::privateExecute):
20776         (JSC::Interpreter::retrieveLastCaller):
20777         * interpreter/Interpreter.h:
20778         * runtime/ArrayPrototype.cpp:
20779         (JSC::isNumericCompareFunction):
20780         * runtime/Executable.cpp:
20781         (JSC::EvalExecutable::generateJITCode):
20782         (JSC::ProgramExecutable::generateJITCode):
20783         (JSC::FunctionExecutable::generateJITCodeForCall):
20784         (JSC::FunctionExecutable::generateJITCodeForConstruct):
20785         (JSC::FunctionExecutable::reparseExceptionInfo):
20786         (JSC::EvalExecutable::reparseExceptionInfo):
20787         * runtime/JSFunction.cpp:
20788         * runtime/JSGlobalData.cpp:
20789         (JSC::JSGlobalData::JSGlobalData):
20790         * runtime/JSGlobalData.h:
20791         (JSC::JSGlobalData::canUseJIT):
20792         * wtf/Platform.h:
20793
20794 2010-07-06  Darin Adler  <darin@apple.com>
20795
20796         Reviewed by Adam Barth.
20797
20798         Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr
20799         https://bugs.webkit.org/show_bug.cgi?id=41320
20800
20801         * bytecode/CodeBlock.cpp:
20802         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment
20803         instead of set since the result of reparseExceptionInfo is now a
20804         PassOwnPtr.
20805
20806         * bytecode/CodeBlock.h: Change extractExceptionInfo to return a
20807         PassOwnPtr instead of a raw pointer.
20808
20809         * runtime/Executable.cpp:
20810         (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr.
20811         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
20812         (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was
20813         in the header before, but it's better to not have it there to reduce
20814         header dependencies. Return a PassOwnPtr.
20815
20816         * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr,
20817         and put it in the private sections of classes other than the base class.
20818
20819         * wtf/MessageQueue.h:
20820         (WTF::MessageQueue::append): Use leakPtr instead of release.
20821         (WTF::MessageQueue::appendAndCheckEmpty): Ditto.
20822         (WTF::MessageQueue::prepend): Ditto.
20823
20824         * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return
20825         a PassOwnPtr rather than a raw pointer. Added a leakPtr function that
20826         returns a raw pointer. Put the constructor that takes a raw pointer and
20827         the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the
20828         new adoptPtr function from PassOwnPtr.h.
20829
20830         * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function
20831         to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr.
20832         Put the constructor and assignment operators that take a raw pointer
20833         into a section guarded by LOOSE_PASS_OWN_PTR.
20834
20835 2010-07-06  Sam Weinig  <sam@webkit.org>
20836
20837         Reviewed by Darin Adler
20838
20839         Update comment in StringExtras.h to be more accurate.
20840
20841         * wtf/StringExtras.h:
20842
20843 2010-07-06  Sheriff Bot  <webkit.review.bot@gmail.com>
20844
20845         Unreviewed, rolling out r62511.
20846         http://trac.webkit.org/changeset/62511
20847         https://bugs.webkit.org/show_bug.cgi?id=41686
20848
20849         Breaks Linux/64bit compilation (Requested by xan_ on #webkit).
20850
20851         * jit/ExecutableAllocator.cpp:
20852         * jit/ExecutableAllocatorFixedVMPool.cpp:
20853         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20854         (JSC::FixedVMPoolAllocator::free):
20855         (JSC::ExecutablePool::systemAlloc):
20856         * jit/ExecutableAllocatorPosix.cpp:
20857         (JSC::ExecutableAllocator::reprotectRegion):
20858         (JSC::ExecutableAllocator::cacheFlush):
20859         * jit/ExecutableAllocatorSymbian.cpp:
20860         * jit/ExecutableAllocatorWin.cpp:
20861         * wtf/Platform.h:
20862
20863 2010-07-05  Gavin Barraclough  <barraclough@apple.com>
20864
20865         Reviewed by Sam Weinig.
20866
20867         https://bugs.webkit.org/show_bug.cgi?id=41641
20868
20869         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
20870         other than x86-64 (this may be useful on 32-bit platforms, too).
20871
20872         Simplify ifdefs by dividing into thwo broad allocation strategies
20873         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
20874
20875         Rename constant used in the code to have names descriptive of their purpose,
20876         rather than their specific value on a given platform.
20877
20878         * jit/ExecutableAllocator.cpp:
20879         (JSC::ExecutableAllocator::reprotectRegion):
20880         (JSC::ExecutableAllocator::cacheFlush):
20881         * jit/ExecutableAllocatorFixedVMPool.cpp:
20882         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20883         (JSC::FixedVMPoolAllocator::free):
20884         (JSC::ExecutablePool::systemAlloc):
20885         * jit/ExecutableAllocatorPosix.cpp:
20886         * jit/ExecutableAllocatorSymbian.cpp:
20887         * jit/ExecutableAllocatorWin.cpp:
20888         * wtf/Platform.h:
20889
20890 2010-07-05  Steve Block  <steveblock@google.com>
20891
20892         Reviewed by Darin Adler.
20893
20894         ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h
20895         https://bugs.webkit.org/show_bug.cgi?id=41594
20896
20897         * wtf/ThreadingPthreads.cpp:
20898
20899 2010-07-04  Mark Rowe  <mrowe@apple.com>
20900
20901         Build fix after r62456.
20902
20903         * interpreter/Interpreter.cpp:
20904         (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent
20905         warnings about comparisons between signed and unsigned types, and attempts to call an overload
20906         of std::min that doesn't exist.
20907
20908 2010-07-02  Sam Weinig  <sam@webkit.org>
20909
20910         Reviewed by Darin Adler.
20911
20912         Patch for https://bugs.webkit.org/show_bug.cgi?id=41553
20913         Make StringExtras.h versions of snprintf and vsnprintf match the unix versions.
20914
20915         - MSVC does not ensure the buffers are null terminated as the unix versions do.
20916
20917         * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes.
20918         * runtime/UString.cpp: Clean up includes.
20919         (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong.
20920         * wtf/StringExtras.h:
20921         (snprintf): Ensure null termination of buffer.
20922         (vsnprintf): Ditto.
20923
20924 2010-07-03  Yong Li  <yoli@rim.com>
20925
20926         Reviewed by Darin Adler.
20927
20928         Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in
20929         the interpreter as well as the JIT.
20930
20931         https://bugs.webkit.org/show_bug.cgi?id=41351
20932         rdar://problem/8142141
20933
20934         * interpreter/Interpreter.cpp:
20935         (JSC::Interpreter::privateExecute): Fix signed integer overflow problem
20936         in op_load_varargs handling. 0xFFFFFFFF was read as -1.
20937
20938 2010-06-26  Jeremy Orlow  <jorlow@chromium.org>
20939
20940         Reviewed by Dumitru Daniliuc.
20941
20942         Support for keys and in-memory storage for IndexedDB
20943         https://bugs.webkit.org/show_bug.cgi?id=41252
20944
20945         Set the role to Private.
20946
20947         * JavaScriptCore.xcodeproj/project.pbxproj:
20948
20949 2010-07-02  Oliver Hunt  <oliver@apple.com>
20950
20951         Reviewed by Geoffrey Garen.
20952
20953         Move BOM handling out of the lexer and parser
20954         https://bugs.webkit.org/show_bug.cgi?id=41539
20955
20956         Doing the BOM stripping in the lexer meant that we could
20957         end up having to strip the BOMs from a source multiple times.
20958         To deal with this we now require all strings provided by
20959         a SourceProvider to already have had the BOMs stripped.
20960         This also simplifies some of the lexer logic.
20961
20962         * parser/Lexer.cpp:
20963         (JSC::Lexer::setCode):
20964         (JSC::Lexer::sourceCode):
20965         * parser/SourceProvider.h:
20966         (JSC::SourceProvider::SourceProvider):
20967         (JSC::UStringSourceProvider::create):
20968         (JSC::UStringSourceProvider::getRange):
20969         (JSC::UStringSourceProvider::UStringSourceProvider):
20970         * wtf/text/StringImpl.h:
20971         (WebCore::StringImpl::copyStringWithoutBOMs):
20972
20973 2010-07-03  Patrick Gansterer  <paroga@paroga.com>
20974
20975         Reviewed by Kent Tamura.
20976
20977         [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar.
20978         https://bugs.webkit.org/show_bug.cgi?id=41411
20979
20980         * wtf/unicode/wince/UnicodeWince.cpp:
20981         (WTF::Unicode::isAlphanumeric):
20982         * wtf/unicode/wince/UnicodeWince.h:
20983         (WTF::Unicode::isArabicChar):
20984
20985 2010-07-03  Kwang Yul Seo  <skyul@company100.net>
20986
20987         Reviewed by Kent Tamura.
20988
20989         [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log.
20990         https://bugs.webkit.org/show_bug.cgi?id=41524
20991
20992         Print "WebKit CRASH" before crashing.
20993
20994         * wtf/Assertions.h:
20995
20996 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
20997
20998         Reviewed by Oliver Hunt.
20999
21000         Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken
21001
21002         This method tried to repatch a LDR (T2) into an ADD (T3) - but it only
21003         repatches the first instruction word.  The layout of the fields in the
21004         second word is different, and also needs repatching.
21005
21006         * assembler/ARMv7Assembler.h:
21007         (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
21008
21009 2010-07-02  Oliver Hunt  <oliver@apple.com>
21010
21011         Reviewed by Gavin Barraclough.
21012
21013         Clamp the number of arguments supported by function.apply
21014         https://bugs.webkit.org/show_bug.cgi?id=41351
21015         <rdar://problem/8142141>
21016
21017         Add clamping logic to function.apply similar to that
21018         enforced by firefox.  We have a smaller clamp than
21019         firefox as our calling convention means that stack
21020         usage is proportional to argument count -- the firefox
21021         limit is larger than you could actually call.
21022
21023         * interpreter/Interpreter.cpp:
21024         (JSC::Interpreter::privateExecute):
21025         * jit/JITStubs.cpp:
21026         (JSC::DEFINE_STUB_FUNCTION):
21027         * runtime/Arguments.h:
21028         (JSC::Arguments::):
21029
21030 2010-07-02  Chao-ying Fu  <fu@mips.com>
21031
21032         Reviewed by Oliver Hunt.
21033
21034         Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS
21035         https://bugs.webkit.org/show_bug.cgi?id=40179
21036
21037         Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL.
21038
21039         * jit/JITOpcodes.cpp:
21040         (JSC::JIT::privateCompileCTINativeCall):
21041         * wtf/Platform.h:
21042
21043 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
21044
21045         Reviewed by Oliver Hunt.
21046
21047         Bug 41552 - Clean up ARMv7 vfp code generation
21048         Emit separate opcode individually, remove magic numbers.
21049
21050         Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned).
21051
21052         * assembler/ARMv7Assembler.h:
21053         (JSC::ARMv7Assembler::):
21054         (JSC::ARMv7Assembler::vadd_F64):
21055         (JSC::ARMv7Assembler::vcmp_F64):
21056         (JSC::ARMv7Assembler::vcvt_F64_S32):
21057         (JSC::ARMv7Assembler::vcvtr_S32_F64):
21058         (JSC::ARMv7Assembler::vdiv_F64):
21059         (JSC::ARMv7Assembler::vldr):
21060         (JSC::ARMv7Assembler::vmov_F64_0):
21061         (JSC::ARMv7Assembler::vmov):
21062         (JSC::ARMv7Assembler::vmrs):
21063         (JSC::ARMv7Assembler::vmul_F64):
21064         (JSC::ARMv7Assembler::vstr):
21065         (JSC::ARMv7Assembler::vsub_F64):
21066         (JSC::ARMv7Assembler::VFPOperand::VFPOperand):
21067         (JSC::ARMv7Assembler::VFPOperand::bits1):
21068         (JSC::ARMv7Assembler::VFPOperand::bits4):
21069         (JSC::ARMv7Assembler::vcvtOp):
21070         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp):
21071         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp):
21072         * assembler/MacroAssemblerARMv7.h:
21073         (JSC::MacroAssemblerARMv7::branchDouble):
21074         * runtime/JSImmediate.h:
21075         (JSC::JSValue::isCell):
21076
21077 2010-07-02  Sheriff Bot  <webkit.review.bot@gmail.com>
21078
21079         Unreviewed, rolling out r62410.
21080         http://trac.webkit.org/changeset/62410
21081         https://bugs.webkit.org/show_bug.cgi?id=41549
21082
21083         accursed last minute changes (Requested by olliej on #webkit).
21084
21085         * parser/Lexer.cpp:
21086         (JSC::Lexer::setCode):
21087         (JSC::Lexer::copyCodeWithoutBOMs):
21088         (JSC::Lexer::sourceCode):
21089         * parser/SourceProvider.h:
21090         (JSC::):
21091         (JSC::SourceProvider::SourceProvider):
21092         (JSC::SourceProvider::hasBOMs):
21093         (JSC::UStringSourceProvider::create):
21094         (JSC::UStringSourceProvider::getRange):
21095         (JSC::UStringSourceProvider::UStringSourceProvider):
21096         * wtf/text/StringImpl.h:
21097
21098 2010-07-02  Sam Weinig  <sam@webkit.org>
21099
21100         Reviewed by Geoffrey Garen.
21101
21102         Patch for https://bugs.webkit.org/show_bug.cgi?id=41548
21103         Use snprintf instead of sprintf everywhere in JavaScriptCore
21104
21105         * runtime/JSGlobalObjectFunctions.cpp:
21106         (JSC::encode):
21107         (JSC::globalFuncEscape):
21108         * runtime/UString.cpp:
21109         (JSC::UString::from):
21110
21111 2010-07-02  Oliver Hunt  <oliver@apple.com>
21112
21113         Reviewed by Geoffrey Garen.
21114
21115         Move BOM handling out of the lexer and parser
21116         https://bugs.webkit.org/show_bug.cgi?id=41539
21117
21118         Doing the BOM stripping in the lexer meant that we could
21119         end up having to strip the BOMs from a source multiple times.
21120         To deal with this we now require all strings provided by
21121         a SourceProvider to already have had the BOMs stripped.
21122         This also simplifies some of the lexer logic.
21123
21124         * parser/Lexer.cpp:
21125         (JSC::Lexer::setCode):
21126         (JSC::Lexer::sourceCode):
21127         * parser/SourceProvider.h:
21128         (JSC::SourceProvider::SourceProvider):
21129         (JSC::UStringSourceProvider::create):
21130         (JSC::UStringSourceProvider::getRange):
21131         (JSC::UStringSourceProvider::UStringSourceProvider):
21132         * wtf/text/StringImpl.h:
21133         (WebCore::StringImpl::copyStringWithoutBOMs):
21134
21135 2010-07-02  Renata Hodovan  <reni@inf.u-szeged.hu>
21136
21137         Reviewed by Oliver Hunt.
21138         
21139         [ Updated after rollout. ]
21140
21141         Merged RegExp constructor and RegExp::create methods.
21142         Both functions are called with three parameters and check whether 
21143         flags (the third param) is given or not.
21144         Avoid extra hash lookups in RegExpCache::create by passing a pre-computed
21145         iterator parameter.
21146         https://bugs.webkit.org/show_bug.cgi?id=41055
21147
21148         * runtime/RegExp.cpp:
21149         (JSC::RegExp::RegExp):
21150         * runtime/RegExp.h:
21151         * runtime/RegExpCache.cpp:
21152         (JSC::RegExpCache::lookupOrCreate):
21153         (JSC::RegExpCache::create):
21154         * runtime/RegExpCache.h:
21155
21156 2010-07-02  Martin Robinson  <mrobinson@igalia.com>
21157
21158         Unreviewed. Build fix for GTK+.
21159
21160         Build Lexer.lut.h with the rest of the .lut.h files. Later these should
21161         all probably be moved to DerivedSources.
21162
21163         * GNUmakefile.am:
21164
21165 2010-06-23  Martin Robinson  <mrobinson@igalia.com>
21166
21167         Reviewed by Gustavo Noronha Silva.
21168
21169         [GTK] Separate DerivedSources per-project
21170         https://bugs.webkit.org/show_bug.cgi?id=41109
21171
21172         Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore.
21173
21174         * GNUmakefile.am:
21175
21176 2010-07-02  Peter Varga  <pvarga@inf.u-szeged.hu>
21177
21178         Reviewed by Oliver Hunt.
21179
21180         The alternativeFrameLocation value is wrong in the emitDisjunction function in
21181         case of PatternTerm::TypeParentheticalAssertion. This value needs to be
21182         computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc
21183         memory corruption in some cases.
21184         Layout test added for checking of TypeParentheticalAssertion case.
21185         https://bugs.webkit.org/show_bug.cgi?id=41458
21186
21187         * yarr/RegexInterpreter.cpp:
21188         (JSC::Yarr::ByteCompiler::emitDisjunction):
21189
21190 2010-07-01  Oliver Hunt  <oliver@apple.com>
21191
21192         Reviewed by Maciej Stachowiak.
21193
21194         Add a FixedArray template to encapsulate fixed length arrays
21195         https://bugs.webkit.org/show_bug.cgi?id=41506
21196
21197         This new type is used in place of fixed length C arrays so
21198         that debug builds can guard against attempts to go beyond
21199         the end of the array.
21200
21201         * JavaScriptCore.xcodeproj/project.pbxproj:
21202         * bytecode/Opcode.cpp:
21203         (JSC::OpcodeStats::~OpcodeStats):
21204         * pcre/pcre_compile.cpp:
21205         (calculateCompiledPatternLength):
21206         * runtime/Collector.cpp:
21207         (JSC::Heap::allocateBlock):
21208         (JSC::Heap::allocate):
21209         * runtime/Collector.h:
21210         (JSC::CollectorBitmap::clearAll):
21211         * runtime/CollectorHeapIterator.h:
21212         (JSC::CollectorHeapIterator::operator*):
21213         * runtime/DateInstanceCache.h:
21214         * runtime/JSString.cpp:
21215         (JSC::JSString::replaceCharacter):
21216         * runtime/JSString.h:
21217         (JSC::RopeBuilder::JSStringFinalizerStruct::):
21218         * runtime/NumericStrings.h:
21219         * runtime/RegExpCache.h:
21220         * runtime/SmallStrings.h:
21221         (JSC::SmallStrings::singleCharacterStrings):
21222         * wtf/AVLTree.h:
21223         * wtf/FixedArray.h: Added.
21224         (WTF::FixedArray::operator[]):
21225         (WTF::FixedArray::data):
21226
21227 2010-07-01  Zoltan Herczeg  <zherczeg@webkit.org>
21228
21229         Reviewed by Oliver Hunt.
21230
21231         Improve the main lexer switch by mapping input characters to their type
21232         https://bugs.webkit.org/show_bug.cgi?id=41459
21233
21234         Sunsipder: no change (from 532.9ms to 531.5ms)
21235         SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms)
21236
21237         * parser/Lexer.cpp:
21238         (JSC::):
21239         (JSC::Lexer::lex):
21240
21241 2010-07-01  Sam Weinig  <sam@webkit.org>
21242
21243         Rubber-stamped by Ander Carlsson.
21244
21245         Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard.
21246
21247         * wtf/Platform.h:
21248
21249 2010-07-01  Gavin Barraclough  <barraclough@apple.com>
21250
21251         Reviewed by Oliver Hunt.
21252
21253         Bug 41490 - Add missing operations to MacroAssemblerARMv7
21254         Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed.
21255
21256         * assembler/ARMv7Assembler.h:
21257         (JSC::ARMRegisters::):
21258         (JSC::ARMRegisters::asSingle):
21259         (JSC::ARMRegisters::asDouble):
21260         (JSC::VFPImmediate::VFPImmediate):
21261         (JSC::VFPImmediate::isValid):
21262         (JSC::VFPImmediate::value):
21263         (JSC::ARMv7Assembler::singleRegisterMask):
21264         (JSC::ARMv7Assembler::doubleRegisterMask):
21265         (JSC::ARMv7Assembler::):
21266         (JSC::ARMv7Assembler::add_S):
21267         (JSC::ARMv7Assembler::neg):
21268         (JSC::ARMv7Assembler::orr_S):
21269         (JSC::ARMv7Assembler::sub):
21270         (JSC::ARMv7Assembler::sub_S):
21271         (JSC::ARMv7Assembler::vadd_F64):
21272         (JSC::ARMv7Assembler::vcmp_F64):
21273         (JSC::ARMv7Assembler::vcvt_F64_S32):
21274         (JSC::ARMv7Assembler::vcvtr_S32_F64):
21275         (JSC::ARMv7Assembler::vdiv_F64):
21276         (JSC::ARMv7Assembler::vldr):
21277         (JSC::ARMv7Assembler::vmov_F64_0):
21278         (JSC::ARMv7Assembler::vmov):
21279         (JSC::ARMv7Assembler::vmul_F64):
21280         (JSC::ARMv7Assembler::vstr):
21281         (JSC::ARMv7Assembler::vsub_F64):
21282         (JSC::ARMv7Assembler::vcvt):
21283         (JSC::ARMv7Assembler::vmem):
21284         * assembler/AbstractMacroAssembler.h:
21285         * assembler/MacroAssemblerARM.h:
21286         * assembler/MacroAssemblerARMv7.h:
21287         (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle):
21288         (JSC::MacroAssemblerARMv7::neg32):
21289         (JSC::MacroAssemblerARMv7::loadDouble):
21290         (JSC::MacroAssemblerARMv7::divDouble):
21291         (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
21292         (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
21293         (JSC::MacroAssemblerARMv7::zeroDouble):
21294         (JSC::MacroAssemblerARMv7::branchOr32):
21295         (JSC::MacroAssemblerARMv7::set32):
21296         (JSC::MacroAssemblerARMv7::set8):
21297         * assembler/MacroAssemblerMIPS.h:
21298         * assembler/MacroAssemblerX86Common.h:
21299
21300 2010-07-01  Oliver Hunt  <oliver@apple.com>
21301
21302         Reviewed by Geoff Garen.
21303
21304         Improve reentrancy logic in polymorphic cache stubs
21305         <https://bugs.webkit.org/show_bug.cgi?id=41482>
21306         <rdar://problem/8094380>
21307
21308         Make the polymorphic cache stubs handle reentrancy
21309         better.
21310
21311         * jit/JITStubs.cpp:
21312         (JSC::DEFINE_STUB_FUNCTION):
21313         (JSC::getPolymorphicAccessStructureListSlot):
21314
21315 2010-07-01  Antti Koivisto  <koivisto@iki.fi>
21316
21317         Revert accidental commit.
21318
21319         * runtime/Collector.cpp:
21320         (JSC::Heap::allocateBlock):
21321
21322 2010-06-30  Darin Adler  <darin@apple.com>
21323
21324         Reviewed by Adam Barth.
21325
21326         Add assertion, off by default, for when you forget to do adoptRef
21327         https://bugs.webkit.org/show_bug.cgi?id=41422
21328
21329         * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted
21330         function, called on the pointer by adoptRef, with an empty inline
21331         default version, meant to be overloaded. Unified the inlining
21332         with a macro named REF_DEREF_INLINE to make it clearer what's
21333         going on in the refIfNotNull/derefIfNotNull functions. Renamed
21334         releaseRef to leakRef, but left the old name in for compatibility
21335         for now.
21336
21337         * wtf/RefCounted.h: Added code to require adoption and assert if
21338         you don't call adoptRef. For now, it is turned off because of the
21339         LOOSE_REF_COUNTED define in this header. Later we can turn it on
21340         once we get everything working without asserting.
21341
21342 2010-06-29  Michael Saboff  <msaboff@apple.com>
21343
21344         Reviewed by Darin Adler.
21345
21346         Bug 41238 - RegExp performance slow on Dromaeo benchmark
21347
21348         Other javascript engines appear to cache prior results of regular 
21349         expression operations.
21350
21351         Suggest adding some sort of caching mechanism to regular expression 
21352         processing.
21353
21354         Added a single entry cache of match() results to RegExp class.
21355
21356         Also added performance improvements to UString == operator.
21357         First check the impls for equality.  Then get the length of
21358         each of the non-null impls.  Next check the sizes for equality.
21359         Then check the data for the case of different impls that point 
21360         to the same data (most likely due to substrings from the beginning of
21361         another string).  Lastly we check the underlying data for equality.
21362
21363         * runtime/RegExp.cpp:
21364         (JSC::RegExp::RegExp):
21365         (JSC::RegExp::match):
21366         * runtime/RegExp.h:
21367         * runtime/UString.h:
21368         (JSC::operator==):
21369
21370 2010-06-29  Nathan Lawrence  <nlawrence@apple.com>
21371
21372         Reviewed by Geoffrey Garen.
21373
21374         WTF::HashSet iterators are quasi-mutable.  Changing the value through
21375         dereferencing an iterator will not change the behavior of methods like
21376         contains or find, but will change the behavior of iterating.
21377
21378         * wtf/HashSet.h:
21379         (WTF::::begin):
21380         (WTF::::end):
21381         (WTF::::find):
21382         (WTF::::remove):
21383         * wtf/HashTable.h:
21384
21385 2010-06-29  Martin Robinson  <mrobinson@igalia.com>
21386
21387         Reviewed by Xan Lopez.
21388
21389         [GTK] Clean up the source lists in the GNUMakefile.am files
21390         https://bugs.webkit.org/show_bug.cgi?id=41229
21391
21392         Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate
21393         the source lists.
21394
21395         * GNUmakefile.am:
21396
21397 2010-06-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
21398
21399         Reviewed by Kenneth Rohde Christiansen.
21400
21401         [Qt] Fix QtScript build after QScriptValuePrivate ctor changes
21402         https://bugs.webkit.org/show_bug.cgi?id=41307
21403
21404         * qt/api/qscriptvalue_p.h:
21405         (QScriptValuePrivate::prototype):
21406         * qt/benchmarks/qscriptengine/qscriptengine.pro:
21407
21408 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
21409
21410         Reviewed by Kenneth Rohde Christiansen.
21411
21412         [Qt] QScriptEngine API should contain a newArray function
21413         https://bugs.webkit.org/show_bug.cgi?id=39115
21414
21415         * qt/api/qscriptengine.cpp:
21416         (QScriptEngine::newArray):
21417         * qt/api/qscriptengine.h:
21418         * qt/api/qscriptengine_p.cpp:
21419         (QScriptEnginePrivate::newArray):
21420         * qt/api/qscriptengine_p.h:
21421         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
21422         (tst_QScriptEngine::newArray):
21423
21424 2010-06-28  Xan Lopez  <xlopez@igalia.com>
21425
21426         Reviewed by Gustavo Noronha.
21427
21428         Install jsc as jsc-X where X is the major API version to allow
21429         parallel installation of both GTK+ 2.x and 3.x versions.
21430
21431         * GNUmakefile.am:
21432
21433 2010-06-28  John Gregg  <johnnyg@google.com>
21434
21435         Reviewed by Kent Tamura.
21436
21437         add ENABLE_DIRECTORY_UPLOAD build support
21438         https://bugs.webkit.org/show_bug.cgi?id=41100
21439
21440         * Configurations/FeatureDefines.xcconfig:
21441
21442 2010-06-28  Xan Lopez  <xlopez@igalia.com>
21443
21444         Revert to build jsc, since the tests expect this.
21445
21446         * GNUmakefile.am:
21447
21448 2010-06-28  Zoltan Herczeg  <zherczeg@webkit.org>
21449
21450         Reviewed by Oliver Hunt.
21451
21452         Only one character lookahead should be enough for the lexer
21453         https://bugs.webkit.org/show_bug.cgi?id=41213
21454
21455         The lexer had 4 character lookahead before, which required
21456         a complex shifting mechanism. This can be improved by using
21457         only one character lookahead for most decisions, and a
21458         peek() function as a fallback when it is absolutely necessary.
21459
21460         * parser/Lexer.cpp:
21461         (JSC::Lexer::currentCharacter):
21462         (JSC::Lexer::currentOffset):
21463         (JSC::Lexer::setCode):
21464         (JSC::Lexer::shift):
21465         (JSC::Lexer::peek):
21466         (JSC::Lexer::getUnicodeCharacter):
21467         (JSC::Lexer::shiftLineTerminator):
21468         (JSC::Lexer::lastTokenWasRestrKeyword):
21469         (JSC::Lexer::lex):
21470         (JSC::Lexer::scanRegExp):
21471         (JSC::Lexer::skipRegExp):
21472         * parser/Lexer.h:
21473
21474 2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
21475
21476         Unreviewed build fix.
21477
21478         [EFL] Build fix for latest version of Ecore library.
21479         Ecore recently changed return type of callbacks from int to Eina_Bool.
21480
21481         * wtf/efl/MainThreadEfl.cpp:
21482         (WTF::timeoutFired): Return Eina_Bool instead of int.
21483
21484 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
21485
21486         Reviewed by Kenneth Rohde Christiansen.
21487
21488         [Qt] QScriptValue should have API for accessing object properties
21489         https://bugs.webkit.org/show_bug.cgi?id=40903
21490
21491         Make possible to access properties inside QScriptValues. While this
21492         still doesn't support the ResolveLocal parameter, it is already useful
21493         for testing the API.
21494
21495         The tests from upstream QtScript weren't imported since most of them
21496         depend on the setProperty() function as well. A simple test was created.
21497
21498         * qt/api/qscriptvalue.cpp:
21499         (QScriptValue::property):
21500         * qt/api/qscriptvalue.h:
21501         (QScriptValue::):
21502         * qt/api/qscriptvalue_p.h:
21503         (QScriptValuePrivate::property):
21504         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
21505         (tst_QScriptValue::propertySimple):
21506         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
21507
21508 2010-06-28  Xan Lopez  <xlopez@igalia.com>
21509
21510         Reviewed by Gustavo Noronha.
21511
21512         [GTK] Add support for GTK+3
21513         https://bugs.webkit.org/show_bug.cgi?id=41253
21514
21515         Suffix jsc with the API version of the library, so that
21516         libwebkitgtk 1.x and 3.x can install jsc.
21517
21518         * GNUmakefile.am:
21519
21520 2010-06-27  Kwang Yul Seo  <skyul@company100.net>
21521
21522         Reviewed by Kent Tamura.
21523
21524         [BREWMP] Turn ENABLE(SINGLE_THREADED) on.
21525         https://bugs.webkit.org/show_bug.cgi?id=41135
21526
21527         Brew MP does not support preemptive multi-threading.
21528         Disable threading for Brew MP.
21529
21530         * wtf/Platform.h:
21531
21532 2010-06-26  Tony Gentilcore  <tonyg@chromium.org>
21533
21534         Reviewed by Dimitri Glazkov.
21535
21536         Add an ENABLE_WEB_TIMING option for enabling Web Timing support.
21537         https://bugs.webkit.org/show_bug.cgi?id=38924
21538
21539         * Configurations/FeatureDefines.xcconfig:
21540
21541 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
21542
21543         Reviewed by Geoffrey Garen.
21544
21545         We assume in testapi.c that the value aHeapRef refers to will not be
21546         moved.  When we have movable objects, this will not be the case.
21547
21548         * API/tests/testapi.c:
21549         (main):
21550
21551 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
21552
21553         Unreviewed, rolling out r61924.
21554         http://trac.webkit.org/changeset/61924
21555         https://bugs.webkit.org/show_bug.cgi?id=41240
21556
21557         It was rolled out, but cq+ wasn't removed (Requested by Ossy_
21558         on #webkit).
21559
21560         * runtime/RegExp.cpp:
21561         (JSC::RegExp::RegExp):
21562         (JSC::RegExp::create):
21563         * runtime/RegExp.h:
21564         * runtime/RegExpCache.cpp:
21565         (JSC::RegExpCache::lookupOrCreate):
21566         (JSC::RegExpCache::create):
21567         * runtime/RegExpCache.h:
21568
21569 2010-06-25  Renata Hodovan  <reni@inf.u-szeged.hu>
21570
21571         Reviewed by Geoffrey Garen.
21572
21573         Merge RegExp constructor and RegExp::create methods into one.
21574         Both of function are called with tree parameters and check whether 
21575         flags (the third param) is given or not.
21576         Simplify hash lookups in RegExpCache::create with giving them an extra 
21577         iterator parameter.
21578         https://bugs.webkit.org/show_bug.cgi?id=41055
21579
21580         * runtime/RegExp.cpp:
21581         (JSC::RegExp::RegExp):
21582         * runtime/RegExp.h:
21583         * runtime/RegExpCache.cpp:
21584         (JSC::RegExpCache::lookupOrCreate):
21585         (JSC::RegExpCache::create):
21586         * runtime/RegExpCache.h:
21587
21588 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
21589
21590         Reviewed by Simon Hausmann.
21591
21592         Introduce QtScript benchmarks.
21593
21594         The QtScript performance should be tested regularly. The patch introduces
21595         micro benchmarks for existing API.
21596
21597         [Qt] Performance of the QtScript API is not tested.
21598         https://bugs.webkit.org/show_bug.cgi?id=40911
21599
21600         * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri.
21601         * qt/benchmarks/benchmarks.pro: Added.
21602         * qt/benchmarks/qscriptengine/qscriptengine.pro: Added.
21603         * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added.
21604         (tst_QScriptEngine::checkSyntax_data):
21605         (tst_QScriptEngine::checkSyntax):
21606         (tst_QScriptEngine::constructor):
21607         (tst_QScriptEngine::evaluateString_data):
21608         (tst_QScriptEngine::evaluateString):
21609         (tst_QScriptEngine::evaluateProgram_data):
21610         (tst_QScriptEngine::evaluateProgram):
21611         (tst_QScriptEngine::newObject):
21612         (tst_QScriptEngine::nullValue):
21613         (tst_QScriptEngine::undefinedValue):
21614         (tst_QScriptEngine::globalObject):
21615         (tst_QScriptEngine::toStringHandle):
21616         * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added.
21617         * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added.
21618         (tst_QScriptValue::tst_QScriptValue):
21619         (tst_QScriptValue::~tst_QScriptValue):
21620         (tst_QScriptValue::values_data):
21621         (tst_QScriptValue::ctorBool):
21622         (tst_QScriptValue::ctorReal):
21623         (tst_QScriptValue::ctorNumber):
21624         (tst_QScriptValue::ctorQString):
21625         (tst_QScriptValue::ctorCString):
21626         (tst_QScriptValue::ctorSpecial):
21627         (tst_QScriptValue::ctorQScriptValue):
21628         (tst_QScriptValue::isValid_data):
21629         (tst_QScriptValue::isValid):
21630         (tst_QScriptValue::isBool_data):
21631         (tst_QScriptValue::isBool):
21632         (tst_QScriptValue::isNumber_data):
21633         (tst_QScriptValue::isNumber):
21634         (tst_QScriptValue::isFunction_data):
21635         (tst_QScriptValue::isFunction):
21636         (tst_QScriptValue::isNull_data):
21637         (tst_QScriptValue::isNull):
21638         (tst_QScriptValue::isString_data):
21639         (tst_QScriptValue::isString):
21640         (tst_QScriptValue::isUndefined_data):
21641         (tst_QScriptValue::isUndefined):
21642         (tst_QScriptValue::isObject_data):
21643         (tst_QScriptValue::isObject):
21644         (tst_QScriptValue::isError_data):
21645         (tst_QScriptValue::isError):
21646         (tst_QScriptValue::toString_data):
21647         (tst_QScriptValue::toString):
21648         (tst_QScriptValue::toNumber_data):
21649         (tst_QScriptValue::toNumber):
21650         (tst_QScriptValue::toBool_data):
21651         (tst_QScriptValue::toBool):
21652         (tst_QScriptValue::toInteger_data):
21653         (tst_QScriptValue::toInteger):
21654         (tst_QScriptValue::toInt32_data):
21655         (tst_QScriptValue::toInt32):
21656         (tst_QScriptValue::toUInt32_data):
21657         (tst_QScriptValue::toUInt32):
21658         (tst_QScriptValue::toUInt16_data):
21659         (tst_QScriptValue::toUInt16):
21660         (tst_QScriptValue::toObject_data):
21661         (tst_QScriptValue::toObject):
21662         (tst_QScriptValue::equals_data):
21663         (tst_QScriptValue::equals):
21664         (tst_QScriptValue::strictlyEquals_data):
21665         (tst_QScriptValue::strictlyEquals):
21666         (tst_QScriptValue::instanceOf_data):
21667         (tst_QScriptValue::instanceOf):
21668
21669 2010-06-25  Oliver Hunt  <oliver@apple.com>
21670
21671         Reviewed by Geoffrey Garen.
21672
21673         Remove old js parser
21674         https://bugs.webkit.org/show_bug.cgi?id=41222
21675
21676         Remove the old yacc parser, this also solves the tiger problem.  Which
21677         was a conflict between yacc generated token values and those in the
21678         custom parser
21679
21680         * Android.mk:
21681         * CMakeLists.txt:
21682         * DerivedSources.make:
21683         * DerivedSources.pro:
21684         * GNUmakefile.am:
21685         * JavaScriptCore.pro:
21686         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
21687         * JavaScriptCore.xcodeproj/project.pbxproj:
21688         * parser/Grammar.y: Removed.
21689         * parser/JSParser.cpp:
21690         * parser/JSParser.h:
21691         * parser/Lexer.cpp:
21692         * parser/NodeConstructors.h:
21693         (JSC::Node::Node):
21694         * parser/Parser.cpp:
21695         (JSC::Parser::parse):
21696         * wtf/Platform.h:
21697
21698 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
21699
21700         Reviewed by Simon Hausmann.
21701
21702         New QtScript API; setPrototype() and prototype().
21703
21704         This patch implements QScriptValue's prototype accessors.
21705
21706         [Qt] QScriptValue should have accessors to a prototype.
21707         https://bugs.webkit.org/show_bug.cgi?id=39356
21708
21709         * qt/api/qscriptvalue.cpp:
21710         (QScriptValue::prototype):
21711         (QScriptValue::setPrototype):
21712         * qt/api/qscriptvalue.h:
21713         * qt/api/qscriptvalue_p.h:
21714         (QScriptValuePrivate::prototype):
21715         (QScriptValuePrivate::setPrototype):
21716         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
21717         (tst_QScriptValue::getSetPrototype):
21718         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
21719
21720 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
21721
21722         Reviewed by Kenneth Rohde Christiansen.
21723
21724         [CMake] Add option to enable JIT.
21725         JIT is disabled by default, but now it's possible to enable it through
21726         an option to CMake: -DENABLE_JIT will enable it.
21727         https://bugs.webkit.org/show_bug.cgi?id=40936
21728
21729         * CMakeLists.txt: Add missing files and re-sort.
21730
21731 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
21732
21733         Reviewed by Gustavo Noronha Silva.
21734
21735         [CMake] Remove unused variable in EFL build system. It was previously
21736         being used to set the flags of each port but it was superseded by
21737         other flags.
21738         https://bugs.webkit.org/show_bug.cgi?id=40931
21739
21740         * jsc/CMakeLists.txt:
21741
21742 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
21743
21744         Reviewed by Geoffrey Garen.
21745
21746         Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on
21747         sunspider.
21748
21749         * assembler/AssemblerBuffer.h:
21750         (JSC::AssemblerBuffer::AssemblerBuffer):
21751
21752 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
21753
21754         Unreviewed, rolling out r61842.
21755         http://trac.webkit.org/changeset/61842
21756         https://bugs.webkit.org/show_bug.cgi?id=41208
21757
21758         It broke Windows build (Requested by Ossy_ on #webkit).
21759
21760         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
21761         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
21762         * wtf/OwnPtrCommon.h:
21763         * wtf/brew/OwnPtrBrew.h: Removed.
21764         * wtf/win/OwnPtrWin.h: Removed.
21765
21766 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
21767
21768         Unreviewed, rolling out r61833.
21769         http://trac.webkit.org/changeset/61833
21770         https://bugs.webkit.org/show_bug.cgi?id=41205
21771
21772         It broke Leopard and GTK (Requested by Ossy_ on #webkit).
21773
21774         * runtime/RegExp.cpp:
21775         (JSC::RegExp::RegExp):
21776         (JSC::RegExp::create):
21777         * runtime/RegExp.h:
21778         * runtime/RegExpCache.cpp:
21779         (JSC::RegExpCache::lookupOrCreate):
21780         (JSC::RegExpCache::create):
21781         * runtime/RegExpCache.h:
21782
21783 2010-06-25  Kwang Yul Seo  <skyul@company100.net>
21784
21785         Reviewed by Adam Barth.
21786
21787         Change OwnPtrCommon to include platform-specific headers
21788         https://bugs.webkit.org/show_bug.cgi?id=40279
21789
21790         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
21791         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
21792
21793         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
21794         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
21795         * wtf/OwnPtrCommon.h:
21796         * wtf/brew/OwnPtrBrew.h: Added.
21797         * wtf/win/OwnPtrWin.h: Added.
21798
21799 2010-06-25  Patrick Gansterer  <paroga@paroga.com>
21800
21801         Reviewed by Darin Adler.
21802
21803         Add the possibility for a head and footer section to create_jit_stubs.
21804         https://bugs.webkit.org/show_bug.cgi?id=36050
21805
21806         * create_jit_stubs:
21807
21808 2010-06-24  Renata Hodovan  <reni@inf.u-szeged.hu>
21809
21810         Reviewed by Geoffrey Garen.
21811
21812         Merge RegExp constructor and RegExp::create methods into one.
21813         Both of function are called with tree parameters and check whether 
21814         flags (the third param) is given or not.
21815         Simplify hash lookups in RegExpCache::create with giving them an extra 
21816         iterator parameter.
21817         https://bugs.webkit.org/show_bug.cgi?id=41055
21818
21819         * runtime/RegExp.cpp:
21820         (JSC::RegExp::RegExp):
21821         * runtime/RegExp.h:
21822         * runtime/RegExpCache.cpp:
21823         (JSC::RegExpCache::lookupOrCreate):
21824         (JSC::RegExpCache::create):
21825         * runtime/RegExpCache.h:
21826
21827 2010-06-24  Oliver Hunt  <oliver@apple.com>
21828
21829         Reviewed by Maciej Stachowiak.
21830
21831         Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64
21832         https://bugs.webkit.org/show_bug.cgi?id=41193
21833
21834         I noticed a use of '+ 4' in some of the 32_64 code paths and realised there
21835         were a few places where endianness was being hardcoded.  This patch fixes
21836         the errors i could find through code inspection.
21837
21838         * jit/JITOpcodes32_64.cpp:
21839         (JSC::JIT::emit_op_resolve_global):
21840         * jit/JITPropertyAccess32_64.cpp:
21841         (JSC::JIT::emit_op_get_by_val):
21842         (JSC::JIT::emit_op_put_by_val):
21843         (JSC::JIT::compileGetDirectOffset):
21844         (JSC::JIT::privateCompilePutByIdTransition):
21845         (JSC::JIT::patchGetByIdSelf):
21846         (JSC::JIT::patchPutByIdReplace):
21847
21848 2010-06-24  Oliver Hunt  <oliver@apple.com>
21849
21850         Build fix
21851
21852         Temporarily get the tiger bot working again by disabling the
21853         new JS parser.  GCC on tiger is miscompiling the parser and
21854         I don't have access to a tiger machine right now.
21855
21856         * wtf/Platform.h:
21857
21858  2010-06-21  Nathan Lawrence  <nlawrence@apple.com>
21859
21860          Reviewed by Geoff Garen.
21861
21862          https://bugs.webkit.org/show_bug.cgi?id=40128
21863          Fixed broken debug functionality.
21864
21865          * interpreter/Interpreter.cpp:
21866          (JSC::Interpreter::dumpRegisters):
21867              Fixed to work with updated call frame.
21868          * runtime/JSImmediate.h:
21869          (JSC::JSValue::isCell):
21870              Added assert for aligned cell.
21871          * runtime/JSValue.cpp:
21872          (JSC::JSValue::description):
21873              Fixed to work with current JSValue implementation.
21874          * runtime/JSZombie.cpp:
21875          (JSC::JSZombie::leakedZombieStructure):
21876              JSombies compile again.
21877
21878 2010-06-24  Leandro Pereira  <leandro@profusion.mobi>
21879
21880         Unreviewed build fix.
21881
21882         * CMakeLists.txt: Add JSParser.cpp.
21883
21884 2010-06-24  Oliver Hunt  <oliver@apple.com>
21885
21886         Reviewed by Maciej Stachowiak.
21887
21888         Single character string replacement may replace too many characters
21889         https://bugs.webkit.org/show_bug.cgi?id=41138
21890         <rdar://problem/8097496>
21891
21892         Simple fix to stop the rope path of single character replacement
21893         once the first replacement occurs.
21894
21895         * runtime/JSString.cpp:
21896         (JSC::JSString::replaceCharacter):
21897
21898 2010-06-24  Gabor Loki  <loki@webkit.org>
21899
21900         Reviewed by Gavin Barraclough.
21901
21902         Fix the length of instruction stream controlled by constant pool
21903         https://bugs.webkit.org/show_bug.cgi?id=40293
21904
21905         The initial/maximum length of instruction stream (m_maxDistance) should
21906         be set when the first constant arrives to the constant pool. Otherwise
21907         the constant pool could be placed into an uninterrupted sequence.
21908
21909         * assembler/AssemblerBufferWithConstantPool.h:
21910         (JSC::):
21911
21912 2010-06-24  Oliver Hunt  <oliver@apple.com>
21913
21914         Reviewed by Gavin Barraclough.
21915
21916         We assume bytecodeOffset will always return a value > 1,
21917         so we adjust the failure case to return 1 instead of 0.
21918
21919         * bytecode/CodeBlock.h:
21920         (JSC::CodeBlock::bytecodeOffset):
21921
21922 2010-06-23  Oliver Hunt  <oliver@apple.com>
21923
21924         Reviewed by Gavin Barraclough.
21925
21926         Custom-written JavaScript parser
21927         https://bugs.webkit.org/show_bug.cgi?id=34019
21928
21929         Implement a recursive descent parser similar to that used by V8 and
21930         SpiderMonkey.  Greater than 2x improvement in SunSpider parsing tests.
21931
21932         The parser consists of a JSParser class that uses a TreeBuilder to actually
21933         build the AST.  There are currently two builders -- the ASTBuilder and
21934         SyntaxChecker which separate the job of building an AST for code generation
21935         and simply checking syntactic correctness.
21936
21937         There's still some less than ideal code remaining in the parser to allow
21938         us to retain the existing lexing code with minimal changes.  We'll tidy
21939         this up at a later date.
21940
21941         * GNUmakefile.am:
21942         * JavaScriptCore.gypi:
21943         * JavaScriptCore.pro:
21944         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
21945         * JavaScriptCore.xcodeproj/project.pbxproj:
21946         * parser/ASTBuilder.h: Added.
21947         (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
21948         (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
21949         (JSC::ASTBuilder::ASTBuilder):
21950         (JSC::ASTBuilder::createSourceElements):
21951         (JSC::ASTBuilder::varDeclarations):
21952         (JSC::ASTBuilder::funcDeclarations):
21953         (JSC::ASTBuilder::features):
21954         (JSC::ASTBuilder::numConstants):
21955         (JSC::ASTBuilder::appendToComma):
21956         (JSC::ASTBuilder::createCommaExpr):
21957         (JSC::ASTBuilder::createLogicalNot):
21958         (JSC::ASTBuilder::createUnaryPlus):
21959         (JSC::ASTBuilder::createVoid):
21960         (JSC::ASTBuilder::thisExpr):
21961         (JSC::ASTBuilder::createResolve):
21962         (JSC::ASTBuilder::createObjectLiteral):
21963         (JSC::ASTBuilder::createArray):
21964         (JSC::ASTBuilder::createNumberExpr):
21965         (JSC::ASTBuilder::createString):
21966         (JSC::ASTBuilder::createBoolean):
21967         (JSC::ASTBuilder::createNull):
21968         (JSC::ASTBuilder::createBracketAccess):
21969         (JSC::ASTBuilder::createDotAccess):
21970         (JSC::ASTBuilder::createRegex):
21971         (JSC::ASTBuilder::createNewExpr):
21972         (JSC::ASTBuilder::createConditionalExpr):
21973         (JSC::ASTBuilder::createAssignResolve):
21974         (JSC::ASTBuilder::createFunctionExpr):
21975         (JSC::ASTBuilder::createFunctionBody):
21976         (JSC::ASTBuilder::createGetterOrSetterProperty):
21977         (JSC::ASTBuilder::createArguments):
21978         (JSC::ASTBuilder::createArgumentsList):
21979         (JSC::ASTBuilder::createProperty):
21980         (JSC::ASTBuilder::createPropertyList):
21981         (JSC::ASTBuilder::createElementList):
21982         (JSC::ASTBuilder::createFormalParameterList):
21983         (JSC::ASTBuilder::createClause):
21984         (JSC::ASTBuilder::createClauseList):
21985         (JSC::ASTBuilder::setUsesArguments):
21986         (JSC::ASTBuilder::createFuncDeclStatement):
21987         (JSC::ASTBuilder::createBlockStatement):
21988         (JSC::ASTBuilder::createExprStatement):
21989         (JSC::ASTBuilder::createIfStatement):
21990         (JSC::ASTBuilder::createForLoop):
21991         (JSC::ASTBuilder::createForInLoop):
21992         (JSC::ASTBuilder::createEmptyStatement):
21993         (JSC::ASTBuilder::createVarStatement):
21994         (JSC::ASTBuilder::createReturnStatement):
21995         (JSC::ASTBuilder::createBreakStatement):
21996         (JSC::ASTBuilder::createContinueStatement):
21997         (JSC::ASTBuilder::createTryStatement):
21998         (JSC::ASTBuilder::createSwitchStatement):
21999         (JSC::ASTBuilder::createWhileStatement):
22000         (JSC::ASTBuilder::createDoWhileStatement):
22001         (JSC::ASTBuilder::createLabelStatement):
22002         (JSC::ASTBuilder::createWithStatement):
22003         (JSC::ASTBuilder::createThrowStatement):
22004         (JSC::ASTBuilder::createDebugger):
22005         (JSC::ASTBuilder::createConstStatement):
22006         (JSC::ASTBuilder::appendConstDecl):
22007         (JSC::ASTBuilder::appendStatement):
22008         (JSC::ASTBuilder::addVar):
22009         (JSC::ASTBuilder::combineCommaNodes):
22010         (JSC::ASTBuilder::evalCount):
22011         (JSC::ASTBuilder::appendBinaryExpressionInfo):
22012         (JSC::ASTBuilder::operatorStackPop):
22013         (JSC::ASTBuilder::operatorStackHasHigherPrecedence):
22014         (JSC::ASTBuilder::getFromOperandStack):
22015         (JSC::ASTBuilder::shrinkOperandStackBy):
22016         (JSC::ASTBuilder::appendBinaryOperation):
22017         (JSC::ASTBuilder::operatorStackAppend):
22018         (JSC::ASTBuilder::popOperandStack):
22019         (JSC::ASTBuilder::appendUnaryToken):
22020         (JSC::ASTBuilder::unaryTokenStackLastType):
22021         (JSC::ASTBuilder::unaryTokenStackLastStart):
22022         (JSC::ASTBuilder::unaryTokenStackRemoveLast):
22023         (JSC::ASTBuilder::assignmentStackAppend):
22024         (JSC::ASTBuilder::createAssignment):
22025         (JSC::ASTBuilder::Scope::Scope):
22026         (JSC::ASTBuilder::setExceptionLocation):
22027         (JSC::ASTBuilder::incConstants):
22028         (JSC::ASTBuilder::usesThis):
22029         (JSC::ASTBuilder::usesCatch):
22030         (JSC::ASTBuilder::usesClosures):
22031         (JSC::ASTBuilder::usesArguments):
22032         (JSC::ASTBuilder::usesAssignment):
22033         (JSC::ASTBuilder::usesWith):
22034         (JSC::ASTBuilder::usesEval):
22035         (JSC::ASTBuilder::createNumber):
22036         (JSC::ASTBuilder::makeTypeOfNode):
22037         (JSC::ASTBuilder::makeDeleteNode):
22038         (JSC::ASTBuilder::makeNegateNode):
22039         (JSC::ASTBuilder::makeBitwiseNotNode):
22040         (JSC::ASTBuilder::makeMultNode):
22041         (JSC::ASTBuilder::makeDivNode):
22042         (JSC::ASTBuilder::makeAddNode):
22043         (JSC::ASTBuilder::makeSubNode):
22044         (JSC::ASTBuilder::makeLeftShiftNode):
22045         (JSC::ASTBuilder::makeRightShiftNode):
22046         (JSC::ASTBuilder::makeFunctionCallNode):
22047         (JSC::ASTBuilder::makeBinaryNode):
22048         (JSC::ASTBuilder::makeAssignNode):
22049         (JSC::ASTBuilder::makePrefixNode):
22050         (JSC::ASTBuilder::makePostfixNode):
22051         * parser/JSParser.cpp: Added.
22052         (JSC::JSParser::AllowInOverride::AllowInOverride):
22053         (JSC::JSParser::AllowInOverride::~AllowInOverride):
22054         (JSC::JSParser::token):
22055         (JSC::JSParser::next):
22056         (JSC::JSParser::consume):
22057         (JSC::JSParser::match):
22058         (JSC::JSParser::tokenStart):
22059         (JSC::JSParser::tokenLine):
22060         (JSC::JSParser::tokenEnd):
22061         (JSC::JSParser::):
22062         (JSC::JSParser::autoSemiColon):
22063         (JSC::JSParser::canRecurse):
22064         (JSC::JSParser::lastTokenEnd):
22065         (JSC::jsParse):
22066         (JSC::JSParser::JSParser):
22067         (JSC::JSParser::parseProgram):
22068         (JSC::JSParser::allowAutomaticSemicolon):
22069         (JSC::JSParser::parseSourceElements):
22070         (JSC::JSParser::parseVarDeclaration):
22071         (JSC::JSParser::parseConstDeclaration):
22072         (JSC::JSParser::parseDoWhileStatement):
22073         (JSC::JSParser::parseWhileStatement):
22074         (JSC::JSParser::parseVarDeclarationList):
22075         (JSC::JSParser::parseConstDeclarationList):
22076         (JSC::JSParser::parseForStatement):
22077         (JSC::JSParser::parseBreakStatement):
22078         (JSC::JSParser::parseContinueStatement):
22079         (JSC::JSParser::parseReturnStatement):
22080         (JSC::JSParser::parseThrowStatement):
22081         (JSC::JSParser::parseWithStatement):
22082         (JSC::JSParser::parseSwitchStatement):
22083         (JSC::JSParser::parseSwitchClauses):
22084         (JSC::JSParser::parseSwitchDefaultClause):
22085         (JSC::JSParser::parseTryStatement):
22086         (JSC::JSParser::parseDebuggerStatement):
22087         (JSC::JSParser::parseBlockStatement):
22088         (JSC::JSParser::parseStatement):
22089         (JSC::JSParser::parseFormalParameters):
22090         (JSC::JSParser::parseFunctionBody):
22091         (JSC::JSParser::parseFunctionInfo):
22092         (JSC::JSParser::parseFunctionDeclaration):
22093         (JSC::JSParser::parseExpressionOrLabelStatement):
22094         (JSC::JSParser::parseExpressionStatement):
22095         (JSC::JSParser::parseIfStatement):
22096         (JSC::JSParser::parseExpression):
22097         (JSC::JSParser::parseAssignmentExpression):
22098         (JSC::JSParser::parseConditionalExpression):
22099         (JSC::isUnaryOp):
22100         (JSC::JSParser::isBinaryOperator):
22101         (JSC::JSParser::parseBinaryExpression):
22102         (JSC::JSParser::parseProperty):
22103         (JSC::JSParser::parseObjectLiteral):
22104         (JSC::JSParser::parseArrayLiteral):
22105         (JSC::JSParser::parsePrimaryExpression):
22106         (JSC::JSParser::parseArguments):
22107         (JSC::JSParser::parseMemberExpression):
22108         (JSC::JSParser::parseUnaryExpression):
22109         * parser/JSParser.h: Added.
22110         (JSC::):
22111         (JSC::JSTokenInfo::JSTokenInfo):
22112         * parser/Lexer.cpp:
22113         (JSC::Lexer::lex):
22114         * parser/Lexer.h:
22115         (JSC::Lexer::setLastLineNumber):
22116         (JSC::Lexer::lastLineNumber):
22117         * parser/NodeConstructors.h:
22118         (JSC::Node::Node):
22119         * parser/Parser.cpp:
22120         (JSC::Parser::parse):
22121         * parser/SyntaxChecker.h: Added.
22122         (JSC::SyntaxChecker::SyntaxChecker):
22123         (JSC::SyntaxChecker::createSourceElements):
22124         (JSC::SyntaxChecker::makeFunctionCallNode):
22125         (JSC::SyntaxChecker::appendToComma):
22126         (JSC::SyntaxChecker::createCommaExpr):
22127         (JSC::SyntaxChecker::makeAssignNode):
22128         (JSC::SyntaxChecker::makePrefixNode):
22129         (JSC::SyntaxChecker::makePostfixNode):
22130         (JSC::SyntaxChecker::makeTypeOfNode):
22131         (JSC::SyntaxChecker::makeDeleteNode):
22132         (JSC::SyntaxChecker::makeNegateNode):
22133         (JSC::SyntaxChecker::makeBitwiseNotNode):
22134         (JSC::SyntaxChecker::createLogicalNot):
22135         (JSC::SyntaxChecker::createUnaryPlus):
22136         (JSC::SyntaxChecker::createVoid):
22137         (JSC::SyntaxChecker::thisExpr):
22138         (JSC::SyntaxChecker::createResolve):
22139         (JSC::SyntaxChecker::createObjectLiteral):
22140         (JSC::SyntaxChecker::createArray):
22141         (JSC::SyntaxChecker::createNumberExpr):
22142         (JSC::SyntaxChecker::createString):
22143         (JSC::SyntaxChecker::createBoolean):
22144         (JSC::SyntaxChecker::createNull):
22145         (JSC::SyntaxChecker::createBracketAccess):
22146         (JSC::SyntaxChecker::createDotAccess):
22147         (JSC::SyntaxChecker::createRegex):
22148         (JSC::SyntaxChecker::createNewExpr):
22149         (JSC::SyntaxChecker::createConditionalExpr):
22150         (JSC::SyntaxChecker::createAssignResolve):
22151         (JSC::SyntaxChecker::createFunctionExpr):
22152         (JSC::SyntaxChecker::createFunctionBody):
22153         (JSC::SyntaxChecker::createArguments):
22154         (JSC::SyntaxChecker::createArgumentsList):
22155         (JSC::SyntaxChecker::createProperty):
22156         (JSC::SyntaxChecker::createPropertyList):
22157         (JSC::SyntaxChecker::createElementList):
22158         (JSC::SyntaxChecker::createFormalParameterList):
22159         (JSC::SyntaxChecker::createClause):
22160         (JSC::SyntaxChecker::createClauseList):
22161         (JSC::SyntaxChecker::setUsesArguments):
22162         (JSC::SyntaxChecker::createFuncDeclStatement):
22163         (JSC::SyntaxChecker::createBlockStatement):
22164         (JSC::SyntaxChecker::createExprStatement):
22165         (JSC::SyntaxChecker::createIfStatement):
22166         (JSC::SyntaxChecker::createForLoop):
22167         (JSC::SyntaxChecker::createForInLoop):
22168         (JSC::SyntaxChecker::createEmptyStatement):
22169         (JSC::SyntaxChecker::createVarStatement):
22170         (JSC::SyntaxChecker::createReturnStatement):
22171         (JSC::SyntaxChecker::createBreakStatement):
22172         (JSC::SyntaxChecker::createContinueStatement):
22173         (JSC::SyntaxChecker::createTryStatement):
22174         (JSC::SyntaxChecker::createSwitchStatement):
22175         (JSC::SyntaxChecker::createWhileStatement):
22176         (JSC::SyntaxChecker::createWithStatement):
22177         (JSC::SyntaxChecker::createDoWhileStatement):
22178         (JSC::SyntaxChecker::createLabelStatement):
22179         (JSC::SyntaxChecker::createThrowStatement):
22180         (JSC::SyntaxChecker::createDebugger):
22181         (JSC::SyntaxChecker::createConstStatement):
22182         (JSC::SyntaxChecker::appendConstDecl):
22183         (JSC::SyntaxChecker::createGetterOrSetterProperty):
22184         (JSC::SyntaxChecker::appendStatement):
22185         (JSC::SyntaxChecker::addVar):
22186         (JSC::SyntaxChecker::combineCommaNodes):
22187         (JSC::SyntaxChecker::evalCount):
22188         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
22189         (JSC::SyntaxChecker::operatorStackPop):
22190         * runtime/JSGlobalData.h:
22191         * wtf/Platform.h:
22192         * wtf/ThreadSpecific.h:
22193         (WTF::T):
22194
22195 2010-06-23  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
22196
22197         Reviewed by Simon Hausmann.
22198
22199         Optimization of the QScriptValuePrivate.
22200
22201         Patch change only internals of the QScriptValuePrivate.
22202         Most of the QScriptValuePrivate's attributes were moved
22203         into an union.
22204
22205         [Qt] Optimization of the QScriptVAluePrivate.
22206         https://bugs.webkit.org/show_bug.cgi?id=40415
22207
22208         * qt/api/qscriptengine_p.cpp:
22209         (QScriptEnginePrivate::globalObject):
22210         * qt/api/qscriptvalue_p.h:
22211         (QScriptValuePrivate::):
22212         (QScriptValuePrivate::~QScriptValuePrivate):
22213         (QScriptValuePrivate::QScriptValuePrivate):
22214         (QScriptValuePrivate::toString):
22215         (QScriptValuePrivate::toNumber):
22216         (QScriptValuePrivate::toBool):
22217         (QScriptValuePrivate::toObject):
22218         (QScriptValuePrivate::equals):
22219         (QScriptValuePrivate::strictlyEquals):
22220         (QScriptValuePrivate::assignEngine):
22221         (QScriptValuePrivate::operator JSValueRef):
22222         (QScriptValuePrivate::operator JSObjectRef):
22223         (QScriptValuePrivate::refinedJSValue):
22224
22225 2010-06-23  Kwang Yul Seo  <skyul@company100.net>
22226
22227         Reviewed by Oliver Hunt.
22228
22229         [GTK] Implement ThreadSpecific with glib
22230         https://bugs.webkit.org/show_bug.cgi?id=39829
22231
22232         Implement ThreadSpecific with glib's GStaticPrivate.
22233         This patch makes it possible to build GTK port without pthread.
22234
22235         * wtf/ThreadSpecific.h:
22236         (WTF::::ThreadSpecific):
22237         (WTF::::~ThreadSpecific):
22238         (WTF::::get):
22239         (WTF::::set):
22240         (WTF::::destroy):
22241
22242 2010-06-23  Leandro Pereira  <leandro@profusion.mobi>
22243
22244         Unreviewed build fix.
22245
22246         * CMakeLists.txt: Add runtime/RegExpCache.cpp.
22247
22248 2010-06-22  Renata Hodovan  <hodovan@inf.u-szeged.hu>
22249
22250         Reviewed by Geoffrey Garen.
22251
22252         Adding regular expression caching to JavaScriptCore
22253         https://bugs.webkit.org/show_bug.cgi?id=38142
22254
22255         The cache is based on Round Robin eviction policy, and
22256         can cache at most 256 character long regular expressions,
22257         and at most 256 of them. These values can be changed at compile time.
22258
22259         * GNUmakefile.am:
22260         * JavaScriptCore.gypi:
22261         * JavaScriptCore.pro:
22262         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
22263         * JavaScriptCore.xcodeproj/project.pbxproj:
22264         * bytecompiler/NodesCodegen.cpp:
22265         (JSC::RegExpNode::emitBytecode):
22266         * runtime/JSGlobalData.cpp:
22267         (JSC::JSGlobalData::JSGlobalData):
22268         (JSC::JSGlobalData::~JSGlobalData):
22269         * runtime/JSGlobalData.h:
22270         (JSC::JSGlobalData::regExpCache):
22271         * runtime/RegExpCache.cpp: Added.
22272         (JSC::RegExpCache::lookupOrCreate):
22273         (JSC::RegExpCache::create):
22274         (JSC::RegExpCache::RegExpCache):
22275         * runtime/RegExpCache.h: Added.
22276         * runtime/RegExpConstructor.cpp:
22277         (JSC::constructRegExp):
22278         * runtime/RegExpKey.h: Added.
22279         (JSC::RegExpKey::RegExpKey):
22280         (JSC::RegExpKey::getFlagsValue):
22281         (WTF::operator==):
22282         (WTF::):
22283         * runtime/RegExpPrototype.cpp:
22284         (JSC::regExpProtoFuncCompile):
22285         * runtime/StringPrototype.cpp:
22286         (JSC::stringProtoFuncMatch):
22287         (JSC::stringProtoFuncSearch):
22288
22289 2010-06-22  Gabor Loki  <loki@webkit.org>
22290
22291         Reviewed by Geoffrey Garen.
22292
22293         Add native call support for ARM and Thumb-2 JIT.
22294         https://bugs.webkit.org/show_bug.cgi?id=40231
22295
22296         * jit/JITOpcodes.cpp:
22297         (JSC::JIT::privateCompileCTINativeCall):
22298         * jit/JITOpcodes32_64.cpp:
22299         (JSC::JIT::privateCompileCTINativeCall):
22300         * wtf/Platform.h:
22301
22302 2010-06-21  Oliver Hunt  <oliver@apple.com>
22303
22304         Reviewed by Geoffrey Garen.
22305
22306         Make JSC more resilient in the face of parse failures
22307         https://bugs.webkit.org/show_bug.cgi?id=40951
22308
22309         A number of recent bugs have occurred due to issues like miscounting
22310         BOMs, etc which lead to interesting crashes later on.  Adding this
22311         logic hardens JSC in the face of these errors, and has no impact on
22312         performance (32bit jit actually gets 0.7% faster but I put that down
22313         to cache effects).
22314
22315         * bytecode/CodeBlock.cpp:
22316         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
22317         (JSC::CodeBlock::lineNumberForBytecodeOffset):
22318         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
22319         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
22320         * bytecode/CodeBlock.h:
22321         (JSC::CodeBlock::bytecodeOffset):
22322         * interpreter/Interpreter.cpp:
22323         (JSC::Interpreter::execute):
22324         (JSC::Interpreter::executeCall):
22325         (JSC::Interpreter::executeConstruct):
22326         (JSC::Interpreter::prepareForRepeatCall):
22327         (JSC::Interpreter::privateExecute):
22328         * jit/JITOpcodes.cpp:
22329         (JSC::JIT::privateCompileCTIMachineTrampolines):
22330         * jit/JITOpcodes32_64.cpp:
22331         (JSC::JIT::privateCompileCTIMachineTrampolines):
22332         * jit/JITStubs.cpp:
22333         (JSC::DEFINE_STUB_FUNCTION):
22334         * runtime/ArrayPrototype.cpp:
22335         (JSC::isNumericCompareFunction):
22336         * runtime/Executable.cpp:
22337         (JSC::FunctionExecutable::compileForCall):
22338         (JSC::FunctionExecutable::compileForConstruct):
22339         (JSC::FunctionExecutable::generateJITCodeForCall):
22340         (JSC::FunctionExecutable::generateJITCodeForConstruct):
22341         (JSC::FunctionExecutable::reparseExceptionInfo):
22342         (JSC::EvalExecutable::reparseExceptionInfo):
22343         * runtime/Executable.h:
22344         (JSC::FunctionExecutable::bytecodeForCall):
22345         (JSC::FunctionExecutable::bytecodeForConstruct):
22346         * runtime/JSGlobalData.cpp:
22347         (JSC::JSGlobalData::numericCompareFunction):
22348
22349 2010-06-21  John Sullivan  <sullivan@apple.com>
22350
22351         Reviewed by Adam Roben.
22352
22353         RetainPtr can't be used in HashMaps or HashSets
22354         <https://bugs.webkit.org/show_bug.cgi?id=40938>
22355         
22356         Added hashing knowledge similar to that in COMPtr.h.
22357
22358         * wtf/RetainPtr.h:
22359         (WTF::RetainPtr::RetainPtr):
22360         New function, copied from COMPtr.h but for the type change.
22361         (WTF::RetainPtr::isHashTableDeletedValue):
22362         Ditto.
22363         (WTF::RetainPtr::hashTableDeletedValue):
22364         Ditto.
22365         Added template code for HashTraits and PtrHash copied from COMPtr.h but for the type change.
22366         The only difference is that constructDeletedValue() matches the RefPtr implementation (in HashTraits.h)
22367         rather than the COMPtr implementation.
22368
22369 2010-06-19  Oliver Hunt  <oliver@apple.com>
22370
22371         Reviewed by Geoffrey Garen.
22372
22373         Need to ensure that we grow the RegisterFile when creating a callframe for host code
22374         https://bugs.webkit.org/show_bug.cgi?id=40858
22375         <rdar://problem/8108986>
22376
22377         In the past the use of the callframe in hostcode was much more
22378         limited.  Now that we expect the callframe to always be valid
22379         we need to grow the RegisterFile so that this is actually the
22380         case.  In this particular case the problem was failing to grow
22381         the registerfile could lead to a callframe that extended beyond
22382         RegisterFiler::end(), so vm re-entry would clobber the callframe
22383         other scenarios could also lead to badness.
22384
22385         I was unable to construct a simple testcase to trigger badness,
22386         and any such testcase would be so dependent on exact vm stack
22387         layout that it would be unlikely to work as a testcase following
22388         any callframe or register allocation changes anyway.
22389
22390         Thankfully the new assertion I added should help to catch these
22391         failures in future, and triggers on a couple of tests currently.
22392
22393         * interpreter/CallFrame.cpp:
22394         (JSC::CallFrame::registerFile):
22395         * interpreter/CallFrame.h:
22396         (JSC::ExecState::init):
22397         * interpreter/Interpreter.cpp:
22398         (JSC::Interpreter::privateExecute):
22399         * jit/JITStubs.cpp:
22400         (JSC::DEFINE_STUB_FUNCTION):
22401
22402 2010-06-21  Satish Sampath  <satish@chromium.org>
22403
22404         Reviewed by Steve Block.
22405
22406         Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
22407         https://bugs.webkit.org/show_bug.cgi?id=40878
22408
22409         * Configurations/FeatureDefines.xcconfig:
22410
22411 2010-06-21  Kwang Yul Seo  <skyul@company100.net>
22412
22413         Reviewed by Kent Tamura.
22414
22415         [BREWMP] Use global new/delete operator overloading with USE_SYSTEM_MALLOC=1
22416         https://bugs.webkit.org/show_bug.cgi?id=40653
22417
22418         Currently, other ports do not use global new/delete operator overloading
22419         when USE_SYSTEM_MALLOC=1. Brew MP uses system malloc, but it needs to enable
22420         "global fastMalloc new" because the default new/delete causes crash on device.
22421         We need to replace them with Brew MP's MALLOC/FREE.
22422
22423         * wtf/FastMalloc.h:
22424
22425 2010-06-18  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
22426
22427         Reviewed by Simon Hausmann.
22428
22429         [Qt] Work around a build problem with libjscore on Symbian.
22430         https://bugs.webkit.org/show_bug.cgi?id=40840
22431
22432         Sbsv2 sometimes have problems with debug/release configuration
22433         determination causing QtWebKit in release to try linking with the debug
22434         JavaScriptCore static library. This patch limit the jscore/jscored
22435         r58306 fix necessary for mac builds only to the mac platform to prevent the
22436         different name problem.
22437
22438         The real fix would be to fix qmake or the toolchain, this patch might
22439         help meanwhile.
22440
22441         * JavaScriptCore.pri:
22442
22443 2010-06-21  Patrick Gansterer  <paroga@paroga.com>
22444
22445         Reviewed by Kent Tamura.
22446
22447         Buildfix after r61338.
22448         https://bugs.webkit.org/show_bug.cgi?id=40888
22449
22450         roundUpAllocationSize is needed in RegisterFile.h.
22451
22452         * jit/ExecutableAllocator.h:
22453
22454 2010-06-19  Kwang Yul Seo  <skyul@company100.net>
22455
22456         Reviewed by Darin Adler.
22457
22458         Include <string.h> in StringExtras.h
22459         https://bugs.webkit.org/show_bug.cgi?id=40808
22460
22461         Without string.h, RVCT 2.2 can't compile StringExtras.h.
22462         It can't find strlen and strncmp.
22463
22464         * wtf/StringExtras.h:
22465
22466 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
22467
22468         Reviewed by Kenneth Rohde Christiansen.
22469
22470         Don't use __attribute__((may_alias)) with the Intel compiler,
22471         as it doesn't understand it.
22472
22473         * wtf/Vector.h:
22474
22475 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
22476
22477         Reviewed by Kenneth Rohde Christiansen.
22478
22479         Fix compilation with the Intel C++ compiler (11.1.072).
22480
22481         Like RVCT, label pointers must be void*, not const void*.
22482
22483         * bytecode/Opcode.h:
22484
22485 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
22486
22487         Reviewed by Kenneth Rohde Christiansen.
22488
22489         Add the WTF_COMPILER_INTEL for when the Intel compiler is used
22490         for building. Usually, the Intel compiler masquerades as
22491         another compiler in the system and gets away with it, but some
22492         times specific fixes are required (such as when using language
22493         extensions).
22494
22495         * wtf/Platform.h:
22496
22497 2010-06-18  Oliver Hunt  <oliver@apple.com>
22498
22499         Reviewed by Geoffrey Garen.
22500
22501         Incorrect handling of multiple BOMs scattered through a file.
22502         https://bugs.webkit.org/show_bug.cgi?id=40865
22503
22504         When determining the offset of open and close braces in a source
22505         with BOMs we were finishing our count early as we failed to account
22506         for BOMs prior to the open/close brace positions effecting those
22507         positions.
22508
22509         * parser/Lexer.cpp:
22510         (JSC::Lexer::sourceCode):
22511
22512 2010-06-17  Oliver Hunt  <oliver@apple.com>
22513
22514         Reviewed by Sam Weinig.
22515
22516         Don't throw away exception information for functions that use exceptions
22517         https://bugs.webkit.org/show_bug.cgi?id=40786
22518
22519         Simple patch to stop JSC from throwing away the exception information
22520         of a function that uses "exceptiony" features like try and throw.  This
22521         is a speed up for catching expressions but it's difficult to quantify as
22522         the old cost of reparsing is amortised over all exceptions caught in the
22523         effected function.
22524
22525         * bytecode/CodeBlock.cpp:
22526         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
22527         * bytecompiler/BytecodeGenerator.cpp:
22528         (JSC::BytecodeGenerator::generate):
22529         (JSC::BytecodeGenerator::emitCatch):
22530         * bytecompiler/BytecodeGenerator.h:
22531         (JSC::BytecodeGenerator::emitThrow):
22532
22533 2010-06-18  Anders Carlsson  <andersca@apple.com>
22534
22535         Reviewed by Sam Weinig.
22536
22537         Add PlatformStrategies and PluginStrategy classes.
22538         https://bugs.webkit.org/show_bug.cgi?id=40850
22539
22540         * wtf/Platform.h:
22541
22542 2010-06-18  Leandro Pereira  <leandro@profusion.mobi>
22543
22544         [EFL] Unreviewed build fix.
22545
22546         * wtf/CMakeLists.txt: Add MD5.cpp.
22547
22548 2010-06-17  Shu Chang  <chang.shu@nokia.com>
22549
22550         Reviewed by Kenneth Rohde Christiansen.
22551
22552         [Qt] Fix the link error on symbian with ENABLE_JIT=0.
22553         1. Add "#if ENABLE(JIT)" in the header file;
22554         2. Put feature enable/disable logic to a common.pri so
22555         that both JavaScriptCore.pri and WebCore.pri can share.
22556
22557         https://bugs.webkit.org/show_bug.cgi?id=40780
22558
22559         * JavaScriptCore.pri:
22560         * jit/ExecutableAllocator.h:
22561
22562 2010-06-17  Darin Adler  <darin@apple.com>
22563
22564         Reviewed by Sam Weinig.
22565
22566         Use adoptRef and create functions in more code paths
22567         https://bugs.webkit.org/show_bug.cgi?id=40760
22568
22569         * API/JSClassRef.h: Removed unneeded include of RefCounted.h.
22570         * API/JSWeakObjectMapRefPrivate.cpp: Ditto.
22571
22572         * bytecode/CodeBlock.h:
22573         (JSC::FunctionCodeBlock::FunctionCodeBlock): Use the
22574         SharedSymbolTable::create function instead of calling new directly.
22575
22576         * runtime/SymbolTable.h: Added a create function to the SharedSymbolTable
22577         class and made the constructor private.
22578
22579 2010-06-17  Mark Brand  <mabrand@mabrand.nl>
22580
22581         Reviewed by Simon Hausmann.
22582
22583         [Qt] use "win32-g++*" scope to match all MinGW makespecs
22584
22585         The scope "win32-g++" comes from the name of the makespec. However, it
22586         is frequently used to check for MinGW. This works fine as long as
22587         win32-g++ is the only makespec for MinGW. Now we need the wildcard
22588         to cover "win32-g++-cross" as well.
22589
22590         * JavaScriptCore.pro:
22591
22592 2010-06-16  Darin Adler  <darin@apple.com>
22593
22594         Reviewed by David Levin.
22595
22596         Deploy adoptRef in more places, including all HTML and MathML elements
22597         https://bugs.webkit.org/show_bug.cgi?id=39941
22598
22599         * wtf/ThreadSafeShared.h: Made the constructor protected and removed the
22600         unneeded support for initial reference counts other than 1.
22601
22602 2010-06-16  Peter Varga  <pvarga@inf.u-szeged.hu>
22603
22604         Reviewed by Geoffrey Garen.
22605
22606         Store matchBegin directly in the array of output instead of the stack.
22607         https://bugs.webkit.org/show_bug.cgi?id=38988
22608
22609         * yarr/RegexJIT.cpp:
22610         (JSC::Yarr::RegexGenerator::generateDisjunction):
22611         (JSC::Yarr::RegexGenerator::generate):
22612
22613 2010-06-15  Anders Carlsson  <andersca@apple.com>
22614
22615         Reviewed by Sam Weinig.
22616
22617         Make JavaScriptCore build with clang++.
22618
22619         * jit/JITInlineMethods.h:
22620         (JSC::JIT::emitPutVirtualRegister):
22621         Explicitly cast to an int.
22622
22623         * yarr/RegexCompiler.cpp:
22624         (JSC::Yarr::compileRegex):
22625         Return 0 instead of false.
22626
22627 2010-06-15  Adam Roben  <aroben@apple.com>
22628
22629         Make WebCore's and JavaScriptCore's DerivedSources available for debugging in production builds
22630
22631         Fixes <http://webkit.org/b/40626> <rdar://problem/8094205>.
22632
22633         Reviewed by Sam Weinig.
22634
22635         * JavaScriptCore.vcproj/JavaScriptCore.make: Copy the contents of
22636         JavaScriptCore's DerivedSources directory to
22637         AppleInternal/Sources/JavaScriptCore.
22638
22639 2010-06-15  Gabor Loki  <loki@webkit.org>
22640
22641         Rubber-stamped by Eric Seidel.
22642
22643         Fix invalid access to non-static data member warning in JITPropertyAccess32_64 on ARM
22644         https://bugs.webkit.org/show_bug.cgi?id=40423
22645
22646         Using OBJECT_OFFSETOF macro instead of objectof to bypass access to
22647         non-static data member warning.
22648
22649         * jit/JITPropertyAccess32_64.cpp:
22650         (JSC::JIT::privateCompilePutByIdTransition):
22651
22652 2010-06-11  Eric Seidel  <eric@webkit.org>
22653
22654         Reviewed by Adam Barth.
22655
22656         Rename the rest of the *Tokenizer classes to *DocumentParser
22657         https://bugs.webkit.org/show_bug.cgi?id=40507
22658
22659         * wtf/Platform.h:
22660          - fixed a comment to match new names.
22661
22662 2010-06-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
22663
22664         Reviewed by Simon Hausmann.
22665
22666         [Qt] Explicit conversions from QtScript types to JSC opaque types were removed.
22667         https://bugs.webkit.org/show_bug.cgi?id=40412
22668
22669         Conversion between a JSC C types and a QtScript private types, takes
22670         main part of the source code. In most cases a mapping between the types
22671         is one to one. New cast operators were added to simplify the code.
22672
22673         The QScriptValuePrivate could be casted to the JSValueRef and the JSObjectRef.
22674         The QScriptEnginePrivate could be casted to the JSGlobalContext.
22675         The QScriptProgramPrivate could be casted to the JSStringRef.
22676
22677         * qt/api/qscriptengine_p.cpp:
22678         (QScriptEnginePrivate::evaluate):
22679         (QScriptEnginePrivate::newObject):
22680         (QScriptEnginePrivate::globalObject):
22681         * qt/api/qscriptengine_p.h:
22682         (QScriptEnginePrivate::operator JSGlobalContextRef):
22683         * qt/api/qscriptprogram_p.h:
22684         (QScriptProgramPrivate::operator JSStringRef):
22685         * qt/api/qscriptsyntaxcheckresult.cpp:
22686         (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
22687         (QScriptSyntaxCheckResultPrivate::errorMessage):
22688         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
22689         * qt/api/qscriptvalue_p.h:
22690         (QScriptValuePrivate::~QScriptValuePrivate):
22691         (QScriptValuePrivate::QScriptValuePrivate):
22692         (QScriptValuePrivate::isBool):
22693         (QScriptValuePrivate::isNumber):
22694         (QScriptValuePrivate::isNull):
22695         (QScriptValuePrivate::isString):
22696         (QScriptValuePrivate::isUndefined):
22697         (QScriptValuePrivate::isFunction):
22698         (QScriptValuePrivate::toString):
22699         (QScriptValuePrivate::toNumber):
22700         (QScriptValuePrivate::toBool):
22701         (QScriptValuePrivate::toObject):
22702         (QScriptValuePrivate::equals):
22703         (QScriptValuePrivate::strictlyEquals):
22704         (QScriptValuePrivate::instanceOf):
22705         (QScriptValuePrivate::call):
22706         (QScriptValuePrivate::operator JSValueRef):
22707         (QScriptValuePrivate::operator JSObjectRef):
22708         (QScriptValuePrivate::setValue):
22709         (QScriptValuePrivate::inherits):
22710         (QScriptValuePrivate::refinedJSValue):
22711
22712 2010-05-31  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
22713
22714         Reviewed by Simon Hausmann.
22715
22716         [Qt] Implement the simple text code path.
22717         https://bugs.webkit.org/show_bug.cgi?id=40077
22718
22719         Remove the FONT_FAST_PATH macro and use the Qt's
22720         fast text implementation instead of the one of WebKit.
22721
22722         The Qt::TextBypassShaping flag is used to tell Qt to
22723         only use the glyph advances.
22724
22725         Qt 4.7 is needed to get this flag thus the complex path is always
22726         used if QtWebKit is compiled against an earlier version.
22727
22728         Contrary to the WebKit's implementation, the complex code path
22729         is taken if the text is RightToLeft, justified or is formatted
22730         with non-zero letter or word spacing.
22731
22732         * wtf/Platform.h:
22733
22734 2010-06-11  Luiz Agostini  <luiz.agostini@openbossa.org>
22735
22736         Reviewed by Kenneth Rohde Christiansen.
22737
22738         add codePointCompare to JavaScriptCore.exp
22739         https://bugs.webkit.org/show_bug.cgi?id=40426
22740
22741         * JavaScriptCore.exp:
22742
22743 2010-06-10  Oliver Hunt  <oliver@apple.com>
22744
22745         Reviewed by Maciej Stachowiak.
22746
22747         Math Javascript Bug on Safari 5 (webkit 533.16) under "32bit" mode
22748         https://bugs.webkit.org/show_bug.cgi?id=40367
22749
22750         If we're in the slow case of right shift we must write the type tag as
22751         the only reason we hit this code path is because we know we're working
22752         with a double.  eg. we are guaranteed that the tag cannot be reused.
22753
22754         * jit/JITArithmetic32_64.cpp:
22755         (JSC::JIT::emitRightShiftSlowCase):
22756
22757 2010-06-10  Kwang Yul Seo  <skyul@company100.net>
22758
22759         Reviewed by Eric Seidel.
22760
22761         Remove weakRandomNumber
22762         https://bugs.webkit.org/show_bug.cgi?id=40291
22763
22764         weakRandomNumber is used nowhere. Currently, WeakRandom is used instead.
22765
22766         * wtf/RandomNumber.cpp:
22767         * wtf/RandomNumber.h:
22768
22769 2010-06-09  Alexey Proskuryakov  <ap@apple.com>
22770
22771         Reviewed by Brady Eidson.
22772
22773         Export StringImpl::ascii(). It might be not very useful, but it's a public function.
22774
22775         * JavaScriptCore.exp:
22776
22777 2010-06-09  Leandro Pereira  <leandro@profusion.mobi>
22778
22779         Reviewed by Adam Treat.
22780
22781         [EFL] Allow building core libraries as shared objects to speed up
22782         linking time on machines with small amounts of memory.
22783         http://webkit.org/b/39899
22784
22785         * CMakeLists.txt: If building with shared core, install the lib.
22786         * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically.
22787         * wtf/CMakeLists.txt: If building with shared core, install the lib.
22788
22789 2010-06-09  Gabor Loki  <loki@webkit.org>
22790
22791         Reviewed by David Levin.
22792
22793         Remove some unused variable warnings from JITOpcodes
22794         https://bugs.webkit.org/show_bug.cgi?id=40298
22795
22796         * jit/JITOpcodes.cpp:
22797         (JSC::JIT::privateCompileCTINativeCall):
22798         * jit/JITOpcodes32_64.cpp:
22799         (JSC::JIT::privateCompileCTINativeCall):
22800
22801 2010-05-18  Yuzo Fujishima  <yuzo@google.com>
22802
22803         Reviewed by Shinichiro Hamaji.
22804
22805         Fix for Bug 34529 -  [CSSOM] issues with cssText and selectorText
22806         Add U16_LENGTH that is needed to implement CSS character serialization.
22807         https://bugs.webkit.org/show_bug.cgi?id=34529
22808
22809         * wtf/unicode/qt4/UnicodeQt4.h:
22810         * wtf/unicode/wince/UnicodeWince.h:
22811
22812 2010-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>
22813
22814         Unreviewed, rolling out r60830.
22815         http://trac.webkit.org/changeset/60830
22816         https://bugs.webkit.org/show_bug.cgi?id=40305
22817
22818         Broke the Windows build (Requested by abarth on #webkit).
22819
22820         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
22821         * wtf/OwnPtrCommon.h:
22822         * wtf/brew/OwnPtrBrew.h: Removed.
22823         * wtf/win/OwnPtrWin.h: Removed.
22824
22825 2010-06-08  MORITA Hajime  <morrita@google.com>
22826
22827         Unreviewed. An attempt to fix test break.
22828
22829         * Configurations/FeatureDefines.xcconfig:
22830
22831 2010-06-08  Kwang Yul Seo  <skyul@company100.net>
22832
22833         Reviewed by Adam Barth.
22834
22835         Change OwnPtrCommon to include platform-specific headers
22836         https://bugs.webkit.org/show_bug.cgi?id=40279
22837
22838         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
22839         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
22840
22841         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
22842         * wtf/OwnPtrCommon.h:
22843         * wtf/brew/OwnPtrBrew.h: Added.
22844         * wtf/win/OwnPtrWin.h: Added.
22845
22846 2010-06-07  MORITA Hajime  <morrita@google.com>
22847         
22848         Reviewed by Kent Tamura.
22849
22850         https://bugs.webkit.org/show_bug.cgi?id=40219
22851         [Mac] ENABLE_METER_TAG should be enabled
22852         
22853         Added ENABLE_METER_TAG.
22854
22855         * Configurations/FeatureDefines.xcconfig:
22856
22857 2010-06-07  Kwang Yul Seo  <skyul@company100.net>
22858
22859         Reviewed by Eric Seidel.
22860
22861         [BREWMP] Add more types to OwnPtr
22862         https://bugs.webkit.org/show_bug.cgi?id=39667
22863
22864         Add ISSL and ISocket to the list of OwnPtr-ed type.
22865
22866         * wtf/OwnPtrCommon.h:
22867         * wtf/brew/OwnPtrBrew.cpp:
22868         (WTF::deleteOwnedPtr):
22869
22870 2010-06-07  Benjamin Poulain  <benjamin.poulain@nokia.com>
22871
22872         Reviewed by Simon Hausmann.
22873
22874         [Qt] Crash when compiling on Snow Leopard and running on Leopard
22875         https://bugs.webkit.org/show_bug.cgi?id=31403
22876
22877         Disable the use of pthread_setname_np and other symbols
22878         when targetting Leopard.
22879
22880         Use the defines TARGETING_XX instead of BUILDING_ON_XX 
22881         for features that cannot be used before Snow Leopard.
22882
22883         * wtf/Platform.h:
22884
22885 2010-06-07  Gabor Loki  <loki@webkit.org>
22886
22887         Reviewed by NOBODY (JSVALUE32_64 build fix).
22888
22889         * jit/JITOpcodes32_64.cpp:
22890         (JSC::JIT::privateCompileCTINativeCall):
22891
22892 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
22893
22894         Reviewed by NOBODY (windows build fix pt 2).
22895
22896         * JavaScriptCore.exp:
22897         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
22898
22899 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
22900
22901         Reviewed by NOBODY (windows build fix pt 1).
22902
22903         * JavaScriptCore.exp:
22904         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
22905
22906 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
22907
22908         Reviewed by Sam Weinig.
22909
22910         Bug 40214 - Clean up error construction / throwing in JSC.
22911         
22912         The one egregious insanity here is that creating an error requires
22913         a VM-entry-esqe-host call (the string argument is wrapped as a JS
22914         object & pushed on the RegisterFile, then unwrapped back to a
22915         UString).  Changing this also means you only require a global
22916         object, not an ExecState, to create an error.
22917
22918         The methods to create error objects are also parameterized
22919         requiring a switch on the type, which can be made cleaner and
22920         faster by moving to a separate method per error type.  Code to add
22921         divot information to error had been duplicated, and is coalesced
22922         back into a single function.
22923
22924         Convenience methods added to create & throw type & syntax error
22925         with a default error message, since this is a common case.
22926
22927         Also, errors are currently thrown either using
22928         "throwError(exec, error)" or "exec->setException(error)" - unify
22929         on the former, since this is more commonly used.  Add
22930         "throwVMError(exec, error)" equivalents, as a convenience for
22931         cases where the result was being wrapped in "JSValue::encode(...)".
22932
22933         * API/JSCallbackConstructor.cpp:
22934         (JSC::constructJSCallback):
22935         * API/JSCallbackFunction.cpp:
22936         (JSC::JSCallbackFunction::call):
22937         * API/JSCallbackObjectFunctions.h:
22938         (JSC::::getOwnPropertySlot):
22939         (JSC::::put):
22940         (JSC::::deleteProperty):
22941         (JSC::::construct):
22942         (JSC::::hasInstance):
22943         (JSC::::call):
22944         (JSC::::toNumber):
22945         (JSC::::toString):
22946         (JSC::::staticValueGetter):
22947         (JSC::::staticFunctionGetter):
22948         (JSC::::callbackGetter):
22949         * API/JSObjectRef.cpp:
22950         (JSObjectMakeError):
22951         * JavaScriptCore.exp:
22952         * bytecompiler/BytecodeGenerator.cpp:
22953         (JSC::BytecodeGenerator::emitNewError):
22954         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
22955         * bytecompiler/BytecodeGenerator.h:
22956         * bytecompiler/NodesCodegen.cpp:
22957         (JSC::ThrowableExpressionData::emitThrowError):
22958         (JSC::RegExpNode::emitBytecode):
22959         (JSC::PostfixErrorNode::emitBytecode):
22960         (JSC::PrefixErrorNode::emitBytecode):
22961         (JSC::AssignErrorNode::emitBytecode):
22962         (JSC::ForInNode::emitBytecode):
22963         (JSC::ContinueNode::emitBytecode):
22964         (JSC::BreakNode::emitBytecode):
22965         (JSC::ReturnNode::emitBytecode):
22966         (JSC::LabelNode::emitBytecode):
22967         * interpreter/CallFrame.h:
22968         * interpreter/Interpreter.cpp:
22969         (JSC::Interpreter::throwException):
22970         (JSC::Interpreter::privateExecute):
22971         * jit/JITStubs.cpp:
22972         (JSC::DEFINE_STUB_FUNCTION):
22973         * jsc.cpp:
22974         (functionRun):
22975         (functionLoad):
22976         (functionCheckSyntax):
22977         * parser/Nodes.h:
22978         * runtime/ArrayConstructor.cpp:
22979         (JSC::constructArrayWithSizeQuirk):
22980         * runtime/ArrayPrototype.cpp:
22981         (JSC::arrayProtoFuncToString):
22982         (JSC::arrayProtoFuncToLocaleString):
22983         (JSC::arrayProtoFuncJoin):
22984         (JSC::arrayProtoFuncFilter):
22985         (JSC::arrayProtoFuncMap):
22986         (JSC::arrayProtoFuncEvery):
22987         (JSC::arrayProtoFuncForEach):
22988         (JSC::arrayProtoFuncSome):
22989         (JSC::arrayProtoFuncReduce):
22990         (JSC::arrayProtoFuncReduceRight):
22991         * runtime/BooleanPrototype.cpp:
22992         (JSC::booleanProtoFuncToString):
22993         (JSC::booleanProtoFuncValueOf):
22994         * runtime/DatePrototype.cpp:
22995         (JSC::dateProtoFuncToString):
22996         (JSC::dateProtoFuncToUTCString):
22997         (JSC::dateProtoFuncToISOString):
22998         (JSC::dateProtoFuncToDateString):
22999         (JSC::dateProtoFuncToTimeString):
23000         (JSC::dateProtoFuncToLocaleString):
23001         (JSC::dateProtoFuncToLocaleDateString):
23002         (JSC::dateProtoFuncToLocaleTimeString):
23003         (JSC::dateProtoFuncGetTime):
23004         (JSC::dateProtoFuncGetFullYear):
23005         (JSC::dateProtoFuncGetUTCFullYear):
23006         (JSC::dateProtoFuncToGMTString):
23007         (JSC::dateProtoFuncGetMonth):
23008         (JSC::dateProtoFuncGetUTCMonth):
23009         (JSC::dateProtoFuncGetDate):
23010         (JSC::dateProtoFuncGetUTCDate):
23011         (JSC::dateProtoFuncGetDay):
23012         (JSC::dateProtoFuncGetUTCDay):
23013         (JSC::dateProtoFuncGetHours):
23014         (JSC::dateProtoFuncGetUTCHours):
23015         (JSC::dateProtoFuncGetMinutes):
23016         (JSC::dateProtoFuncGetUTCMinutes):
23017         (JSC::dateProtoFuncGetSeconds):
23018         (JSC::dateProtoFuncGetUTCSeconds):
23019         (JSC::dateProtoFuncGetMilliSeconds):
23020         (JSC::dateProtoFuncGetUTCMilliseconds):
23021         (JSC::dateProtoFuncGetTimezoneOffset):
23022         (JSC::dateProtoFuncSetTime):
23023         (JSC::setNewValueFromTimeArgs):
23024         (JSC::setNewValueFromDateArgs):
23025         (JSC::dateProtoFuncSetMilliSeconds):
23026         (JSC::dateProtoFuncSetUTCMilliseconds):
23027         (JSC::dateProtoFuncSetSeconds):
23028         (JSC::dateProtoFuncSetUTCSeconds):
23029         (JSC::dateProtoFuncSetMinutes):
23030         (JSC::dateProtoFuncSetUTCMinutes):
23031         (JSC::dateProtoFuncSetHours):
23032         (JSC::dateProtoFuncSetUTCHours):
23033         (JSC::dateProtoFuncSetDate):
23034         (JSC::dateProtoFuncSetUTCDate):
23035         (JSC::dateProtoFuncSetMonth):
23036         (JSC::dateProtoFuncSetUTCMonth):
23037         (JSC::dateProtoFuncSetFullYear):
23038         (JSC::dateProtoFuncSetUTCFullYear):
23039         (JSC::dateProtoFuncSetYear):
23040         (JSC::dateProtoFuncGetYear):
23041         (JSC::dateProtoFuncToJSON):
23042         * runtime/Error.cpp:
23043         (JSC::createError):
23044         (JSC::createEvalError):
23045         (JSC::createRangeError):
23046         (JSC::createReferenceError):
23047         (JSC::createSyntaxError):
23048         (JSC::createTypeError):
23049         (JSC::createURIError):
23050         (JSC::addErrorSourceInfo):
23051         (JSC::addErrorDivotInfo):
23052         (JSC::addErrorInfo):
23053         (JSC::hasErrorInfo):
23054         (JSC::throwError):
23055         (JSC::throwTypeError):
23056         (JSC::throwSyntaxError):
23057         * runtime/Error.h:
23058         (JSC::throwVMError):
23059         (JSC::throwVMTypeError):
23060         * runtime/ErrorConstructor.cpp:
23061         (JSC::constructWithErrorConstructor):
23062         (JSC::callErrorConstructor):
23063         * runtime/ErrorConstructor.h:
23064         * runtime/ErrorInstance.cpp:
23065         (JSC::ErrorInstance::ErrorInstance):
23066         (JSC::ErrorInstance::create):
23067         * runtime/ErrorInstance.h:
23068         * runtime/ErrorPrototype.cpp:
23069         (JSC::ErrorPrototype::ErrorPrototype):
23070         * runtime/ExceptionHelpers.cpp:
23071         (JSC::createStackOverflowError):
23072         (JSC::createUndefinedVariableError):
23073         (JSC::createInvalidParamError):
23074         (JSC::createNotAConstructorError):
23075         (JSC::createNotAFunctionError):
23076         (JSC::createNotAnObjectError):
23077         (JSC::throwOutOfMemoryError):
23078         * runtime/ExceptionHelpers.h:
23079         * runtime/Executable.cpp:
23080         (JSC::EvalExecutable::compile):
23081         (JSC::ProgramExecutable::checkSyntax):
23082         (JSC::ProgramExecutable::compile):
23083         * runtime/FunctionConstructor.cpp:
23084         (JSC::constructFunction):
23085         * runtime/FunctionPrototype.cpp:
23086         (JSC::functionProtoFuncToString):
23087         (JSC::functionProtoFuncApply):
23088         (JSC::functionProtoFuncCall):
23089         * runtime/Identifier.cpp:
23090         (JSC::Identifier::from):
23091         * runtime/Identifier.h:
23092         * runtime/JSArray.cpp:
23093         (JSC::JSArray::put):
23094         * runtime/JSFunction.cpp:
23095         (JSC::callHostFunctionAsConstructor):
23096         * runtime/JSGlobalObjectFunctions.cpp:
23097         (JSC::encode):
23098         (JSC::decode):
23099         (JSC::globalFuncEval):
23100         * runtime/JSONObject.cpp:
23101         (JSC::Stringifier::appendStringifiedValue):
23102         (JSC::Walker::walk):
23103         (JSC::JSONProtoFuncParse):
23104         (JSC::JSONProtoFuncStringify):
23105         * runtime/JSObject.cpp:
23106         (JSC::throwSetterError):
23107         (JSC::JSObject::put):
23108         (JSC::JSObject::putWithAttributes):
23109         (JSC::JSObject::defaultValue):
23110         (JSC::JSObject::hasInstance):
23111         (JSC::JSObject::defineOwnProperty):
23112         * runtime/JSObject.h:
23113         * runtime/JSValue.cpp:
23114         (JSC::JSValue::toObjectSlowCase):
23115         (JSC::JSValue::synthesizeObject):
23116         (JSC::JSValue::synthesizePrototype):
23117         * runtime/NativeErrorConstructor.cpp:
23118         (JSC::constructWithNativeErrorConstructor):
23119         (JSC::callNativeErrorConstructor):
23120         * runtime/NativeErrorConstructor.h:
23121         * runtime/NumberPrototype.cpp:
23122         (JSC::numberProtoFuncToString):
23123         (JSC::numberProtoFuncToLocaleString):
23124         (JSC::numberProtoFuncValueOf):
23125         (JSC::numberProtoFuncToFixed):
23126         (JSC::numberProtoFuncToExponential):
23127         (JSC::numberProtoFuncToPrecision):
23128         * runtime/ObjectConstructor.cpp:
23129         (JSC::objectConstructorGetPrototypeOf):
23130         (JSC::objectConstructorGetOwnPropertyDescriptor):
23131         (JSC::objectConstructorGetOwnPropertyNames):
23132         (JSC::objectConstructorKeys):
23133         (JSC::toPropertyDescriptor):
23134         (JSC::objectConstructorDefineProperty):
23135         (JSC::objectConstructorDefineProperties):
23136         (JSC::objectConstructorCreate):
23137         * runtime/ObjectPrototype.cpp:
23138         (JSC::objectProtoFuncDefineGetter):
23139         (JSC::objectProtoFuncDefineSetter):
23140         * runtime/RegExpConstructor.cpp:
23141         (JSC::constructRegExp):
23142         * runtime/RegExpObject.cpp:
23143         (JSC::RegExpObject::match):
23144         * runtime/RegExpPrototype.cpp:
23145         (JSC::regExpProtoFuncTest):
23146         (JSC::regExpProtoFuncExec):
23147         (JSC::regExpProtoFuncCompile):
23148         (JSC::regExpProtoFuncToString):
23149         * runtime/StringPrototype.cpp:
23150         (JSC::stringProtoFuncToString):
23151
23152 2010-06-05  Kwang Yul Seo  <skyul@company100.net>
23153
23154         Reviewed by Eric Seidel.
23155
23156         [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx
23157         https://bugs.webkit.org/show_bug.cgi?id=39710
23158
23159         Build fix for BREW MP.
23160
23161         * wtf/MathExtras.h:
23162
23163 2010-06-04  Adam Barth  <abarth@webkit.org>
23164
23165         Reviewed by Darin Adler.
23166
23167         HTML5 parser should be within 1% of old parser performance
23168         https://bugs.webkit.org/show_bug.cgi?id=40172
23169
23170         Fix cast in this operator= to allow for assignment between vectors with
23171         different inline capacities (as clearly intended by its author).
23172
23173         * wtf/Vector.h:
23174         (WTF::::operator):
23175
23176 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23177
23178         Reviewed by Kenneth Rohde Christiansen.
23179
23180         New QtScript API; QScriptValue::instanceOf.
23181
23182         New function create an easy way to check value's prototype hierarchy.
23183
23184         [Qt] QScriptValue should have an instanceOf method
23185         https://bugs.webkit.org/show_bug.cgi?id=40120
23186
23187         * qt/api/qscriptvalue.cpp:
23188         (QScriptValue::instanceOf):
23189         * qt/api/qscriptvalue.h:
23190         * qt/api/qscriptvalue_p.h:
23191         (QScriptValuePrivate::instanceOf):
23192         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23193         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
23194         (tst_QScriptValue::instanceOf_initData):
23195         (tst_QScriptValue::instanceOf_makeData):
23196         (tst_QScriptValue::instanceOf_test):
23197
23198 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
23199
23200         Reviewed by NOBODY (interpreter build fix).
23201
23202         * interpreter/Interpreter.cpp:
23203         (JSC::Interpreter::privateExecute):
23204
23205 2010-06-04  Mark Rowe  <mrowe@apple.com>
23206
23207         Silence some warnings seen on the build bot.
23208
23209         * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline.
23210         * JavaScriptCore.JSVALUE32only.exp: Ditto.
23211         * JavaScriptCore.JSVALUE64only.exp: Ditto.
23212         * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't
23213         complain about not knowing how to compile them.
23214
23215 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
23216
23217         Reviewed by Oliver Hunt.
23218
23219         Bug 40187 - Change function signature of NativeConstructor to match NativeFunction
23220
23221         Mostly for consistency, but constructor & args arguments are redundant,
23222         and this will help if we wish to be able to JIT calls to more constructors.
23223
23224         * API/JSCallbackConstructor.cpp:
23225         (JSC::constructJSCallback):
23226         * API/JSCallbackObject.h:
23227         * API/JSCallbackObjectFunctions.h:
23228         (JSC::::construct):
23229         * interpreter/Interpreter.cpp:
23230         (JSC::Interpreter::executeConstruct):
23231         * interpreter/Interpreter.h:
23232         * jit/JITStubs.cpp:
23233         (JSC::DEFINE_STUB_FUNCTION):
23234         * runtime/ArrayConstructor.cpp:
23235         (JSC::constructWithArrayConstructor):
23236         * runtime/BooleanConstructor.cpp:
23237         (JSC::constructWithBooleanConstructor):
23238         * runtime/ConstructData.cpp:
23239         (JSC::construct):
23240         * runtime/ConstructData.h:
23241         * runtime/DateConstructor.cpp:
23242         (JSC::constructWithDateConstructor):
23243         * runtime/Error.cpp:
23244         (JSC::constructNativeError):
23245         (JSC::Error::create):
23246         * runtime/ErrorConstructor.cpp:
23247         (JSC::constructWithErrorConstructor):
23248         * runtime/FunctionConstructor.cpp:
23249         (JSC::constructWithFunctionConstructor):
23250         * runtime/NativeErrorConstructor.cpp:
23251         (JSC::constructWithNativeErrorConstructor):
23252         * runtime/NativeErrorConstructor.h:
23253         (JSC::NativeErrorConstructor::errorStructure):
23254         * runtime/NumberConstructor.cpp:
23255         (JSC::constructWithNumberConstructor):
23256         * runtime/ObjectConstructor.cpp:
23257         (JSC::constructWithObjectConstructor):
23258         * runtime/RegExpConstructor.cpp:
23259         (JSC::constructWithRegExpConstructor):
23260         * runtime/StringConstructor.cpp:
23261         (JSC::constructWithStringConstructor):
23262
23263 2010-06-04  Tony Gentilcore  <tonyg@chromium.org>
23264
23265         Reviewed by Adam Barth.
23266
23267         Add a takeFirst() method to Deque and use it where appropriate.
23268         https://bugs.webkit.org/show_bug.cgi?id=40089
23269
23270         * wtf/Deque.h:
23271         (WTF::::takeFirst):
23272         * wtf/MainThread.cpp:
23273         (WTF::dispatchFunctionsFromMainThread):
23274         * wtf/MessageQueue.h:
23275         (WTF::::tryGetMessage):
23276
23277 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23278
23279         Reviewed by Kenneth Rohde Christiansen.
23280
23281         Remove a QEXPECT_FAIL flag from an autotest.
23282
23283         Test tst_QScriptEngine::globalObject pass after 36600 bug
23284         fix have been applied.
23285
23286         [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed.
23287         https://bugs.webkit.org/show_bug.cgi?id=40114
23288
23289         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
23290         (tst_QScriptEngine::globalObject):
23291
23292 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23293
23294         Reviewed by Kenneth Rohde Christiansen.
23295
23296         Fix QScriptValue::equals.
23297
23298         Handling for a few edge cases were added. Now comparison between
23299         NaN, an invalid objects should works as supposed.
23300
23301         [Qt] QScriptValue::equals problems
23302         https://bugs.webkit.org/show_bug.cgi?id=40110
23303
23304         * qt/api/qscriptvalue.cpp:
23305         (QScriptValue::equals):
23306         * qt/api/qscriptvalue_p.h:
23307         (QScriptValuePrivate::equals):
23308         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23309         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
23310         (tst_QScriptValue::equals_initData):
23311         (tst_QScriptValue::equals_makeData):
23312         (tst_QScriptValue::equals_test):
23313
23314 2010-06-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23315
23316         Reviewed by Kenneth Rohde Christiansen.
23317
23318         New states in QScriptValuePrivate.
23319
23320         The CSpecial state was divided into CNull and CUndefined. It simplify
23321         the QScriptValue code by avoiding a few "cast" and "if".
23322         Moreover the MSVS compiler didn't like casting between a double and an
23323         enum which is avoided now.
23324
23325         [Qt] The QScriptValuePrivate::CSpecial is too generic.
23326         https://bugs.webkit.org/show_bug.cgi?id=40067
23327
23328         * qt/api/qscriptvalue_p.h:
23329         (QScriptValuePrivate::):
23330         (QScriptValuePrivate::QScriptValuePrivate):
23331         (QScriptValuePrivate::isNull):
23332         (QScriptValuePrivate::isUndefined):
23333         (QScriptValuePrivate::toString):
23334         (QScriptValuePrivate::toNumber):
23335         (QScriptValuePrivate::toBool):
23336         (QScriptValuePrivate::toObject):
23337         (QScriptValuePrivate::assignEngine):
23338         (QScriptValuePrivate::isNumberBased):
23339
23340 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
23341
23342         Reviewed by NOBODY (Qt build fix).
23343
23344         * wtf/Platform.h:
23345
23346 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
23347
23348         Reviewed by Mark Rowe.
23349
23350         Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms
23351         This was fixed in bug #40094.
23352
23353         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23354         * wtf/Platform.h:
23355
23356 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
23357
23358         Reviewed by NOBODY (Interpreter build fix).
23359
23360         * JavaScriptCore.JSVALUE32_64only.exp:
23361         * JavaScriptCore.JSVALUE32only.exp:
23362         * JavaScriptCore.JSVALUE64only.exp:
23363         * interpreter/Interpreter.cpp:
23364         (JSC::Interpreter::privateExecute):
23365
23366 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
23367
23368         Reviewed by NOBODY (windows build fix II).
23369
23370         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23371
23372 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
23373
23374         Reviewed by NOBODY (windows build fix).
23375
23376         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23377
23378 2010-06-02  Gavin Barraclough  <barraclough@apple.com>
23379
23380         Reviewed by Oliver Hunt.
23381
23382         Bug 40094 - The return type of NativeFunction should be EncodedJSValue
23383         On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not.
23384
23385         * API/JSCallbackFunction.cpp:
23386         (JSC::JSCallbackFunction::call):
23387         * API/JSCallbackFunction.h:
23388         * API/JSCallbackObject.h:
23389         * API/JSCallbackObjectFunctions.h:
23390         (JSC::::call):
23391         * JavaScriptCore.exp:
23392         * interpreter/Interpreter.cpp:
23393         (JSC::Interpreter::executeCall):
23394         * jit/JITStubs.cpp:
23395         (JSC::DEFINE_STUB_FUNCTION):
23396         * jit/JITStubs.h:
23397         * jsc.cpp:
23398         (functionPrint):
23399         (functionDebug):
23400         (functionGC):
23401         (functionVersion):
23402         (functionRun):
23403         (functionLoad):
23404         (functionCheckSyntax):
23405         (functionSetSamplingFlags):
23406         (functionClearSamplingFlags):
23407         (functionReadline):
23408         (functionQuit):
23409         * runtime/ArrayConstructor.cpp:
23410         (JSC::callArrayConstructor):
23411         (JSC::arrayConstructorIsArray):
23412         * runtime/ArrayPrototype.cpp:
23413         (JSC::arrayProtoFuncToString):
23414         (JSC::arrayProtoFuncToLocaleString):
23415         (JSC::arrayProtoFuncJoin):
23416         (JSC::arrayProtoFuncConcat):
23417         (JSC::arrayProtoFuncPop):
23418         (JSC::arrayProtoFuncPush):
23419         (JSC::arrayProtoFuncReverse):
23420         (JSC::arrayProtoFuncShift):
23421         (JSC::arrayProtoFuncSlice):
23422         (JSC::arrayProtoFuncSort):
23423         (JSC::arrayProtoFuncSplice):
23424         (JSC::arrayProtoFuncUnShift):
23425         (JSC::arrayProtoFuncFilter):
23426         (JSC::arrayProtoFuncMap):
23427         (JSC::arrayProtoFuncEvery):
23428         (JSC::arrayProtoFuncForEach):
23429         (JSC::arrayProtoFuncSome):
23430         (JSC::arrayProtoFuncReduce):
23431         (JSC::arrayProtoFuncReduceRight):
23432         (JSC::arrayProtoFuncIndexOf):
23433         (JSC::arrayProtoFuncLastIndexOf):
23434         * runtime/BooleanConstructor.cpp:
23435         (JSC::callBooleanConstructor):
23436         * runtime/BooleanPrototype.cpp:
23437         (JSC::booleanProtoFuncToString):
23438         (JSC::booleanProtoFuncValueOf):
23439         * runtime/CallData.h:
23440         * runtime/DateConstructor.cpp:
23441         (JSC::callDate):
23442         (JSC::dateParse):
23443         (JSC::dateNow):
23444         (JSC::dateUTC):
23445         * runtime/DatePrototype.cpp:
23446         (JSC::dateProtoFuncToString):
23447         (JSC::dateProtoFuncToUTCString):
23448         (JSC::dateProtoFuncToISOString):
23449         (JSC::dateProtoFuncToDateString):
23450         (JSC::dateProtoFuncToTimeString):
23451         (JSC::dateProtoFuncToLocaleString):
23452         (JSC::dateProtoFuncToLocaleDateString):
23453         (JSC::dateProtoFuncToLocaleTimeString):
23454         (JSC::dateProtoFuncGetTime):
23455         (JSC::dateProtoFuncGetFullYear):
23456         (JSC::dateProtoFuncGetUTCFullYear):
23457         (JSC::dateProtoFuncToGMTString):
23458         (JSC::dateProtoFuncGetMonth):
23459         (JSC::dateProtoFuncGetUTCMonth):
23460         (JSC::dateProtoFuncGetDate):
23461         (JSC::dateProtoFuncGetUTCDate):
23462         (JSC::dateProtoFuncGetDay):
23463         (JSC::dateProtoFuncGetUTCDay):
23464         (JSC::dateProtoFuncGetHours):
23465         (JSC::dateProtoFuncGetUTCHours):
23466         (JSC::dateProtoFuncGetMinutes):
23467         (JSC::dateProtoFuncGetUTCMinutes):
23468         (JSC::dateProtoFuncGetSeconds):
23469         (JSC::dateProtoFuncGetUTCSeconds):
23470         (JSC::dateProtoFuncGetMilliSeconds):
23471         (JSC::dateProtoFuncGetUTCMilliseconds):
23472         (JSC::dateProtoFuncGetTimezoneOffset):
23473         (JSC::dateProtoFuncSetTime):
23474         (JSC::dateProtoFuncSetMilliSeconds):
23475         (JSC::dateProtoFuncSetUTCMilliseconds):
23476         (JSC::dateProtoFuncSetSeconds):
23477         (JSC::dateProtoFuncSetUTCSeconds):
23478         (JSC::dateProtoFuncSetMinutes):
23479         (JSC::dateProtoFuncSetUTCMinutes):
23480         (JSC::dateProtoFuncSetHours):
23481         (JSC::dateProtoFuncSetUTCHours):
23482         (JSC::dateProtoFuncSetDate):
23483         (JSC::dateProtoFuncSetUTCDate):
23484         (JSC::dateProtoFuncSetMonth):
23485         (JSC::dateProtoFuncSetUTCMonth):
23486         (JSC::dateProtoFuncSetFullYear):
23487         (JSC::dateProtoFuncSetUTCFullYear):
23488         (JSC::dateProtoFuncSetYear):
23489         (JSC::dateProtoFuncGetYear):
23490         (JSC::dateProtoFuncToJSON):
23491         * runtime/ErrorConstructor.cpp:
23492         (JSC::callErrorConstructor):
23493         * runtime/ErrorPrototype.cpp:
23494         (JSC::errorProtoFuncToString):
23495         * runtime/FunctionConstructor.cpp:
23496         (JSC::callFunctionConstructor):
23497         * runtime/FunctionPrototype.cpp:
23498         (JSC::callFunctionPrototype):
23499         (JSC::functionProtoFuncToString):
23500         (JSC::functionProtoFuncApply):
23501         (JSC::functionProtoFuncCall):
23502         * runtime/JSCell.h:
23503         (JSC::getCallData):
23504         (JSC::getConstructData):
23505         * runtime/JSFunction.cpp:
23506         (JSC::callHostFunctionAsConstructor):
23507         * runtime/JSFunction.h:
23508         * runtime/JSGlobalObjectFunctions.cpp:
23509         (JSC::globalFuncEval):
23510         (JSC::globalFuncParseInt):
23511         (JSC::globalFuncParseFloat):
23512         (JSC::globalFuncIsNaN):
23513         (JSC::globalFuncIsFinite):
23514         (JSC::globalFuncDecodeURI):
23515         (JSC::globalFuncDecodeURIComponent):
23516         (JSC::globalFuncEncodeURI):
23517         (JSC::globalFuncEncodeURIComponent):
23518         (JSC::globalFuncEscape):
23519         (JSC::globalFuncUnescape):
23520         (JSC::globalFuncJSCPrint):
23521         * runtime/JSGlobalObjectFunctions.h:
23522         * runtime/JSONObject.cpp:
23523         (JSC::JSONProtoFuncParse):
23524         (JSC::JSONProtoFuncStringify):
23525         * runtime/JSObject.cpp:
23526         (JSC::callDefaultValueFunction):
23527         * runtime/JSValue.h:
23528         * runtime/MathObject.cpp:
23529         (JSC::mathProtoFuncAbs):
23530         (JSC::mathProtoFuncACos):
23531         (JSC::mathProtoFuncASin):
23532         (JSC::mathProtoFuncATan):
23533         (JSC::mathProtoFuncATan2):
23534         (JSC::mathProtoFuncCeil):
23535         (JSC::mathProtoFuncCos):
23536         (JSC::mathProtoFuncExp):
23537         (JSC::mathProtoFuncFloor):
23538         (JSC::mathProtoFuncLog):
23539         (JSC::mathProtoFuncMax):
23540         (JSC::mathProtoFuncMin):
23541         (JSC::mathProtoFuncPow):
23542         (JSC::mathProtoFuncRandom):
23543         (JSC::mathProtoFuncRound):
23544         (JSC::mathProtoFuncSin):
23545         (JSC::mathProtoFuncSqrt):
23546         (JSC::mathProtoFuncTan):
23547         * runtime/NativeErrorConstructor.cpp:
23548         (JSC::callNativeErrorConstructor):
23549         * runtime/NumberConstructor.cpp:
23550         (JSC::callNumberConstructor):
23551         * runtime/NumberPrototype.cpp:
23552         (JSC::numberProtoFuncToString):
23553         (JSC::numberProtoFuncToLocaleString):
23554         (JSC::numberProtoFuncValueOf):
23555         (JSC::numberProtoFuncToFixed):
23556         (JSC::numberProtoFuncToExponential):
23557         (JSC::numberProtoFuncToPrecision):
23558         * runtime/ObjectConstructor.cpp:
23559         (JSC::callObjectConstructor):
23560         (JSC::objectConstructorGetPrototypeOf):
23561         (JSC::objectConstructorGetOwnPropertyDescriptor):
23562         (JSC::objectConstructorGetOwnPropertyNames):
23563         (JSC::objectConstructorKeys):
23564         (JSC::toPropertyDescriptor):
23565         (JSC::objectConstructorDefineProperty):
23566         (JSC::objectConstructorDefineProperties):
23567         (JSC::objectConstructorCreate):
23568         * runtime/ObjectPrototype.cpp:
23569         (JSC::objectProtoFuncValueOf):
23570         (JSC::objectProtoFuncHasOwnProperty):
23571         (JSC::objectProtoFuncIsPrototypeOf):
23572         (JSC::objectProtoFuncDefineGetter):
23573         (JSC::objectProtoFuncDefineSetter):
23574         (JSC::objectProtoFuncLookupGetter):
23575         (JSC::objectProtoFuncLookupSetter):
23576         (JSC::objectProtoFuncPropertyIsEnumerable):
23577         (JSC::objectProtoFuncToLocaleString):
23578         (JSC::objectProtoFuncToString):
23579         * runtime/ObjectPrototype.h:
23580         * runtime/RegExpConstructor.cpp:
23581         (JSC::callRegExpConstructor):
23582         * runtime/RegExpObject.cpp:
23583         (JSC::callRegExpObject):
23584         * runtime/RegExpPrototype.cpp:
23585         (JSC::regExpProtoFuncTest):
23586         (JSC::regExpProtoFuncExec):
23587         (JSC::regExpProtoFuncCompile):
23588         (JSC::regExpProtoFuncToString):
23589         * runtime/StringConstructor.cpp:
23590         (JSC::stringFromCharCode):
23591         (JSC::callStringConstructor):
23592         * runtime/StringPrototype.cpp:
23593         (JSC::stringProtoFuncReplace):
23594         (JSC::stringProtoFuncToString):
23595         (JSC::stringProtoFuncCharAt):
23596         (JSC::stringProtoFuncCharCodeAt):
23597         (JSC::stringProtoFuncConcat):
23598         (JSC::stringProtoFuncIndexOf):
23599         (JSC::stringProtoFuncLastIndexOf):
23600         (JSC::stringProtoFuncMatch):
23601         (JSC::stringProtoFuncSearch):
23602         (JSC::stringProtoFuncSlice):
23603         (JSC::stringProtoFuncSplit):
23604         (JSC::stringProtoFuncSubstr):
23605         (JSC::stringProtoFuncSubstring):
23606         (JSC::stringProtoFuncToLowerCase):
23607         (JSC::stringProtoFuncToUpperCase):
23608         (JSC::stringProtoFuncLocaleCompare):
23609         (JSC::stringProtoFuncBig):
23610         (JSC::stringProtoFuncSmall):
23611         (JSC::stringProtoFuncBlink):
23612         (JSC::stringProtoFuncBold):
23613         (JSC::stringProtoFuncFixed):
23614         (JSC::stringProtoFuncItalics):
23615         (JSC::stringProtoFuncStrike):
23616         (JSC::stringProtoFuncSub):
23617         (JSC::stringProtoFuncSup):
23618         (JSC::stringProtoFuncFontcolor):
23619         (JSC::stringProtoFuncFontsize):
23620         (JSC::stringProtoFuncAnchor):
23621         (JSC::stringProtoFuncLink):
23622         (JSC::stringProtoFuncTrim):
23623         (JSC::stringProtoFuncTrimLeft):
23624         (JSC::stringProtoFuncTrimRight):
23625
23626 2010-06-02  Mark Rowe  <mrowe@apple.com>
23627
23628         Reviewed by Gavin Barraclough.
23629
23630         Add value-representation specific sections to the mac export file.
23631
23632         * Configurations/JavaScriptCore.xcconfig:
23633         * DerivedSources.make:
23634         * JavaScriptCore.JSVALUE32_64only.exp: Added.
23635         * JavaScriptCore.JSVALUE32only.exp: Added.
23636         * JavaScriptCore.JSVALUE64only.exp: Added.
23637         * JavaScriptCore.xcodeproj/project.pbxproj:
23638
23639 2010-06-02  Mark Rowe  <mrowe@apple.com>
23640
23641         Reviewed by Gavin Barraclough.
23642
23643         <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE.
23644
23645         * pcre/pcre_exec.cpp:
23646         (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int.  There's no good
23647         reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug.
23648
23649 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23650
23651         Reviewed by Kenneth Rohde Christiansen.
23652
23653         Fix the QScriptValue::strictlyEquals function.
23654
23655         Handling for a few edge cases was added.
23656
23657         New autotest that covers the QScriptValue::strictlyEquals function.
23658
23659         [Qt] QScriptValue::strictlyEquals is broken
23660         https://bugs.webkit.org/show_bug.cgi?id=36600
23661
23662         * qt/api/qscriptvalue.cpp:
23663         (QScriptValue::strictlyEquals):
23664         * qt/api/qscriptvalue_p.h:
23665         (QScriptValuePrivate::strictlyEquals):
23666         * qt/tests/qscriptvalue/qscriptvalue.pro:
23667         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23668         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added.
23669         (tst_QScriptValue::strictlyEquals_initData):
23670         (tst_QScriptValue::strictlyEquals_makeData):
23671         (tst_QScriptValue::strictlyEquals_test):
23672
23673 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
23674
23675         Reviewed by Kenneth Rohde Christiansen.
23676
23677         New function QScriptEngine::newObject.
23678
23679         The function creates a object of class Object and returns it
23680         as a QScriptValue.
23681
23682         [Qt] QScriptEngine API should contain a newObject function
23683         https://bugs.webkit.org/show_bug.cgi?id=39114
23684
23685         * qt/api/qscriptengine.cpp:
23686         (QScriptEngine::newObject):
23687         * qt/api/qscriptengine.h:
23688         * qt/api/qscriptengine_p.cpp:
23689         (QScriptEnginePrivate::newObject):
23690         * qt/api/qscriptengine_p.h:
23691         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
23692         (tst_QScriptEngine::newObject):
23693
23694 2010-06-02  Gabor Loki  <loki@webkit.org>
23695
23696         Reviewed by Gavin Barraclough.
23697         https://bugs.webkit.org/show_bug.cgi?id=40011
23698
23699         Thumb-2 build fix: The offset parameter of ldrh should be encoded as an
23700         imm12 immediate constant in load16. If it is not fit in the instruction
23701         a temporary register has to be used.
23702
23703         * assembler/MacroAssemblerARMv7.h:
23704         (JSC::MacroAssemblerARMv7::load16):
23705
23706 2010-06-02  Sterling Swigart  <sswigart@google.com>
23707
23708         Reviewed by David Levin.
23709
23710         Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
23711         https://bugs.webkit.org/show_bug.cgi?id=39906
23712
23713         * Configurations/FeatureDefines.xcconfig:
23714
23715 2010-06-01  Gavin Barraclough  <barraclough@apple.com>
23716
23717         Reviewed by Sam Weinig.
23718
23719         Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together
23720
23721         This is a useful stepping stone towards reversing argument order.
23722
23723         * bytecompiler/BytecodeGenerator.cpp:
23724         (JSC::BytecodeGenerator::BytecodeGenerator):
23725         (JSC::BytecodeGenerator::addParameter):
23726         (JSC::BytecodeGenerator::emitCall):
23727         (JSC::BytecodeGenerator::emitCallEval):
23728         (JSC::BytecodeGenerator::emitConstruct):
23729         * bytecompiler/BytecodeGenerator.h:
23730         (JSC::CallArguments::thisRegister):
23731         (JSC::CallArguments::argumentRegister):
23732         (JSC::CallArguments::callFrame):
23733         (JSC::CallArguments::count):
23734         (JSC::BytecodeGenerator::shouldEmitProfileHooks):
23735         * bytecompiler/NodesCodegen.cpp:
23736         (JSC::NewExprNode::emitBytecode):
23737         (JSC::CallArguments::CallArguments):
23738         (JSC::EvalFunctionCallNode::emitBytecode):
23739         (JSC::FunctionCallValueNode::emitBytecode):
23740         (JSC::FunctionCallResolveNode::emitBytecode):
23741         (JSC::FunctionCallBracketNode::emitBytecode):
23742         (JSC::FunctionCallDotNode::emitBytecode):
23743         (JSC::CallFunctionCallDotNode::emitBytecode):
23744         (JSC::ApplyFunctionCallDotNode::emitBytecode):
23745
23746 2010-06-01  Yong Li  <yoli@rim.com>
23747
23748         Reviewed by Darin Adler.
23749
23750         Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex.
23751         https://bugs.webkit.org/show_bug.cgi?id=39893
23752
23753         * wtf/ThreadingPthreads.cpp:
23754         (WTF::Mutex::Mutex):
23755
23756 2010-06-01  Kwang Yul Seo  <skyul@company100.net>
23757
23758         Reviewed by Xan Lopez.
23759
23760         [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap
23761         https://bugs.webkit.org/show_bug.cgi?id=39831
23762
23763         Use DEFINE_STATIC_LOCAL for static local variables.
23764
23765         * wtf/gtk/ThreadingGtk.cpp:
23766         (WTF::threadMapMutex):
23767         (WTF::threadMap):
23768         (WTF::identifierByGthreadHandle):
23769
23770 2010-06-01  Kent Tamura  <tkent@chromium.org>
23771
23772         Reviewed by Shinichiro Hamaji.
23773
23774         Fix style errors of dtoa
23775         https://bugs.webkit.org/show_bug.cgi?id=39972
23776
23777         Fix all errors reported by check-webkit-style.
23778
23779         * wtf/dtoa.cpp:
23780         * wtf/dtoa.h:
23781
23782 2010-05-30  Darin Adler  <darin@apple.com>
23783
23784         Reviewed by Sam Weinig.
23785
23786         * wtf/OwnArrayPtr.h:
23787         (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr.
23788         At some point someone fixed the "asserts when assigning to 0 and the pointer is
23789         already 0" issue in OwnPtr but forgot to do it here.
23790
23791 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
23792
23793         Windows build fix: Updated exported symbols.
23794         
23795         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23796
23797 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
23798
23799         Disabled ENABLE_JIT_OPTIMIZE_NATIVE_CALL on Windows for now, until I
23800         can figure out why it's crashing.
23801
23802         * wtf/Platform.h:
23803
23804 2010-05-29  Geoffrey Garen  <ggaren@apple.com>
23805
23806         Fixed Windows crash seen on buildbot.
23807
23808         * jit/JITOpcodes32_64.cpp:
23809         (JSC::JIT::privateCompileCTINativeCall): __fastcall puts the first
23810         argument in ecx.
23811
23812 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
23813
23814         Windows build fix: Updated exported symbols.
23815
23816         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23817
23818 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
23819
23820         Qt build fix: disable a little more stuff when JIT_OPTIMIZE_NATIVE_CALL
23821         is disabled.
23822
23823         * runtime/Lookup.cpp:
23824         (JSC::setUpStaticFunctionSlot):
23825         * runtime/Lookup.h:
23826         * wtf/Platform.h:
23827
23828 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
23829
23830         Windows build fix: Updated exported symbols.
23831
23832         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23833
23834 2010-05-28  Geoffrey Garen  <ggaren@apple.com>
23835
23836         Reviewed by Sam Weinig, Gavin Barraclough, Oliver Hunt.
23837
23838         Simplified the host calling convention.
23839         
23840         22.5% speedup on 32-bit host function calls. 9.5% speedup on 64-bit host
23841         function calls.
23842         
23843         No change on SunSpider.
23844         
23845         All JS calls (but not constructs, yet) now go through the normal JS
23846         calling convention via the RegisterFile. As a result, the host calling
23847         convention, which used to be this
23848
23849             JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&)
23850             
23851         is now this
23852
23853             JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*)
23854             
23855         Callee, 'this', and argument access all hapen relative to the ExecState*,
23856         which is a pointer into the RegisterFile.
23857         
23858         This patch comes in two parts.
23859         
23860         PART ONE: Functional code changes.
23861         
23862         * wtf/Platform.h: Disabled optimized calls on platforms I didn't test.
23863         We can re-enable once we verify that host calls on these platforms are
23864         correct.
23865
23866         * debugger/DebuggerCallFrame.cpp:
23867         (JSC::DebuggerCallFrame::functionName):
23868         (JSC::DebuggerCallFrame::calculatedFunctionName): Updated for change to
23869         ExecState::callee().
23870
23871         (JSC::DebuggerCallFrame::thisObject): Updated for removal of ExecState::thisValue().
23872
23873         * interpreter/CallFrame.cpp:
23874         * interpreter/CallFrame.h:
23875         (JSC::ExecState::callee):
23876         (JSC::ExecState::scopeChain):
23877         (JSC::ExecState::init): Changed callee() to be JSObject* instead of
23878         JSFunction* -- now, it might be some other callable host object.
23879
23880         (JSC::ExecState::hostThisRegister):
23881         (JSC::ExecState::hostThisValue):
23882         (JSC::ExecState::argumentCount):
23883         (JSC::ExecState::argumentCountIncludingThis):
23884         (JSC::ExecState::argument):
23885         (JSC::ExecState::setArgumentCountIncludingThis):
23886         (JSC::ExecState::setCallee): Added convenient accessors for arguments
23887         from within a host function. Removed thisValue() because it was too
23888         tempting to use incorrectly, and it only had one or two clients, anyway.
23889
23890         * interpreter/Interpreter.cpp:
23891         (JSC::Interpreter::callEval): Updated for removal of ExecState::thisValue().
23892
23893         (JSC::Interpreter::throwException): Be sure to shrink the register file
23894         before invoking the exception handler, to reduce the chances that the
23895         handler will re-throw in the case of stack overflow. (Re-throwing is now
23896         more likely than it used to be, since standardizing the calling convention
23897         implicitly added stack overflow checks to some places where they used to be missing.)
23898
23899         (JSC::Interpreter::execute): Clarified the scope of DynamicGlobalObjectScope.
23900         Updated for CallFrame::init API change.
23901
23902         (JSC::Interpreter::executeCall): Clarified scope of DynamicGlobalObjectScope.
23903         Updated for CallFrame::init API change. Added support for calling a host
23904         function.
23905
23906         (JSC::Interpreter::executeConstruct): Clarified scope of DynamicGlobalObjectScope.
23907         Updated for CallFrame::init API change. 
23908
23909         (JSC::Interpreter::prepareForRepeatCall): Updated for CallFrame::init API change. 
23910
23911         (JSC::Interpreter::privateExecute): Updated for CallFrame::init API change.
23912         Added some explicit JSValue(JSObject*) initialization, since relaxing
23913         the JSFunction* restriction on callee has made register types more ambiguous.
23914         Removed toThisObject() conversion, since all callees do it themselves now.
23915         Updated host function call for new host function signature. Updated for
23916         change to ExecState::argumentCount() API.
23917
23918         * interpreter/Register.h:
23919         (JSC::Register::):
23920         (JSC::Register::operator=):
23921         (JSC::Register::function): Changed callee() to be JSObject* instead of
23922         JSFunction* -- now, it might be some other callable host object.
23923
23924         * jit/JITOpcodes.cpp:
23925         (JSC::JIT::privateCompileCTINativeCall):
23926         * jit/JITOpcodes32_64.cpp:
23927         (JSC::JIT::privateCompileCTINativeCall): Deleted a bunch of code that
23928         set up the arguments to host functions -- all but one of the arguments
23929         are gone now. This is the actual optimization.
23930
23931         * jit/JITStubs.cpp:
23932         (JSC::DEFINE_STUB_FUNCTION): Updated for ExecState and Register API
23933         changes noted above. Removed toThisObject() conversion, since all callees
23934         do it themselves now.
23935         
23936         * runtime/ArgList.h:
23937         (JSC::ArgList::ArgList): ArgList is getting close to unused. Added a
23938         temporary shim for converting from ExecState* to ArgList where it's still
23939         necessary.
23940
23941         * runtime/Arguments.h:
23942         (JSC::Arguments::getArgumentsData):
23943         (JSC::Arguments::Arguments): Updated for ExecState and Register API
23944         changes noted above. 
23945
23946         * runtime/CallData.cpp:
23947         (JSC::call): Changed call always to call Interpreter::executeCall, even
23948         for host functions. This ensures that the normal calling convention is
23949         set up in the RegsiterFile when calling from C++ to host function.
23950
23951         * runtime/CallData.h: Changed host function signature as described above.
23952
23953         * runtime/ConstructData.cpp:
23954         (JSC::construct): Moved JSFunction::construct code here so I could nix
23955         JSFunction::call and JSFunction::call. We want a JSFunction-agnostic
23956         way to call and construct, so that everything works naturally for non-
23957         JSFunction objects. 
23958
23959         * runtime/JSFunction.cpp:
23960         (JSC::callHostFunctionAsConstructor):
23961         * runtime/JSFunction.h: Updated for ExecState and Register API changes
23962         noted above. Nixed JSFunction::call and JSFunction::construct, noted above.
23963  
23964         * runtime/JSGlobalObject.cpp:
23965         (JSC::JSGlobalObject::init): Ditto.
23966
23967         PART TWO: Global search and replace.
23968         
23969         In the areas below, I used global search-and-replace to change
23970             (ExecState*, JSObject*, JSValue, const ArgList&) => (ExecState*)
23971             args.size() => exec->argumentCount()
23972             args.at(i) => exec->argument(i)
23973
23974         * API/JSCallbackFunction.cpp:
23975         (JSC::JSCallbackFunction::call):
23976         * API/JSCallbackFunction.h:
23977         * API/JSCallbackObject.h:
23978         * API/JSCallbackObjectFunctions.h:
23979         (JSC::::call):
23980         * JavaScriptCore.exp:
23981         * jsc.cpp:
23982         (functionPrint):
23983         (functionDebug):
23984         (functionGC):
23985         (functionVersion):
23986         (functionRun):
23987         (functionLoad):
23988         (functionCheckSyntax):
23989         (functionSetSamplingFlags):
23990         (functionClearSamplingFlags):
23991         (functionReadline):
23992         (functionQuit):
23993         * runtime/ArrayConstructor.cpp:
23994         (JSC::callArrayConstructor):
23995         (JSC::arrayConstructorIsArray):
23996         * runtime/ArrayPrototype.cpp:
23997         (JSC::arrayProtoFuncToString):
23998         (JSC::arrayProtoFuncToLocaleString):
23999         (JSC::arrayProtoFuncJoin):
24000         (JSC::arrayProtoFuncConcat):
24001         (JSC::arrayProtoFuncPop):
24002         (JSC::arrayProtoFuncPush):
24003         (JSC::arrayProtoFuncReverse):
24004         (JSC::arrayProtoFuncShift):
24005         (JSC::arrayProtoFuncSlice):
24006         (JSC::arrayProtoFuncSort):
24007         (JSC::arrayProtoFuncSplice):
24008         (JSC::arrayProtoFuncUnShift):
24009         (JSC::arrayProtoFuncFilter):
24010         (JSC::arrayProtoFuncMap):
24011         (JSC::arrayProtoFuncEvery):
24012         (JSC::arrayProtoFuncForEach):
24013         (JSC::arrayProtoFuncSome):
24014         (JSC::arrayProtoFuncReduce):
24015         (JSC::arrayProtoFuncReduceRight):
24016         (JSC::arrayProtoFuncIndexOf):
24017         (JSC::arrayProtoFuncLastIndexOf):
24018         * runtime/BooleanConstructor.cpp:
24019         (JSC::callBooleanConstructor):
24020         * runtime/BooleanPrototype.cpp:
24021         (JSC::booleanProtoFuncToString):
24022         (JSC::booleanProtoFuncValueOf):
24023         * runtime/DateConstructor.cpp:
24024         (JSC::callDate):
24025         (JSC::dateParse):
24026         (JSC::dateNow):
24027         (JSC::dateUTC):
24028         * runtime/DatePrototype.cpp:
24029         (JSC::formatLocaleDate):
24030         (JSC::fillStructuresUsingTimeArgs):
24031         (JSC::fillStructuresUsingDateArgs):
24032         (JSC::dateProtoFuncToString):
24033         (JSC::dateProtoFuncToUTCString):
24034         (JSC::dateProtoFuncToISOString):
24035         (JSC::dateProtoFuncToDateString):
24036         (JSC::dateProtoFuncToTimeString):
24037         (JSC::dateProtoFuncToLocaleString):
24038         (JSC::dateProtoFuncToLocaleDateString):
24039         (JSC::dateProtoFuncToLocaleTimeString):
24040         (JSC::dateProtoFuncGetTime):
24041         (JSC::dateProtoFuncGetFullYear):
24042         (JSC::dateProtoFuncGetUTCFullYear):
24043         (JSC::dateProtoFuncToGMTString):
24044         (JSC::dateProtoFuncGetMonth):
24045         (JSC::dateProtoFuncGetUTCMonth):
24046         (JSC::dateProtoFuncGetDate):
24047         (JSC::dateProtoFuncGetUTCDate):
24048         (JSC::dateProtoFuncGetDay):
24049         (JSC::dateProtoFuncGetUTCDay):
24050         (JSC::dateProtoFuncGetHours):
24051         (JSC::dateProtoFuncGetUTCHours):
24052         (JSC::dateProtoFuncGetMinutes):
24053         (JSC::dateProtoFuncGetUTCMinutes):
24054         (JSC::dateProtoFuncGetSeconds):
24055         (JSC::dateProtoFuncGetUTCSeconds):
24056         (JSC::dateProtoFuncGetMilliSeconds):
24057         (JSC::dateProtoFuncGetUTCMilliseconds):
24058         (JSC::dateProtoFuncGetTimezoneOffset):
24059         (JSC::dateProtoFuncSetTime):
24060         (JSC::setNewValueFromTimeArgs):
24061         (JSC::setNewValueFromDateArgs):
24062         (JSC::dateProtoFuncSetMilliSeconds):
24063         (JSC::dateProtoFuncSetUTCMilliseconds):
24064         (JSC::dateProtoFuncSetSeconds):
24065         (JSC::dateProtoFuncSetUTCSeconds):
24066         (JSC::dateProtoFuncSetMinutes):
24067         (JSC::dateProtoFuncSetUTCMinutes):
24068         (JSC::dateProtoFuncSetHours):
24069         (JSC::dateProtoFuncSetUTCHours):
24070         (JSC::dateProtoFuncSetDate):
24071         (JSC::dateProtoFuncSetUTCDate):
24072         (JSC::dateProtoFuncSetMonth):
24073         (JSC::dateProtoFuncSetUTCMonth):
24074         (JSC::dateProtoFuncSetFullYear):
24075         (JSC::dateProtoFuncSetUTCFullYear):
24076         (JSC::dateProtoFuncSetYear):
24077         (JSC::dateProtoFuncGetYear):
24078         (JSC::dateProtoFuncToJSON):
24079         * runtime/ErrorConstructor.cpp:
24080         (JSC::callErrorConstructor):
24081         * runtime/ErrorPrototype.cpp:
24082         (JSC::errorProtoFuncToString):
24083         * runtime/FunctionConstructor.cpp:
24084         (JSC::callFunctionConstructor):
24085         * runtime/FunctionPrototype.cpp:
24086         (JSC::callFunctionPrototype):
24087         (JSC::functionProtoFuncToString):
24088         (JSC::functionProtoFuncApply):
24089         (JSC::functionProtoFuncCall):
24090         * runtime/JSGlobalObjectFunctions.cpp:
24091         (JSC::encode):
24092         (JSC::decode):
24093         (JSC::globalFuncEval):
24094         (JSC::globalFuncParseInt):
24095         (JSC::globalFuncParseFloat):
24096         (JSC::globalFuncIsNaN):
24097         (JSC::globalFuncIsFinite):
24098         (JSC::globalFuncDecodeURI):
24099         (JSC::globalFuncDecodeURIComponent):
24100         (JSC::globalFuncEncodeURI):
24101         (JSC::globalFuncEncodeURIComponent):
24102         (JSC::globalFuncEscape):
24103         (JSC::globalFuncUnescape):
24104         (JSC::globalFuncJSCPrint):
24105         * runtime/JSGlobalObjectFunctions.h:
24106         * runtime/JSONObject.cpp:
24107         (JSC::JSONProtoFuncParse):
24108         (JSC::JSONProtoFuncStringify):
24109         * runtime/JSString.h:
24110         * runtime/MathObject.cpp:
24111         (JSC::mathProtoFuncAbs):
24112         (JSC::mathProtoFuncACos):
24113         (JSC::mathProtoFuncASin):
24114         (JSC::mathProtoFuncATan):
24115         (JSC::mathProtoFuncATan2):
24116         (JSC::mathProtoFuncCeil):
24117         (JSC::mathProtoFuncCos):
24118         (JSC::mathProtoFuncExp):
24119         (JSC::mathProtoFuncFloor):
24120         (JSC::mathProtoFuncLog):
24121         (JSC::mathProtoFuncMax):
24122         (JSC::mathProtoFuncMin):
24123         (JSC::mathProtoFuncPow):
24124         (JSC::mathProtoFuncRandom):
24125         (JSC::mathProtoFuncRound):
24126         (JSC::mathProtoFuncSin):
24127         (JSC::mathProtoFuncSqrt):
24128         (JSC::mathProtoFuncTan):
24129         * runtime/NativeErrorConstructor.cpp:
24130         (JSC::callNativeErrorConstructor):
24131         * runtime/NumberConstructor.cpp:
24132         (JSC::callNumberConstructor):
24133         * runtime/NumberPrototype.cpp:
24134         (JSC::numberProtoFuncToString):
24135         (JSC::numberProtoFuncToLocaleString):
24136         (JSC::numberProtoFuncValueOf):
24137         (JSC::numberProtoFuncToFixed):
24138         (JSC::numberProtoFuncToExponential):
24139         (JSC::numberProtoFuncToPrecision):
24140         * runtime/ObjectConstructor.cpp:
24141         (JSC::callObjectConstructor):
24142         (JSC::objectConstructorGetPrototypeOf):
24143         (JSC::objectConstructorGetOwnPropertyDescriptor):
24144         (JSC::objectConstructorGetOwnPropertyNames):
24145         (JSC::objectConstructorKeys):
24146         (JSC::objectConstructorDefineProperty):
24147         (JSC::objectConstructorDefineProperties):
24148         (JSC::objectConstructorCreate):
24149         * runtime/ObjectPrototype.cpp:
24150         (JSC::objectProtoFuncValueOf):
24151         (JSC::objectProtoFuncHasOwnProperty):
24152         (JSC::objectProtoFuncIsPrototypeOf):
24153         (JSC::objectProtoFuncDefineGetter):
24154         (JSC::objectProtoFuncDefineSetter):
24155         (JSC::objectProtoFuncLookupGetter):
24156         (JSC::objectProtoFuncLookupSetter):
24157         (JSC::objectProtoFuncPropertyIsEnumerable):
24158         (JSC::objectProtoFuncToLocaleString):
24159         (JSC::objectProtoFuncToString):
24160         * runtime/ObjectPrototype.h:
24161         * runtime/Operations.h:
24162         (JSC::jsString):
24163         * runtime/RegExpConstructor.cpp:
24164         (JSC::callRegExpConstructor):
24165         * runtime/RegExpObject.cpp:
24166         (JSC::RegExpObject::test):
24167         (JSC::RegExpObject::exec):
24168         (JSC::callRegExpObject):
24169         (JSC::RegExpObject::match):
24170         * runtime/RegExpObject.h:
24171         * runtime/RegExpPrototype.cpp:
24172         (JSC::regExpProtoFuncTest):
24173         (JSC::regExpProtoFuncExec):
24174         (JSC::regExpProtoFuncCompile):
24175         (JSC::regExpProtoFuncToString):
24176         * runtime/StringConstructor.cpp:
24177         (JSC::stringFromCharCodeSlowCase):
24178         (JSC::stringFromCharCode):
24179         (JSC::callStringConstructor):
24180         * runtime/StringPrototype.cpp:
24181         (JSC::stringProtoFuncReplace):
24182         (JSC::stringProtoFuncToString):
24183         (JSC::stringProtoFuncCharAt):
24184         (JSC::stringProtoFuncCharCodeAt):
24185         (JSC::stringProtoFuncConcat):
24186         (JSC::stringProtoFuncIndexOf):
24187         (JSC::stringProtoFuncLastIndexOf):
24188         (JSC::stringProtoFuncMatch):
24189         (JSC::stringProtoFuncSearch):
24190         (JSC::stringProtoFuncSlice):
24191         (JSC::stringProtoFuncSplit):
24192         (JSC::stringProtoFuncSubstr):
24193         (JSC::stringProtoFuncSubstring):
24194         (JSC::stringProtoFuncToLowerCase):
24195         (JSC::stringProtoFuncToUpperCase):
24196         (JSC::stringProtoFuncLocaleCompare):
24197         (JSC::stringProtoFuncBig):
24198         (JSC::stringProtoFuncSmall):
24199         (JSC::stringProtoFuncBlink):
24200         (JSC::stringProtoFuncBold):
24201         (JSC::stringProtoFuncFixed):
24202         (JSC::stringProtoFuncItalics):
24203         (JSC::stringProtoFuncStrike):
24204         (JSC::stringProtoFuncSub):
24205         (JSC::stringProtoFuncSup):
24206         (JSC::stringProtoFuncFontcolor):
24207         (JSC::stringProtoFuncFontsize):
24208         (JSC::stringProtoFuncAnchor):
24209         (JSC::stringProtoFuncLink):
24210         (JSC::stringProtoFuncTrim):
24211         (JSC::stringProtoFuncTrimLeft):
24212         (JSC::stringProtoFuncTrimRight):
24213
24214 2010-05-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
24215
24216         Reviewed by Geoffrey Garen.
24217
24218         Fix the JSObjectSetPrototype function.
24219
24220         A cycle in a prototype chain can cause an application hang or
24221         even crash.
24222         A check for a prototype chain cycles was added to
24223         the JSObjectSetPrototype.
24224
24225         JSObjectSetPrototype doesn't check for cycle in prototype chain.
24226         https://bugs.webkit.org/show_bug.cgi?id=39360
24227
24228         * API/JSObjectRef.cpp:
24229         (JSObjectSetPrototype):
24230         * API/tests/testapi.c:
24231         (assertTrue):
24232         (checkForCycleInPrototypeChain):
24233         (main):
24234         * runtime/JSObject.cpp:
24235         (JSC::JSObject::put):
24236         * runtime/JSObject.h:
24237         (JSC::JSObject::setPrototypeWithCycleCheck):
24238
24239 2010-05-28  Chao-ying Fu  <fu@mips.com>
24240
24241         Reviewed by Eric Seidel.
24242
24243         Fix MIPS JIT DoubleGreaterThanOrEqual Operands
24244         https://bugs.webkit.org/show_bug.cgi?id=39504
24245
24246         Swapped two operands of left and right for DoubleGreaterThanOrEqual.
24247         This patch fixed two layout tests as follows.
24248         fast/js/comparison-operators-greater.html
24249         fast/js/comparison-operators-less.html
24250
24251         * assembler/MacroAssemblerMIPS.h:
24252         (JSC::MacroAssemblerMIPS::branchDouble):
24253
24254 2010-05-28  Gavin Barraclough  <barraclough@apple.com>
24255
24256         Reviewed by Geoff Garen.
24257
24258         Move jit compilation from linking thunks into cti_vm_lazyLink methods.
24259
24260         * jit/JITOpcodes.cpp:
24261         (JSC::JIT::privateCompileCTIMachineTrampolines):
24262         * jit/JITOpcodes32_64.cpp:
24263         (JSC::JIT::privateCompileCTIMachineTrampolines):
24264         * jit/JITStubs.cpp:
24265         (JSC::DEFINE_STUB_FUNCTION):
24266
24267 2010-05-28  Gavin Barraclough  <barraclough@apple.com>
24268
24269         Reviewed by Sam Weinig.
24270
24271         Bug 39898 - Move arity check into callee.
24272         
24273         We can reduce the size of the virtual call trampolines by moving the arity check
24274         into the callee functions.  As a following step we will be able to remove the
24275         check for native function / codeblocks by performing translation in a lazy stub.
24276         
24277         * interpreter/CallFrame.h:
24278         (JSC::ExecState::init):
24279         (JSC::ExecState::setReturnPC):
24280         * jit/JIT.cpp:
24281         (JSC::JIT::privateCompile):
24282         (JSC::JIT::linkCall):
24283         (JSC::JIT::linkConstruct):
24284         * jit/JIT.h:
24285         (JSC::JIT::compile):
24286         * jit/JITOpcodes.cpp:
24287         (JSC::JIT::privateCompileCTIMachineTrampolines):
24288         * jit/JITOpcodes32_64.cpp:
24289         (JSC::JIT::privateCompileCTIMachineTrampolines):
24290         * jit/JITStubs.cpp:
24291         (JSC::DEFINE_STUB_FUNCTION):
24292         * runtime/Executable.cpp:
24293         (JSC::FunctionExecutable::generateJITCodeForCall):
24294         (JSC::FunctionExecutable::generateJITCodeForConstruct):
24295         (JSC::FunctionExecutable::reparseExceptionInfo):
24296         * runtime/Executable.h:
24297         (JSC::NativeExecutable::NativeExecutable):
24298         (JSC::FunctionExecutable::generatedJITCodeForCallWithArityCheck):
24299         (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
24300
24301 2010-05-27  Luiz Agostini  <luiz.agostini@openbossa.org>
24302
24303         Reviewed by Darin Adler.
24304
24305         UTF-16 code points compare() for String objects
24306         https://bugs.webkit.org/show_bug.cgi?id=39701
24307
24308         Moving compare() implementation from UString to StringImpl for it to be shared
24309         with String. Adding overloaded free functions codePointCompare() in StringImpl
24310         and WTFString. Renaming function compare in UString to codePointCompare to be
24311         consistent.
24312
24313         * runtime/JSArray.cpp:
24314         (JSC::compareByStringPairForQSort):
24315         * runtime/UString.cpp:
24316         * runtime/UString.h:
24317         (JSC::codePointCompare):
24318         * wtf/text/StringImpl.cpp:
24319         (WebCore::codePointCompare):
24320         * wtf/text/StringImpl.h:
24321         * wtf/text/WTFString.cpp:
24322         (WebCore::codePointCompare):
24323         * wtf/text/WTFString.h:
24324
24325 2010-05-26  Darin Adler  <darin@apple.com>
24326
24327         Reviewed by Kent Tamura.
24328
24329         Null characters handled incorrectly in ToNumber conversion
24330         https://bugs.webkit.org/show_bug.cgi?id=38088
24331
24332         * runtime/JSGlobalObjectFunctions.cpp:
24333         (JSC::parseInt): Changed code to use UTF8String().data() instead of
24334         ascii() to fix the thread safety issue. Code path is covered by existing
24335         tests in run-javascriptcore-tests.
24336         (JSC::parseFloat): Moved comment to UString::toDouble since the issue
24337         affects all clients, not just parseFloat. Specifically, this also affects
24338         standard JavaScript numeric conversion, ToNumber.
24339
24340         * runtime/UString.cpp:
24341         (JSC::UString::toDouble): Added a comment about incorrect space skipping.
24342         Changed trailing junk check to use the length of the CString instead of
24343         checking for a null character. Also got rid of a little unneeded logic
24344         in the case where we tolerate trailing junk.
24345
24346 2010-05-27  Nathan Lawrence  <nlawrence@apple.com>
24347
24348         Reviewed by Geoffrey Garen.
24349
24350         Search for the new allocation one word at a time.  Improves
24351         performance on SunSpider by approximately 1%.
24352         http://bugs.webkit.org/show_bug.cgi?id=39758
24353
24354         * runtime/Collector.cpp:
24355         (JSC::Heap::allocate):
24356         * runtime/Collector.h:
24357         (JSC::CollectorBitmap::advanceToNextPossibleFreeCell):
24358
24359 2010-05-27  Kevin Ollivier  <kevino@theolliviers.com>
24360
24361         [wx] Build fixes for Windows after recent changes.
24362
24363         * wscript:
24364
24365 2010-05-27  Gustavo Noronha Silva  <gns@gnome.org>
24366
24367         More build fixage for make dist.
24368
24369         * GNUmakefile.am:
24370
24371 2010-05-27  Kwang Yul Seo  <skyul@company100.net>
24372
24373         Reviewed by Darin Adler.
24374
24375         RVCT does not have strnstr.
24376         https://bugs.webkit.org/show_bug.cgi?id=39719
24377
24378         Add COMPILER(RVCT) guard to strnstr in StringExtras.h as RVCT does not provide strnstr.
24379
24380         * wtf/StringExtras.h:
24381
24382 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
24383
24384         Reviewed by Oliver Hunt.
24385
24386         Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
24387         (relanding r60267)
24388
24389         If the last item in a main disjunction is a quantified set of parentheses,
24390         this is easier to code generate for than the general case for quantified
24391         parentheses. This is because we never need to backtrack into the parentheses
24392         - the first match will be the final and accepted match.
24393
24394         This patch also somewhat reverts a recent change to when fallback to PCRE
24395         occurs. At the minute the compiler is tracking on patterns which will
24396         require JIT fallback. This is handy from a performance perspective (it saves
24397         the failed attempt at JIT compilation), but it means introducing knowledge
24398         of the JITs capabilities into the other layers of the regex compilers. For
24399         the specific feature of back-references, add a flag tracking their presence
24400         on the pattern, and make these expressions fallback without attempting to
24401         JIT. For parentheses, return to detecting which cases are have or have not
24402         been handled during JIT compilation.
24403
24404         18% progression on tagcloud, ~1.5% overall on sunspidey.
24405
24406         * yarr/RegexCompiler.cpp:
24407         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24408         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24409         * yarr/RegexJIT.cpp:
24410         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
24411         (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
24412         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
24413         (JSC::Yarr::RegexGenerator::generateTerm):
24414         (JSC::Yarr::RegexGenerator::RegexGenerator):
24415         (JSC::Yarr::RegexGenerator::shouldFallBack):
24416         (JSC::Yarr::jitCompileRegex):
24417         * yarr/RegexPattern.h:
24418         (JSC::Yarr::RegexPattern::RegexPattern):
24419         (JSC::Yarr::RegexPattern::reset):
24420
24421 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
24422
24423         Reviewed by NOBODY (revert).
24424
24425         Temporarily rolling out r60267, I appear to have hoesed perf at the last minute. :-/ Fixing.
24426
24427         * yarr/RegexCompiler.cpp:
24428         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24429         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24430         * yarr/RegexJIT.cpp:
24431         (JSC::Yarr::RegexGenerator::TermGenerationState::term):
24432         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
24433         (JSC::Yarr::RegexGenerator::generateTerm):
24434         (JSC::Yarr::RegexGenerator::RegexGenerator):
24435         (JSC::Yarr::jitCompileRegex):
24436         * yarr/RegexPattern.h:
24437         (JSC::Yarr::RegexPattern::RegexPattern):
24438         (JSC::Yarr::RegexPattern::reset):
24439
24440 2010-05-26  Gustavo Noronha Silva  <gns@gnome.org>
24441
24442         Build fixes for make distcheck.
24443
24444         * GNUmakefile.am:
24445
24446 2010-05-26  Gavin Barraclough  <barraclough@apple.com>
24447
24448         Reviewed by Oliver Hunt.
24449
24450         Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
24451
24452         If the last item in a main disjunction is a quantified set of parentheses,
24453         this is easier to code generate for than the general case for quantified
24454         parentheses. This is because we never need to backtrack into the parentheses
24455         - the first match will be the final and accepted match.
24456
24457         This patch also somewhat reverts a recent change to when fallback to PCRE
24458         occurs. At the minute the compiler is tracking on patterns which will
24459         require JIT fallback. This is handy from a performance perspective (it saves
24460         the failed attempt at JIT compilation), but it means introducing knowledge
24461         of the JITs capabilities into the other layers of the regex compilers. For
24462         the specific feature of back-references, add a flag tracking their presence
24463         on the pattern, and make these expressions fallback without attempting to
24464         JIT. For parentheses, return to detecting which cases are have or have not
24465         been handled during JIT compilation.
24466
24467         18% progression on tagcloud, ~1.5% overall on sunspidey.
24468
24469         * yarr/RegexCompiler.cpp:
24470         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24471         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24472         * yarr/RegexJIT.cpp:
24473         (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
24474         (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
24475         (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
24476         (JSC::Yarr::RegexGenerator::generateTerm):
24477         (JSC::Yarr::RegexGenerator::RegexGenerator):
24478         (JSC::Yarr::RegexGenerator::shouldFallBack):
24479         (JSC::Yarr::jitCompileRegex):
24480         * yarr/RegexPattern.h:
24481         (JSC::Yarr::RegexPattern::RegexPattern):
24482         (JSC::Yarr::RegexPattern::reset):
24483
24484 2010-05-26  Geoffrey Garen  <ggaren@apple.com>
24485
24486         Reviewed by Sam Weinig.
24487
24488         Fixed a crash seen on the Leopard bot, caused by merge.
24489
24490         * jit/JITStubs.cpp:
24491         (JSC::DEFINE_STUB_FUNCTION): Get the return address from the callframe,
24492         since it's no longer passed to us as an argument.
24493
24494 2010-05-25  Geoffrey Garen  <ggaren@apple.com>
24495
24496         Fixed build failure caused by merge.
24497
24498         * jit/JITStubs.cpp:
24499         (JSC::DEFINE_STUB_FUNCTION): On error, return a single value, since this
24500         function no longer returns a pair.
24501
24502 2010-05-25  Geoffrey Garen  <ggaren@apple.com>
24503
24504         Reviewed by Oliver Hunt.
24505
24506         <rdar://problem/8020221>
24507         
24508         Fixed a crash seen on Windows when calling a function with too many
24509         arguments.
24510         
24511         SunSpider reports no change.
24512         
24513         No test because the ASSERT I added fires in existing tests.
24514
24515         * jit/JITStubs.cpp:
24516         (JSC::DEFINE_STUB_FUNCTION): Make sure to grow the registerFile when too
24517         many arguments have been provided, since the caller only allocated enough
24518         registerFile space for the arguments it provided, not enough for the extra
24519         copy of arguments we're going to need.
24520
24521 2010-05-25  Kwang Yul Seo  <skyul@company100.net>
24522
24523         Reviewed by Darin Adler.
24524
24525         Build fix for JSFunction
24526         https://bugs.webkit.org/show_bug.cgi?id=39658
24527
24528         MSVC can't compile one of JSFunction constructors when JIT is disabled.
24529         "PassRefPtr<NativeExecutable>" causes the compile error as NativeExecutable is not defined. 
24530         Add ENABLE(JIT) guard to the constructor.
24531
24532         * runtime/JSFunction.cpp:
24533         (JSC::JSFunction::JSFunction):
24534         * runtime/JSFunction.h:
24535
24536 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
24537
24538         Reviewed by Sam Weinig.
24539
24540         Bug 39643 - Clean up code generation in the JIT of stub function calls for op_call.
24541
24542         Presently, as soon as op-call strays off the hot path we set up a set of values on
24543         the stack to be passed as arguments to cti functions, in case any should be called.
24544
24545         Instead, hoist the setup of the callframe to happen slightly sooner, and make the
24546         cti functions to compile & check arity read these values from the callframe. This
24547         allows up to remove the deprecated methods to manually set up cti arguments, rather
24548         than using JITStubCall.h.
24549
24550         * interpreter/CallFrame.h:
24551         * jit/JIT.h:
24552         * jit/JITCall.cpp:
24553         (JSC::JIT::compileOpCallInitializeCallFrame):
24554         (JSC::JIT::compileOpCallVarargs):
24555         (JSC::JIT::compileOpCallVarargsSlowCase):
24556         (JSC::JIT::compileOpCall):
24557         (JSC::JIT::compileOpCallSlowCase):
24558         * jit/JITCall32_64.cpp:
24559         (JSC::JIT::compileOpCallInitializeCallFrame):
24560         (JSC::JIT::compileOpCallVarargs):
24561         (JSC::JIT::compileOpCallVarargsSlowCase):
24562         (JSC::JIT::compileOpCall):
24563         (JSC::JIT::compileOpCallSlowCase):
24564         * jit/JITInlineMethods.h:
24565         * jit/JITOpcodes.cpp:
24566         (JSC::JIT::privateCompileCTIMachineTrampolines):
24567         * jit/JITOpcodes32_64.cpp:
24568         (JSC::JIT::privateCompileCTIMachineTrampolines):
24569         * jit/JITStubs.cpp:
24570         (JSC::DEFINE_STUB_FUNCTION):
24571         * jit/JITStubs.h:
24572         (JSC::):
24573
24574 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
24575
24576         Reviewed by Sam Weinig.
24577         Relanding r60075.
24578
24579         * bytecode/CodeBlock.cpp:
24580         (JSC::CodeBlock::dump):
24581         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
24582         * bytecode/CodeBlock.h:
24583         * bytecode/Opcode.h:
24584         * bytecompiler/BytecodeGenerator.cpp:
24585         (JSC::BytecodeGenerator::BytecodeGenerator):
24586         (JSC::BytecodeGenerator::emitConstruct):
24587         * bytecompiler/BytecodeGenerator.h:
24588         (JSC::BytecodeGenerator::emitGetByIdExceptionInfo):
24589         * interpreter/Interpreter.cpp:
24590         (JSC::Interpreter::privateExecute):
24591         * jit/JIT.cpp:
24592         (JSC::JIT::privateCompileMainPass):
24593         * jit/JIT.h:
24594         * jit/JITCall.cpp:
24595         (JSC::JIT::compileOpCall):
24596         (JSC::JIT::compileOpCallSlowCase):
24597         * jit/JITCall32_64.cpp:
24598         (JSC::JIT::compileOpCall):
24599         (JSC::JIT::compileOpCallSlowCase):
24600         * jit/JITOpcodes.cpp:
24601         (JSC::JIT::privateCompileCTIMachineTrampolines):
24602         (JSC::JIT::privateCompileCTINativeCall):
24603         (JSC::JIT::emit_op_neq_null):
24604         (JSC::JIT::emit_op_convert_this):
24605         (JSC::JIT::emit_op_get_callee):
24606         (JSC::JIT::emit_op_create_this):
24607         * jit/JITOpcodes32_64.cpp:
24608         (JSC::JIT::privateCompileCTIMachineTrampolines):
24609         (JSC::JIT::privateCompileCTINativeCall):
24610         (JSC::JIT::emit_op_get_callee):
24611         (JSC::JIT::emit_op_create_this):
24612         * jit/JITStubs.cpp:
24613         (JSC::DEFINE_STUB_FUNCTION):
24614         (JSC::JITThunks::hostFunctionStub):
24615         * jit/JITStubs.h:
24616         (JSC::JITThunks::ctiNativeConstruct):
24617         (JSC::):
24618         * runtime/ExceptionHelpers.cpp:
24619         (JSC::createNotAnObjectError):
24620         * runtime/Executable.h:
24621         (JSC::NativeExecutable::create):
24622         (JSC::NativeExecutable::NativeExecutable):
24623         * runtime/JSFunction.cpp:
24624         (JSC::callHostFunctionAsConstructor):
24625         * runtime/JSFunction.h:
24626         * wtf/Platform.h:
24627
24628 == Rolled over to ChangeLog-2010-05-24 ==