Part 2 for <rdar://problem/8492788>
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-02-01  Sam Weinig  <sam@webkit.org>
2
3         Reviewed by Beth Dakin.
4
5         Part 2 for <rdar://problem/8492788>
6         Adopt WKScrollbarPainterController
7
8         Use header detection to define scrollbar painting controller #define.
9
10         * DerivedSources.make:
11         * JavaScriptCore.xcodeproj/project.pbxproj:
12
13 2011-02-01  Geoffrey Garen  <ggaren@apple.com>
14
15         Reviewed by Oliver Hunt.
16
17         REGRESSION(77082): GC-related crashes seen: on WebKit2 bot; on GTK 32bit
18         bot; loading trac pages; typing in search field
19         https://bugs.webkit.org/show_bug.cgi?id=53519
20         
21         The crashes were all caused by failure to run an object's destructor.
22
23         * runtime/CollectorHeapIterator.h:
24         (JSC::ObjectIterator::ObjectIterator): Don't skip forward upon
25         construction. The iterator class used to do that when it was designed
26         for prior-to-beginning initialization. I forgot to remove this line
27         of code when I changed the iterator to normal initialization.
28         
29         Skipping forward upon construction was causing the heap to skip running
30         the destructor for the very first object in a block when destroying the
31         block. This usually did not crash, since block destruction is rare and
32         most objects have pretty trivial destructors. However, in the rare case
33         when the heap would destroy a block whose first object was a global
34         object or a DOM node, BOOM.
35
36 2011-01-31  Oliver Hunt  <oliver@apple.com>
37
38         Reviewed by Geoffrey Garen.
39
40         Update JSObject storage for new marking API
41         https://bugs.webkit.org/show_bug.cgi?id=53467
42
43         JSObject no longer uses EncodedJSValue for its property storage.
44         This produces a stream of mechanical changes to PropertySlot and
45         anonymous storage APIs.
46
47         * JavaScriptCore.exp:
48         * runtime/ArrayPrototype.cpp:
49         (JSC::ArrayPrototype::ArrayPrototype):
50         * runtime/BooleanConstructor.cpp:
51         (JSC::constructBoolean):
52         (JSC::constructBooleanFromImmediateBoolean):
53         * runtime/BooleanObject.cpp:
54         (JSC::BooleanObject::BooleanObject):
55         * runtime/BooleanObject.h:
56         * runtime/BooleanPrototype.cpp:
57         (JSC::BooleanPrototype::BooleanPrototype):
58         * runtime/DateInstance.cpp:
59         (JSC::DateInstance::DateInstance):
60         * runtime/DatePrototype.cpp:
61         (JSC::DatePrototype::DatePrototype):
62         * runtime/JSActivation.cpp:
63         (JSC::JSActivation::getOwnPropertySlot):
64         * runtime/JSArray.cpp:
65         (JSC::JSArray::getOwnPropertySlot):
66         * runtime/JSFunction.cpp:
67         (JSC::JSFunction::getOwnPropertySlot):
68         * runtime/JSGlobalObject.h:
69         (JSC::JSGlobalObject::JSGlobalObject):
70         * runtime/JSObject.cpp:
71         (JSC::JSObject::fillGetterPropertySlot):
72         * runtime/JSObject.h:
73         (JSC::JSObject::getDirectLocation):
74         (JSC::JSObject::offsetForLocation):
75         (JSC::JSObject::putAnonymousValue):
76         (JSC::JSObject::clearAnonymousValue):
77         (JSC::JSObject::getAnonymousValue):
78         (JSC::JSObject::putThisToAnonymousValue):
79         (JSC::JSObject::locationForOffset):
80         (JSC::JSObject::inlineGetOwnPropertySlot):
81         * runtime/JSObjectWithGlobalObject.cpp:
82         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
83         * runtime/JSWrapperObject.h:
84         (JSC::JSWrapperObject::JSWrapperObject):
85         (JSC::JSWrapperObject::setInternalValue):
86         * runtime/Lookup.cpp:
87         (JSC::setUpStaticFunctionSlot):
88         * runtime/NumberConstructor.cpp:
89         (JSC::constructWithNumberConstructor):
90         * runtime/NumberObject.cpp:
91         (JSC::NumberObject::NumberObject):
92         (JSC::constructNumber):
93         * runtime/NumberObject.h:
94         * runtime/NumberPrototype.cpp:
95         (JSC::NumberPrototype::NumberPrototype):
96         * runtime/PropertySlot.h:
97         (JSC::PropertySlot::getValue):
98         (JSC::PropertySlot::setValue):
99         (JSC::PropertySlot::setRegisterSlot):
100         * runtime/StringObject.cpp:
101         (JSC::StringObject::StringObject):
102         * runtime/StringPrototype.cpp:
103         (JSC::StringPrototype::StringPrototype):
104         * runtime/WriteBarrier.h:
105         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
106
107 2011-02-01  Daniel Bates  <dbates@rim.com>
108
109         Reviewed by Antonio Gomes.
110
111         Modify RandomNumberSeed.h to use USE(MERSENNE_TWISTER_19937)
112         https://bugs.webkit.org/show_bug.cgi?id=53506
113
114         Currently, use of the Mersenne Twister pseudorandom number generator
115         is hardcoded to the Windows CE port. With the passing of bug #53253,
116         we can generalize support for this PRNG to all ports that use srand(3)
117         and rand(3), including Windows CE.
118
119         * wtf/RandomNumberSeed.h:
120         (WTF::initializeRandomNumberGenerator):
121
122 2011-02-01  Dave Tapuska  <dtapuska@rim.com>
123
124         Reviewed by Gavin Barraclough.
125
126         MacroAssemblerARM would generate code that did 32bit loads
127         on addresses that were not aligned. More specifically it would
128         generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower.
129         The intended instruction really is ldrb r8,[r1, #7]; ensure we
130         call load8 instead of load32.
131
132         https://bugs.webkit.org/show_bug.cgi?id=46095
133
134         * assembler/MacroAssemblerARM.h:
135         (JSC::MacroAssemblerARM::set32Test32):
136         (JSC::MacroAssemblerARM::set32Test8):
137
138 2011-02-01  Darin Fisher  <darin@chromium.org>
139
140         Reviewed by Eric Seidel.
141
142         Fix some Visual Studio compiler warnings.
143         https://bugs.webkit.org/show_bug.cgi?id=53476
144
145         * wtf/MathExtras.h:
146         (clampToInteger):
147         (clampToPositiveInteger):
148         * wtf/ThreadingWin.cpp:
149         (WTF::absoluteTimeToWaitTimeoutInterval):
150
151 2011-01-31  Oliver Hunt  <oliver@apple.com>
152
153         Reviewed by Sam Weinig.
154
155         Bogus callframe during stack unwinding
156         https://bugs.webkit.org/show_bug.cgi?id=53454
157
158         Trying to access a callframe's globalData after destroying its
159         ScopeChain is not a good thing.  While we could access the
160         globalData directly through the (known valid) scopechain we're
161         holding on to, it feels fragile.  Instead we push the valid
162         ScopeChain onto the callframe again to ensure that the callframe
163         itself remains valid.
164
165         * interpreter/Interpreter.cpp:
166         (JSC::Interpreter::unwindCallFrame):
167
168 2011-01-31  Michael Saboff  <msaboff@apple.com>
169
170         Reviewed by Geoffrey Garen.
171
172         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
173         https://bugs.webkit.org/show_bug.cgi?id=53271
174
175         Reapplying this change again.
176         Changed isValid() to use .get() as a result of change r77151.
177
178         Added new isValid() methods to check if a contained object in
179         a WeakGCMap is valid when using an unchecked iterator.
180
181         * runtime/WeakGCMap.h:
182         (JSC::WeakGCMap::isValid):
183
184 2011-01-31  Oliver Hunt  <oliver@apple.com>
185
186         Convert markstack to a slot visitor API
187         https://bugs.webkit.org/show_bug.cgi?id=53219
188
189         rolling r77098, r77099, r77100, r77109, and
190         r77111 back in, along with a few more Qt fix attempts.
191
192         * API/JSCallbackObject.h:
193         (JSC::JSCallbackObjectData::setPrivateProperty):
194         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
195         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
196         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
197         (JSC::JSCallbackObject::setPrivateProperty):
198         * API/JSCallbackObjectFunctions.h:
199         (JSC::::put):
200         (JSC::::staticFunctionGetter):
201         * API/JSObjectRef.cpp:
202         (JSObjectMakeConstructor):
203         (JSObjectSetPrivateProperty):
204         * API/JSWeakObjectMapRefInternal.h:
205         * JavaScriptCore.exp:
206         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
207         * JavaScriptCore.xcodeproj/project.pbxproj:
208         * bytecode/CodeBlock.cpp:
209         (JSC::CodeBlock::markAggregate):
210         * bytecode/CodeBlock.h:
211         (JSC::CodeBlock::globalObject):
212         * bytecompiler/BytecodeGenerator.cpp:
213         (JSC::BytecodeGenerator::BytecodeGenerator):
214         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
215         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
216         (JSC::BytecodeGenerator::findScopedProperty):
217         * debugger/Debugger.cpp:
218         (JSC::evaluateInGlobalCallFrame):
219         * debugger/DebuggerActivation.cpp:
220         (JSC::DebuggerActivation::DebuggerActivation):
221         (JSC::DebuggerActivation::markChildren):
222         * debugger/DebuggerActivation.h:
223         * debugger/DebuggerCallFrame.cpp:
224         (JSC::DebuggerCallFrame::evaluate):
225         * interpreter/CallFrame.h:
226         (JSC::ExecState::exception):
227         * interpreter/Interpreter.cpp:
228         (JSC::Interpreter::resolve):
229         (JSC::Interpreter::resolveSkip):
230         (JSC::Interpreter::resolveGlobal):
231         (JSC::Interpreter::resolveGlobalDynamic):
232         (JSC::Interpreter::resolveBaseAndProperty):
233         (JSC::Interpreter::unwindCallFrame):
234         (JSC::appendSourceToError):
235         (JSC::Interpreter::execute):
236         (JSC::Interpreter::tryCacheGetByID):
237         (JSC::Interpreter::privateExecute):
238         * jit/JITStubs.cpp:
239         (JSC::JITThunks::tryCacheGetByID):
240         (JSC::DEFINE_STUB_FUNCTION):
241         * jsc.cpp:
242         (GlobalObject::GlobalObject):
243         * runtime/ArgList.cpp:
244         (JSC::MarkedArgumentBuffer::markLists):
245         * runtime/Arguments.cpp:
246         (JSC::Arguments::markChildren):
247         (JSC::Arguments::getOwnPropertySlot):
248         (JSC::Arguments::getOwnPropertyDescriptor):
249         (JSC::Arguments::put):
250         * runtime/Arguments.h:
251         (JSC::Arguments::setActivation):
252         (JSC::Arguments::Arguments):
253         * runtime/ArrayConstructor.cpp:
254         (JSC::ArrayConstructor::ArrayConstructor):
255         (JSC::constructArrayWithSizeQuirk):
256         * runtime/ArrayPrototype.cpp:
257         (JSC::arrayProtoFuncSplice):
258         * runtime/BatchedTransitionOptimizer.h:
259         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
260         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
261         * runtime/BooleanConstructor.cpp:
262         (JSC::BooleanConstructor::BooleanConstructor):
263         (JSC::constructBoolean):
264         (JSC::constructBooleanFromImmediateBoolean):
265         * runtime/BooleanPrototype.cpp:
266         (JSC::BooleanPrototype::BooleanPrototype):
267         * runtime/ConservativeSet.cpp:
268         (JSC::ConservativeSet::grow):
269         * runtime/ConservativeSet.h:
270         (JSC::ConservativeSet::~ConservativeSet):
271         (JSC::ConservativeSet::mark):
272         * runtime/DateConstructor.cpp:
273         (JSC::DateConstructor::DateConstructor):
274         * runtime/DateInstance.cpp:
275         (JSC::DateInstance::DateInstance):
276         * runtime/DatePrototype.cpp:
277         (JSC::dateProtoFuncSetTime):
278         (JSC::setNewValueFromTimeArgs):
279         (JSC::setNewValueFromDateArgs):
280         (JSC::dateProtoFuncSetYear):
281         * runtime/ErrorConstructor.cpp:
282         (JSC::ErrorConstructor::ErrorConstructor):
283         * runtime/ErrorInstance.cpp:
284         (JSC::ErrorInstance::ErrorInstance):
285         * runtime/ErrorPrototype.cpp:
286         (JSC::ErrorPrototype::ErrorPrototype):
287         * runtime/FunctionConstructor.cpp:
288         (JSC::FunctionConstructor::FunctionConstructor):
289         * runtime/FunctionPrototype.cpp:
290         (JSC::FunctionPrototype::FunctionPrototype):
291         * runtime/GetterSetter.cpp:
292         (JSC::GetterSetter::markChildren):
293         * runtime/GetterSetter.h:
294         (JSC::GetterSetter::GetterSetter):
295         (JSC::GetterSetter::getter):
296         (JSC::GetterSetter::setGetter):
297         (JSC::GetterSetter::setter):
298         (JSC::GetterSetter::setSetter):
299         * runtime/GlobalEvalFunction.cpp:
300         (JSC::GlobalEvalFunction::GlobalEvalFunction):
301         (JSC::GlobalEvalFunction::markChildren):
302         * runtime/GlobalEvalFunction.h:
303         (JSC::GlobalEvalFunction::cachedGlobalObject):
304         * runtime/Heap.cpp:
305         (JSC::Heap::markProtectedObjects):
306         (JSC::Heap::markTempSortVectors):
307         (JSC::Heap::markRoots):
308         * runtime/InternalFunction.cpp:
309         (JSC::InternalFunction::InternalFunction):
310         * runtime/JSAPIValueWrapper.h:
311         (JSC::JSAPIValueWrapper::value):
312         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
313         * runtime/JSActivation.cpp:
314         (JSC::JSActivation::markChildren):
315         (JSC::JSActivation::put):
316         * runtime/JSArray.cpp:
317         (JSC::JSArray::JSArray):
318         (JSC::JSArray::getOwnPropertySlot):
319         (JSC::JSArray::getOwnPropertyDescriptor):
320         (JSC::JSArray::put):
321         (JSC::JSArray::putSlowCase):
322         (JSC::JSArray::deleteProperty):
323         (JSC::JSArray::increaseVectorLength):
324         (JSC::JSArray::setLength):
325         (JSC::JSArray::pop):
326         (JSC::JSArray::push):
327         (JSC::JSArray::unshiftCount):
328         (JSC::JSArray::sort):
329         (JSC::JSArray::fillArgList):
330         (JSC::JSArray::copyToRegisters):
331         (JSC::JSArray::compactForSorting):
332         * runtime/JSArray.h:
333         (JSC::JSArray::getIndex):
334         (JSC::JSArray::setIndex):
335         (JSC::JSArray::uncheckedSetIndex):
336         (JSC::JSArray::markChildrenDirect):
337         * runtime/JSByteArray.cpp:
338         (JSC::JSByteArray::JSByteArray):
339         * runtime/JSCell.h:
340         (JSC::JSCell::MarkStack::append):
341         (JSC::JSCell::MarkStack::internalAppend):
342         (JSC::JSCell::MarkStack::deprecatedAppend):
343         * runtime/JSFunction.cpp:
344         (JSC::JSFunction::JSFunction):
345         (JSC::JSFunction::getOwnPropertySlot):
346         * runtime/JSGlobalData.h:
347         * runtime/JSGlobalObject.cpp:
348         (JSC::markIfNeeded):
349         (JSC::JSGlobalObject::reset):
350         (JSC::JSGlobalObject::resetPrototype):
351         (JSC::JSGlobalObject::markChildren):
352         * runtime/JSGlobalObject.h:
353         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
354         (JSC::JSGlobalObject::regExpConstructor):
355         (JSC::JSGlobalObject::errorConstructor):
356         (JSC::JSGlobalObject::evalErrorConstructor):
357         (JSC::JSGlobalObject::rangeErrorConstructor):
358         (JSC::JSGlobalObject::referenceErrorConstructor):
359         (JSC::JSGlobalObject::syntaxErrorConstructor):
360         (JSC::JSGlobalObject::typeErrorConstructor):
361         (JSC::JSGlobalObject::URIErrorConstructor):
362         (JSC::JSGlobalObject::evalFunction):
363         (JSC::JSGlobalObject::objectPrototype):
364         (JSC::JSGlobalObject::functionPrototype):
365         (JSC::JSGlobalObject::arrayPrototype):
366         (JSC::JSGlobalObject::booleanPrototype):
367         (JSC::JSGlobalObject::stringPrototype):
368         (JSC::JSGlobalObject::numberPrototype):
369         (JSC::JSGlobalObject::datePrototype):
370         (JSC::JSGlobalObject::regExpPrototype):
371         (JSC::JSGlobalObject::methodCallDummy):
372         (JSC::Structure::prototypeForLookup):
373         (JSC::constructArray):
374         * runtime/JSONObject.cpp:
375         (JSC::Stringifier::Holder::object):
376         (JSC::Stringifier::Holder::objectSlot):
377         (JSC::Stringifier::markAggregate):
378         (JSC::Stringifier::stringify):
379         (JSC::Stringifier::Holder::appendNextProperty):
380         (JSC::Walker::callReviver):
381         (JSC::Walker::walk):
382         * runtime/JSObject.cpp:
383         (JSC::JSObject::defineGetter):
384         (JSC::JSObject::defineSetter):
385         (JSC::JSObject::removeDirect):
386         (JSC::JSObject::putDirectFunction):
387         (JSC::JSObject::putDirectFunctionWithoutTransition):
388         (JSC::putDescriptor):
389         (JSC::JSObject::defineOwnProperty):
390         * runtime/JSObject.h:
391         (JSC::JSObject::getDirectOffset):
392         (JSC::JSObject::putDirectOffset):
393         (JSC::JSObject::putUndefinedAtDirectOffset):
394         (JSC::JSObject::flattenDictionaryObject):
395         (JSC::JSObject::putDirectInternal):
396         (JSC::JSObject::putDirect):
397         (JSC::JSObject::putDirectFunction):
398         (JSC::JSObject::putDirectWithoutTransition):
399         (JSC::JSObject::putDirectFunctionWithoutTransition):
400         (JSC::JSValue::putDirect):
401         (JSC::JSObject::allocatePropertyStorageInline):
402         (JSC::JSObject::markChildrenDirect):
403         * runtime/JSPropertyNameIterator.cpp:
404         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
405         (JSC::JSPropertyNameIterator::get):
406         * runtime/JSPropertyNameIterator.h:
407         * runtime/JSStaticScopeObject.cpp:
408         (JSC::JSStaticScopeObject::markChildren):
409         * runtime/JSString.cpp:
410         (JSC::StringObject::create):
411         * runtime/JSValue.h:
412         * runtime/JSWrapperObject.cpp:
413         (JSC::JSWrapperObject::markChildren):
414         * runtime/JSWrapperObject.h:
415         (JSC::JSWrapperObject::internalValue):
416         (JSC::JSWrapperObject::setInternalValue):
417         * runtime/LiteralParser.cpp:
418         (JSC::LiteralParser::parse):
419         * runtime/Lookup.cpp:
420         (JSC::setUpStaticFunctionSlot):
421         * runtime/Lookup.h:
422         (JSC::lookupPut):
423         * runtime/MarkStack.h:
424         (JSC::MarkStack::MarkStack):
425         (JSC::MarkStack::deprecatedAppendValues):
426         (JSC::MarkStack::appendValues):
427         * runtime/MathObject.cpp:
428         (JSC::MathObject::MathObject):
429         * runtime/NativeErrorConstructor.cpp:
430         (JSC::NativeErrorConstructor::NativeErrorConstructor):
431         * runtime/NativeErrorPrototype.cpp:
432         (JSC::NativeErrorPrototype::NativeErrorPrototype):
433         * runtime/NumberConstructor.cpp:
434         (JSC::NumberConstructor::NumberConstructor):
435         (JSC::constructWithNumberConstructor):
436         * runtime/NumberObject.cpp:
437         (JSC::constructNumber):
438         * runtime/NumberPrototype.cpp:
439         (JSC::NumberPrototype::NumberPrototype):
440         * runtime/ObjectConstructor.cpp:
441         (JSC::ObjectConstructor::ObjectConstructor):
442         (JSC::objectConstructorGetOwnPropertyDescriptor):
443         * runtime/Operations.h:
444         (JSC::normalizePrototypeChain):
445         (JSC::resolveBase):
446         * runtime/PrototypeFunction.cpp:
447         (JSC::PrototypeFunction::PrototypeFunction):
448         * runtime/PutPropertySlot.h:
449         (JSC::PutPropertySlot::setExistingProperty):
450         (JSC::PutPropertySlot::setNewProperty):
451         (JSC::PutPropertySlot::base):
452         * runtime/RegExpConstructor.cpp:
453         (JSC::RegExpConstructor::RegExpConstructor):
454         * runtime/ScopeChain.cpp:
455         (JSC::ScopeChainNode::print):
456         * runtime/ScopeChain.h:
457         (JSC::ScopeChainNode::~ScopeChainNode):
458         (JSC::ScopeChainIterator::operator*):
459         (JSC::ScopeChainIterator::operator->):
460         (JSC::ScopeChain::top):
461         * runtime/ScopeChainMark.h:
462         (JSC::ScopeChain::markAggregate):
463         * runtime/SmallStrings.cpp:
464         (JSC::isMarked):
465         (JSC::SmallStrings::markChildren):
466         * runtime/SmallStrings.h:
467         (JSC::SmallStrings::emptyString):
468         (JSC::SmallStrings::singleCharacterString):
469         (JSC::SmallStrings::singleCharacterStrings):
470         * runtime/StringConstructor.cpp:
471         (JSC::StringConstructor::StringConstructor):
472         * runtime/StringObject.cpp:
473         (JSC::StringObject::StringObject):
474         * runtime/StringObject.h:
475         * runtime/StringPrototype.cpp:
476         (JSC::StringPrototype::StringPrototype):
477         * runtime/Structure.cpp:
478         (JSC::Structure::Structure):
479         (JSC::Structure::addPropertyTransition):
480         (JSC::Structure::toDictionaryTransition):
481         (JSC::Structure::flattenDictionaryStructure):
482         * runtime/Structure.h:
483         (JSC::Structure::storedPrototype):
484         (JSC::Structure::storedPrototypeSlot):
485         * runtime/WeakGCMap.h:
486         (JSC::WeakGCMap::uncheckedGet):
487         (JSC::WeakGCMap::uncheckedGetSlot):
488         (JSC::::get):
489         (JSC::::take):
490         (JSC::::set):
491         (JSC::::uncheckedRemove):
492         * runtime/WriteBarrier.h: Added.
493         (JSC::DeprecatedPtr::DeprecatedPtr):
494         (JSC::DeprecatedPtr::get):
495         (JSC::DeprecatedPtr::operator*):
496         (JSC::DeprecatedPtr::operator->):
497         (JSC::DeprecatedPtr::slot):
498         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
499         (JSC::DeprecatedPtr::operator!):
500         (JSC::WriteBarrierBase::set):
501         (JSC::WriteBarrierBase::get):
502         (JSC::WriteBarrierBase::operator*):
503         (JSC::WriteBarrierBase::operator->):
504         (JSC::WriteBarrierBase::clear):
505         (JSC::WriteBarrierBase::slot):
506         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
507         (JSC::WriteBarrierBase::operator!):
508         (JSC::WriteBarrier::WriteBarrier):
509         (JSC::operator==):
510
511 2011-01-31  Dan Winship  <danw@gnome.org>
512
513         Reviewed by Gustavo Noronha Silva.
514
515         wss (websockets ssl) support for gtk via new gio TLS support
516         https://bugs.webkit.org/show_bug.cgi?id=50344
517
518         Add a GPollableOutputStream typedef for TLS WebSockets support
519
520         * wtf/gobject/GTypedefs.h:
521
522 2011-01-31  Gavin Barraclough  <barraclough@apple.com>
523
524         Reviewed by Geoff Garen.
525
526         https://bugs.webkit.org/show_bug.cgi?id=53352
527         Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
528
529         The FixedVMPoolAllocator currently uses a best fix policy -
530         switch to first fit, this is less prone to external fragmentation.
531
532         * jit/ExecutableAllocatorFixedVMPool.cpp:
533         (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
534         (JSC::AllocationTableSizeClass::blockSize):
535         (JSC::AllocationTableSizeClass::blockCount):
536         (JSC::AllocationTableSizeClass::blockAlignment):
537         (JSC::AllocationTableSizeClass::size):
538         (JSC::AllocationTableLeaf::AllocationTableLeaf):
539         (JSC::AllocationTableLeaf::~AllocationTableLeaf):
540         (JSC::AllocationTableLeaf::allocate):
541         (JSC::AllocationTableLeaf::free):
542         (JSC::AllocationTableLeaf::isEmpty):
543         (JSC::AllocationTableLeaf::isFull):
544         (JSC::AllocationTableLeaf::size):
545         (JSC::AllocationTableLeaf::classForSize):
546         (JSC::AllocationTableLeaf::dump):
547         (JSC::LazyAllocationTable::LazyAllocationTable):
548         (JSC::LazyAllocationTable::~LazyAllocationTable):
549         (JSC::LazyAllocationTable::allocate):
550         (JSC::LazyAllocationTable::free):
551         (JSC::LazyAllocationTable::isEmpty):
552         (JSC::LazyAllocationTable::isFull):
553         (JSC::LazyAllocationTable::size):
554         (JSC::LazyAllocationTable::dump):
555         (JSC::LazyAllocationTable::classForSize):
556         (JSC::AllocationTableDirectory::AllocationTableDirectory):
557         (JSC::AllocationTableDirectory::~AllocationTableDirectory):
558         (JSC::AllocationTableDirectory::allocate):
559         (JSC::AllocationTableDirectory::free):
560         (JSC::AllocationTableDirectory::isEmpty):
561         (JSC::AllocationTableDirectory::isFull):
562         (JSC::AllocationTableDirectory::size):
563         (JSC::AllocationTableDirectory::classForSize):
564         (JSC::AllocationTableDirectory::dump):
565         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
566         (JSC::FixedVMPoolAllocator::alloc):
567         (JSC::FixedVMPoolAllocator::free):
568         (JSC::FixedVMPoolAllocator::allocated):
569         (JSC::FixedVMPoolAllocator::isValid):
570         (JSC::FixedVMPoolAllocator::classForSize):
571         (JSC::FixedVMPoolAllocator::offsetToPointer):
572         (JSC::FixedVMPoolAllocator::pointerToOffset):
573         (JSC::ExecutableAllocator::committedByteCount):
574         (JSC::ExecutableAllocator::isValid):
575         (JSC::ExecutableAllocator::underMemoryPressure):
576         (JSC::ExecutablePool::systemAlloc):
577         (JSC::ExecutablePool::systemRelease):
578         * wtf/PageReservation.h:
579         (WTF::PageReservation::PageReservation):
580         (WTF::PageReservation::commit):
581         (WTF::PageReservation::decommit):
582         (WTF::PageReservation::committed):
583
584 2011-01-31  Sheriff Bot  <webkit.review.bot@gmail.com>
585
586         Unreviewed, rolling out r76969.
587         http://trac.webkit.org/changeset/76969
588         https://bugs.webkit.org/show_bug.cgi?id=53418
589
590         "It is causing crashes in GTK+ and Leopard bots" (Requested by
591         alexg__ on #webkit).
592
593         * runtime/WeakGCMap.h:
594
595 2011-01-30  Csaba Osztrogonác  <ossy@webkit.org>
596
597         Unreviewed, rolling out r77098, r77099, r77100, r77109, and
598         r77111.
599         http://trac.webkit.org/changeset/77098
600         http://trac.webkit.org/changeset/77099
601         http://trac.webkit.org/changeset/77100
602         http://trac.webkit.org/changeset/77109
603         http://trac.webkit.org/changeset/77111
604         https://bugs.webkit.org/show_bug.cgi?id=53219
605
606         Qt build is broken
607
608         * API/JSCallbackObject.h:
609         (JSC::JSCallbackObjectData::setPrivateProperty):
610         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
611         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
612         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
613         (JSC::JSCallbackObject::setPrivateProperty):
614         * API/JSCallbackObjectFunctions.h:
615         (JSC::::put):
616         (JSC::::staticFunctionGetter):
617         * API/JSObjectRef.cpp:
618         (JSObjectMakeConstructor):
619         (JSObjectSetPrivateProperty):
620         * API/JSWeakObjectMapRefInternal.h:
621         * JavaScriptCore.exp:
622         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
623         * JavaScriptCore.xcodeproj/project.pbxproj:
624         * bytecode/CodeBlock.cpp:
625         (JSC::CodeBlock::markAggregate):
626         * bytecode/CodeBlock.h:
627         (JSC::CodeBlock::globalObject):
628         * bytecompiler/BytecodeGenerator.cpp:
629         (JSC::BytecodeGenerator::BytecodeGenerator):
630         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
631         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
632         (JSC::BytecodeGenerator::findScopedProperty):
633         * debugger/Debugger.cpp:
634         (JSC::evaluateInGlobalCallFrame):
635         * debugger/DebuggerActivation.cpp:
636         (JSC::DebuggerActivation::DebuggerActivation):
637         (JSC::DebuggerActivation::markChildren):
638         * debugger/DebuggerActivation.h:
639         * debugger/DebuggerCallFrame.cpp:
640         (JSC::DebuggerCallFrame::evaluate):
641         * interpreter/CallFrame.h:
642         (JSC::ExecState::exception):
643         * interpreter/Interpreter.cpp:
644         (JSC::Interpreter::resolve):
645         (JSC::Interpreter::resolveSkip):
646         (JSC::Interpreter::resolveGlobal):
647         (JSC::Interpreter::resolveGlobalDynamic):
648         (JSC::Interpreter::resolveBaseAndProperty):
649         (JSC::Interpreter::unwindCallFrame):
650         (JSC::appendSourceToError):
651         (JSC::Interpreter::execute):
652         (JSC::Interpreter::tryCacheGetByID):
653         (JSC::Interpreter::privateExecute):
654         * jit/JITStubs.cpp:
655         (JSC::JITThunks::tryCacheGetByID):
656         (JSC::DEFINE_STUB_FUNCTION):
657         * jsc.cpp:
658         (GlobalObject::GlobalObject):
659         * runtime/ArgList.cpp:
660         (JSC::MarkedArgumentBuffer::markLists):
661         * runtime/Arguments.cpp:
662         (JSC::Arguments::markChildren):
663         (JSC::Arguments::getOwnPropertySlot):
664         (JSC::Arguments::getOwnPropertyDescriptor):
665         (JSC::Arguments::put):
666         * runtime/Arguments.h:
667         (JSC::Arguments::setActivation):
668         (JSC::Arguments::Arguments):
669         * runtime/ArrayConstructor.cpp:
670         (JSC::ArrayConstructor::ArrayConstructor):
671         (JSC::constructArrayWithSizeQuirk):
672         * runtime/ArrayPrototype.cpp:
673         (JSC::arrayProtoFuncSplice):
674         * runtime/BatchedTransitionOptimizer.h:
675         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
676         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
677         * runtime/BooleanConstructor.cpp:
678         (JSC::BooleanConstructor::BooleanConstructor):
679         (JSC::constructBoolean):
680         (JSC::constructBooleanFromImmediateBoolean):
681         * runtime/BooleanPrototype.cpp:
682         (JSC::BooleanPrototype::BooleanPrototype):
683         * runtime/ConservativeSet.cpp:
684         (JSC::ConservativeSet::grow):
685         * runtime/ConservativeSet.h:
686         (JSC::ConservativeSet::~ConservativeSet):
687         (JSC::ConservativeSet::mark):
688         * runtime/DateConstructor.cpp:
689         (JSC::DateConstructor::DateConstructor):
690         * runtime/DateInstance.cpp:
691         (JSC::DateInstance::DateInstance):
692         * runtime/DatePrototype.cpp:
693         (JSC::dateProtoFuncSetTime):
694         (JSC::setNewValueFromTimeArgs):
695         (JSC::setNewValueFromDateArgs):
696         (JSC::dateProtoFuncSetYear):
697         * runtime/ErrorConstructor.cpp:
698         (JSC::ErrorConstructor::ErrorConstructor):
699         * runtime/ErrorInstance.cpp:
700         (JSC::ErrorInstance::ErrorInstance):
701         * runtime/ErrorPrototype.cpp:
702         (JSC::ErrorPrototype::ErrorPrototype):
703         * runtime/FunctionConstructor.cpp:
704         (JSC::FunctionConstructor::FunctionConstructor):
705         * runtime/FunctionPrototype.cpp:
706         (JSC::FunctionPrototype::FunctionPrototype):
707         * runtime/GetterSetter.cpp:
708         (JSC::GetterSetter::markChildren):
709         * runtime/GetterSetter.h:
710         (JSC::GetterSetter::GetterSetter):
711         (JSC::GetterSetter::getter):
712         (JSC::GetterSetter::setGetter):
713         (JSC::GetterSetter::setter):
714         (JSC::GetterSetter::setSetter):
715         * runtime/GlobalEvalFunction.cpp:
716         (JSC::GlobalEvalFunction::GlobalEvalFunction):
717         (JSC::GlobalEvalFunction::markChildren):
718         * runtime/GlobalEvalFunction.h:
719         (JSC::GlobalEvalFunction::cachedGlobalObject):
720         * runtime/Heap.cpp:
721         (JSC::Heap::markProtectedObjects):
722         (JSC::Heap::markTempSortVectors):
723         (JSC::Heap::markRoots):
724         * runtime/InternalFunction.cpp:
725         (JSC::InternalFunction::InternalFunction):
726         * runtime/JSAPIValueWrapper.h:
727         (JSC::JSAPIValueWrapper::value):
728         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
729         * runtime/JSActivation.cpp:
730         (JSC::JSActivation::markChildren):
731         (JSC::JSActivation::put):
732         * runtime/JSArray.cpp:
733         (JSC::JSArray::JSArray):
734         (JSC::JSArray::getOwnPropertySlot):
735         (JSC::JSArray::getOwnPropertyDescriptor):
736         (JSC::JSArray::put):
737         (JSC::JSArray::putSlowCase):
738         (JSC::JSArray::deleteProperty):
739         (JSC::JSArray::increaseVectorLength):
740         (JSC::JSArray::setLength):
741         (JSC::JSArray::pop):
742         (JSC::JSArray::push):
743         (JSC::JSArray::unshiftCount):
744         (JSC::JSArray::sort):
745         (JSC::JSArray::fillArgList):
746         (JSC::JSArray::copyToRegisters):
747         (JSC::JSArray::compactForSorting):
748         * runtime/JSArray.h:
749         (JSC::JSArray::getIndex):
750         (JSC::JSArray::setIndex):
751         (JSC::JSArray::uncheckedSetIndex):
752         (JSC::JSArray::markChildrenDirect):
753         * runtime/JSByteArray.cpp:
754         (JSC::JSByteArray::JSByteArray):
755         * runtime/JSCell.h:
756         (JSC::JSCell::JSValue::toThisObject):
757         (JSC::JSCell::MarkStack::append):
758         * runtime/JSFunction.cpp:
759         (JSC::JSFunction::JSFunction):
760         (JSC::JSFunction::getOwnPropertySlot):
761         * runtime/JSGlobalData.h:
762         * runtime/JSGlobalObject.cpp:
763         (JSC::markIfNeeded):
764         (JSC::JSGlobalObject::reset):
765         (JSC::JSGlobalObject::resetPrototype):
766         (JSC::JSGlobalObject::markChildren):
767         * runtime/JSGlobalObject.h:
768         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
769         (JSC::JSGlobalObject::regExpConstructor):
770         (JSC::JSGlobalObject::errorConstructor):
771         (JSC::JSGlobalObject::evalErrorConstructor):
772         (JSC::JSGlobalObject::rangeErrorConstructor):
773         (JSC::JSGlobalObject::referenceErrorConstructor):
774         (JSC::JSGlobalObject::syntaxErrorConstructor):
775         (JSC::JSGlobalObject::typeErrorConstructor):
776         (JSC::JSGlobalObject::URIErrorConstructor):
777         (JSC::JSGlobalObject::evalFunction):
778         (JSC::JSGlobalObject::objectPrototype):
779         (JSC::JSGlobalObject::functionPrototype):
780         (JSC::JSGlobalObject::arrayPrototype):
781         (JSC::JSGlobalObject::booleanPrototype):
782         (JSC::JSGlobalObject::stringPrototype):
783         (JSC::JSGlobalObject::numberPrototype):
784         (JSC::JSGlobalObject::datePrototype):
785         (JSC::JSGlobalObject::regExpPrototype):
786         (JSC::JSGlobalObject::methodCallDummy):
787         (JSC::Structure::prototypeForLookup):
788         (JSC::constructArray):
789         * runtime/JSONObject.cpp:
790         (JSC::Stringifier::Holder::object):
791         (JSC::Stringifier::markAggregate):
792         (JSC::Stringifier::stringify):
793         (JSC::Stringifier::Holder::appendNextProperty):
794         (JSC::Walker::callReviver):
795         (JSC::Walker::walk):
796         * runtime/JSObject.cpp:
797         (JSC::JSObject::defineGetter):
798         (JSC::JSObject::defineSetter):
799         (JSC::JSObject::removeDirect):
800         (JSC::JSObject::putDirectFunction):
801         (JSC::JSObject::putDirectFunctionWithoutTransition):
802         (JSC::putDescriptor):
803         (JSC::JSObject::defineOwnProperty):
804         * runtime/JSObject.h:
805         (JSC::JSObject::getDirectOffset):
806         (JSC::JSObject::putDirectOffset):
807         (JSC::JSObject::flattenDictionaryObject):
808         (JSC::JSObject::putDirectInternal):
809         (JSC::JSObject::putDirect):
810         (JSC::JSObject::putDirectFunction):
811         (JSC::JSObject::putDirectWithoutTransition):
812         (JSC::JSObject::putDirectFunctionWithoutTransition):
813         (JSC::JSValue::putDirect):
814         (JSC::JSObject::allocatePropertyStorageInline):
815         (JSC::JSObject::markChildrenDirect):
816         * runtime/JSPropertyNameIterator.cpp:
817         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
818         (JSC::JSPropertyNameIterator::get):
819         * runtime/JSPropertyNameIterator.h:
820         * runtime/JSStaticScopeObject.cpp:
821         (JSC::JSStaticScopeObject::markChildren):
822         * runtime/JSString.cpp:
823         (JSC::StringObject::create):
824         * runtime/JSValue.h:
825         * runtime/JSWrapperObject.cpp:
826         (JSC::JSWrapperObject::markChildren):
827         * runtime/JSWrapperObject.h:
828         (JSC::JSWrapperObject::internalValue):
829         (JSC::JSWrapperObject::setInternalValue):
830         * runtime/LiteralParser.cpp:
831         (JSC::LiteralParser::parse):
832         * runtime/Lookup.cpp:
833         (JSC::setUpStaticFunctionSlot):
834         * runtime/Lookup.h:
835         (JSC::lookupPut):
836         * runtime/MarkStack.h:
837         (JSC::MarkStack::appendValues):
838         * runtime/MathObject.cpp:
839         (JSC::MathObject::MathObject):
840         * runtime/NativeErrorConstructor.cpp:
841         (JSC::NativeErrorConstructor::NativeErrorConstructor):
842         * runtime/NativeErrorPrototype.cpp:
843         (JSC::NativeErrorPrototype::NativeErrorPrototype):
844         * runtime/NumberConstructor.cpp:
845         (JSC::NumberConstructor::NumberConstructor):
846         (JSC::constructWithNumberConstructor):
847         * runtime/NumberObject.cpp:
848         (JSC::constructNumber):
849         * runtime/NumberPrototype.cpp:
850         (JSC::NumberPrototype::NumberPrototype):
851         * runtime/ObjectConstructor.cpp:
852         (JSC::ObjectConstructor::ObjectConstructor):
853         (JSC::objectConstructorGetOwnPropertyDescriptor):
854         * runtime/Operations.h:
855         (JSC::normalizePrototypeChain):
856         (JSC::resolveBase):
857         * runtime/PrototypeFunction.cpp:
858         (JSC::PrototypeFunction::PrototypeFunction):
859         * runtime/PutPropertySlot.h:
860         (JSC::PutPropertySlot::setExistingProperty):
861         (JSC::PutPropertySlot::setNewProperty):
862         (JSC::PutPropertySlot::base):
863         * runtime/RegExpConstructor.cpp:
864         (JSC::RegExpConstructor::RegExpConstructor):
865         * runtime/ScopeChain.cpp:
866         (JSC::ScopeChainNode::print):
867         * runtime/ScopeChain.h:
868         (JSC::ScopeChainNode::~ScopeChainNode):
869         (JSC::ScopeChainIterator::operator*):
870         (JSC::ScopeChainIterator::operator->):
871         (JSC::ScopeChain::top):
872         * runtime/ScopeChainMark.h:
873         (JSC::ScopeChain::markAggregate):
874         * runtime/SmallStrings.cpp:
875         (JSC::isMarked):
876         (JSC::SmallStrings::markChildren):
877         * runtime/SmallStrings.h:
878         (JSC::SmallStrings::emptyString):
879         (JSC::SmallStrings::singleCharacterString):
880         (JSC::SmallStrings::singleCharacterStrings):
881         * runtime/StringConstructor.cpp:
882         (JSC::StringConstructor::StringConstructor):
883         * runtime/StringObject.cpp:
884         (JSC::StringObject::StringObject):
885         * runtime/StringObject.h:
886         * runtime/StringPrototype.cpp:
887         (JSC::StringPrototype::StringPrototype):
888         * runtime/Structure.cpp:
889         (JSC::Structure::Structure):
890         (JSC::Structure::addPropertyTransition):
891         (JSC::Structure::toDictionaryTransition):
892         (JSC::Structure::flattenDictionaryStructure):
893         * runtime/Structure.h:
894         (JSC::Structure::storedPrototype):
895         * runtime/WeakGCMap.h:
896         (JSC::WeakGCMap::uncheckedGet):
897         (JSC::WeakGCMap::isValid):
898         (JSC::::get):
899         (JSC::::take):
900         (JSC::::set):
901         (JSC::::uncheckedRemove):
902         * runtime/WriteBarrier.h: Removed.
903
904 2011-01-30  Simon Fraser  <simon.fraser@apple.com>
905
906         Build fix the build fix. I assume Oliver meant m_cell, not m_value.
907
908         * runtime/WriteBarrier.h:
909         (JSC::WriteBarrierBase::clear):
910
911 2011-01-30  Oliver Hunt  <oliver@apple.com>
912
913         More Qt build fixes
914
915         * runtime/WriteBarrier.h:
916         (JSC::WriteBarrierBase::clear):
917
918 2011-01-30  Oliver Hunt  <oliver@apple.com>
919
920         Convert markstack to a slot visitor API
921         https://bugs.webkit.org/show_bug.cgi?id=53219
922
923         rolling r77006 and r77020 back in.
924
925         * API/JSCallbackObject.h:
926         (JSC::JSCallbackObjectData::setPrivateProperty):
927         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
928         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
929         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
930         (JSC::JSCallbackObject::setPrivateProperty):
931         * API/JSCallbackObjectFunctions.h:
932         (JSC::::put):
933         (JSC::::staticFunctionGetter):
934         * API/JSObjectRef.cpp:
935         (JSObjectMakeConstructor):
936         (JSObjectSetPrivateProperty):
937         * API/JSWeakObjectMapRefInternal.h:
938         * JavaScriptCore.exp:
939         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
940         * JavaScriptCore.xcodeproj/project.pbxproj:
941         * bytecode/CodeBlock.cpp:
942         (JSC::CodeBlock::markAggregate):
943         * bytecode/CodeBlock.h:
944         (JSC::CodeBlock::globalObject):
945         * bytecompiler/BytecodeGenerator.cpp:
946         (JSC::BytecodeGenerator::BytecodeGenerator):
947         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
948         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
949         (JSC::BytecodeGenerator::findScopedProperty):
950         * debugger/Debugger.cpp:
951         (JSC::evaluateInGlobalCallFrame):
952         * debugger/DebuggerActivation.cpp:
953         (JSC::DebuggerActivation::DebuggerActivation):
954         (JSC::DebuggerActivation::markChildren):
955         * debugger/DebuggerActivation.h:
956         * debugger/DebuggerCallFrame.cpp:
957         (JSC::DebuggerCallFrame::evaluate):
958         * interpreter/CallFrame.h:
959         (JSC::ExecState::exception):
960         * interpreter/Interpreter.cpp:
961         (JSC::Interpreter::resolve):
962         (JSC::Interpreter::resolveSkip):
963         (JSC::Interpreter::resolveGlobal):
964         (JSC::Interpreter::resolveGlobalDynamic):
965         (JSC::Interpreter::resolveBaseAndProperty):
966         (JSC::Interpreter::unwindCallFrame):
967         (JSC::appendSourceToError):
968         (JSC::Interpreter::execute):
969         (JSC::Interpreter::tryCacheGetByID):
970         (JSC::Interpreter::privateExecute):
971         * jit/JITStubs.cpp:
972         (JSC::JITThunks::tryCacheGetByID):
973         (JSC::DEFINE_STUB_FUNCTION):
974         * jsc.cpp:
975         (GlobalObject::GlobalObject):
976         * runtime/ArgList.cpp:
977         (JSC::MarkedArgumentBuffer::markLists):
978         * runtime/Arguments.cpp:
979         (JSC::Arguments::markChildren):
980         (JSC::Arguments::getOwnPropertySlot):
981         (JSC::Arguments::getOwnPropertyDescriptor):
982         (JSC::Arguments::put):
983         * runtime/Arguments.h:
984         (JSC::Arguments::setActivation):
985         (JSC::Arguments::Arguments):
986         * runtime/ArrayConstructor.cpp:
987         (JSC::ArrayConstructor::ArrayConstructor):
988         (JSC::constructArrayWithSizeQuirk):
989         * runtime/ArrayPrototype.cpp:
990         (JSC::arrayProtoFuncSplice):
991         * runtime/BatchedTransitionOptimizer.h:
992         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
993         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
994         * runtime/BooleanConstructor.cpp:
995         (JSC::BooleanConstructor::BooleanConstructor):
996         (JSC::constructBoolean):
997         (JSC::constructBooleanFromImmediateBoolean):
998         * runtime/BooleanPrototype.cpp:
999         (JSC::BooleanPrototype::BooleanPrototype):
1000         * runtime/ConservativeSet.cpp:
1001         (JSC::ConservativeSet::grow):
1002         * runtime/ConservativeSet.h:
1003         (JSC::ConservativeSet::~ConservativeSet):
1004         (JSC::ConservativeSet::mark):
1005         * runtime/DateConstructor.cpp:
1006         (JSC::DateConstructor::DateConstructor):
1007         * runtime/DateInstance.cpp:
1008         (JSC::DateInstance::DateInstance):
1009         * runtime/DatePrototype.cpp:
1010         (JSC::dateProtoFuncSetTime):
1011         (JSC::setNewValueFromTimeArgs):
1012         (JSC::setNewValueFromDateArgs):
1013         (JSC::dateProtoFuncSetYear):
1014         * runtime/ErrorConstructor.cpp:
1015         (JSC::ErrorConstructor::ErrorConstructor):
1016         * runtime/ErrorInstance.cpp:
1017         (JSC::ErrorInstance::ErrorInstance):
1018         * runtime/ErrorPrototype.cpp:
1019         (JSC::ErrorPrototype::ErrorPrototype):
1020         * runtime/FunctionConstructor.cpp:
1021         (JSC::FunctionConstructor::FunctionConstructor):
1022         * runtime/FunctionPrototype.cpp:
1023         (JSC::FunctionPrototype::FunctionPrototype):
1024         * runtime/GetterSetter.cpp:
1025         (JSC::GetterSetter::markChildren):
1026         * runtime/GetterSetter.h:
1027         (JSC::GetterSetter::GetterSetter):
1028         (JSC::GetterSetter::getter):
1029         (JSC::GetterSetter::setGetter):
1030         (JSC::GetterSetter::setter):
1031         (JSC::GetterSetter::setSetter):
1032         * runtime/GlobalEvalFunction.cpp:
1033         (JSC::GlobalEvalFunction::GlobalEvalFunction):
1034         (JSC::GlobalEvalFunction::markChildren):
1035         * runtime/GlobalEvalFunction.h:
1036         (JSC::GlobalEvalFunction::cachedGlobalObject):
1037         * runtime/Heap.cpp:
1038         (JSC::Heap::markProtectedObjects):
1039         (JSC::Heap::markTempSortVectors):
1040         (JSC::Heap::markRoots):
1041         * runtime/InternalFunction.cpp:
1042         (JSC::InternalFunction::InternalFunction):
1043         * runtime/JSAPIValueWrapper.h:
1044         (JSC::JSAPIValueWrapper::value):
1045         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
1046         * runtime/JSActivation.cpp:
1047         (JSC::JSActivation::markChildren):
1048         (JSC::JSActivation::put):
1049         * runtime/JSArray.cpp:
1050         (JSC::JSArray::JSArray):
1051         (JSC::JSArray::getOwnPropertySlot):
1052         (JSC::JSArray::getOwnPropertyDescriptor):
1053         (JSC::JSArray::put):
1054         (JSC::JSArray::putSlowCase):
1055         (JSC::JSArray::deleteProperty):
1056         (JSC::JSArray::increaseVectorLength):
1057         (JSC::JSArray::setLength):
1058         (JSC::JSArray::pop):
1059         (JSC::JSArray::push):
1060         (JSC::JSArray::unshiftCount):
1061         (JSC::JSArray::sort):
1062         (JSC::JSArray::fillArgList):
1063         (JSC::JSArray::copyToRegisters):
1064         (JSC::JSArray::compactForSorting):
1065         * runtime/JSArray.h:
1066         (JSC::JSArray::getIndex):
1067         (JSC::JSArray::setIndex):
1068         (JSC::JSArray::uncheckedSetIndex):
1069         (JSC::JSArray::markChildrenDirect):
1070         * runtime/JSByteArray.cpp:
1071         (JSC::JSByteArray::JSByteArray):
1072         * runtime/JSCell.h:
1073         (JSC::JSCell::MarkStack::append):
1074         (JSC::JSCell::MarkStack::internalAppend):
1075         (JSC::JSCell::MarkStack::deprecatedAppend):
1076         * runtime/JSFunction.cpp:
1077         (JSC::JSFunction::JSFunction):
1078         (JSC::JSFunction::getOwnPropertySlot):
1079         * runtime/JSGlobalData.h:
1080         * runtime/JSGlobalObject.cpp:
1081         (JSC::markIfNeeded):
1082         (JSC::JSGlobalObject::reset):
1083         (JSC::JSGlobalObject::resetPrototype):
1084         (JSC::JSGlobalObject::markChildren):
1085         * runtime/JSGlobalObject.h:
1086         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
1087         (JSC::JSGlobalObject::regExpConstructor):
1088         (JSC::JSGlobalObject::errorConstructor):
1089         (JSC::JSGlobalObject::evalErrorConstructor):
1090         (JSC::JSGlobalObject::rangeErrorConstructor):
1091         (JSC::JSGlobalObject::referenceErrorConstructor):
1092         (JSC::JSGlobalObject::syntaxErrorConstructor):
1093         (JSC::JSGlobalObject::typeErrorConstructor):
1094         (JSC::JSGlobalObject::URIErrorConstructor):
1095         (JSC::JSGlobalObject::evalFunction):
1096         (JSC::JSGlobalObject::objectPrototype):
1097         (JSC::JSGlobalObject::functionPrototype):
1098         (JSC::JSGlobalObject::arrayPrototype):
1099         (JSC::JSGlobalObject::booleanPrototype):
1100         (JSC::JSGlobalObject::stringPrototype):
1101         (JSC::JSGlobalObject::numberPrototype):
1102         (JSC::JSGlobalObject::datePrototype):
1103         (JSC::JSGlobalObject::regExpPrototype):
1104         (JSC::JSGlobalObject::methodCallDummy):
1105         (JSC::Structure::prototypeForLookup):
1106         (JSC::constructArray):
1107         * runtime/JSONObject.cpp:
1108         (JSC::Stringifier::Holder::object):
1109         (JSC::Stringifier::Holder::objectSlot):
1110         (JSC::Stringifier::markAggregate):
1111         (JSC::Stringifier::stringify):
1112         (JSC::Stringifier::Holder::appendNextProperty):
1113         (JSC::Walker::callReviver):
1114         (JSC::Walker::walk):
1115         * runtime/JSObject.cpp:
1116         (JSC::JSObject::defineGetter):
1117         (JSC::JSObject::defineSetter):
1118         (JSC::JSObject::removeDirect):
1119         (JSC::JSObject::putDirectFunction):
1120         (JSC::JSObject::putDirectFunctionWithoutTransition):
1121         (JSC::putDescriptor):
1122         (JSC::JSObject::defineOwnProperty):
1123         * runtime/JSObject.h:
1124         (JSC::JSObject::getDirectOffset):
1125         (JSC::JSObject::putDirectOffset):
1126         (JSC::JSObject::putUndefinedAtDirectOffset):
1127         (JSC::JSObject::flattenDictionaryObject):
1128         (JSC::JSObject::putDirectInternal):
1129         (JSC::JSObject::putDirect):
1130         (JSC::JSObject::putDirectFunction):
1131         (JSC::JSObject::putDirectWithoutTransition):
1132         (JSC::JSObject::putDirectFunctionWithoutTransition):
1133         (JSC::JSValue::putDirect):
1134         (JSC::JSObject::allocatePropertyStorageInline):
1135         (JSC::JSObject::markChildrenDirect):
1136         * runtime/JSPropertyNameIterator.cpp:
1137         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1138         (JSC::JSPropertyNameIterator::get):
1139         * runtime/JSPropertyNameIterator.h:
1140         * runtime/JSStaticScopeObject.cpp:
1141         (JSC::JSStaticScopeObject::markChildren):
1142         * runtime/JSString.cpp:
1143         (JSC::StringObject::create):
1144         * runtime/JSValue.h:
1145         * runtime/JSWrapperObject.cpp:
1146         (JSC::JSWrapperObject::markChildren):
1147         * runtime/JSWrapperObject.h:
1148         (JSC::JSWrapperObject::internalValue):
1149         (JSC::JSWrapperObject::setInternalValue):
1150         * runtime/LiteralParser.cpp:
1151         (JSC::LiteralParser::parse):
1152         * runtime/Lookup.cpp:
1153         (JSC::setUpStaticFunctionSlot):
1154         * runtime/Lookup.h:
1155         (JSC::lookupPut):
1156         * runtime/MarkStack.h:
1157         (JSC::MarkStack::MarkStack):
1158         (JSC::MarkStack::deprecatedAppendValues):
1159         (JSC::MarkStack::appendValues):
1160         * runtime/MathObject.cpp:
1161         (JSC::MathObject::MathObject):
1162         * runtime/NativeErrorConstructor.cpp:
1163         (JSC::NativeErrorConstructor::NativeErrorConstructor):
1164         * runtime/NativeErrorPrototype.cpp:
1165         (JSC::NativeErrorPrototype::NativeErrorPrototype):
1166         * runtime/NumberConstructor.cpp:
1167         (JSC::NumberConstructor::NumberConstructor):
1168         (JSC::constructWithNumberConstructor):
1169         * runtime/NumberObject.cpp:
1170         (JSC::constructNumber):
1171         * runtime/NumberPrototype.cpp:
1172         (JSC::NumberPrototype::NumberPrototype):
1173         * runtime/ObjectConstructor.cpp:
1174         (JSC::ObjectConstructor::ObjectConstructor):
1175         (JSC::objectConstructorGetOwnPropertyDescriptor):
1176         * runtime/Operations.h:
1177         (JSC::normalizePrototypeChain):
1178         (JSC::resolveBase):
1179         * runtime/PrototypeFunction.cpp:
1180         (JSC::PrototypeFunction::PrototypeFunction):
1181         * runtime/PutPropertySlot.h:
1182         (JSC::PutPropertySlot::setExistingProperty):
1183         (JSC::PutPropertySlot::setNewProperty):
1184         (JSC::PutPropertySlot::base):
1185         * runtime/RegExpConstructor.cpp:
1186         (JSC::RegExpConstructor::RegExpConstructor):
1187         * runtime/ScopeChain.cpp:
1188         (JSC::ScopeChainNode::print):
1189         * runtime/ScopeChain.h:
1190         (JSC::ScopeChainNode::~ScopeChainNode):
1191         (JSC::ScopeChainIterator::operator*):
1192         (JSC::ScopeChainIterator::operator->):
1193         (JSC::ScopeChain::top):
1194         * runtime/ScopeChainMark.h:
1195         (JSC::ScopeChain::markAggregate):
1196         * runtime/SmallStrings.cpp:
1197         (JSC::isMarked):
1198         (JSC::SmallStrings::markChildren):
1199         * runtime/SmallStrings.h:
1200         (JSC::SmallStrings::emptyString):
1201         (JSC::SmallStrings::singleCharacterString):
1202         (JSC::SmallStrings::singleCharacterStrings):
1203         * runtime/StringConstructor.cpp:
1204         (JSC::StringConstructor::StringConstructor):
1205         * runtime/StringObject.cpp:
1206         (JSC::StringObject::StringObject):
1207         * runtime/StringObject.h:
1208         * runtime/StringPrototype.cpp:
1209         (JSC::StringPrototype::StringPrototype):
1210         * runtime/Structure.cpp:
1211         (JSC::Structure::Structure):
1212         (JSC::Structure::addPropertyTransition):
1213         (JSC::Structure::toDictionaryTransition):
1214         (JSC::Structure::flattenDictionaryStructure):
1215         * runtime/Structure.h:
1216         (JSC::Structure::storedPrototype):
1217         (JSC::Structure::storedPrototypeSlot):
1218         * runtime/WeakGCMap.h:
1219         (JSC::WeakGCMap::uncheckedGet):
1220         (JSC::WeakGCMap::uncheckedGetSlot):
1221         (JSC::WeakGCMap::isValid):
1222         (JSC::::get):
1223         (JSC::::take):
1224         (JSC::::set):
1225         (JSC::::uncheckedRemove):
1226         * runtime/WriteBarrier.h: Added.
1227         (JSC::DeprecatedPtr::DeprecatedPtr):
1228         (JSC::DeprecatedPtr::get):
1229         (JSC::DeprecatedPtr::operator*):
1230         (JSC::DeprecatedPtr::operator->):
1231         (JSC::DeprecatedPtr::slot):
1232         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
1233         (JSC::DeprecatedPtr::operator!):
1234         (JSC::WriteBarrierBase::set):
1235         (JSC::WriteBarrierBase::get):
1236         (JSC::WriteBarrierBase::operator*):
1237         (JSC::WriteBarrierBase::operator->):
1238         (JSC::WriteBarrierBase::slot):
1239         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
1240         (JSC::WriteBarrierBase::operator!):
1241         (JSC::WriteBarrier::WriteBarrier):
1242         (JSC::operator==):
1243
1244 2011-01-30  Geoffrey Garen  <ggaren@apple.com>
1245
1246         Reviewed by Oliver Hunt.
1247
1248         Filter all Heap collection through a common reset function, in
1249         preparation for adding features triggered by collection.
1250         https://bugs.webkit.org/show_bug.cgi?id=53396
1251         
1252         SunSpider reports no change.
1253
1254         * runtime/Heap.cpp:
1255         (JSC::Heap::reportExtraMemoryCostSlowCase): When we're over the extraCost
1256         limit, just call collectAllGarbage() instead of rolling our own special
1257         way of resetting the heap. In theory, this may be slower in some cases,
1258         but it also fixes cases of pathological heap growth that we've seen,
1259         where the only objects being allocated are temporary and huge
1260         (<rdar://problem/8885843>).
1261
1262         (JSC::Heap::allocate):
1263         (JSC::Heap::collectAllGarbage): Use the shared reset function.
1264
1265         (JSC::Heap::reset):
1266         * runtime/Heap.h: Carved a new shared reset function out of the old
1267         collectAllGarbage.
1268
1269 2011-01-30  Sheriff Bot  <webkit.review.bot@gmail.com>
1270
1271         Unreviewed, rolling out r77025.
1272         http://trac.webkit.org/changeset/77025
1273         https://bugs.webkit.org/show_bug.cgi?id=53401
1274
1275         It made js1_5/Regress/regress-159334.js fail on 64 bit Linux
1276         (Requested by Ossy on #webkit).
1277
1278         * jit/ExecutableAllocatorFixedVMPool.cpp:
1279         (JSC::FreeListEntry::FreeListEntry):
1280         (JSC::AVLTreeAbstractorForFreeList::get_less):
1281         (JSC::AVLTreeAbstractorForFreeList::set_less):
1282         (JSC::AVLTreeAbstractorForFreeList::get_greater):
1283         (JSC::AVLTreeAbstractorForFreeList::set_greater):
1284         (JSC::AVLTreeAbstractorForFreeList::get_balance_factor):
1285         (JSC::AVLTreeAbstractorForFreeList::set_balance_factor):
1286         (JSC::AVLTreeAbstractorForFreeList::null):
1287         (JSC::AVLTreeAbstractorForFreeList::compare_key_key):
1288         (JSC::AVLTreeAbstractorForFreeList::compare_key_node):
1289         (JSC::AVLTreeAbstractorForFreeList::compare_node_node):
1290         (JSC::reverseSortFreeListEntriesByPointer):
1291         (JSC::reverseSortCommonSizedAllocations):
1292         (JSC::FixedVMPoolAllocator::release):
1293         (JSC::FixedVMPoolAllocator::reuse):
1294         (JSC::FixedVMPoolAllocator::addToFreeList):
1295         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
1296         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
1297         (JSC::FixedVMPoolAllocator::alloc):
1298         (JSC::FixedVMPoolAllocator::free):
1299         (JSC::FixedVMPoolAllocator::isValid):
1300         (JSC::FixedVMPoolAllocator::allocInternal):
1301         (JSC::FixedVMPoolAllocator::isWithinVMPool):
1302         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
1303         (JSC::ExecutableAllocator::committedByteCount):
1304         (JSC::maybeModifyVMPoolSize):
1305         (JSC::ExecutableAllocator::isValid):
1306         (JSC::ExecutableAllocator::underMemoryPressure):
1307         (JSC::ExecutablePool::systemAlloc):
1308         (JSC::ExecutablePool::systemRelease):
1309         * wtf/PageReservation.h:
1310         (WTF::PageReservation::PageReservation):
1311         (WTF::PageReservation::commit):
1312         (WTF::PageReservation::decommit):
1313
1314 2011-01-30  Leo Yang  <leo.yang@torchmobile.com.cn>
1315
1316         Reviewed by Daniel Bates.
1317
1318         Code style issue in JavaScriptCore/wtf/CurrentTime.h
1319         https://bugs.webkit.org/show_bug.cgi?id=53394
1320
1321         According to rule #3 at http://webkit.org/coding/coding-style.html,
1322         This patch fix style issue in CurrentTime.h.
1323
1324         No functionality change, no new tests.
1325
1326         * wtf/CurrentTime.h:
1327         (WTF::currentTimeMS):
1328         (WTF::getLocalTime):
1329
1330 2011-01-30  Benjamin Poulain  <ikipou@gmail.com>
1331
1332         Reviewed by Kenneth Rohde Christiansen.
1333
1334         [Qt] JavaScriptCore does not link on Mac if building WebKit 2
1335         https://bugs.webkit.org/show_bug.cgi?id=53377
1336
1337         The option "-whole-archive" is not availabe with the libtool of Mac OS X,
1338         instead, we can use "-all_load" on Mac.
1339
1340         * JavaScriptCore.pri:
1341
1342 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
1343
1344         Sorry Leopard bot -- I committed a change by accident.
1345
1346         * JavaScriptCore.exp: You may have your symbols back now.
1347
1348 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
1349
1350         Reviewed by Cameron Zwarich.
1351
1352         Simplified Heap iteration
1353         https://bugs.webkit.org/show_bug.cgi?id=53393
1354
1355         * runtime/CollectorHeapIterator.h:
1356         (JSC::CollectorHeapIterator::isValid):
1357         (JSC::CollectorHeapIterator::isLive):
1358         (JSC::CollectorHeapIterator::advance): Removed "max" argument to
1359         advance because it's a constant.
1360         (JSC::LiveObjectIterator::LiveObjectIterator):
1361         (JSC::LiveObjectIterator::operator++):
1362         (JSC::DeadObjectIterator::DeadObjectIterator):
1363         (JSC::DeadObjectIterator::operator++):
1364         (JSC::ObjectIterator::ObjectIterator):
1365         (JSC::ObjectIterator::operator++): Factored out common checks into
1366         two helper functions -- isValid() for "Am I past the end?" and isLive()
1367         for "Is the cell I'm pointing to live?".
1368
1369         * runtime/MarkedSpace.cpp:
1370         (JSC::MarkedSpace::freeBlock):
1371         (JSC::MarkedSpace::sweep): Always sweep from the beginning of the heap
1372         to the end, to avoid making sweep subtly reliant on internal Heap state.
1373         (JSC::MarkedSpace::primaryHeapBegin):
1374         (JSC::MarkedSpace::primaryHeapEnd): Always be explicit about where
1375         iteration begins.
1376
1377 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
1378
1379         Reviewed by Cameron Zwarich.
1380
1381         Simplified heap destruction
1382         https://bugs.webkit.org/show_bug.cgi?id=53392
1383
1384         * JavaScriptCore.exp:
1385         * runtime/Heap.cpp:
1386         (JSC::Heap::destroy):
1387         * runtime/Heap.h:
1388         * runtime/MarkedSpace.cpp:
1389         (JSC::MarkedSpace::destroy):
1390         * runtime/MarkedSpace.h: Don't go out of our way to destroy GC-protected
1391         cells last -- the difficult contortions required to do so just don't seem
1392         justified. We make no guarantees about GC protection after the client
1393         throws away JSGlobalData, and it doesn't seem like any meaningful
1394         guarantee is even possible.
1395
1396 2011-01-29  Geoffrey Garen  <ggaren@apple.com>
1397
1398         Reviewed by Maciej Stachowiak.
1399
1400         Switched heap to use the Bitmap class and removed CollectorBitmap
1401         https://bugs.webkit.org/show_bug.cgi?id=53391
1402         
1403         SunSpider says 1.005x as fast. Seems like a fluke.
1404
1405         * runtime/MarkedSpace.cpp:
1406         (JSC::MarkedSpace::allocate): Updated for rename and returning a value
1407         rather than taking a value by reference.
1408
1409         * runtime/MarkedSpace.h: Code reuse is good.
1410
1411         * wtf/Bitmap.h:
1412         (WTF::::testAndSet): Added, since this is the one thing Bitmap was missing
1413         which CollectorBitmap had. (Renamed from the less conventional "getset".)
1414
1415         (WTF::::nextPossiblyUnset): Renamed and changed to return a value for
1416         clarity. It's all the same with inlining.
1417
1418 2011-01-28  Geoffrey Garen  <ggaren@apple.com>
1419
1420         Reviewed by Maciej Stachowiak.
1421
1422         Some more Heap cleanup.
1423         https://bugs.webkit.org/show_bug.cgi?id=53357
1424         
1425         * JavaScriptCore.exp:
1426         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols.
1427
1428         * runtime/Heap.cpp:
1429         (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to 
1430         reportExtraMemoryCostSlowCase to match our naming conventions.
1431
1432         (JSC::Heap::capacity): Renamed size to capacity because this function
1433         returns the capacity of the heap, including unused portions.
1434
1435         * runtime/Heap.h:
1436         (JSC::Heap::globalData):
1437         (JSC::Heap::markedSpace):
1438         (JSC::Heap::machineStackMarker):
1439         (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file.
1440         Moved ctor and dtor to the beginning of the class definition. Grouped
1441         functions by purpose.
1442
1443         * runtime/MarkedSpace.cpp:
1444         (JSC::MarkedSpace::capacity): Renamed size to capacity because this
1445         function returns the capacity of the heap, including unused portions.
1446
1447         * runtime/MarkedSpace.h: Removed statistics and the Statistics class because
1448         the same information can be gotten just by calling size() and capacity().
1449
1450         * runtime/MemoryStatistics.cpp:
1451         * runtime/MemoryStatistics.h: Ditto.
1452
1453 2011-01-29  Daniel Bates  <dbates@rim.com>
1454
1455         Reviewed by Eric Seidel.
1456
1457         Move wince/mt19937ar.c to ThirdParty and make it a policy choice
1458         https://bugs.webkit.org/show_bug.cgi?id=53253
1459
1460         Make inclusion of MT19937 a policy decision.
1461
1462         Currently, we hardcoded to  use MT19937 when building for
1463         Windows CE. Instead, we should make this a policy decision
1464         with the Windows CE port using this by default.
1465
1466         * JavaScriptCore.pri: Append Source/ThirdParty to the end
1467         of the list include directories.
1468         * wtf/CMakeLists.txt: Ditto.
1469         * wtf/Platform.h: Defined WTF_USE_MERSENNE_TWISTER_19937 when
1470         building for Windows CE.
1471         * wtf/RandomNumber.cpp:
1472         (WTF::randomNumber): Substituted USE(MERSENNE_TWISTER_19937) for OS(WINCE).
1473
1474 2011-01-29  Cameron Zwarich  <zwarich@apple.com>
1475
1476         Reviewed by David Kilzer.
1477
1478         Bug 53374 - Remove uses of unsafe string functions in debugging code
1479         https://bugs.webkit.org/show_bug.cgi?id=53374
1480
1481         * runtime/RegExp.cpp:
1482         (JSC::RegExp::printTraceData):
1483
1484 2011-01-29  Cameron Zwarich  <zwarich@apple.com>
1485
1486         Reviewed by Oliver Hunt.
1487
1488         JavaScriptCoreUseJIT environment variable broken
1489         https://bugs.webkit.org/show_bug.cgi?id=53372
1490
1491         * runtime/JSGlobalData.cpp:
1492         (JSC::JSGlobalData::JSGlobalData): Check the actual value in the string returned
1493         by getenv() rather than just doing a NULL check on the return value.
1494
1495 2011-01-29  Patrick Gansterer  <paroga@webkit.org>
1496
1497         Reviewed by David Kilzer.
1498
1499         Move CharacterNames.h into WTF directory
1500         https://bugs.webkit.org/show_bug.cgi?id=49618
1501
1502         * GNUmakefile.am:
1503         * JavaScriptCore.gypi:
1504         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1505         * JavaScriptCore.xcodeproj/project.pbxproj:
1506         * wtf/CMakeLists.txt:
1507         * wtf/unicode/CharacterNames.h: Renamed from WebCore/platform/text/CharacterNames.h.
1508         * wtf/unicode/UTF8.cpp:
1509
1510 2011-01-28  Simon Fraser  <simon.fraser@apple.com>
1511
1512         Reviewed by Gavin Barraclough.
1513
1514         Add various clampToInt() methods to MathExtras.h
1515         https://bugs.webkit.org/show_bug.cgi?id=52910
1516         
1517         Add functions for clamping doubles and floats to valid int
1518         ranges, for signed and positive integers.
1519
1520         * wtf/MathExtras.h:
1521         (clampToInteger):
1522         (clampToPositiveInteger):
1523
1524 2011-01-28  Sheriff Bot  <webkit.review.bot@gmail.com>
1525
1526         Unreviewed, rolling out r77006 and r77020.
1527         http://trac.webkit.org/changeset/77006
1528         http://trac.webkit.org/changeset/77020
1529         https://bugs.webkit.org/show_bug.cgi?id=53360
1530
1531         "Broke Windows tests" (Requested by rniwa on #webkit).
1532
1533         * API/JSCallbackObject.h:
1534         (JSC::JSCallbackObjectData::setPrivateProperty):
1535         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
1536         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
1537         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
1538         (JSC::JSCallbackObject::setPrivateProperty):
1539         * API/JSCallbackObjectFunctions.h:
1540         (JSC::::put):
1541         (JSC::::staticFunctionGetter):
1542         * API/JSObjectRef.cpp:
1543         (JSObjectMakeConstructor):
1544         (JSObjectSetPrivateProperty):
1545         * API/JSWeakObjectMapRefInternal.h:
1546         * JavaScriptCore.exp:
1547         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1548         * JavaScriptCore.xcodeproj/project.pbxproj:
1549         * bytecode/CodeBlock.cpp:
1550         (JSC::CodeBlock::markAggregate):
1551         * bytecode/CodeBlock.h:
1552         (JSC::CodeBlock::globalObject):
1553         * bytecompiler/BytecodeGenerator.cpp:
1554         (JSC::BytecodeGenerator::BytecodeGenerator):
1555         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
1556         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
1557         (JSC::BytecodeGenerator::findScopedProperty):
1558         * debugger/Debugger.cpp:
1559         (JSC::evaluateInGlobalCallFrame):
1560         * debugger/DebuggerActivation.cpp:
1561         (JSC::DebuggerActivation::DebuggerActivation):
1562         (JSC::DebuggerActivation::markChildren):
1563         * debugger/DebuggerActivation.h:
1564         * debugger/DebuggerCallFrame.cpp:
1565         (JSC::DebuggerCallFrame::evaluate):
1566         * interpreter/CallFrame.h:
1567         (JSC::ExecState::exception):
1568         * interpreter/Interpreter.cpp:
1569         (JSC::Interpreter::resolve):
1570         (JSC::Interpreter::resolveSkip):
1571         (JSC::Interpreter::resolveGlobal):
1572         (JSC::Interpreter::resolveGlobalDynamic):
1573         (JSC::Interpreter::resolveBaseAndProperty):
1574         (JSC::Interpreter::unwindCallFrame):
1575         (JSC::appendSourceToError):
1576         (JSC::Interpreter::execute):
1577         (JSC::Interpreter::tryCacheGetByID):
1578         (JSC::Interpreter::privateExecute):
1579         * jit/JITStubs.cpp:
1580         (JSC::JITThunks::tryCacheGetByID):
1581         (JSC::DEFINE_STUB_FUNCTION):
1582         * jsc.cpp:
1583         (GlobalObject::GlobalObject):
1584         * runtime/ArgList.cpp:
1585         (JSC::MarkedArgumentBuffer::markLists):
1586         * runtime/Arguments.cpp:
1587         (JSC::Arguments::markChildren):
1588         (JSC::Arguments::getOwnPropertySlot):
1589         (JSC::Arguments::getOwnPropertyDescriptor):
1590         (JSC::Arguments::put):
1591         * runtime/Arguments.h:
1592         (JSC::Arguments::setActivation):
1593         (JSC::Arguments::Arguments):
1594         * runtime/ArrayConstructor.cpp:
1595         (JSC::ArrayConstructor::ArrayConstructor):
1596         (JSC::constructArrayWithSizeQuirk):
1597         * runtime/ArrayPrototype.cpp:
1598         (JSC::arrayProtoFuncSplice):
1599         * runtime/BatchedTransitionOptimizer.h:
1600         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
1601         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
1602         * runtime/BooleanConstructor.cpp:
1603         (JSC::BooleanConstructor::BooleanConstructor):
1604         (JSC::constructBoolean):
1605         (JSC::constructBooleanFromImmediateBoolean):
1606         * runtime/BooleanPrototype.cpp:
1607         (JSC::BooleanPrototype::BooleanPrototype):
1608         * runtime/ConservativeSet.cpp:
1609         (JSC::ConservativeSet::grow):
1610         * runtime/ConservativeSet.h:
1611         (JSC::ConservativeSet::~ConservativeSet):
1612         (JSC::ConservativeSet::mark):
1613         * runtime/DateConstructor.cpp:
1614         (JSC::DateConstructor::DateConstructor):
1615         * runtime/DateInstance.cpp:
1616         (JSC::DateInstance::DateInstance):
1617         * runtime/DatePrototype.cpp:
1618         (JSC::dateProtoFuncSetTime):
1619         (JSC::setNewValueFromTimeArgs):
1620         (JSC::setNewValueFromDateArgs):
1621         (JSC::dateProtoFuncSetYear):
1622         * runtime/ErrorConstructor.cpp:
1623         (JSC::ErrorConstructor::ErrorConstructor):
1624         * runtime/ErrorInstance.cpp:
1625         (JSC::ErrorInstance::ErrorInstance):
1626         * runtime/ErrorPrototype.cpp:
1627         (JSC::ErrorPrototype::ErrorPrototype):
1628         * runtime/FunctionConstructor.cpp:
1629         (JSC::FunctionConstructor::FunctionConstructor):
1630         * runtime/FunctionPrototype.cpp:
1631         (JSC::FunctionPrototype::FunctionPrototype):
1632         * runtime/GetterSetter.cpp:
1633         (JSC::GetterSetter::markChildren):
1634         * runtime/GetterSetter.h:
1635         (JSC::GetterSetter::GetterSetter):
1636         (JSC::GetterSetter::getter):
1637         (JSC::GetterSetter::setGetter):
1638         (JSC::GetterSetter::setter):
1639         (JSC::GetterSetter::setSetter):
1640         * runtime/GlobalEvalFunction.cpp:
1641         (JSC::GlobalEvalFunction::GlobalEvalFunction):
1642         (JSC::GlobalEvalFunction::markChildren):
1643         * runtime/GlobalEvalFunction.h:
1644         (JSC::GlobalEvalFunction::cachedGlobalObject):
1645         * runtime/Heap.cpp:
1646         (JSC::Heap::markProtectedObjects):
1647         (JSC::Heap::markTempSortVectors):
1648         (JSC::Heap::markRoots):
1649         * runtime/InternalFunction.cpp:
1650         (JSC::InternalFunction::InternalFunction):
1651         * runtime/JSAPIValueWrapper.h:
1652         (JSC::JSAPIValueWrapper::value):
1653         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
1654         * runtime/JSActivation.cpp:
1655         (JSC::JSActivation::markChildren):
1656         (JSC::JSActivation::put):
1657         * runtime/JSArray.cpp:
1658         (JSC::JSArray::JSArray):
1659         (JSC::JSArray::getOwnPropertySlot):
1660         (JSC::JSArray::getOwnPropertyDescriptor):
1661         (JSC::JSArray::put):
1662         (JSC::JSArray::putSlowCase):
1663         (JSC::JSArray::deleteProperty):
1664         (JSC::JSArray::increaseVectorLength):
1665         (JSC::JSArray::setLength):
1666         (JSC::JSArray::pop):
1667         (JSC::JSArray::push):
1668         (JSC::JSArray::unshiftCount):
1669         (JSC::JSArray::sort):
1670         (JSC::JSArray::fillArgList):
1671         (JSC::JSArray::copyToRegisters):
1672         (JSC::JSArray::compactForSorting):
1673         * runtime/JSArray.h:
1674         (JSC::JSArray::getIndex):
1675         (JSC::JSArray::setIndex):
1676         (JSC::JSArray::uncheckedSetIndex):
1677         (JSC::JSArray::markChildrenDirect):
1678         * runtime/JSByteArray.cpp:
1679         (JSC::JSByteArray::JSByteArray):
1680         * runtime/JSCell.h:
1681         (JSC::JSCell::JSValue::toThisObject):
1682         (JSC::JSCell::MarkStack::append):
1683         * runtime/JSFunction.cpp:
1684         (JSC::JSFunction::JSFunction):
1685         (JSC::JSFunction::getOwnPropertySlot):
1686         * runtime/JSGlobalData.h:
1687         * runtime/JSGlobalObject.cpp:
1688         (JSC::markIfNeeded):
1689         (JSC::JSGlobalObject::reset):
1690         (JSC::JSGlobalObject::resetPrototype):
1691         (JSC::JSGlobalObject::markChildren):
1692         * runtime/JSGlobalObject.h:
1693         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
1694         (JSC::JSGlobalObject::regExpConstructor):
1695         (JSC::JSGlobalObject::errorConstructor):
1696         (JSC::JSGlobalObject::evalErrorConstructor):
1697         (JSC::JSGlobalObject::rangeErrorConstructor):
1698         (JSC::JSGlobalObject::referenceErrorConstructor):
1699         (JSC::JSGlobalObject::syntaxErrorConstructor):
1700         (JSC::JSGlobalObject::typeErrorConstructor):
1701         (JSC::JSGlobalObject::URIErrorConstructor):
1702         (JSC::JSGlobalObject::evalFunction):
1703         (JSC::JSGlobalObject::objectPrototype):
1704         (JSC::JSGlobalObject::functionPrototype):
1705         (JSC::JSGlobalObject::arrayPrototype):
1706         (JSC::JSGlobalObject::booleanPrototype):
1707         (JSC::JSGlobalObject::stringPrototype):
1708         (JSC::JSGlobalObject::numberPrototype):
1709         (JSC::JSGlobalObject::datePrototype):
1710         (JSC::JSGlobalObject::regExpPrototype):
1711         (JSC::JSGlobalObject::methodCallDummy):
1712         (JSC::Structure::prototypeForLookup):
1713         (JSC::constructArray):
1714         * runtime/JSONObject.cpp:
1715         (JSC::Stringifier::Holder::object):
1716         (JSC::Stringifier::markAggregate):
1717         (JSC::Stringifier::stringify):
1718         (JSC::Stringifier::Holder::appendNextProperty):
1719         (JSC::Walker::callReviver):
1720         (JSC::Walker::walk):
1721         * runtime/JSObject.cpp:
1722         (JSC::JSObject::defineGetter):
1723         (JSC::JSObject::defineSetter):
1724         (JSC::JSObject::removeDirect):
1725         (JSC::JSObject::putDirectFunction):
1726         (JSC::JSObject::putDirectFunctionWithoutTransition):
1727         (JSC::putDescriptor):
1728         (JSC::JSObject::defineOwnProperty):
1729         * runtime/JSObject.h:
1730         (JSC::JSObject::getDirectOffset):
1731         (JSC::JSObject::putDirectOffset):
1732         (JSC::JSObject::flattenDictionaryObject):
1733         (JSC::JSObject::putDirectInternal):
1734         (JSC::JSObject::putDirect):
1735         (JSC::JSObject::putDirectFunction):
1736         (JSC::JSObject::putDirectWithoutTransition):
1737         (JSC::JSObject::putDirectFunctionWithoutTransition):
1738         (JSC::JSValue::putDirect):
1739         (JSC::JSObject::allocatePropertyStorageInline):
1740         (JSC::JSObject::markChildrenDirect):
1741         * runtime/JSPropertyNameIterator.cpp:
1742         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1743         (JSC::JSPropertyNameIterator::get):
1744         * runtime/JSPropertyNameIterator.h:
1745         * runtime/JSStaticScopeObject.cpp:
1746         (JSC::JSStaticScopeObject::markChildren):
1747         * runtime/JSString.cpp:
1748         (JSC::StringObject::create):
1749         * runtime/JSValue.h:
1750         * runtime/JSWrapperObject.cpp:
1751         (JSC::JSWrapperObject::markChildren):
1752         * runtime/JSWrapperObject.h:
1753         (JSC::JSWrapperObject::internalValue):
1754         (JSC::JSWrapperObject::setInternalValue):
1755         * runtime/LiteralParser.cpp:
1756         (JSC::LiteralParser::parse):
1757         * runtime/Lookup.cpp:
1758         (JSC::setUpStaticFunctionSlot):
1759         * runtime/Lookup.h:
1760         (JSC::lookupPut):
1761         * runtime/MarkStack.h:
1762         (JSC::MarkStack::appendValues):
1763         * runtime/MathObject.cpp:
1764         (JSC::MathObject::MathObject):
1765         * runtime/NativeErrorConstructor.cpp:
1766         (JSC::NativeErrorConstructor::NativeErrorConstructor):
1767         * runtime/NativeErrorPrototype.cpp:
1768         (JSC::NativeErrorPrototype::NativeErrorPrototype):
1769         * runtime/NumberConstructor.cpp:
1770         (JSC::NumberConstructor::NumberConstructor):
1771         (JSC::constructWithNumberConstructor):
1772         * runtime/NumberObject.cpp:
1773         (JSC::constructNumber):
1774         * runtime/NumberPrototype.cpp:
1775         (JSC::NumberPrototype::NumberPrototype):
1776         * runtime/ObjectConstructor.cpp:
1777         (JSC::ObjectConstructor::ObjectConstructor):
1778         (JSC::objectConstructorGetOwnPropertyDescriptor):
1779         * runtime/Operations.h:
1780         (JSC::normalizePrototypeChain):
1781         (JSC::resolveBase):
1782         * runtime/PrototypeFunction.cpp:
1783         (JSC::PrototypeFunction::PrototypeFunction):
1784         * runtime/PutPropertySlot.h:
1785         (JSC::PutPropertySlot::setExistingProperty):
1786         (JSC::PutPropertySlot::setNewProperty):
1787         (JSC::PutPropertySlot::base):
1788         * runtime/RegExpConstructor.cpp:
1789         (JSC::RegExpConstructor::RegExpConstructor):
1790         * runtime/ScopeChain.cpp:
1791         (JSC::ScopeChainNode::print):
1792         * runtime/ScopeChain.h:
1793         (JSC::ScopeChainNode::~ScopeChainNode):
1794         (JSC::ScopeChainIterator::operator*):
1795         (JSC::ScopeChainIterator::operator->):
1796         (JSC::ScopeChain::top):
1797         * runtime/ScopeChainMark.h:
1798         (JSC::ScopeChain::markAggregate):
1799         * runtime/SmallStrings.cpp:
1800         (JSC::isMarked):
1801         (JSC::SmallStrings::markChildren):
1802         * runtime/SmallStrings.h:
1803         (JSC::SmallStrings::emptyString):
1804         (JSC::SmallStrings::singleCharacterString):
1805         (JSC::SmallStrings::singleCharacterStrings):
1806         * runtime/StringConstructor.cpp:
1807         (JSC::StringConstructor::StringConstructor):
1808         * runtime/StringObject.cpp:
1809         (JSC::StringObject::StringObject):
1810         * runtime/StringObject.h:
1811         * runtime/StringPrototype.cpp:
1812         (JSC::StringPrototype::StringPrototype):
1813         * runtime/Structure.cpp:
1814         (JSC::Structure::Structure):
1815         (JSC::Structure::addPropertyTransition):
1816         (JSC::Structure::toDictionaryTransition):
1817         (JSC::Structure::flattenDictionaryStructure):
1818         * runtime/Structure.h:
1819         (JSC::Structure::storedPrototype):
1820         * runtime/WeakGCMap.h:
1821         (JSC::WeakGCMap::uncheckedGet):
1822         (JSC::WeakGCMap::isValid):
1823         (JSC::::get):
1824         (JSC::::take):
1825         (JSC::::set):
1826         (JSC::::uncheckedRemove):
1827         * runtime/WriteBarrier.h: Removed.
1828
1829 2011-01-28  Gavin Barraclough  <barraclough@apple.com>
1830
1831         Reviewed by Geoff Garen.
1832
1833         https://bugs.webkit.org/show_bug.cgi?id=53352
1834         Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
1835
1836         The FixedVMPoolAllocator currently uses a best fix policy -
1837         switch to first fit, this is less prone to external fragmentation.
1838
1839         * jit/ExecutableAllocatorFixedVMPool.cpp:
1840         (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
1841         (JSC::AllocationTableSizeClass::blockSize):
1842         (JSC::AllocationTableSizeClass::blockCount):
1843         (JSC::AllocationTableSizeClass::blockAlignment):
1844         (JSC::AllocationTableSizeClass::size):
1845         (JSC::AllocationTableLeaf::AllocationTableLeaf):
1846         (JSC::AllocationTableLeaf::~AllocationTableLeaf):
1847         (JSC::AllocationTableLeaf::allocate):
1848         (JSC::AllocationTableLeaf::free):
1849         (JSC::AllocationTableLeaf::isEmpty):
1850         (JSC::AllocationTableLeaf::isFull):
1851         (JSC::AllocationTableLeaf::size):
1852         (JSC::AllocationTableLeaf::classForSize):
1853         (JSC::AllocationTableLeaf::dump):
1854         (JSC::LazyAllocationTable::LazyAllocationTable):
1855         (JSC::LazyAllocationTable::~LazyAllocationTable):
1856         (JSC::LazyAllocationTable::allocate):
1857         (JSC::LazyAllocationTable::free):
1858         (JSC::LazyAllocationTable::isEmpty):
1859         (JSC::LazyAllocationTable::isFull):
1860         (JSC::LazyAllocationTable::size):
1861         (JSC::LazyAllocationTable::dump):
1862         (JSC::LazyAllocationTable::classForSize):
1863         (JSC::AllocationTableDirectory::AllocationTableDirectory):
1864         (JSC::AllocationTableDirectory::~AllocationTableDirectory):
1865         (JSC::AllocationTableDirectory::allocate):
1866         (JSC::AllocationTableDirectory::free):
1867         (JSC::AllocationTableDirectory::isEmpty):
1868         (JSC::AllocationTableDirectory::isFull):
1869         (JSC::AllocationTableDirectory::size):
1870         (JSC::AllocationTableDirectory::classForSize):
1871         (JSC::AllocationTableDirectory::dump):
1872         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
1873         (JSC::FixedVMPoolAllocator::alloc):
1874         (JSC::FixedVMPoolAllocator::free):
1875         (JSC::FixedVMPoolAllocator::allocated):
1876         (JSC::FixedVMPoolAllocator::isValid):
1877         (JSC::FixedVMPoolAllocator::classForSize):
1878         (JSC::FixedVMPoolAllocator::offsetToPointer):
1879         (JSC::FixedVMPoolAllocator::pointerToOffset):
1880         (JSC::ExecutableAllocator::committedByteCount):
1881         (JSC::ExecutableAllocator::isValid):
1882         (JSC::ExecutableAllocator::underMemoryPressure):
1883         (JSC::ExecutablePool::systemAlloc):
1884         (JSC::ExecutablePool::systemRelease):
1885         * wtf/PageReservation.h:
1886         (WTF::PageReservation::PageReservation):
1887         (WTF::PageReservation::commit):
1888         (WTF::PageReservation::decommit):
1889         (WTF::PageReservation::committed):
1890
1891 2011-01-27  Oliver Hunt  <oliver@apple.com>
1892
1893         Reviewed by Geoffrey Garen.
1894
1895         Convert markstack to a slot visitor API
1896         https://bugs.webkit.org/show_bug.cgi?id=53219
1897
1898         Move the MarkStack over to a slot based marking API.
1899
1900         In order to avoiding aliasing concerns there are two new types
1901         that need to be used when holding on to JSValues and JSCell that
1902         need to be marked: WriteBarrier and DeprecatedPtr.  WriteBarrier
1903         is expected to be used for any JSValue or Cell that's lifetime and
1904         marking is controlled by another GC object.  DeprecatedPtr is used
1905         for any value that we need to rework ownership for.
1906
1907         The change over to this model has produced a large amount of
1908         code changes, but they are mostly mechanical (forwarding JSGlobalData,
1909         etc).
1910
1911         * API/JSCallbackObject.h:
1912         (JSC::JSCallbackObjectData::setPrivateProperty):
1913         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
1914         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
1915         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
1916         (JSC::JSCallbackObject::setPrivateProperty):
1917         * API/JSCallbackObjectFunctions.h:
1918         (JSC::::put):
1919         (JSC::::staticFunctionGetter):
1920         * API/JSObjectRef.cpp:
1921         (JSObjectMakeConstructor):
1922         (JSObjectSetPrivateProperty):
1923         * API/JSWeakObjectMapRefInternal.h:
1924         * JavaScriptCore.exp:
1925         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1926         * JavaScriptCore.xcodeproj/project.pbxproj:
1927         * bytecode/CodeBlock.cpp:
1928         (JSC::CodeBlock::markAggregate):
1929         * bytecode/CodeBlock.h:
1930         (JSC::CodeBlock::globalObject):
1931         * bytecompiler/BytecodeGenerator.cpp:
1932         (JSC::BytecodeGenerator::BytecodeGenerator):
1933         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
1934         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
1935         (JSC::BytecodeGenerator::findScopedProperty):
1936         * debugger/DebuggerActivation.cpp:
1937         (JSC::DebuggerActivation::DebuggerActivation):
1938         (JSC::DebuggerActivation::markChildren):
1939         * debugger/DebuggerActivation.h:
1940         * interpreter/Interpreter.cpp:
1941         (JSC::Interpreter::resolve):
1942         (JSC::Interpreter::resolveSkip):
1943         (JSC::Interpreter::resolveGlobalDynamic):
1944         (JSC::Interpreter::resolveBaseAndProperty):
1945         (JSC::Interpreter::unwindCallFrame):
1946         (JSC::appendSourceToError):
1947         (JSC::Interpreter::execute):
1948         (JSC::Interpreter::privateExecute):
1949         * interpreter/Register.h:
1950         (JSC::Register::jsValueSlot):
1951         * jit/JITStubs.cpp:
1952         (JSC::JITThunks::tryCacheGetByID):
1953         (JSC::DEFINE_STUB_FUNCTION):
1954         * jsc.cpp:
1955         (GlobalObject::GlobalObject):
1956         * runtime/Arguments.cpp:
1957         (JSC::Arguments::markChildren):
1958         (JSC::Arguments::getOwnPropertySlot):
1959         (JSC::Arguments::getOwnPropertyDescriptor):
1960         (JSC::Arguments::put):
1961         * runtime/Arguments.h:
1962         (JSC::Arguments::setActivation):
1963         (JSC::Arguments::Arguments):
1964         * runtime/ArrayConstructor.cpp:
1965         (JSC::ArrayConstructor::ArrayConstructor):
1966         (JSC::constructArrayWithSizeQuirk):
1967         * runtime/ArrayPrototype.cpp:
1968         (JSC::arrayProtoFuncSplice):
1969         * runtime/BatchedTransitionOptimizer.h:
1970         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
1971         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
1972         * runtime/BooleanConstructor.cpp:
1973         (JSC::BooleanConstructor::BooleanConstructor):
1974         (JSC::constructBoolean):
1975         (JSC::constructBooleanFromImmediateBoolean):
1976         * runtime/BooleanPrototype.cpp:
1977         (JSC::BooleanPrototype::BooleanPrototype):
1978         * runtime/ConservativeSet.h:
1979         (JSC::ConservativeSet::mark):
1980         * runtime/DateConstructor.cpp:
1981         (JSC::DateConstructor::DateConstructor):
1982         * runtime/DateInstance.cpp:
1983         (JSC::DateInstance::DateInstance):
1984         * runtime/DatePrototype.cpp:
1985         (JSC::dateProtoFuncSetTime):
1986         (JSC::setNewValueFromTimeArgs):
1987         (JSC::setNewValueFromDateArgs):
1988         (JSC::dateProtoFuncSetYear):
1989         * runtime/ErrorConstructor.cpp:
1990         (JSC::ErrorConstructor::ErrorConstructor):
1991         * runtime/ErrorInstance.cpp:
1992         (JSC::ErrorInstance::ErrorInstance):
1993         * runtime/ErrorPrototype.cpp:
1994         (JSC::ErrorPrototype::ErrorPrototype):
1995         * runtime/FunctionConstructor.cpp:
1996         (JSC::FunctionConstructor::FunctionConstructor):
1997         * runtime/FunctionPrototype.cpp:
1998         (JSC::FunctionPrototype::FunctionPrototype):
1999         * runtime/GetterSetter.cpp:
2000         (JSC::GetterSetter::markChildren):
2001         * runtime/GetterSetter.h:
2002         (JSC::GetterSetter::GetterSetter):
2003         (JSC::GetterSetter::getter):
2004         (JSC::GetterSetter::setGetter):
2005         (JSC::GetterSetter::setter):
2006         (JSC::GetterSetter::setSetter):
2007         * runtime/GlobalEvalFunction.cpp:
2008         (JSC::GlobalEvalFunction::GlobalEvalFunction):
2009         (JSC::GlobalEvalFunction::markChildren):
2010         * runtime/GlobalEvalFunction.h:
2011         (JSC::GlobalEvalFunction::cachedGlobalObject):
2012         * runtime/Heap.cpp:
2013         (JSC::Heap::markProtectedObjects):
2014         (JSC::Heap::markTempSortVectors):
2015         (JSC::Heap::markRoots):
2016         * runtime/InternalFunction.cpp:
2017         (JSC::InternalFunction::InternalFunction):
2018         * runtime/JSAPIValueWrapper.h:
2019         (JSC::JSAPIValueWrapper::value):
2020         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2021         * runtime/JSActivation.cpp:
2022         (JSC::JSActivation::put):
2023         * runtime/JSArray.cpp:
2024         (JSC::JSArray::JSArray):
2025         (JSC::JSArray::getOwnPropertySlot):
2026         (JSC::JSArray::getOwnPropertyDescriptor):
2027         (JSC::JSArray::put):
2028         (JSC::JSArray::putSlowCase):
2029         (JSC::JSArray::deleteProperty):
2030         (JSC::JSArray::increaseVectorLength):
2031         (JSC::JSArray::setLength):
2032         (JSC::JSArray::pop):
2033         (JSC::JSArray::push):
2034         (JSC::JSArray::unshiftCount):
2035         (JSC::JSArray::sort):
2036         (JSC::JSArray::fillArgList):
2037         (JSC::JSArray::copyToRegisters):
2038         (JSC::JSArray::compactForSorting):
2039         * runtime/JSArray.h:
2040         (JSC::JSArray::getIndex):
2041         (JSC::JSArray::setIndex):
2042         (JSC::JSArray::uncheckedSetIndex):
2043         (JSC::JSArray::markChildrenDirect):
2044         * runtime/JSByteArray.cpp:
2045         (JSC::JSByteArray::JSByteArray):
2046         * runtime/JSCell.h:
2047         (JSC::JSCell::MarkStack::append):
2048         (JSC::JSCell::MarkStack::appendCell):
2049         * runtime/JSFunction.cpp:
2050         (JSC::JSFunction::JSFunction):
2051         (JSC::JSFunction::getOwnPropertySlot):
2052         * runtime/JSGlobalObject.cpp:
2053         (JSC::markIfNeeded):
2054         (JSC::JSGlobalObject::reset):
2055         (JSC::JSGlobalObject::resetPrototype):
2056         (JSC::JSGlobalObject::markChildren):
2057         * runtime/JSGlobalObject.h:
2058         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2059         (JSC::JSGlobalObject::regExpConstructor):
2060         (JSC::JSGlobalObject::errorConstructor):
2061         (JSC::JSGlobalObject::evalErrorConstructor):
2062         (JSC::JSGlobalObject::rangeErrorConstructor):
2063         (JSC::JSGlobalObject::referenceErrorConstructor):
2064         (JSC::JSGlobalObject::syntaxErrorConstructor):
2065         (JSC::JSGlobalObject::typeErrorConstructor):
2066         (JSC::JSGlobalObject::URIErrorConstructor):
2067         (JSC::JSGlobalObject::evalFunction):
2068         (JSC::JSGlobalObject::objectPrototype):
2069         (JSC::JSGlobalObject::functionPrototype):
2070         (JSC::JSGlobalObject::arrayPrototype):
2071         (JSC::JSGlobalObject::booleanPrototype):
2072         (JSC::JSGlobalObject::stringPrototype):
2073         (JSC::JSGlobalObject::numberPrototype):
2074         (JSC::JSGlobalObject::datePrototype):
2075         (JSC::JSGlobalObject::regExpPrototype):
2076         (JSC::JSGlobalObject::methodCallDummy):
2077         (JSC::constructArray):
2078         * runtime/JSONObject.cpp:
2079         (JSC::Stringifier::Holder::object):
2080         (JSC::Stringifier::Holder::objectSlot):
2081         (JSC::Stringifier::markAggregate):
2082         (JSC::Stringifier::stringify):
2083         (JSC::Stringifier::Holder::appendNextProperty):
2084         (JSC::Walker::callReviver):
2085         (JSC::Walker::walk):
2086         * runtime/JSObject.cpp:
2087         (JSC::JSObject::defineGetter):
2088         (JSC::JSObject::defineSetter):
2089         (JSC::JSObject::removeDirect):
2090         (JSC::JSObject::putDirectFunction):
2091         (JSC::JSObject::putDirectFunctionWithoutTransition):
2092         (JSC::putDescriptor):
2093         (JSC::JSObject::defineOwnProperty):
2094         * runtime/JSObject.h:
2095         (JSC::JSObject::putDirectOffset):
2096         (JSC::JSObject::putUndefinedAtDirectOffset):
2097         (JSC::JSObject::flattenDictionaryObject):
2098         (JSC::JSObject::putDirectInternal):
2099         (JSC::JSObject::putDirect):
2100         (JSC::JSObject::putDirectFunction):
2101         (JSC::JSObject::putDirectWithoutTransition):
2102         (JSC::JSObject::putDirectFunctionWithoutTransition):
2103         (JSC::JSValue::putDirect):
2104         (JSC::JSObject::allocatePropertyStorageInline):
2105         (JSC::JSObject::markChildrenDirect):
2106         * runtime/JSStaticScopeObject.cpp:
2107         (JSC::JSStaticScopeObject::markChildren):
2108         * runtime/JSString.cpp:
2109         (JSC::StringObject::create):
2110         * runtime/JSValue.h:
2111         * runtime/JSWrapperObject.cpp:
2112         (JSC::JSWrapperObject::markChildren):
2113         * runtime/JSWrapperObject.h:
2114         (JSC::JSWrapperObject::internalValue):
2115         (JSC::JSWrapperObject::setInternalValue):
2116         * runtime/LiteralParser.cpp:
2117         (JSC::LiteralParser::parse):
2118         * runtime/Lookup.cpp:
2119         (JSC::setUpStaticFunctionSlot):
2120         * runtime/Lookup.h:
2121         (JSC::lookupPut):
2122         * runtime/MarkStack.h:
2123         * runtime/MathObject.cpp:
2124         (JSC::MathObject::MathObject):
2125         * runtime/NativeErrorConstructor.cpp:
2126         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2127         * runtime/NativeErrorPrototype.cpp:
2128         (JSC::NativeErrorPrototype::NativeErrorPrototype):
2129         * runtime/NumberConstructor.cpp:
2130         (JSC::NumberConstructor::NumberConstructor):
2131         (JSC::constructWithNumberConstructor):
2132         * runtime/NumberObject.cpp:
2133         (JSC::constructNumber):
2134         * runtime/NumberPrototype.cpp:
2135         (JSC::NumberPrototype::NumberPrototype):
2136         * runtime/ObjectConstructor.cpp:
2137         (JSC::ObjectConstructor::ObjectConstructor):
2138         (JSC::objectConstructorGetOwnPropertyDescriptor):
2139         * runtime/Operations.h:
2140         (JSC::normalizePrototypeChain):
2141         (JSC::resolveBase):
2142         * runtime/PrototypeFunction.cpp:
2143         (JSC::PrototypeFunction::PrototypeFunction):
2144         * runtime/PutPropertySlot.h:
2145         (JSC::PutPropertySlot::setExistingProperty):
2146         (JSC::PutPropertySlot::setNewProperty):
2147         (JSC::PutPropertySlot::base):
2148         * runtime/RegExpConstructor.cpp:
2149         (JSC::RegExpConstructor::RegExpConstructor):
2150         * runtime/ScopeChain.cpp:
2151         (JSC::ScopeChainNode::print):
2152         * runtime/ScopeChain.h:
2153         (JSC::ScopeChainNode::~ScopeChainNode):
2154         (JSC::ScopeChainIterator::operator*):
2155         (JSC::ScopeChainIterator::operator->):
2156         (JSC::ScopeChain::top):
2157         * runtime/ScopeChainMark.h:
2158         (JSC::ScopeChain::markAggregate):
2159         * runtime/SmallStrings.cpp:
2160         (JSC::isMarked):
2161         (JSC::SmallStrings::markChildren):
2162         * runtime/SmallStrings.h:
2163         (JSC::SmallStrings::emptyString):
2164         (JSC::SmallStrings::singleCharacterString):
2165         (JSC::SmallStrings::singleCharacterStrings):
2166         * runtime/StringConstructor.cpp:
2167         (JSC::StringConstructor::StringConstructor):
2168         * runtime/StringObject.cpp:
2169         (JSC::StringObject::StringObject):
2170         * runtime/StringObject.h:
2171         * runtime/StringPrototype.cpp:
2172         (JSC::StringPrototype::StringPrototype):
2173         * runtime/Structure.cpp:
2174         (JSC::Structure::flattenDictionaryStructure):
2175         * runtime/Structure.h:
2176         (JSC::Structure::storedPrototypeSlot):
2177         * runtime/WeakGCMap.h:
2178         (JSC::WeakGCMap::uncheckedGet):
2179         (JSC::WeakGCMap::uncheckedGetSlot):
2180         (JSC::::get):
2181         (JSC::::take):
2182         (JSC::::set):
2183         (JSC::::uncheckedRemove):
2184         * runtime/WriteBarrier.h: Added.
2185         (JSC::DeprecatedPtr::DeprecatedPtr):
2186         (JSC::DeprecatedPtr::get):
2187         (JSC::DeprecatedPtr::operator*):
2188         (JSC::DeprecatedPtr::operator->):
2189         (JSC::DeprecatedPtr::slot):
2190         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
2191         (JSC::DeprecatedPtr::operator!):
2192         (JSC::WriteBarrierBase::set):
2193         (JSC::WriteBarrierBase::get):
2194         (JSC::WriteBarrierBase::operator*):
2195         (JSC::WriteBarrierBase::operator->):
2196         (JSC::WriteBarrierBase::slot):
2197         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
2198         (JSC::WriteBarrierBase::operator!):
2199         (JSC::WriteBarrier::WriteBarrier):
2200         (JSC::operator==):
2201
2202 2011-01-28  Adam Roben  <aroben@apple.com>
2203
2204         Chromium build fix after r76967
2205
2206         * wtf/ThreadingPrimitives.h: Use OS(WINDOWS) instead of PLATFORM(WIN), to match other
2207         similar macros in this file.
2208
2209 2011-01-28  Michael Saboff  <msaboff@apple.com>
2210
2211         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
2212         https://bugs.webkit.org/show_bug.cgi?id=53271
2213
2214         Reapplying this this change.  No change from prior patch in
2215         JavaScriptCore.
2216
2217         Added new isValid() methods to check if a contained object in
2218         a WeakGCMap is valid when using an unchecked iterator.
2219
2220         * runtime/WeakGCMap.h:
2221         (JSC::WeakGCMap::isValid):
2222
2223 2011-01-27  Adam Roben  <aroben@apple.com>
2224
2225         Extract code to convert a WTF absolute time to a Win32 wait interval into a separate
2226         function
2227
2228         Fixes <http://webkit.org/b/53208> <rdar://problem/8922490> BinarySemaphore should wrap a
2229         Win32 event
2230
2231         Reviewed by Dave Hyatt.
2232
2233         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new function.
2234
2235         * wtf/ThreadingPrimitives.h: Declare the new function.
2236
2237         * wtf/ThreadingWin.cpp:
2238         (WTF::ThreadCondition::timedWait): Moved code to convert the absolute time to a wait
2239         interval from here...
2240         (WTF::absoluteTimeToWaitTimeoutInterval): ...to here.
2241
2242 2011-01-28  Sam Weinig  <sam@webkit.org>
2243
2244         Reviewed by Maciej Stachowiak.
2245
2246         Add basic rubber banding support
2247         <rdar://problem/8219429>
2248         https://bugs.webkit.org/show_bug.cgi?id=53277
2249
2250         * wtf/Platform.h: Add ENABLE for rubber banding.
2251
2252 2011-01-28  Sheriff Bot  <webkit.review.bot@gmail.com>
2253
2254         Unreviewed, rolling out r76893.
2255         http://trac.webkit.org/changeset/76893
2256         https://bugs.webkit.org/show_bug.cgi?id=53287
2257
2258         It made some tests crash on GTK and Qt debug bots (Requested
2259         by Ossy on #webkit).
2260
2261         * runtime/WeakGCMap.h:
2262
2263 2011-01-27  Adam Barth  <abarth@webkit.org>
2264
2265         Reviewed by Eric Seidel.
2266
2267         Add WTFString method to compare equality with Vector<UChar>
2268         https://bugs.webkit.org/show_bug.cgi?id=53266
2269
2270         I'm planning to use this method in the new XSS filter implementation,
2271         but it seems generally useful.
2272
2273         * wtf/text/StringImpl.h:
2274         (WTF::equalIgnoringNullity):
2275         * wtf/text/WTFString.h:
2276         (WTF::equalIgnoringNullity):
2277
2278 2011-01-27  Michael Saboff  <msaboff@apple.com>
2279
2280         Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
2281         https://bugs.webkit.org/show_bug.cgi?id=53271
2282
2283         Added new isValid() methods to check if a contained object in
2284         a WeakGCMap is valid when using an unchecked iterator.
2285
2286         * runtime/WeakGCMap.h:
2287         (JSC::WeakGCMap::isValid):
2288
2289 2011-01-26  Sam Weinig  <sam@webkit.org>
2290
2291         Reviewed by Maciej Stachowiak.
2292
2293         Add events to represent the start/end of a gesture scroll
2294         https://bugs.webkit.org/show_bug.cgi?id=53215
2295
2296         * wtf/Platform.h: Add ENABLE for gesture events. 
2297
2298 2011-01-26  Yael Aharon  <yael.aharon@nokia.com>
2299
2300         Reviewed by Laszlo Gombos.
2301
2302         [Qt][Symbian] Fix --minimal build
2303         https://bugs.webkit.org/show_bug.cgi?id=52839
2304
2305         Move definition of USE_SYSTEM_MALLOC out of pri file.
2306         Put it in platform.h instead.
2307
2308         * wtf/Platform.h:
2309         * wtf/TCSystemAlloc.cpp:
2310         * wtf/wtf.pri:
2311
2312 2011-01-26  Patrick Gansterer  <paroga@webkit.org>
2313
2314         Reviewed by Andreas Kling.
2315
2316         [WINCE] Add JIT support to build system
2317         https://bugs.webkit.org/show_bug.cgi?id=53079
2318
2319         * CMakeListsWinCE.txt:
2320
2321 2011-01-25  Adam Roben  <aroben@apple.com>
2322
2323         Windows Production build fix
2324
2325         Reviewed by Steve Falkenburg.
2326
2327         * JavaScriptCore.vcproj/JavaScriptCore.make: Set BUILDSTYLE to Release_PGO at the very start
2328         of the file so that ConfigurationBuildDir takes that into account. Also set it the right way
2329         (by redefining the macro) rather than the wrong way (by modifying the environment variable).
2330
2331 2011-01-25  Steve Falkenburg  <sfalken@apple.com>
2332
2333         Rubber-stamped by Adam Roben.
2334
2335         Windows production build fix.
2336         Use correct environment variable escaping
2337
2338         * JavaScriptCore.vcproj/JavaScriptCore.make:
2339         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2340
2341 2011-01-25  Oliver Hunt  <oliver@apple.com>
2342
2343         Reviewed by Gavin Barraclough.
2344
2345         JSON.stringify processing time exponentially grows with size of object
2346         https://bugs.webkit.org/show_bug.cgi?id=51922
2347
2348         Remove last use of reserveCapacity from JSON stringification, as it results
2349         in appalling append behaviour when there are a large number of property names
2350         and nothing else.
2351
2352         * runtime/JSONObject.cpp:
2353         (JSC::Stringifier::appendQuotedString):
2354
2355 2011-01-25  Antti Koivisto  <antti@apple.com>
2356
2357         Not reviewed.
2358         
2359         Try to fix windows build.
2360
2361         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2362
2363 2011-01-25  Antti Koivisto  <antti@apple.com>
2364
2365         Reviewed by Oliver Hunt.
2366
2367         REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector()
2368         https://bugs.webkit.org/show_bug.cgi?id=53061
2369          
2370         Cache did not know about the subclass so failed to fully delete the items. 
2371         Got rid of the subclass and moved the classes to separate files.
2372
2373         * CMakeLists.txt:
2374         * GNUmakefile.am:
2375         * JavaScriptCore.exp:
2376         * JavaScriptCore.gypi:
2377         * JavaScriptCore.pro:
2378         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2379         * JavaScriptCore.xcodeproj/project.pbxproj:
2380         * parser/JSParser.cpp:
2381         (JSC::JSParser::Scope::saveFunctionInfo):
2382         (JSC::JSParser::Scope::restoreFunctionInfo):
2383         (JSC::JSParser::findCachedFunctionInfo):
2384         (JSC::JSParser::parseFunctionInfo):
2385         * parser/SourceProvider.h:
2386         * parser/SourceProviderCache.cpp: Added.
2387         (JSC::SourceProviderCache::~SourceProviderCache):
2388         (JSC::SourceProviderCache::byteSize):
2389         * parser/SourceProviderCache.h: Added.
2390         (JSC::SourceProviderCache::SourceProviderCache):
2391         (JSC::SourceProviderCache::add):
2392         (JSC::SourceProviderCache::get):
2393         * parser/SourceProviderCacheItem.h: Added.
2394         (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
2395         (JSC::SourceProviderCacheItem::approximateByteSize):
2396         (JSC::SourceProviderCacheItem::closeBraceToken):
2397
2398 2011-01-25  Marcilio Mendonca  <mamendonca@rim.com>
2399
2400         Reviewed by Darin Adler.
2401
2402         Bug 53087: Refactoring: replaced a hanging "else" with a "return"
2403         statement
2404         https://bugs.webkit.org/show_bug.cgi?id=53087.
2405
2406         Refactoring work: Replaced a hanging "else" within an #if PLATFORM(M
2407         with a "return" so that the code is more readable and less error pro
2408         (e.g., "else" doesn't use braces so adding extra lines to the else
2409         block won't have any effect; even worse, code still compiles
2410         successfully.
2411
2412         * wtf/Assertions.cpp:
2413
2414 2011-01-24  Chris Marrin  <cmarrin@apple.com>
2415
2416         Reviewed by Eric Seidel.
2417
2418         Change ENABLE_3D_CANVAS to ENABLE_WEBGL
2419         https://bugs.webkit.org/show_bug.cgi?id=53041
2420
2421         * Configurations/FeatureDefines.xcconfig:
2422
2423 2011-01-25  Adam Roben  <aroben@apple.com>
2424
2425         Windows Production build fix
2426
2427         * JavaScriptCore.vcproj/JavaScriptCore.make: Added a missing "set".
2428
2429 2011-01-25  Patrick Gansterer  <paroga@webkit.org>
2430
2431         Reviewed by Eric Seidel.
2432
2433         Add missing defines for COMPILER(RVCT) && CPU(ARM_THUMB2)
2434         https://bugs.webkit.org/show_bug.cgi?id=52949
2435
2436         * jit/JITStubs.cpp:
2437
2438 2011-01-24  Adam Roben  <aroben@apple.com>
2439
2440         Windows Production build fix
2441
2442         * JavaScriptCore.vcproj/JavaScriptCore.make: Update for move of JavaScriptCore into Source.
2443
2444 2011-01-24  Peter Varga  <pvarga@webkit.org>
2445
2446         Reviewed by Oliver Hunt.
2447
2448         Optimize regex patterns which contain empty alternatives
2449         https://bugs.webkit.org/show_bug.cgi?id=51395
2450
2451         Eliminate the empty alternatives from the regex pattern and convert it to do
2452         the matching in an easier way.
2453
2454         * yarr/YarrPattern.cpp:
2455         (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
2456
2457 2011-01-24  Andras Becsi  <abecsi@webkit.org>
2458
2459         Reviewed by Csaba Osztrogonác.
2460
2461         [Qt] Move project files into Source
2462         https://bugs.webkit.org/show_bug.cgi?id=52891
2463
2464         * JavaScriptCore.pri:
2465         * JavaScriptCore.pro:
2466         * jsc.pro:
2467
2468 2011-01-23  Mark Rowe  <mrowe@apple.com>
2469
2470         Follow-up to r76477.
2471
2472         Fix the scripts that detect problematic code such as static initializers
2473         and destructors, weak vtables, inappropriate files in the framework wrappers,
2474         and public headers including private headers. These had all been broken
2475         since the projects were moved in to the Source directory as the paths to the
2476         scripts were not updated at that time.
2477
2478         * JavaScriptCore.xcodeproj/project.pbxproj:
2479
2480 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
2481
2482         Reviewed by Darin Adler.
2483
2484         Use WTF::StringHasher in WebCore
2485         https://bugs.webkit.org/show_bug.cgi?id=52934
2486
2487         Add an additional function to calculate the hash
2488         of data with a runtimedependent size.
2489
2490         * wtf/StringHasher.h:
2491         (WTF::StringHasher::createBlobHash):
2492
2493 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
2494
2495         Reviewed by David Kilzer.
2496
2497         Fix comment in String::ascii()
2498         https://bugs.webkit.org/show_bug.cgi?id=52980
2499
2500         * wtf/text/WTFString.cpp:
2501         (WTF::String::ascii):
2502
2503 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
2504
2505         Reviewed by David Kilzer.
2506
2507         Add String::containsOnlyLatin1()
2508         https://bugs.webkit.org/show_bug.cgi?id=52979
2509
2510         * wtf/text/WTFString.h:
2511         (WTF::String::containsOnlyLatin1):
2512         (WTF::charactersAreAllLatin1):
2513
2514 2011-01-23  Patrick Gansterer  <paroga@webkit.org>
2515
2516         Reviewed by Oliver Hunt.
2517
2518         Remove obsolete JSVALUE32 code
2519         https://bugs.webkit.org/show_bug.cgi?id=52948
2520
2521         r70111 removed support for JSVALUE32.
2522         ARM, MIPS and X86 support JSVALUE32_64 only.
2523
2524         * jit/JITStubs.cpp:
2525
2526 2011-01-22  Geoffrey Garen  <ggaren@apple.com>
2527
2528         Reviewed by Dan Bernstein.
2529
2530         ASSERT running run-webkit-tests --threaded.
2531         https://bugs.webkit.org/show_bug.cgi?id=52971
2532         
2533         SunSpider and v8 report no change.
2534
2535         * runtime/ConservativeSet.cpp:
2536         (JSC::ConservativeSet::grow):
2537         (JSC::ConservativeSet::add):
2538         * runtime/ConservativeSet.h: Tweaked the inline capacity to 128, and
2539         the growth policy to 2X, to make SunSpider and v8 happy.
2540         (JSC::ConservativeSet::ConservativeSet):
2541         (JSC::ConservativeSet::~ConservativeSet):
2542         (JSC::ConservativeSet::mark): Use OSAllocator directly, instead of malloc.
2543         Malloc is forbidden during a multi-threaded mark phase because it can
2544         cause deadlock.
2545
2546 2011-01-22  Geoffrey Garen  <ggaren@apple.com>
2547
2548         Reviewed by Geoffrey Garen.
2549
2550         Rubber-stamped by Maciej Stachowiak.
2551
2552         A few of Maciej's review suggestions for my last patch.
2553         https://bugs.webkit.org/show_bug.cgi?id=52946        
2554
2555         SunSpider reports no change.
2556
2557         * Android.mk:
2558         * CMakeLists.txt:
2559         * GNUmakefile.am:
2560         * JavaScriptCore.gypi:
2561         * JavaScriptCore.pro:
2562         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2563         * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems.
2564
2565         * runtime/ConservativeSet.cpp: Added.
2566         (JSC::isPointerAligned):
2567         (JSC::ConservativeSet::add):
2568         * runtime/ConservativeSet.h: Added.
2569         (JSC::ConservativeSet::ConservativeSet):
2570         (JSC::ConservativeSet::mark): Split ConservativeSet out into its own
2571         file, and moved the conservative check into ConservativeSet::add, making
2572         ConservativeSet's responsibility clearer.
2573
2574         * runtime/Heap.cpp:
2575         (JSC::Heap::markRoots):
2576         * runtime/MachineStackMarker.cpp:
2577         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
2578         (JSC::MachineStackMarker::markOtherThreadConservatively):
2579         * runtime/MachineStackMarker.h:
2580         * runtime/MarkStack.h: Updated for changes above.
2581
2582 2011-01-22  Patrick Gansterer  <paroga@webkit.org>
2583
2584         Unreviewed WinCE build fix for r76430.
2585
2586         * runtime/MachineStackMarker.cpp:
2587         (JSC::swapIfBackwards):
2588
2589 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
2590
2591         Reviewed by Beth Dakin.
2592
2593         Reorganized MarkedSpace, making many of its functions private.
2594
2595         * runtime/JSCell.h:
2596         (JSC::JSCell::Heap::heap):
2597         * runtime/MarkedSpace.h:
2598         (JSC::MarkedSpace::globalData):
2599         (JSC::MarkedSpace::heap):
2600
2601 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
2602
2603         Try to fix build: moved helper function out of #ifdef.
2604
2605         * runtime/MachineStackMarker.cpp:
2606         (JSC::swapIfBackwards):
2607
2608 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
2609
2610         Rubber-stamped by Maciej Stachowiak.
2611
2612         A few of Maciej's review suggestions for my last patch.
2613         https://bugs.webkit.org/show_bug.cgi?id=52946        
2614
2615         SunSpider reports no change.
2616
2617         * runtime/MachineStackMarker.cpp:
2618         (JSC::swapIfBackwards): Added a helper function for handling platforms
2619         where the stack can grow in any direction.
2620
2621         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
2622         (JSC::MachineStackMarker::markOtherThreadConservatively): Use the helper
2623         function.
2624
2625         (JSC::isPointerAligned): Use "!" instead of "==0" because a robot told me to.
2626
2627         (JSC::MachineStackMarker::markConservatively): Changed to use a more
2628         standard looping idiom, and to use the helper function above.
2629
2630         * runtime/MarkedSpace.h:
2631         (JSC::MarkedSpace::isCellAligned): Use "!" instead of "==0" because a robot told me to.
2632
2633 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
2634
2635         Reviewed by Maciej Stachowiak.
2636
2637         Cleaned up some conservative marking code.
2638         https://bugs.webkit.org/show_bug.cgi?id=52946
2639         
2640         SunSpider reports no change.
2641
2642         * interpreter/RegisterFile.h: No need for a special marking function,
2643         since we already expose a start() and end().
2644
2645         * runtime/Heap.cpp:
2646         (JSC::Heap::registerFile):
2647         (JSC::Heap::markRoots):
2648         * runtime/Heap.h:
2649         (JSC::Heap::contains): Migrated markConservatively() to the machine stack
2650         marker class. Now, Heap just provides a contains() function, which the
2651         machine stack marker uses for checking whether a pointer points into the heap.
2652
2653         * runtime/MachineStackMarker.cpp:
2654         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
2655         (JSC::MachineStackMarker::markOtherThreadConservatively):
2656         (JSC::isPointerAligned):
2657         (JSC::MachineStackMarker::markConservatively):
2658         * runtime/MachineStackMarker.h: Move the conservative marking code here.
2659
2660         * runtime/MarkStack.h:
2661         (JSC::ConservativeSet::add):
2662         (JSC::ConservativeSet::mark): Changed to using a vector instead of hash
2663         set. Vector seems to be a bit faster, and it generates smaller code.
2664
2665         * runtime/MarkedSpace.cpp:
2666         (JSC::MarkedSpace::containsSlowCase):
2667         * runtime/MarkedSpace.h:
2668         (JSC::MarkedSpace::isCellAligned):
2669         (JSC::MarkedSpace::isPossibleCell):
2670         (JSC::MarkedSpace::contains): Kept the code for determining whether a
2671         pointer pointed into marked space, and moved the code for marking
2672         a set of conservative pointers into the machine stack marker.
2673
2674         * wtf/HashSet.h:
2675         (WTF::::add): Added two missing inlines that I noticed while testing
2676         vector vs hash set.
2677
2678 2011-01-21  Mark Rowe  <mrowe@apple.com>
2679
2680         Reviewed by Sam Weinig.
2681
2682         Work around a Clang bug <rdar://problem/8876150> that leads to it incorrectly emitting an access
2683         control warning when a client tries to use operator bool exposed above via "using PageBlock::operator bool".
2684
2685         * wtf/PageAllocation.h:
2686         (WTF::PageAllocation::operator bool):
2687         * wtf/PageReservation.h:
2688         (WTF::PageReservation::operator bool):
2689
2690 2011-01-21  Michael Saboff  <msaboff@apple.com>
2691
2692         Reviewed by Oliver Hunt.
2693
2694         [RegexFuzz] Hang with forward assertion
2695         https://bugs.webkit.org/show_bug.cgi?id=52825
2696         <rdar://problem/8894332>
2697
2698         The backtrackTo label from the first term in a list of terms is
2699         being overwritten by processing of subsequent terms.  Changed
2700         copyBacktrackToLabel() to check for an existing bcaktrackTo label
2701         before copying and renamed it to propagateBacktrackToLabel() since
2702         it no longer copies.
2703
2704         * yarr/YarrJIT.cpp:
2705         (JSC::Yarr::YarrGenerator::BacktrackDestination::propagateBacktrackToLabel):
2706         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
2707
2708 2011-01-21  Geoffrey Garen  <ggaren@apple.com>
2709
2710         Reviewed by Sam Weinig.
2711
2712         Moved the mark stack from global data to the heap, since it pertains
2713         to the heap, and not the virtual machine as a whole.
2714         https://bugs.webkit.org/show_bug.cgi?id=52930
2715         
2716         SunSpider reports no change.
2717
2718         * runtime/Heap.cpp:
2719         (JSC::Heap::Heap):
2720         (JSC::Heap::markRoots):
2721         * runtime/Heap.h:
2722         * runtime/JSGlobalData.cpp:
2723         (JSC::JSGlobalData::JSGlobalData):
2724         * runtime/JSGlobalData.h:
2725
2726 2011-01-21  Peter Gal  <galpeter@inf.u-szeged.hu>
2727
2728         Reviewed by Darin Adler.
2729
2730         REGRESSION(r76177): All JavaScriptCore tests fail on ARM
2731         https://bugs.webkit.org/show_bug.cgi?id=52814
2732
2733         Get the approximateByteSize value before releasing the OwnPtr.
2734
2735         * parser/JSParser.cpp:
2736         (JSC::JSParser::parseFunctionInfo):
2737
2738 2011-01-21  Xan Lopez  <xlopez@igalia.com>
2739
2740         Reviewed by Martin Robinson.
2741
2742         Remove unnecessary <stdio.h> include
2743         https://bugs.webkit.org/show_bug.cgi?id=52884
2744
2745         * jit/JIT.cpp: remove unnecessary include.
2746
2747 2011-01-20  Ryosuke Niwa  <rniwa@webkit.org>
2748
2749         Reviewed by Maciej Stachowiak.
2750
2751         Added OwnPtrCommon.h because OwnArrayPtr::set calls deleteOwnedPtr.
2752
2753         * wtf/OwnArrayPtr.h:
2754
2755 2011-01-20  Patrick Gansterer  <paroga@webkit.org>
2756
2757         Reviewed by Oliver Hunt.
2758
2759         [WINCE] Remove obsolete JSVALUE32 code
2760         https://bugs.webkit.org/show_bug.cgi?id=52450
2761
2762         Remove the "offset hack" in create_jit_stubs, since we
2763         only support JSVALUE32_64 in the meantime.
2764
2765         * create_jit_stubs: Removed offset argument
2766         * jit/JITStubs.cpp:
2767
2768 2011-01-20  Geoffrey Garen  <ggaren@apple.com>
2769
2770         Reviewed by Oliver Hunt.
2771
2772         When marking conservatively, guard against reviving dead objects.
2773         https://bugs.webkit.org/show_bug.cgi?id=52840
2774         
2775         SunSpider and v8 say no change.
2776
2777         * interpreter/RegisterFile.h:
2778         (JSC::RegisterFile::markCallFrames): Updated to use the ConservativeSet API.
2779
2780         * runtime/Heap.cpp:
2781         (JSC::Heap::recordExtraCost): No need to guard against conservative
2782         marking reviving dead objects anymore, since the conservative marking
2783         mechanism guards against this now.
2784
2785         (JSC::Heap::markConservatively):
2786         (JSC::Heap::markProtectedObjects):
2787         (JSC::Heap::markTempSortVectors): Don't drain the mark stack inside a
2788         marking function. We want to establish a separation of concerns between
2789         visiting roots and draining the mark stack.
2790
2791         (JSC::Heap::markRoots): Gather the set of conservative references before
2792         clearning mark bits, because conservative marking now uses the mark bits
2793         to determine if a reference is valid, and avoid reviving dead objects.
2794
2795         (JSC::Heap::collectAllGarbage): No need to guard against conservative
2796         marking reviving dead objects anymore, since the conservative marking
2797         mechanism guards against this now.
2798
2799         * runtime/Heap.h: Updated to use the ConservativeSet API.
2800
2801         * runtime/MachineStackMarker.cpp:
2802         (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
2803         (JSC::MachineStackMarker::markCurrentThreadConservatively):
2804         (JSC::MachineStackMarker::markOtherThreadConservatively):
2805         (JSC::MachineStackMarker::markMachineStackConservatively):
2806         * runtime/MachineStackMarker.h: Ditto.
2807
2808         * runtime/MarkStack.h:
2809         (JSC::ConservativeSet::add):
2810         (JSC::ConservativeSet::mark): Added ConservativeSet, for gathering the
2811         set of conservative references. This is different from MarkStack, since
2812         we don't mark the set until it is completely gathered.
2813
2814         * runtime/MarkedSpace.cpp:
2815         (JSC::MarkedSpace::freeBlock):
2816         (JSC::MarkedSpace::resizeBlocks):
2817         (JSC::MarkedSpace::markConservatively):
2818         * runtime/MarkedSpace.h: When marking conservatively, guard against
2819         reviving dead objects.
2820
2821 2011-01-20  Siddharth Mathur  <siddharth.mathur@nokia.com>
2822
2823         Reviewed by Geoffrey Garen.
2824
2825         [Symbian] Fix StackBounds::initialize()
2826         https://bugs.webkit.org/show_bug.cgi?id=52842
2827
2828         * wtf/StackBounds.cpp:
2829         (WTF::StackBounds::initialize): Use TThreadStackInfo.iLimit for stack limit
2830
2831 2011-01-20  Michael Saboff  <msaboff@apple.com>
2832
2833         Reviewed by Oliver Hunt.
2834
2835         <rdar://problem/8890203> [RegexFuzz] Crash in generated code (52773)
2836         https://bugs.webkit.org/show_bug.cgi?id=52773
2837
2838         Fixed case where an existing DataLabelPtr is overwritten.  The
2839         replacing DataLabelPtr is now resolved immediately in
2840         linkDataLabelToBacktrackIfExists().  Cleanup - eliminated bool
2841         return value for the routine as it was never used.
2842
2843         * yarr/YarrJIT.cpp:
2844         (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
2845
2846 2011-01-20  Andras Becsi  <abecsi@webkit.org>
2847
2848         Reviewed by Csaba Osztrogonác.
2849
2850         [Qt][WK2] WebKit2 enabled build fails to link
2851
2852         Work around undefined reference linking issues until the buildsystem gets redesigned.
2853         These issues first occured in minimal builds (see BUG 50519).
2854
2855         * JavaScriptCore.pri: link as whole-archive for WebKit2 builds
2856
2857 2011-01-20  Zoltan Horvath  <zoltan@webkit.org>
2858
2859         Reviewed by Csaba Osztrogonác.
2860
2861         Refactoring of the custom allocation framework
2862         https://bugs.webkit.org/show_bug.cgi?id=49897
2863
2864         Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
2865         The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
2866         equivalent macro implementation at the necessary places.
2867
2868         * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
2869
2870 2011-01-20  Mark Rowe  <mrowe@apple.com>
2871
2872         Reviewed by Maciej Stachowiak.
2873
2874         Follow-up to r75766 / <rdar://problem/5469576>.
2875
2876         We were failing to initialize the key, causing all sorts of unexpected behavior.
2877
2878         * wtf/FastMalloc.cpp:
2879         (WTF::setThreadHeap):
2880         (WTF::TCMalloc_ThreadCache::GetThreadHeap):
2881         (WTF::TCMalloc_ThreadCache::InitTSD): Ensure that the key is initialized.
2882
2883 2011-01-18  Geoffrey Garen  <ggaren@apple.com>
2884
2885         Reviewed by Darin Adler.
2886
2887         Rolled back in r76078, with crash fixed.
2888         https://bugs.webkit.org/show_bug.cgi?id=52668
2889         
2890         * runtime/JSGlobalObject.cpp:
2891         (JSC::JSGlobalObject::markChildren): Account for the fact that the global
2892         object moves its variables into and out of the register file. While out
2893         of the register file, the symbol table's size is not an accurate count
2894         for the size of the register array, since the BytecodeGenerator might
2895         be compiling, adding items to the symbol table.
2896         
2897 2011-01-18  Darin Adler  <darin@apple.com>
2898
2899         Reviewed by Geoffrey Garen.
2900
2901         Stack overflow when converting an Error object to string
2902         https://bugs.webkit.org/show_bug.cgi?id=46410
2903
2904         * Android.mk: Added StringRecursionChecker.cpp and
2905         StringRecursionChecker.h.
2906         * CMakeLists.txt: Ditto.
2907         * GNUmakefile.am: Ditto.
2908         * JavaScriptCore.gypi: Ditto.
2909         * JavaScriptCore.pro: Ditto.
2910         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
2911         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
2912
2913         * runtime/ArrayPrototype.cpp:
2914         (JSC::arrayProtoFuncToString): Use StringRecursionChecker instead
2915         of the older hand-written code to do the same thing.
2916         (JSC::arrayProtoFuncToLocaleString): Ditto.
2917         (JSC::arrayProtoFuncJoin): Ditto.
2918
2919         * runtime/ErrorPrototype.cpp:
2920         (JSC::errorProtoFuncToString): Use StringRecursionChecker.
2921
2922         * runtime/JSGlobalData.h: Renamed arrayVisitedElements to
2923         stringRecursionCheckVisitedObjects.
2924
2925         * runtime/RegExpPrototype.cpp:
2926         (JSC::regExpProtoFuncToString): Use StringRecursionChecker.
2927
2928         * runtime/StringRecursionChecker.cpp: Added.
2929         * runtime/StringRecursionChecker.h: Added.
2930
2931 2011-01-19  Oliver Hunt  <oliver@apple.com>
2932
2933         Reviewed by Gavin Barraclough.
2934
2935         Remove non-spec support for callable RegExp
2936         https://bugs.webkit.org/show_bug.cgi?id=28285
2937
2938         Remove support for callable regexps.  If it breaks sites we can
2939         just roll this out.
2940
2941         * runtime/RegExpObject.cpp:
2942         * runtime/RegExpObject.h:
2943         * tests/mozilla/expected.html: update results.
2944
2945 2011-01-19  Antti Koivisto  <antti@apple.com>
2946
2947         Reviewed by Oliver Hunt.
2948
2949         Cache function offsets to speed up javascript parsing
2950         https://bugs.webkit.org/show_bug.cgi?id=52622
2951         
2952         Use cache to save function offsets and some other info.
2953         This avoids quite a bit of work when reparsing the source.
2954
2955         * parser/ASTBuilder.h:
2956         * parser/JSParser.cpp:
2957         (JSC::JSParser::CachedFunctionInfo::CachedFunctionInfo):
2958         (JSC::JSParser::CachedFunctionInfo::approximateByteSize):
2959         (JSC::JSParser::CachedFunctionInfo::closeBraceToken):
2960         (JSC::JSParser::Scope::copyCapturedVariablesToVector):
2961         (JSC::JSParser::Scope::saveFunctionInfo):
2962         (JSC::JSParser::Scope::restoreFunctionInfo):
2963         (JSC::JSParser::findCachedFunctionInfo):
2964         (JSC::JSParser::JSParser):
2965         (JSC::JSParser::parseProgram):
2966         (JSC::JSParser::parseFunctionInfo):
2967         * parser/Lexer.h:
2968         (JSC::Lexer::setOffset):
2969         (JSC::Lexer::setLineNumber):
2970         (JSC::Lexer::sourceProvider):
2971         * parser/SourceProvider.h:
2972         (JSC::SourceProviderCache::SourceProviderCache):
2973         (JSC::SourceProviderCache::~SourceProviderCache):
2974         (JSC::SourceProviderCache::byteSize):
2975         (JSC::SourceProviderCache::add):
2976         (JSC::SourceProviderCache::get):
2977         (JSC::SourceProvider::SourceProvider):
2978         (JSC::SourceProvider::~SourceProvider):
2979         (JSC::SourceProvider::cache):
2980         (JSC::SourceProvider::notifyCacheSizeChanged):
2981         (JSC::SourceProvider::cacheSizeChanged):
2982         * parser/SyntaxChecker.h:
2983
2984 2011-01-19  Mark Rowe  <mrowe@apple.com>
2985
2986         Reviewed by Darin Adler.
2987
2988         Follow-up to r75766 / <rdar://problem/5469576>.
2989
2990         * DerivedSources.make: Evaluate the SDKROOT variable correctly.
2991
2992 2011-01-19  Oliver Hunt  <oliver@apple.com>
2993
2994         Reviewed by Gavin Barraclough.
2995
2996         [jsfunfuzz] Defining a function called __proto__ inside an eval triggers an assertion
2997         https://bugs.webkit.org/show_bug.cgi?id=52672
2998
2999         Rather than coming up with a somewhat convoluted mechanism to ensure that
3000         developers can override the global objects prototype with a function named
3001         __proto__ and expect it to work, we just disallow it at the syntax level.
3002
3003         * parser/JSParser.cpp:
3004         (JSC::JSParser::parseFunctionInfo):
3005
3006 2011-01-19  Michael Saboff  <msaboff@apple.com>
3007
3008         Reviewed by Darin Adler.
3009
3010         <rdar://problem/8882994> Regression: Simple nested backtrack hangs
3011         https://bugs.webkit.org/show_bug.cgi?id=52675
3012
3013         The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540
3014         broke simple backtracking in some cases.  Reworked that change to 
3015         link both jumps and labels.
3016
3017         * yarr/YarrJIT.cpp:
3018         (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel):
3019         (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
3020         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
3021
3022 2011-01-19  Pavel Podivilov  <podivilov@chromium.org>
3023
3024         Reviewed by Yury Semikhatsky.
3025
3026         Web Inspector: [JSC] scripts have incorrect starting line (always 1).
3027         https://bugs.webkit.org/show_bug.cgi?id=52721
3028
3029         * debugger/Debugger.cpp:
3030         (JSC::Debugger::recompileAllJSFunctions):
3031         * debugger/Debugger.h:
3032         * parser/Parser.h:
3033         (JSC::Parser::parse):
3034         * parser/SourceCode.h:
3035         (JSC::SourceCode::SourceCode):
3036         * parser/SourceProvider.h:
3037         (JSC::SourceProvider::startPosition):
3038
3039 2011-01-19  Csaba Osztrogonác  <ossy@webkit.org>
3040
3041         Reviewed by Laszlo Gombos and Tor Arne Vestbø.
3042
3043         [Qt] Remove unnecessary "../Source" from paths
3044         after moving source files into Source is finished.
3045
3046         * JavaScriptCore.pri:
3047
3048 2011-01-19  Benjamin Kalman  <kalman@chromium.org>
3049
3050         Reviewed by Darin Adler.
3051
3052         Don't return void from void function String::split
3053         https://bugs.webkit.org/show_bug.cgi?id=52684
3054
3055         * wtf/text/WTFString.cpp:
3056         (WTF::String::split):
3057
3058 2011-01-18  Kenneth Russell  <kbr@google.com>
3059
3060         Unreviewed, rolling out r76078.
3061         http://trac.webkit.org/changeset/76078
3062         https://bugs.webkit.org/show_bug.cgi?id=52668
3063
3064         Caused crashes of fast/canvas/webgl/constants.html,
3065         fast/canvas/webgl/gl-enum-tests.html, and possibly other layout
3066         test crashes in Release mode. WebGL crashes were observed with
3067         "run-webkit-tests fast/canvas/webgl". It was necessary to run
3068         multiple tests to provoke the crash.
3069
3070         * interpreter/RegisterFile.h:
3071         (JSC::RegisterFile::markGlobals):
3072         * runtime/JSActivation.cpp:
3073         (JSC::JSActivation::markChildren):
3074         * runtime/JSGlobalObject.cpp:
3075         (JSC::JSGlobalObject::markChildren):
3076
3077 2011-01-18  Oliver Hunt  <oliver@apple.com>
3078
3079         Reviewed by Gavin Barraclough.
3080
3081         [jsfunfuzz] Assertion asking activation for arguments when arguments is overridden
3082         https://bugs.webkit.org/show_bug.cgi?id=52690
3083
3084         Clean up code to retrieve arguments from activation and function objects.
3085         Remove the incorrect assertion from JSActivation's argumentsGetter.
3086
3087         * interpreter/Interpreter.cpp:
3088         (JSC::Interpreter::retrieveArguments):
3089         * runtime/JSActivation.cpp:
3090         (JSC::JSActivation::argumentsGetter):
3091
3092 2011-01-18  Geoffrey Garen  <ggaren@apple.com>
3093
3094         Reviewed by Darin Adler.
3095
3096         Removed RegisterFile::markGlobals because it was obtuse, and it
3097         unnecessarily relied on conservative marking.
3098         https://bugs.webkit.org/show_bug.cgi?id=52668
3099
3100         * interpreter/RegisterFile.h: Removed markGlobals.
3101
3102         * runtime/JSActivation.cpp:
3103         (JSC::JSActivation::markChildren): Added a comment explaning why some
3104         JSActivations don't always mark their registers arrays.
3105
3106         * runtime/JSGlobalObject.cpp:
3107         (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark
3108         the registers array directly.
3109
3110 2011-01-18  Michael Saboff  <msaboff@apple.com>
3111
3112         Reviewed by Oliver Hunt.
3113
3114         <rdar://problem/8875432> Regression: Some text-only e-mails cause hang beneath RegExp::match (52540)
3115         https://bugs.webkit.org/show_bug.cgi?id=52540
3116         https://bugs.webkit.org/show_bug.cgi?id=52662
3117
3118         Directly use backtrack label with parentheses nested under a
3119         non-capturing parentheses.  Also linked current parentheses
3120         tail code object for possible parens nested within a non-capturing
3121         parentheses.
3122
3123         * yarr/YarrJIT.cpp:
3124         (JSC::Yarr::YarrGenerator::BacktrackDestination::linkBacktrackToLabel):
3125         (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
3126
3127 2011-01-18  Daniel Bates  <dbates@rim.com>
3128
3129         Reviewed by Gavin Barraclough.
3130
3131         Only use moving memory model assumption in ExecutableAllocator::intializePageSize() for Symbian OS
3132         https://bugs.webkit.org/show_bug.cgi?id=52517
3133
3134         Patch by David Tapuska
3135
3136         Currently, we compile code with respect to the Symbian-specific moving memory model
3137         assumption for all ARMv5 or lower architectures. Instead, we should only compile
3138         such code when building for Symbian OS on those architectures because this model
3139         is Symbian-specific.
3140
3141         * jit/ExecutableAllocator.cpp:
3142         (JSC::ExecutableAllocator::intializePageSize):
3143
3144 2011-01-18  Dimitry Andric  <dim@freebsd.org>
3145
3146         Reviewed by Andreas Kling.
3147
3148         Fix linking JavaScriptCore on FreeBSD/amd64
3149         https://bugs.webkit.org/show_bug.cgi?id=52591
3150
3151         Linking of JavaScriptCore on FreeBSD/amd64 fails, for the same reason as
3152         in bug 28422: cti_vm_throw needs a "@plt" suffix, otherwise the linker
3153         complains about the relocation type.
3154
3155         * jit/JITStubs.cpp: use @plt suffix on x86_64 platforms, for both Linux
3156         and FreeBSD.
3157
3158 2011-01-18  Oliver Hunt  <oliver@apple.com>
3159
3160         Reviewed by Antti Koivisto.
3161
3162         [jsfunfuzz] Assertion in codegen for array of NaN constants
3163         https://bugs.webkit.org/show_bug.cgi?id=52643
3164
3165         Don't cache NaN literals in the code generator, as NaN doesn't compare
3166         as equal to itself it causes problems when rehashing the number cache.
3167
3168         * bytecompiler/BytecodeGenerator.cpp:
3169         (JSC::BytecodeGenerator::emitLoad):
3170
3171 2011-01-17  Jarred Nicholls  <jarred@sencha.com>
3172
3173         Reviewed by Csaba Osztrogonác.
3174
3175         REGRESSION(r75709): Return value of fscanf() shouldn't be ignored.
3176         https://bugs.webkit.org/show_bug.cgi?id=52585
3177         
3178         gcc 4.4.4+ has warn_unused_value attribute on fscanf, so we should check
3179         the return value to get around the gcc warning
3180
3181         * jit/ExecutableAllocatorFixedVMPool.cpp:
3182         (JSC::maybeModifyVMPoolSize):
3183
3184 2011-01-17  Michael Saboff  <msaboff@apple.com>
3185
3186         Reviewed by Oliver Hunt.
3187
3188         [regexfuzz] Crash running regex with lookahead
3189         https://bugs.webkit.org/show_bug.cgi?id=52548
3190
3191         Eliminated agressive chaining of backtracks.  This code was overwriting
3192         already valid backtrack information.
3193
3194         * yarr/YarrJIT.cpp:
3195         (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks):
3196
3197 2011-01-17  Tony Gentilcore  <tonyg@chromium.org>
3198
3199         Reviewed by Alexey Proskuryakov.
3200
3201         Fix some headers with missing or misspelled #ifndef guards
3202         https://bugs.webkit.org/show_bug.cgi?id=52545
3203
3204         * wtf/RefPtrHashMap.h:
3205
3206 2011-01-17  Dan Bernstein  <mitz@apple.com>
3207
3208         Rubber-stamped by Mark Rowe.
3209
3210         Update xcodeproj svn:ignore to include xcuserdata.
3211
3212         * JavaScriptCore.xcodeproj: Modified property svn:ignore.
3213
3214 2011-01-16  Adam Barth  <abarth@webkit.org>
3215
3216         Rubber-stamped by Eric Seidel.
3217
3218         Move WebKit into Source
3219         https://bugs.webkit.org/show_bug.cgi?id=52530
3220
3221         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3222
3223 2011-01-16  Oliver Hunt  <oliver@apple.com>
3224
3225         Reviewed by Sam Weinig.
3226
3227         [jsfunfuzz] Parser doesn't correctly validate for-loop syntax
3228         https://bugs.webkit.org/show_bug.cgi?id=52516
3229
3230         Ensure that we always check for a semicolon after encountering
3231         multiple declarations in the initialiser portion of a for-loop.
3232
3233         * parser/JSParser.cpp:
3234         (JSC::JSParser::parseForStatement):
3235
3236 2011-01-16  Oliver Hunt  <oliver@apple.com>
3237
3238         Reviewed by Geoffrey Garen.
3239
3240         Strict mode restrictions on arguments and eval usage aren't complete
3241         https://bugs.webkit.org/show_bug.cgi?id=52528
3242
3243         Fix a few bugs in strict mode where we incorrect allow mutation of
3244         arguments and eval in the parser.
3245
3246         Alas the "optimisation" used by the syntax checker for validating
3247         binary and unary expressions was too aggressive: we do actually need
3248         a stack for operations and operands although it needn't be as complete
3249         as that used for the full AST builder.
3250
3251         Also disallow assignment to arguments in all cases as allowing arguments
3252         to be assignable is always an error in strict mode, regardless of context.
3253
3254         * parser/ASTBuilder.h:
3255         (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext):
3256         (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext):
3257         * parser/JSParser.cpp:
3258         (JSC::JSParser::parseAssignmentExpression):
3259         (JSC::JSParser::parseBinaryExpression):
3260         (JSC::JSParser::parseUnaryExpression):
3261         * parser/SyntaxChecker.h:
3262         (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext):
3263         (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext):
3264         (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext):
3265         (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext):
3266         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
3267         (JSC::SyntaxChecker::operatorStackPop):
3268
3269 2011-01-15  Geoffrey Garen  <ggaren@apple.com>
3270
3271         Reviewed by Oliver Hunt.
3272
3273         Rolled back in r75886.
3274         https://bugs.webkit.org/show_bug.cgi?id=52527
3275         
3276         r75886 broke the GTK Linux bot because Linux was -- quite surprisingly --
3277         set up to use the constants for embedded devices.
3278
3279         * jit/ExecutableAllocatorFixedVMPool.cpp:
3280         (JSC::maybeModifyVMPoolSize): Separated Linux constants from embedded
3281         constants.
3282
3283 2011-01-15  Sheriff Bot  <webkit.review.bot@gmail.com>
3284
3285         Unreviewed, rolling out r75886.
3286         http://trac.webkit.org/changeset/75886
3287         https://bugs.webkit.org/show_bug.cgi?id=52526
3288
3289         "Broke GTK+ 64bit" (Requested by xan_ on #webkit).
3290
3291         * jit/ExecutableAllocatorFixedVMPool.cpp:
3292
3293 2011-01-15  Geoffrey Garen  <ggaren@apple.com>
3294
3295         Reviewed by Sam Weinig.
3296
3297         <rdar://problem/8870429> Shrink the executable pool on embedded devices
3298
3299         * jit/ExecutableAllocatorFixedVMPool.cpp: Dropped the pool size from 32MB
3300         to 16MB.
3301
3302 2011-01-15  Oliver Hunt  <oliver@apple.com>
3303
3304         Reviewed by Maciej Stachowiak.
3305
3306         Incorrect behavior changing attributes of an accessor
3307         https://bugs.webkit.org/show_bug.cgi?id=52515
3308
3309         defineProperty doesn't correctly handle changing attributes of an accessor
3310         property.  This is because we don't pass the full descriptor to the 
3311         putDescriptor helper function, which means we have insufficient information
3312         to do the right thing. Once that's passed the correct behavior is relatively
3313         simple to implement.
3314
3315         * runtime/JSObject.cpp:
3316         (JSC::putDescriptor):
3317         (JSC::JSObject::defineOwnProperty):
3318
3319 2011-01-14  Oliver Hunt  <oliver@apple.com>
3320
3321         Reviewed by Maciej Stachowiak.
3322
3323         [jsfunfuzz] Incorrect handling of consecutive duplicate labels
3324         https://bugs.webkit.org/show_bug.cgi?id=52505
3325
3326         Compare StringImpl*'s instead of Identifier*'s when looking for duplicate
3327         labels.
3328
3329         * parser/JSParser.cpp:
3330         (JSC::JSParser::parseExpressionOrLabelStatement):
3331
3332 2011-01-14  Simon Fraser  <simon.fraser@apple.com>
3333
3334         No review.
3335         
3336         Initialize m_operationInProgress after r75855.
3337
3338         * runtime/Heap.cpp:
3339         (JSC::Heap::Heap):
3340
3341 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
3342
3343         Reverted accidentally committed code from my last checkin.
3344
3345         * runtime/Heap.cpp:
3346         (JSC::Heap::markRoots):
3347
3348 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
3349
3350         Reviewed by Sam Weinig.
3351         
3352         Try to fix the GTK bot.
3353
3354         * runtime/Heap.cpp:
3355         (JSC::Heap::Heap):
3356         (JSC::Heap::markRoots): Kids, remember to initialize your data members.
3357         Knowing is half the battle.
3358
3359 2011-01-14  Oliver Hunt  <oliver@apple.com>
3360
3361         Reviewed by Stephanie Lewis.
3362
3363         [jsfunfuzz] We should be clearing the lexers temporary character buffers when switching to strict mode
3364         https://bugs.webkit.org/show_bug.cgi?id=52501
3365
3366         Clear the temporary character buffers used for reading escaped characters and
3367         numbers.
3368
3369         * parser/Lexer.h:
3370         (JSC::Lexer::setOffset):
3371
3372 2011-01-14  Geoffrey Garen  <ggaren@apple.com>
3373
3374         Try to fix non-Dtrace builds: #include Tracing.h instead of TracingDtrace.h.
3375
3376         * runtime/Heap.cpp:
3377
3378 2011-01-13  Geoffrey Garen  <ggaren@apple.com>
3379
3380         Reviewed by Oliver Hunt.
3381
3382         Split out a MarkedSpace strategy object from Heap.
3383         https://bugs.webkit.org/show_bug.cgi?id=52421
3384         
3385         SunSpider reports no change.
3386
3387         * Android.mk:
3388         * CMakeLists.txt:
3389         * GNUmakefile.am:
3390         * JavaScriptCore.gypi:
3391         * JavaScriptCore.pro:
3392         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3393         * JavaScriptCore.xcodeproj/project.pbxproj: Updated our 7 build systems. Which is cool.
3394
3395         * runtime/Heap.cpp:
3396         (JSC::Heap::Heap):
3397         (JSC::Heap::destroy):
3398         (JSC::Heap::recordExtraCost):
3399         (JSC::Heap::allocate):
3400         (JSC::Heap::markConservatively):
3401         (JSC::Heap::markRoots):
3402         (JSC::Heap::objectCount):
3403         (JSC::Heap::statistics):
3404         (JSC::Heap::size):
3405         (JSC::Heap::isBusy):
3406         (JSC::Heap::collectAllGarbage):
3407         (JSC::Heap::primaryHeapBegin):
3408         (JSC::Heap::primaryHeapEnd):
3409         * runtime/Heap.h:
3410         (JSC::Heap::globalData):
3411         (JSC::Heap::markedSpace):
3412         (JSC::Heap::isCellMarked):
3413         (JSC::Heap::checkMarkCell):
3414         (JSC::Heap::markCell): Moved all code pertaining to managing chunks of
3415         collector memory out of this class. Heap now just delegates to MarkedSpace.
3416
3417         * runtime/JSCell.h:
3418         (JSC::JSCell::Heap::heap): Updated for MarkedSpace delegation.
3419
3420         * runtime/JSValue.h: Moved the ValueStringPair typedef to help with #includes.
3421
3422         * runtime/MarkedSpace.cpp: Copied from runtime/Heap.cpp.
3423         (JSC::MarkedSpace::MarkedSpace):
3424         (JSC::MarkedSpace::destroy):
3425         (JSC::MarkedSpace::allocateBlock):
3426         (JSC::MarkedSpace::freeBlock):
3427         (JSC::MarkedSpace::allocate):
3428         (JSC::MarkedSpace::resizeBlocks):
3429         (JSC::MarkedSpace::growBlocks):
3430         (JSC::MarkedSpace::shrinkBlocks):
3431         (JSC::MarkedSpace::markConservatively):
3432         (JSC::MarkedSpace::clearMarkBits):
3433         (JSC::MarkedSpace::markedCells):
3434         (JSC::MarkedSpace::sweep):
3435         (JSC::MarkedSpace::objectCount):
3436         (JSC::MarkedSpace::addToStatistics):
3437         (JSC::MarkedSpace::statistics):
3438         (JSC::MarkedSpace::size):
3439         (JSC::MarkedSpace::reset):
3440         (JSC::MarkedSpace::primaryHeapBegin):
3441         (JSC::MarkedSpace::primaryHeapEnd):
3442         * runtime/MarkedSpace.h: Copied from runtime/Heap.h.
3443         (JSC::MarkedSpace::globalData):
3444         (JSC::MarkedSpace::didShrink):
3445         (JSC::MarkedSpace::cellBlock):
3446         (JSC::MarkedSpace::cellOffset):
3447         (JSC::MarkedSpace::isCellMarked):
3448         (JSC::MarkedSpace::checkMarkCell):
3449         (JSC::MarkedSpace::markCell): Moved all code pertaining to managing chunks of
3450         collector memory into this class.
3451
3452         * runtime/MemoryStatistics.cpp:
3453         (JSC::heapStatistics):
3454         * runtime/MemoryStatistics.h: Updated for MarkedSpace delegation.
3455
3456 2011-01-14  Oliver Hunt  <oliver@apple.com>
3457
3458         Reviewed by Gavin Barraclough.
3459
3460         [jsfunfuzz] parser doesn't enforce continue restrictions correctly.
3461         https://bugs.webkit.org/show_bug.cgi?id=52493
3462
3463         This patch reworks handling of break, continue and label statements
3464         to correctly handle all the valid and invalid cases.  Previously certain
3465         errors would be missed by the parser in strict mode, but the bytecode 
3466         generator needed to handle those cases for non-strict code so nothing
3467         failed, it simply became non-standard behaviour.