e3d4191cec2cb08fa2791e72805696911437bea4
[WebKit.git] / Source / JavaScriptCore / ChangeLog
1 2011-03-17  Gavin Barraclough  <barraclough@apple.com>
2
3         Reverting r81197, breaks JIT + INTERPRETER build.
4
5         * bytecode/CodeBlock.cpp:
6         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
7         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
8         * bytecode/CodeBlock.h:
9         (JSC::CodeBlock::addPropertyAccessInstruction):
10         (JSC::CodeBlock::addGlobalResolveInstruction):
11         (JSC::CodeBlock::addStructureStubInfo):
12         * bytecode/Opcode.h:
13         * bytecode/StructureStubInfo.h:
14         * bytecompiler/BytecodeGenerator.cpp:
15         (JSC::BytecodeGenerator::emitResolve):
16         (JSC::BytecodeGenerator::emitResolveWithBase):
17         (JSC::BytecodeGenerator::emitGetById):
18         (JSC::BytecodeGenerator::emitPutById):
19         (JSC::BytecodeGenerator::emitDirectPutById):
20         (JSC::BytecodeGenerator::emitCall):
21         (JSC::BytecodeGenerator::emitConstruct):
22         (JSC::BytecodeGenerator::emitCatch):
23
24 2011-03-17  Ben Taylor  <bentaylor.solx86@gmail.com>
25
26         Reviewed by Alexey Proskuryakov.
27
28         Add a COMPILER(SUNCC) define for Sun Studio 12. 
29         https://bugs.webkit.org/show_bug.cgi?56444
30         derived from patch 1 of 16 originally from https://bugs.webkit.org/show_bug.cgi?id=24932
31
32         * wtf/Platform.h:
33
34 2011-03-17  Jay Civelli  <jcivelli@chromium.org>
35
36         Reviewed by David Levin.
37
38         Adding a contains method to Vector.
39         https://bugs.webkit.org/show_bug.cgi?id=55859
40
41         * wtf/Vector.h:
42         (WTF::::operator):
43         (WTF::::contains):
44
45 2011-03-17  Patrick Gansterer  <paroga@webkit.org>
46
47         Fix the interpreter build.
48
49         * interpreter/Interpreter.cpp:
50         (JSC::Interpreter::privateExecute): Added globalData to inheritorID().
51
52 2011-03-16  Sam Weinig  <sam@webkit.org>
53
54         Fix the interpreter build.
55
56         * interpreter/Interpreter.cpp:
57         (JSC::Interpreter::resolve):
58         (JSC::Interpreter::resolveSkip):
59         (JSC::Interpreter::resolveGlobal):
60         (JSC::Interpreter::resolveGlobalDynamic):
61         (JSC::Interpreter::resolveBaseAndProperty):
62         (JSC::Interpreter::privateExecute):
63         Remove .get()s.
64
65 2011-03-16  Adam Barth  <abarth@webkit.org>
66
67         Reviewed by James Robinson.
68
69         Remove USE(BUILTIN_UTF8_CODEC)
70         https://bugs.webkit.org/show_bug.cgi?id=56508
71
72         We added this recently when we were unsure about the stability of the
73         built-in UTF-8 codec.  However, the codec seems to be stable, so we
74         don't need the macro.
75
76         * wtf/Platform.h:
77
78 2011-03-16  Daniel Bates  <dbates@rim.com>
79
80         Reviewed by Darin Adler.
81
82         Make JIT build for ARM Thumb-2 with RVCT
83         https://bugs.webkit.org/show_bug.cgi?id=56440
84
85         Derived from a patch by Dave Tapuska.
86
87         Also, modify the RVCT stub template to indicate that it preserves 8 byte stack alignment.
88
89         * jit/JITStubs.cpp:
90
91 2011-03-16  Chao-ying Fu  <fu@mips.com>
92
93         Reviewed by Darin Adler.
94
95         Fix MIPS build with const *void
96         https://bugs.webkit.org/show_bug.cgi?id=56513
97
98         * assembler/MacroAssemblerMIPS.h:
99         (JSC::MacroAssemblerMIPS::load32):
100         (JSC::MacroAssemblerMIPS::store32):
101
102 2011-03-16  Oliver Hunt  <oliver@apple.com>
103
104         Reviewed by Darin Adler.
105
106         Remove unnecessary caller tracking shenanigans from CodeBlock
107         https://bugs.webkit.org/show_bug.cgi?id=56483
108
109         This removes some leftover cruft from when we made CodeBlock
110         mark its callees.  Removing it gives us a 0.7% progression,
111         reducing the overall regression to ~1.3%.
112
113         * bytecode/CodeBlock.cpp:
114         (JSC::CodeBlock::shrinkToFit):
115         * bytecode/CodeBlock.h:
116         (JSC::CallLinkInfo::CallLinkInfo):
117         * jit/JIT.cpp:
118         (JSC::JIT::linkCall):
119         (JSC::JIT::linkConstruct):
120
121 2011-03-15  Oliver Hunt  <oliver@apple.com>
122
123         Reviewed by Geoffrey Garen.
124
125         Make Structure creation require a JSGlobalData
126         https://bugs.webkit.org/show_bug.cgi?id=56438
127
128         Mechanical change to make Structure::create require JSGlobalData&, and
129         require all users to provide the globalData.
130
131         * API/JSCallbackConstructor.h:
132         (JSC::JSCallbackConstructor::createStructure):
133         * API/JSCallbackFunction.h:
134         (JSC::JSCallbackFunction::createStructure):
135         * API/JSCallbackObject.h:
136         (JSC::JSCallbackObject::createStructure):
137         * API/JSContextRef.cpp:
138         * JavaScriptCore.exp:
139         * debugger/DebuggerActivation.cpp:
140         (JSC::DebuggerActivation::DebuggerActivation):
141         * debugger/DebuggerActivation.h:
142         (JSC::DebuggerActivation::createStructure):
143         * jit/JITStubs.cpp:
144         (JSC::DEFINE_STUB_FUNCTION):
145         * jsc.cpp:
146         (GlobalObject::GlobalObject):
147         (functionRun):
148         (jscmain):
149         * runtime/Arguments.h:
150         (JSC::Arguments::createStructure):
151         * runtime/ArrayPrototype.h:
152         (JSC::ArrayPrototype::createStructure):
153         * runtime/BooleanObject.h:
154         (JSC::BooleanObject::createStructure):
155         * runtime/DateInstance.h:
156         (JSC::DateInstance::createStructure):
157         * runtime/DatePrototype.h:
158         (JSC::DatePrototype::createStructure):
159         * runtime/ErrorInstance.h:
160         (JSC::ErrorInstance::createStructure):
161         * runtime/Executable.h:
162         (JSC::ExecutableBase::createStructure):
163         (JSC::EvalExecutable::createStructure):
164         (JSC::ProgramExecutable::createStructure):
165         (JSC::FunctionExecutable::createStructure):
166         * runtime/FunctionPrototype.h:
167         (JSC::FunctionPrototype::createStructure):
168         * runtime/GetterSetter.h:
169         (JSC::GetterSetter::createStructure):
170         * runtime/InternalFunction.h:
171         (JSC::InternalFunction::createStructure):
172         * runtime/JSAPIValueWrapper.h:
173         (JSC::JSAPIValueWrapper::createStructure):
174         * runtime/JSActivation.h:
175         (JSC::JSActivation::createStructure):
176         * runtime/JSArray.cpp:
177         (JSC::JSArray::JSArray):
178         * runtime/JSArray.h:
179         (JSC::JSArray::createStructure):
180         * runtime/JSByteArray.cpp:
181         (JSC::JSByteArray::createStructure):
182         * runtime/JSByteArray.h:
183         (JSC::JSByteArray::JSByteArray):
184         * runtime/JSCell.h:
185         (JSC::JSCell::JSCell::createDummyStructure):
186         * runtime/JSFunction.h:
187         (JSC::JSFunction::createStructure):
188         * runtime/JSGlobalData.cpp:
189         (JSC::JSGlobalData::storeVPtrs):
190         (JSC::JSGlobalData::JSGlobalData):
191         * runtime/JSGlobalObject.cpp:
192         (JSC::JSGlobalObject::reset):
193         * runtime/JSGlobalObject.h:
194         (JSC::JSGlobalObject::JSGlobalObject):
195         (JSC::JSGlobalObject::createStructure):
196         * runtime/JSNotAnObject.h:
197         (JSC::JSNotAnObject::createStructure):
198         * runtime/JSONObject.h:
199         (JSC::JSONObject::createStructure):
200         * runtime/JSObject.cpp:
201         (JSC::JSObject::createInheritorID):
202         * runtime/JSObject.h:
203         (JSC::JSObject::createStructure):
204         (JSC::JSNonFinalObject::createStructure):
205         (JSC::JSFinalObject::createStructure):
206         (JSC::createEmptyObjectStructure):
207         (JSC::JSObject::inheritorID):
208         * runtime/JSObjectWithGlobalObject.h:
209         (JSC::JSObjectWithGlobalObject::createStructure):
210         * runtime/JSPropertyNameIterator.h:
211         (JSC::JSPropertyNameIterator::createStructure):
212         * runtime/JSStaticScopeObject.h:
213         (JSC::JSStaticScopeObject::createStructure):
214         * runtime/JSString.h:
215         (JSC::RopeBuilder::createStructure):
216         * runtime/JSVariableObject.h:
217         (JSC::JSVariableObject::createStructure):
218         * runtime/JSWrapperObject.h:
219         (JSC::JSWrapperObject::createStructure):
220         * runtime/JSZombie.h:
221         (JSC::JSZombie::createStructure):
222         * runtime/MathObject.h:
223         (JSC::MathObject::createStructure):
224         * runtime/NativeErrorConstructor.cpp:
225         (JSC::NativeErrorConstructor::NativeErrorConstructor):
226         * runtime/NativeErrorConstructor.h:
227         (JSC::NativeErrorConstructor::createStructure):
228         * runtime/NumberConstructor.h:
229         (JSC::NumberConstructor::createStructure):
230         * runtime/NumberObject.h:
231         (JSC::NumberObject::createStructure):
232         * runtime/ObjectConstructor.h:
233         (JSC::ObjectConstructor::createStructure):
234         * runtime/RegExpConstructor.h:
235         (JSC::RegExpConstructor::createStructure):
236         * runtime/RegExpObject.h:
237         (JSC::RegExpObject::createStructure):
238         * runtime/ScopeChain.h:
239         (JSC::ScopeChainNode::createStructure):
240         * runtime/StringObject.h:
241         (JSC::StringObject::createStructure):
242         * runtime/StringObjectThatMasqueradesAsUndefined.h:
243         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
244         * runtime/StringPrototype.h:
245         (JSC::StringPrototype::createStructure):
246         * runtime/Structure.h:
247         (JSC::Structure::create):
248
249 2011-03-16  Geoffrey Garen  <ggaren@apple.com>
250
251         Reviewed by Oliver Hunt.
252
253         Some conservative root gathering cleanup
254         https://bugs.webkit.org/show_bug.cgi?id=56447
255         
256         SunSpider says 0.5% - 1.8% faster.
257
258         * interpreter/RegisterFile.cpp:
259         (JSC::RegisterFile::gatherConservativeRoots):
260         * interpreter/RegisterFile.h: New helper function for doing the
261         conservative gathering of the register file. It's still conservative,
262         since the register file may contain uninitialized values, but it's
263         moving-safe, because it only visits values tagged as pointers, so there's
264         no risk of mistaking an integer for a pointer and accidentally changing it.
265
266         * runtime/ConservativeSet.cpp:
267         (JSC::ConservativeRoots::add):
268         * runtime/ConservativeSet.h: Added a single-value add function, used above.
269
270         * runtime/Heap.cpp:
271         (JSC::Heap::markRoots): Separated machine stack conservative roots from
272         register file conservative roots because machine stack roots must be
273         pinned, but register file roots need not be pinned.
274         
275         Adopted new interface for passing the current stack extent to the machine
276         stack root gathering routine. This allows us to exclude marking-related
277         data structures on the stack, and thus avoid double-marking the set of
278         machine roots.
279
280         * runtime/MachineStackMarker.cpp:
281         (JSC::MachineThreads::gatherFromCurrentThread):
282         (JSC::MachineThreads::gatherConservativeRoots):
283         * runtime/MachineStackMarker.h: Added new interface, described above.
284
285         * runtime/MarkedBlock.h:
286         (JSC::MarkedBlock::firstAtom):
287         * wtf/StdLibExtras.h:
288         (WTF::roundUpToMultipleOf): Moved roundUpToMultipleOf so it could be used
289         by MachineStacks.
290
291 2011-03-16  Geoffrey Garen  <ggaren@apple.com>
292
293         Reviewed by Oliver Hunt.
294
295         A little bit of MarkStack cleanup
296         https://bugs.webkit.org/show_bug.cgi?id=56443
297         
298         Moved MarkStack functions into MarkStack.h/.cpp.
299         
300         SunSpider reports no change.
301
302         * runtime/JSArray.h:
303         * runtime/JSCell.h: Moved from here...
304         * runtime/MarkStack.cpp:
305         (JSC::MarkStack::markChildren):
306         (JSC::MarkStack::drain): ...to here. Also, no need to inline drain. It's
307         a huge function, and not called many times.
308
309         * runtime/MarkStack.h:
310         (JSC::MarkStack::~MarkStack): Moved near constructor, per style guide.
311         (JSC::MarkStack::append):
312         (JSC::MarkStack::deprecatedAppend):
313         (JSC::MarkStack::internalAppend): Moved to here.
314
315 2011-03-15  Geoffrey Garen  <ggaren@apple.com>
316
317         Reviewed by Oliver Hunt.
318
319         Removed another deprecatedAppend
320         https://bugs.webkit.org/show_bug.cgi?id=56429
321
322         * collector/handles/HandleHeap.cpp:
323         (JSC::HandleHeap::markStrongHandles):
324         * collector/handles/HandleHeap.h: Use HeapRootMarker, since handles are
325         marked directly by the Heap.
326
327         * runtime/Heap.cpp:
328         (JSC::Heap::markRoots): Ditto.
329
330 2011-03-15  Geoffrey Garen  <ggaren@apple.com>
331
332         Reviewed by Oliver Hunt.
333
334         Removed some more deprecated / unsafe append
335         https://bugs.webkit.org/show_bug.cgi?id=56428
336
337         * collector/handles/HandleStack.cpp:
338         (JSC::HandleStack::mark):
339         * collector/handles/HandleStack.h: Mark the handle stack using a HeapRoot
340         marker, since it's a heap root.
341         
342         * runtime/ArgList.cpp:
343         (JSC::MarkedArgumentBuffer::markLists):
344         (JSC::MarkedArgumentBuffer::slowAppend):
345         * runtime/ArgList.h: Ditto.
346
347         * runtime/Heap.cpp:
348         (JSC::Heap::markRoots): Added a mark call for marking the handle stack.
349         It seems like Oliver forgot this in his last patch. (!)
350
351         * runtime/MarkStack.h: Removed appendSlots, since it would allow an
352         object to embed JSValues directly instead of using WriteBarrier.
353
354         (JSC::MarkStack::append): Added a private append for a list of values.
355
356         (JSC::HeapRootMarker::mark): Access to the above.
357
358 2011-03-15  Geoffrey Garen  <ggaren@apple.com>
359
360         Reviewed by Oliver Hunt.
361
362         Removed a few more deprecatedAppends, and removed HeapRoot<T>
363         https://bugs.webkit.org/show_bug.cgi?id=56422
364         
365         Added HeapRootMarker, a privileged class for marking direct heap roots
366         that are iterated during each garbage collection. This is easier to use
367         and more reliable than HeapRoot<T>, so I've removed HeapRoot<T>.
368
369         * debugger/Debugger.cpp:
370         (JSC::evaluateInGlobalCallFrame):
371         * debugger/DebuggerCallFrame.cpp:
372         (JSC::DebuggerCallFrame::evaluate):
373         * interpreter/CallFrame.h:
374         (JSC::ExecState::exception):
375         * jit/JITStubs.cpp:
376         (JSC::DEFINE_STUB_FUNCTION):
377         * runtime/Completion.cpp:
378         (JSC::evaluate): exception is no longer a HeapRoot<T>, so no need to
379         call .get() on it.
380
381         * runtime/Heap.cpp:
382         (JSC::Heap::markProtectedObjects):
383         (JSC::Heap::markTempSortVectors):
384         (JSC::Heap::markRoots):
385         * runtime/Heap.h: Updated to use HeapRootMarker.
386
387         * runtime/JSCell.h:
388         (JSC::JSCell::MarkStack::append): Added private functions for
389         HeapRootMarker to use.
390
391         * runtime/JSGlobalData.h: exception is no longer a HeapRoot<T>.
392
393         * runtime/MarkStack.h:
394         (JSC::HeapRootMarker::HeapRootMarker):
395         (JSC::HeapRootMarker::mark): Added private functions for
396         HeapRootMarker to use.
397
398         * runtime/SmallStrings.cpp:
399         (JSC::SmallStrings::markChildren): Updated to use HeapRootMarker.
400
401         * runtime/SmallStrings.h:
402         (JSC::SmallStrings::emptyString):
403         (JSC::SmallStrings::singleCharacterString):
404         (JSC::SmallStrings::singleCharacterStrings): Updated to use HeapRootMarker.
405
406         * runtime/WriteBarrier.h: Removed HeapRoot<T>.
407
408 2011-03-14  Geoffrey Garen  <ggaren@apple.com>
409
410         Reviewed by Oliver Hunt.
411
412         Made the global object moving-GC-safe
413         https://bugs.webkit.org/show_bug.cgi?id=56348
414         
415         SunSpider reports no change.
416
417         * runtime/JSGlobalObject.cpp:
418         (JSC::JSGlobalObject::markChildren): Removed a dubious comment that
419         suggested we do not need to visit all our references during GC, since
420         that is not true in a moving GC.
421
422         Re-sorted data members by type, removed one duplicate, and added back
423         the one missing mark I found.
424
425         * runtime/JSGlobalObject.h: Re-sorted data members by type.
426
427 2011-03-15  Oliver Hunt  <oliver@apple.com>
428
429         Reviewed by Geoffrey Garen.
430
431         Introduce Local<T> to allow us to start moving to precise marking of locals
432         https://bugs.webkit.org/show_bug.cgi?id=56394
433
434         Introduce a new handle type, Local<T> and a scoping mechanism
435         LocalScope to allow us to start moving towards precise marking
436         of temporaries and local variables.
437
438         We also start to use the new Local<> type in the JSON stringifier
439         so that we can have some coverage of their behaviour in the initial
440         checkin.
441
442         * GNUmakefile.am:
443         * JavaScriptCore.gypi:
444         * JavaScriptCore.pro:
445         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
446         * JavaScriptCore.xcodeproj/project.pbxproj:
447         * collector/handles/Handle.h:
448         (JSC::::asObject):
449         * collector/handles/HandleStack.cpp: Added.
450         (JSC::HandleStack::HandleStack):
451         (JSC::HandleStack::mark):
452         (JSC::HandleStack::grow):
453         * collector/handles/HandleStack.h: Added.
454         (JSC::HandleStack::enterScope):
455         (JSC::HandleStack::zapTo):
456         (JSC::HandleStack::leaveScope):
457         (JSC::HandleStack::push):
458         * collector/handles/Local.h: Added.
459         (JSC::Local::internalSet):
460         (JSC::::Local):
461         (JSC::::operator):
462         (JSC::LocalStack::LocalStack):
463         (JSC::LocalStack::peek):
464         (JSC::LocalStack::pop):
465         (JSC::LocalStack::push):
466         (JSC::LocalStack::isEmpty):
467         (JSC::LocalStack::size):
468         * collector/handles/LocalScope.h: Added.
469         (JSC::LocalScope::LocalScope):
470         (JSC::LocalScope::~LocalScope):
471         (JSC::LocalScope::release):
472         * runtime/Heap.cpp:
473         (JSC::Heap::markRoots):
474         * runtime/Heap.h:
475         (JSC::Heap::allocateLocalHandle):
476         (JSC::Heap::handleStack):
477         * runtime/JSCell.h:
478         (JSC::JSCell::::getString):
479         * runtime/JSGlobalData.cpp:
480         (JSC::JSGlobalData::JSGlobalData):
481         * runtime/JSGlobalData.h:
482         (JSC::JSGlobalData::allocateLocalHandle):
483         * runtime/JSONObject.cpp:
484         (JSC::Stringifier::Stringifier):
485         (JSC::Stringifier::stringify):
486         (JSC::Stringifier::appendStringifiedValue):
487         (JSC::Stringifier::Holder::Holder):
488         (JSC::Walker::Walker):
489         (JSC::Walker::walk):
490         (JSC::JSONProtoFuncParse):
491         (JSC::JSONProtoFuncStringify):
492         (JSC::JSONStringify):
493         * runtime/JSONObject.h:
494         * runtime/MarkStack.h:
495         (JSC::MarkStack::appendValues):
496         (JSC::MarkStack::appendSlots):
497
498 2011-03-15  Gavin Barraclough  <barraclough@apple.com>
499
500         Rubber Stamped by Sam Weinig.
501
502         Bug 56420 - Remove ENABLE(JIT) code from ByteCompiler
503         Some methods have unnecessary differences in name/arguments for interpreter/JIT.
504
505         * bytecode/CodeBlock.cpp:
506         * bytecode/CodeBlock.h:
507         (JSC::HandlerInfo::HandlerInfo):
508         (JSC::CodeBlock::addPropertyAccessInfo):
509         (JSC::CodeBlock::addGlobalResolveInfo):
510         (JSC::CodeBlock::addCallLinkInfo):
511         (JSC::CodeBlock::globalResolveInfo):
512         * bytecode/Opcode.h:
513         * bytecode/StructureStubInfo.h:
514         * bytecompiler/BytecodeGenerator.cpp:
515         (JSC::BytecodeGenerator::emitResolve):
516         (JSC::BytecodeGenerator::emitResolveWithBase):
517         (JSC::BytecodeGenerator::emitGetById):
518         (JSC::BytecodeGenerator::emitPutById):
519         (JSC::BytecodeGenerator::emitDirectPutById):
520         (JSC::BytecodeGenerator::emitCall):
521         (JSC::BytecodeGenerator::emitConstruct):
522         (JSC::BytecodeGenerator::emitCatch):
523
524 2011-03-15  Gavin Barraclough  <barraclough@apple.com>
525
526         Reviewed by Sam Weinig.
527
528         Fix broken assert in new code.
529
530         * dfg/DFGAliasTracker.h:
531         (JSC::DFG::AliasTracker::recordPutByVal):
532             - recordPutByVal is called for both PutByVal & PutByValAlias.
533
534 2011-03-15  Gavin Barraclough  <barraclough@apple.com>
535
536         Rubber stamped by Sam Weinig.
537
538         Removed redundant code from BytecodeGenerator.
539
540         * bytecompiler/BytecodeGenerator.cpp:
541         * bytecompiler/BytecodeGenerator.h:
542             - delete uncalled code missed when reparsing was removed.
543
544 2011-03-15  Kevin Ollivier  <kevino@theolliviers.com>
545
546         Reviewed by Darin Adler.
547
548         Introduce WTF_USE_EXPORT_MACROS, which will allow us to put shared library import/export
549         info into the headers rather than in export symbol definition files, but disable it on 
550         all platforms initially so we can deal with port build issues one port at a time.
551         
552         https://bugs.webkit.org/show_bug.cgi?id=27551
553
554         * API/JSBase.h:
555         * config.h:
556         * wtf/Assertions.h:
557         * wtf/ExportMacros.h: Added.
558         * wtf/Platform.h:
559
560 2011-03-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
561
562         Unreviewed build fix.
563
564         Buildfix when JIT is not enabled after r81079
565         https://bugs.webkit.org/show_bug.cgi?id=56361
566
567         * runtime/Executable.cpp:
568
569 2011-03-14  Geoffrey Garen  <ggaren@apple.com>
570
571         Reviewed by Oliver Hunt.
572
573         Made the global object moving-GC-safe
574         https://bugs.webkit.org/show_bug.cgi?id=56348
575         
576         SunSpider reports no change.
577
578         * runtime/JSGlobalObject.cpp:
579         (JSC::JSGlobalObject::markChildren): Removed a dubious comment that
580         suggested we do not need to visit all our references during GC, since
581         that is not true in a moving GC.
582
583         Re-sorted data members by type, removed one duplicate, and added back
584         the one missing mark I found.
585
586         * runtime/JSGlobalObject.h: Re-sorted data members by type.
587
588 2011-03-14  Geoffrey Garen  <ggaren@apple.com>
589
590         Reviewed by Oliver Hunt.
591
592         Made JSWrapperObject and subclasses moving-GC-safe
593         https://bugs.webkit.org/show_bug.cgi?id=56346
594         
595         SunSpider reports no change.
596
597         * runtime/BooleanObject.cpp:
598         (JSC::BooleanObject::BooleanObject):
599         * runtime/DateInstance.cpp:
600         (JSC::DateInstance::DateInstance): No more need for JSGlobalData, since
601         we don't initialize the wrapped value in our constructor.
602
603         * runtime/DateInstance.h: Don't set the OverridesMarkChildren flag because
604         we do not in fact override markChildren.
605
606         * runtime/DatePrototype.h: Declare an anonymous slot, since wrapper object
607         no longer does so for us. Also added an ASSERT to catch a latent bug,
608         where DatePrototype stomped on its base class's anonymous slot. Hard-coded
609         anonymous slots are a plague on our code. This doesn't cause any problems
610         in our existing code since the base class never reads the anonymous slot
611         it declares, but it caused crashes when I tried to start using the slot
612         in an initial version of this patch.
613
614         * runtime/JSWrapperObject.h:
615         (JSC::JSWrapperObject::JSWrapperObject):
616         (JSC::JSWrapperObject::internalValue):
617         (JSC::JSWrapperObject::setInternalValue): Resolved a problem where
618         our internal value was stored in two places: an anonymous slot, and a
619         data member which was not always visited during GC. Now, we only use the
620         data member, and we always visit it. (Instead of relying on certain
621         subclasses to set the OverridesMarkChildren bit, we set it ourselves.)
622
623         * runtime/NumberObject.cpp:
624         (JSC::NumberObject::NumberObject): No more need for JSGlobalData, since
625         we don't initialize the wrapped value in our constructor.
626
627         * runtime/NumberObject.h: Removed meaningless declaration.
628
629         * runtime/StringObject.cpp:
630         (JSC::StringObject::StringObject): No more need for JSGlobalData, since
631         we don't initialize the wrapped value in our constructor.
632
633         * runtime/StringObject.h: Don't set the OverridesMarkChildren flag because
634         we do not in fact override markChildren.
635
636         * runtime/StringPrototype.h: Declare an anonymous slot, since wrapper object
637         no longer does so for us. Also added an ASSERT to catch a latent bug,
638         where DatePrototype stomped on its base class's anonymous slot. Hard-coded
639         anonymous slots are a plague on our code.
640
641 2011-03-14  Michael Saboff  <msaboff@apple.com>
642
643         Reviewed by Gavin Barraclough.
644
645         Look-ahead assertions with back references don’t work as expected
646         https://bugs.webkit.org/show_bug.cgi?id=56082
647
648         Changed parentheses assertion processing to temporarily back out the 
649         number of known characters after the assertion while processing the 
650         assertion.  This was done so that assertions don't fail due to 
651         checking the number of required characters as additional to the 
652         rest of the express since assertions don't "consume" input.
653         Added a byte code to uncheck characters to support the change.
654
655         * yarr/YarrInterpreter.cpp:
656         (JSC::Yarr::Interpreter::matchDisjunction):
657         (JSC::Yarr::ByteCompiler::uncheckInput):
658         (JSC::Yarr::ByteCompiler::emitDisjunction):
659         * yarr/YarrInterpreter.h:
660         (JSC::Yarr::ByteTerm::UncheckInput):
661
662 2011-03-14  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
663
664         Reviewed by Laszlo Gombos.
665
666         [Qt] Warning that round/roundf functions are already defined when compiled with RVCT 4 on symbian.
667         https://bugs.webkit.org/show_bug.cgi?id=56133
668
669         Add condition to not compile webkit internal math round functions on RVCT compiler versions 
670         from 3.0.0 because they are already defined in compiler math library.
671
672         * wtf/MathExtras.h:
673
674 2011-03-14  Gavin Barraclough  <barraclough@apple.com>
675
676         Reviewed by Geoffrey Garen & Oliver Hunt.
677
678         Bug 56284 - Add a dataflow intermediate representation for use in JIT generation.
679
680         The JSC JIT presently generates code directly from the bytecode used by the interpreter.
681         This is not an optimal intermediate representation for JIT code generation, since it does
682         not capture liveness information of values, and provides little opportunity to perform
683         any static analysis for even primitive types. The JIT currently generates two code paths,
684         a fast path handling common cases, and a slower path handling less common operand types.
685         However the slow path jumps back into the fast path, meaning that information arising
686         from the earlier type checks cannot be propagated to later operations.
687
688         This patch adds:
689             * a dataflow intermediate representation capable of describing a single basic block
690               of operations,
691             * a mechanism to convert a simple, single-block bytecode functions to the new IR,
692             * and a JIT code generator capable of generating code from this representation.
693
694         The JIT generates two code paths, with the slower path not reentering the fast path
695         mid-block, allowing speculative optimizations to be made on the hot path, with type
696         information arising from these speculative decisions able to be propagated through the
697         dataflow. Code generation of both speculative and non-speculative paths exploits the type
698         and liveness information represented in the dataflow graph to attempt to avoid redundant
699         boxing and type-checking of values, and to remove unnecessary spills of temporary values
700         to the RegisterFile.
701
702         The dataflow JIT currently can only support a subset of bytecode operations, limited to
703         arithmetic, bit-ops, and basic property access. Functions that cannot be compiled by the
704         dataflow JIT will be run using the existing JIT. The coverage of the dataflow JIT will be
705         expanded to include, control-flow, function calls, and then the long-tail of remaining
706         bytecode instructions. The JIT presently only support JSVALUE64, and as a consequence of
707         this only supports x86-64.
708
709         The status of the dataflow JIT is currently work-in-progress. Limitations of the present
710         JIT code generation may cause performance regressions, particularly:
711             * the policy to only generate arithmetic code on the speculative path using integer
712               instructions, never using floating point.
713             * the policy to only generate arithmetic code on the non-speculative path using
714               floating point instructions, never using integer.
715             * always generating JSValue adds on the non-speculative path as a call out to a
716               C-function, never handling this in JIT code.
717             * always assuming by-Value property accesses on the speculative path to be array
718               accesses.
719             * generating all by-Value property accesses from the non-speculative path as a call
720               out to a C-function.
721             * generating all by-Indentifer property accesses as a call out to a C-function.
722         Due to these regressions, the code is landed in a state where it is disabled in most
723         cases by the ENABLE_DFG_JIT_RESTRICTIONS guard in Platform.h. As these regressions are
724         addressed, the JIT will be allowed to trigger in more cases.
725
726         * JavaScriptCore.xcodeproj/project.pbxproj:
727             - Added new files to Xcode project.
728         * dfg: Added.
729             - Added directory for new code.
730         * dfg/DFGByteCodeParser.cpp: Added.
731         * dfg/DFGByteCodeParser.h: Added.
732             - Contruct a DFG::Graph representation from a bytecode CodeBlock.
733         * dfg/DFGGenerationInfo.h: Added.
734             - Track type & register information for VirtualRegisters during JIT code generation.
735         * dfg/DFGGraph.cpp: Added.
736         * dfg/DFGGraph.h: Added.
737             - Dataflow graph intermediate representation for code generation.
738         * dfg/DFGJITCodeGenerator.cpp: Added.
739         * dfg/DFGJITCodeGenerator.h: Added.
740             - Base class for SpeculativeJIT & NonSpeculativeJIT to share common functionality.
741         * dfg/DFGJITCompiler.cpp: Added.
742         * dfg/DFGJITCompiler.h: Added.
743             - Class responsible for driving code generation of speculativeJIT & non-speculative
744               code paths from the dataflow graph.
745         * dfg/DFGNonSpeculativeJIT.cpp: Added.
746         * dfg/DFGNonSpeculativeJIT.h: Added.
747             - Used to generate the non-speculative code path, this make no assumptions
748               about operand types.
749         * dfg/DFGOperations.cpp: Added.
750         * dfg/DFGOperations.h: Added.
751             - Helper functions called from the JIT generated code.
752         * dfg/DFGRegisterBank.h: Added.
753             - Used to track contents of physical registers during JIT code generation.
754         * dfg/DFGSpeculativeJIT.cpp: Added.
755         * dfg/DFGSpeculativeJIT.h: Added.
756             - Used to generate the speculative code path, this make assumptions about
757               operand types to enable optimization.
758         * runtime/Executable.cpp:
759             - Add code to attempt to use the DFG JIT to compile a function, with fallback
760               to the existing JIT.
761         * wtf/Platform.h:
762             - Added compile guards to enable the DFG JIT.
763
764 2011-03-14  Geoffrey Garen  <ggaren@apple.com>
765
766         Reviewed by Oliver Hunt.
767
768         Removed more cases of DeprecatedPtr (exception, SmallStrings)
769         https://bugs.webkit.org/show_bug.cgi?id=56332
770
771         * runtime/Identifier.cpp:
772         (JSC::Identifier::add):
773         (JSC::Identifier::addSlowCase): Use a variable instead of a hard-coded
774         constant, to make this code less brittle.
775
776         * runtime/JSGlobalData.h: Use HeapRoot instead of DeprecatedPtr because
777         this reference is owned and managed directly by the heap.
778
779         * runtime/JSString.cpp:
780         (JSC::JSString::substringFromRope):
781         * runtime/JSString.h:
782         (JSC::jsSingleCharacterString):
783         (JSC::jsSingleCharacterSubstring):
784         (JSC::jsString):
785         (JSC::jsStringWithFinalizer):
786         (JSC::jsSubstring):
787         (JSC::jsOwnedString): Use a variable instead of a hard-coded
788         constant, to make this code less brittle.
789
790         * runtime/SmallStrings.cpp:
791         (JSC::SmallStringsStorage::rep):
792         (JSC::SmallStringsStorage::SmallStringsStorage):
793         (JSC::SmallStrings::SmallStrings):
794         (JSC::SmallStrings::markChildren):
795         (JSC::SmallStrings::clear):
796         (JSC::SmallStrings::count): Use a variable instead of a hard-coded
797         constant, to make this code less brittle.
798
799         * runtime/SmallStrings.h:
800         (JSC::SmallStrings::singleCharacterString): Use HeapRoot instead of
801         DeprecatedPtr because these references are owned and managed directly by
802         the heap.
803         
804         Stop using FixedArray because we only want a very limited set
805         of classes to be able to use HeapRoot. (Replaced with manual ASSERTs.)
806
807         * runtime/WriteBarrier.h:
808         (JSC::operator==):
809         (JSC::WriteBarrier::WriteBarrier):
810         (JSC::HeapRoot::HeapRoot):
811         (JSC::HeapRoot::operator=): Added HeapRoot, which is allowed to set
812         without write barrier because we assume all HeapRoots are scanned during
813         all GC passes.
814
815 2011-03-14  Brian Weinstein  <bweinstein@apple.com>
816
817         Reviewed by Adam Roben and Gavin Barraclough.
818
819         FileSystemWin.cpp needs listDirectory() implementation
820         https://bugs.webkit.org/show_bug.cgi?id=56331
821         <rdar://problem/9126635>
822         
823         Give StringConcatenate the ability to deal with const UChar*'s as a String type to append.
824
825         * wtf/text/StringConcatenate.h:
826
827 2011-03-14  Mark Rowe  <mrowe@apple.com>
828
829         Reviewed by Oliver Hunt.
830
831         <http://webkit.org/b/56304> REGRESSION(r80892): 100,000+ leaks seen on the build bot
832
833         * API/JSClassRef.cpp:
834         (OpaqueJSClass::OpaqueJSClass): Don't leak any existing entry for the given name if
835         the class definition contains duplicates. This also removes what look to be leaks
836         of the StringImpl instances that are used as keys: the HashMap key type is a RefPtr
837         which retains / releases the instances at the appropriate time, so explicitly calling
838         ref is not necessary.
839
840 2011-03-14  Oliver Hunt  <oliver@apple.com>
841
842         Fix windows build
843
844         * jit/JSInterfaceJIT.h:
845         (JSC::JSInterfaceJIT::emitLoadInt32):
846         (JSC::JSInterfaceJIT::tagFor):
847         (JSC::JSInterfaceJIT::payloadFor):
848         (JSC::JSInterfaceJIT::intPayloadFor):
849         (JSC::JSInterfaceJIT::intTagFor):
850         (JSC::JSInterfaceJIT::addressFor):
851
852 2011-03-11  Oliver Hunt  <oliver@apple.com>
853
854         Reviewed by Gavin Barraclough.
855
856         Ensure all values are correctly tagged in the registerfile
857         https://bugs.webkit.org/show_bug.cgi?id=56214
858
859         This patch makes sure that all JSCell pointers written to
860         the registerfile are correctly tagged as JSCells, and replaces
861         raw int usage with the immediate representation.
862
863         For performance, register pressure, and general saneness reasons
864         I've added abstractions for reading and writing the tag
865         and payload of integer registers directly for the JSVALUE64
866         encoding.
867
868         * interpreter/Register.h:
869         (JSC::Register::withInt):
870         (JSC::Register::withCallee):
871         (JSC::Register::operator=):
872         (JSC::Register::i):
873         (JSC::Register::activation):
874         (JSC::Register::function):
875         (JSC::Register::propertyNameIterator):
876         (JSC::Register::scopeChain):
877         * jit/JIT.h:
878         * jit/JITCall.cpp:
879         (JSC::JIT::compileOpCallInitializeCallFrame):
880         (JSC::JIT::compileOpCallVarargs):
881         (JSC::JIT::compileOpCall):
882         * jit/JITCall32_64.cpp:
883         (JSC::JIT::compileOpCallInitializeCallFrame):
884         (JSC::JIT::compileOpCallVarargs):
885         (JSC::JIT::compileOpCall):
886         (JSC::JIT::compileOpCallSlowCase):
887         * jit/JITInlineMethods.h:
888         (JSC::JIT::emitPutToCallFrameHeader):
889         (JSC::JIT::emitPutCellToCallFrameHeader):
890         (JSC::JIT::emitPutIntToCallFrameHeader):
891         * jit/JITOpcodes.cpp:
892         (JSC::JIT::privateCompileCTINativeCall):
893         (JSC::JIT::emit_op_get_pnames):
894         (JSC::JIT::emit_op_next_pname):
895         (JSC::JIT::emit_op_load_varargs):
896         (JSC::JIT::emitSlow_op_load_varargs):
897         * jit/JITOpcodes32_64.cpp:
898         (JSC::JIT::privateCompileCTINativeCall):
899         (JSC::JIT::emit_op_get_pnames):
900         (JSC::JIT::emit_op_next_pname):
901         * jit/JSInterfaceJIT.h:
902         (JSC::JSInterfaceJIT::intPayloadFor):
903         (JSC::JSInterfaceJIT::intTagFor):
904         * jit/SpecializedThunkJIT.h:
905         (JSC::SpecializedThunkJIT::returnJSValue):
906         (JSC::SpecializedThunkJIT::returnDouble):
907         (JSC::SpecializedThunkJIT::returnInt32):
908         (JSC::SpecializedThunkJIT::returnJSCell):
909
910 2011-03-13  Geoffrey Garen  <ggaren@apple.com>
911
912         Reviewed by Sam Weinig.
913
914         A few Heap-related renames (sans file moves, which should come next)
915         https://bugs.webkit.org/show_bug.cgi?id=56283
916         
917         ConservativeSet => ConservativeRoots. "Set" was misleading, since items
918         are not uniqued. Also, "Roots" is more specific about what's in the set.
919         
920         MachineStackMarker => MachineThreads. "Threads" is more descriptive of
921         the fact that this class maintains a set of all threads using JSC.
922         "Stack" was misleading, since this class traverses stacks and registers.
923         "Mark" was misleading, since this class doesn't mark anything anymore.
924         
925         registerThread => addCurrentThread. "Current" is more specific.
926         unregisterThread => removeCurrentThread. "Current" is more specific.
927         
928         "currentThreadRegistrar" => threadSpecific. The only point of this data
929         structure is to register a thread-specific destructor with a pointer to
930         this.
931         
932         "mark...Conservatively" => "gather". "Mark" is not true, since these
933         functions don't mark anything. "Conservatively" is redundant, since they
934         take "ConservativeRoots" as an argument.
935
936         * API/APIShims.h:
937         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
938         * JavaScriptCore.exp:
939         * runtime/ConservativeSet.cpp:
940         (JSC::ConservativeRoots::grow):
941         (JSC::ConservativeRoots::add):
942         * runtime/ConservativeSet.h:
943         (JSC::ConservativeRoots::ConservativeRoots):
944         (JSC::ConservativeRoots::~ConservativeRoots):
945         (JSC::ConservativeRoots::size):
946         (JSC::ConservativeRoots::roots):
947         * runtime/Heap.cpp:
948         (JSC::Heap::Heap):
949         (JSC::Heap::markRoots):
950         * runtime/Heap.h:
951         (JSC::Heap::machineThreads):
952         * runtime/JSGlobalData.h:
953         (JSC::JSGlobalData::makeUsableFromMultipleThreads):
954         * runtime/MachineStackMarker.cpp:
955         (JSC::MachineThreads::MachineThreads):
956         (JSC::MachineThreads::~MachineThreads):
957         (JSC::MachineThreads::makeUsableFromMultipleThreads):
958         (JSC::MachineThreads::addCurrentThread):
959         (JSC::MachineThreads::removeThread):
960         (JSC::MachineThreads::removeCurrentThread):
961         (JSC::MachineThreads::gatherFromCurrentThreadInternal):
962         (JSC::MachineThreads::gatherFromCurrentThread):
963         (JSC::MachineThreads::gatherFromOtherThread):
964         (JSC::MachineThreads::gatherConservativeRoots):
965         * runtime/MachineStackMarker.h:
966         * runtime/MarkStack.h:
967         (JSC::MarkStack::append):
968
969 2011-03-13  David Kilzer  <ddkilzer@apple.com>
970
971         BUILD FIX for armv7 after r80969
972
973         Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this.
974         <https://bugs.webkit.org/show_bug.cgi?id=56270>
975
976         * assembler/MacroAssemblerARMv7.h:
977         (JSC::MacroAssemblerARMv7::load32): Made void* address argument
978         const.
979         (JSC::MacroAssemblerARMv7::store32): Ditto.
980
981 2011-03-13  Geoffrey Garen  <ggaren@apple.com>
982
983         Not reviewed.
984
985         Try to fix the Mac build.
986
987         * JavaScriptCore.xcodeproj/project.pbxproj: Make sure to forward
988         ConervativeSet.h, since it's now visible when compiling other projects.
989
990 2011-03-13  Geoffrey Garen  <ggaren@apple.com>
991
992         Reviewed by Oliver Hunt.
993
994         Removed another case of DeprecatedPtr (ConservativeSet)
995         https://bugs.webkit.org/show_bug.cgi?id=56281
996         
997         The ConservativeSet is an internal data structure used during marking,
998         so direct pointers are fine.
999
1000         * runtime/ConservativeSet.cpp:
1001         (JSC::ConservativeSet::grow):
1002         * runtime/ConservativeSet.h: Added some accessors, for use by MarkStack::append.
1003         (JSC::ConservativeSet::~ConservativeSet): Fixed a typo where we calculated
1004         the size of the set based on sizeof(DeprecatedPtr<T>*) instead of
1005         sizeof(DeprecatedPtr<T>). I'm not sure if this had real-world implications or not.
1006         (JSC::ConservativeSet::size):
1007         (JSC::ConservativeSet::set): Use direct pointers, as stated above. 
1008
1009         * runtime/Heap.cpp:
1010         (JSC::Heap::markRoots):
1011         * runtime/MarkStack.h:
1012         (JSC::MarkStack::append): Created a special case of append for
1013         ConservativeSet. I didn't want to add back a generic "append JSCell*"
1014         function, since other class might start using that wrong. (In the end,
1015         this function might go away, since the Heap will want to do something
1016         slightly more interesting with the conservative set, but this is OK for
1017         now.)
1018
1019 2011-03-13  Geoffrey Garen  <ggaren@apple.com>
1020
1021         Reviewed by Oliver Hunt.
1022
1023         Removed another case of DeprecatedPtr (PutPropertySlot)
1024         https://bugs.webkit.org/show_bug.cgi?id=56278
1025
1026         * runtime/PutPropertySlot.h:
1027         (JSC::PutPropertySlot::setExistingProperty):
1028         (JSC::PutPropertySlot::setNewProperty):
1029         (JSC::PutPropertySlot::base): Direct pointer is fine for PutPropertySlot,
1030         since it's a stack-allocated temporary.
1031
1032 2011-03-13  Geoffrey Garen  <ggaren@apple.com>
1033
1034         Reviewed by Oliver Hunt.
1035
1036         Removed one case of DeprecatedPtr (ScopeChainIterator)
1037         https://bugs.webkit.org/show_bug.cgi?id=56277
1038
1039         * runtime/ScopeChain.h: Direct pointer is fine for ScopeChainIterator,
1040         since it's a stack-allocated temporary.
1041
1042 2011-03-13  Gavin Barraclough  <barraclough@apple.com>
1043
1044         Reviewed by Sam Weinig.
1045
1046         Bug 56273 - Add three operand forms to MacroAssember operations.
1047
1048         Adding for X86(_64) for now, should be rolled out to other backends as necessary.
1049         These may allow more efficient code generation in some cases, avoiding the need
1050         for unnecessary register-register move instructions.
1051
1052         * assembler/AbstractMacroAssembler.h:
1053         (JSC::AbstractMacroAssembler::Jump::link):
1054         (JSC::AbstractMacroAssembler::Jump::linkTo):
1055             - marked these methods const.
1056         (JSC::AbstractMacroAssembler::Jump::isSet):
1057             - add a method to check whether a Jump object has been set to
1058               reference an instruction, or is in a null, unset state. 
1059         * assembler/MacroAssemblerCodeRef.h:
1060         (JSC::FunctionPtr::FunctionPtr):
1061             - add non-explicit constructor, for FunctionPtr's to C/C++ functions.
1062         * assembler/MacroAssemblerX86Common.h:
1063         (JSC::MacroAssemblerX86Common::and32):
1064         (JSC::MacroAssemblerX86Common::lshift32):
1065         (JSC::MacroAssemblerX86Common::or32):
1066         (JSC::MacroAssemblerX86Common::rshift32):
1067         (JSC::MacroAssemblerX86Common::urshift32):
1068         (JSC::MacroAssemblerX86Common::xor32):
1069         (JSC::MacroAssemblerX86Common::moveDouble):
1070         (JSC::MacroAssemblerX86Common::addDouble):
1071         (JSC::MacroAssemblerX86Common::divDouble):
1072         (JSC::MacroAssemblerX86Common::subDouble):
1073         (JSC::MacroAssemblerX86Common::mulDouble):
1074         (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
1075         (JSC::MacroAssemblerX86Common::branchTest32):
1076         (JSC::MacroAssemblerX86Common::branchTest8):
1077         (JSC::MacroAssemblerX86Common::branchAdd32):
1078         (JSC::MacroAssemblerX86Common::branchMul32):
1079         (JSC::MacroAssemblerX86Common::branchSub32):
1080             - add three operand forms of these instructions.
1081         * assembler/MacroAssemblerX86_64.h:
1082         (JSC::MacroAssemblerX86_64::addDouble):
1083         (JSC::MacroAssemblerX86_64::convertInt32ToDouble):
1084         (JSC::MacroAssemblerX86_64::loadPtr):
1085         (JSC::MacroAssemblerX86_64::branchTestPtr):
1086         * assembler/X86Assembler.h:
1087         (JSC::X86Assembler::JmpSrc::isSet):
1088             - add a method to check whether a JmpSrc object has been set to
1089               reference an instruction, or is in a null, unset state. 
1090         (JSC::X86Assembler::movsd_rr):
1091             - added FP register-register move.
1092         (JSC::X86Assembler::linkJump):
1093             - Add an assert to check jumps aren't linked more than once.
1094         * jit/JITInlineMethods.h:
1095         (JSC::JIT::emitLoadInt32ToDouble):
1096             - load integers to the FPU via regsiters on x86-64.
1097
1098 2011-03-13  Gavin Barraclough  <barraclough@apple.com>
1099
1100         ARM build fix.
1101
1102         * assembler/MacroAssemblerARM.h:
1103         (JSC::MacroAssemblerARM::load32):
1104
1105 2011-03-13  Gavin Barraclough  <barraclough@apple.com>
1106
1107         Reviewed by Sam Weinig.
1108
1109         Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this.
1110
1111         The JIT need to 'friend' other classes in order to be able to calculate offsets
1112         of various properties, or the absolute addresses of members within specific objects,
1113         in order to JIT generate code that will access members within the class when run.
1114
1115         Instead of using friends in these cases, switch to providing specific accessor
1116         methods to provide this information.  In the case of offsets, these can be static
1117         functions, and in the case of pointers to members within a specific object these can
1118         be const methods returning pointers to const values, to prevent clients from
1119         modifying values otherwise encapsulated within classes.
1120
1121         * bytecode/SamplingTool.h:
1122         * interpreter/Register.h:
1123         * interpreter/RegisterFile.h:
1124         * runtime/JSArray.h:
1125         * runtime/JSCell.h:
1126         * runtime/JSTypeInfo.h:
1127         * runtime/JSVariableObject.h:
1128         * runtime/Structure.h:
1129         * wtf/RefCounted.h:
1130             - Change these classes to no longer friend the JIT, add accessors for member offsets.
1131         * jit/JIT.cpp:
1132         * jit/JITCall32_64.cpp:
1133         * jit/JITInlineMethods.h:
1134         * jit/JITOpcodes.cpp:
1135         * jit/JITOpcodes32_64.cpp:
1136         * jit/JITPropertyAccess.cpp:
1137         * jit/JITPropertyAccess32_64.cpp:
1138             - Change the JIT to use class accessors, rather than taking object ofsets directly.
1139         * assembler/AbstractMacroAssembler.h:
1140         * assembler/MacroAssemblerX86_64.h:
1141         * assembler/X86Assembler.h:
1142             - Since the accessors for objects members return const pointers to retain encapsulation,
1143               methods generating code with absolute addresses must be able to handle const pointers
1144               (the JIT doesn't write to these values, do dies treat the pointer to value as const
1145               from within the C++ code of the JIT, if not at runtime!).
1146
1147 2011-03-12  Sheriff Bot  <webkit.review.bot@gmail.com>
1148
1149         Unreviewed, rolling out r80919.
1150         http://trac.webkit.org/changeset/80919
1151         https://bugs.webkit.org/show_bug.cgi?id=56251
1152
1153         all windows bots failed to compile this change (Requested by
1154         loislo on #webkit).
1155
1156         * JavaScriptCore.xcodeproj/project.pbxproj:
1157         * bytecode/StructureStubInfo.cpp:
1158         * interpreter/Register.h:
1159         (JSC::Register::withInt):
1160         (JSC::Register::withCallee):
1161         (JSC::Register::operator=):
1162         (JSC::Register::i):
1163         (JSC::Register::activation):
1164         (JSC::Register::function):
1165         (JSC::Register::propertyNameIterator):
1166         (JSC::Register::scopeChain):
1167         * jit/JIT.h:
1168         * jit/JITCall.cpp:
1169         (JSC::JIT::compileOpCallInitializeCallFrame):
1170         (JSC::JIT::compileOpCallVarargs):
1171         (JSC::JIT::compileOpCall):
1172         * jit/JITCall32_64.cpp:
1173         (JSC::JIT::compileOpCallInitializeCallFrame):
1174         (JSC::JIT::compileOpCallVarargs):
1175         (JSC::JIT::compileOpCall):
1176         (JSC::JIT::compileOpCallSlowCase):
1177         * jit/JITInlineMethods.h:
1178         (JSC::JIT::emitPutToCallFrameHeader):
1179         * jit/JITOpcodes.cpp:
1180         (JSC::JIT::privateCompileCTINativeCall):
1181         (JSC::JIT::emit_op_get_pnames):
1182         (JSC::JIT::emit_op_next_pname):
1183         (JSC::JIT::emit_op_load_varargs):
1184         (JSC::JIT::emitSlow_op_load_varargs):
1185         * jit/JITOpcodes32_64.cpp:
1186         (JSC::JIT::privateCompileCTINativeCall):
1187         (JSC::JIT::emit_op_get_pnames):
1188         (JSC::JIT::emit_op_next_pname):
1189         * jit/JSInterfaceJIT.h:
1190         (JSC::JSInterfaceJIT::payloadFor):
1191         * jit/SpecializedThunkJIT.h:
1192         (JSC::SpecializedThunkJIT::returnJSValue):
1193         (JSC::SpecializedThunkJIT::returnDouble):
1194         (JSC::SpecializedThunkJIT::returnInt32):
1195         (JSC::SpecializedThunkJIT::returnJSCell):
1196         * runtime/ArgList.cpp:
1197         * runtime/DateConversion.cpp:
1198         * runtime/GCActivityCallbackCF.cpp:
1199         * runtime/Identifier.cpp:
1200         * runtime/JSActivation.h:
1201         (JSC::asActivation):
1202         * runtime/JSLock.cpp:
1203         * runtime/JSNumberCell.cpp:
1204         * runtime/JSObject.h:
1205         * runtime/JSPropertyNameIterator.h:
1206         * runtime/JSValue.h:
1207         * runtime/JSZombie.cpp:
1208         * runtime/MarkedBlock.cpp:
1209         * runtime/MarkedSpace.cpp:
1210         * runtime/PropertyNameArray.cpp:
1211         * runtime/ScopeChain.h:
1212         (JSC::ExecState::globalThisValue):
1213         * wtf/DateMath.cpp:
1214
1215 2011-03-11  Oliver Hunt  <oliver@apple.com>
1216
1217         Reviewed by Gavin Barraclough.
1218
1219         Ensure all values are correctly tagged in the registerfile
1220         https://bugs.webkit.org/show_bug.cgi?id=56214
1221
1222         This patch makes sure that all JSCell pointers written to
1223         the registerfile are correctly tagged as JSCells, and replaces
1224         raw int usage with the immediate representation.
1225
1226         For performance, register pressure, and general saneness reasons
1227         I've added abstractions for reading and writing the tag
1228         and payload of integer registers directly for the JSVALUE64
1229         encoding.
1230
1231         * interpreter/Register.h:
1232         (JSC::Register::withInt):
1233         (JSC::Register::withCallee):
1234         (JSC::Register::operator=):
1235         (JSC::Register::i):
1236         (JSC::Register::activation):
1237         (JSC::Register::function):
1238         (JSC::Register::propertyNameIterator):
1239         (JSC::Register::scopeChain):
1240         * jit/JIT.h:
1241         * jit/JITCall.cpp:
1242         (JSC::JIT::compileOpCallInitializeCallFrame):
1243         (JSC::JIT::compileOpCallVarargs):
1244         (JSC::JIT::compileOpCall):
1245         * jit/JITCall32_64.cpp:
1246         (JSC::JIT::compileOpCallInitializeCallFrame):
1247         (JSC::JIT::compileOpCallVarargs):
1248         (JSC::JIT::compileOpCall):
1249         (JSC::JIT::compileOpCallSlowCase):
1250         * jit/JITInlineMethods.h:
1251         (JSC::JIT::emitPutToCallFrameHeader):
1252         (JSC::JIT::emitPutCellToCallFrameHeader):
1253         (JSC::JIT::emitPutIntToCallFrameHeader):
1254         * jit/JITOpcodes.cpp:
1255         (JSC::JIT::privateCompileCTINativeCall):
1256         (JSC::JIT::emit_op_get_pnames):
1257         (JSC::JIT::emit_op_next_pname):
1258         (JSC::JIT::emit_op_load_varargs):
1259         (JSC::JIT::emitSlow_op_load_varargs):
1260         * jit/JITOpcodes32_64.cpp:
1261         (JSC::JIT::privateCompileCTINativeCall):
1262         (JSC::JIT::emit_op_get_pnames):
1263         (JSC::JIT::emit_op_next_pname):
1264         * jit/JSInterfaceJIT.h:
1265         (JSC::JSInterfaceJIT::intPayloadFor):
1266         (JSC::JSInterfaceJIT::intTagFor):
1267         * jit/SpecializedThunkJIT.h:
1268         (JSC::SpecializedThunkJIT::returnJSValue):
1269         (JSC::SpecializedThunkJIT::returnDouble):
1270         (JSC::SpecializedThunkJIT::returnInt32):
1271         (JSC::SpecializedThunkJIT::returnJSCell):
1272
1273 2011-03-11  Dimitri Glazkov  <dglazkov@chromium.org>
1274
1275         Reviewed by Eric Seidel.
1276
1277         Introduce project_dir variable and make paths a whole lot saner. Ok, a little bit saner.
1278         https://bugs.webkit.org/show_bug.cgi?id=56231
1279
1280         * JavaScriptCore.gypi: Added project_dir variable.
1281         * gyp/JavaScriptCore.gyp: Changed to use project_dir, rather than DEPTH/JavaScriptCore.
1282         * gyp/generate-dtrace-header.sh: Changed to use project_dir.
1283
1284 2011-03-11  Dimitri Glazkov  <dglazkov@chromium.org>
1285
1286         Reviewed by Adam Barth.
1287
1288         Start using derived sources correctly and link minidom with JavaScriptCore gyp project.
1289         https://bugs.webkit.org/show_bug.cgi?id=56217
1290
1291         * gyp/JavaScriptCore.gyp: Added derived source files and passing of shared directory
1292             to the scripts.
1293         * gyp/generate-derived-sources.sh: Changed to use passed directory.
1294         * gyp/generate-dtrace-header.sh: Ditto.
1295
1296 2011-03-11  Eric Carlson  <eric.carlson@apple.com>
1297
1298         Reviewed by Sam Weinig.
1299
1300         <rdar://problem/8955589> Adopt AVFoundation media back end on Lion.
1301
1302         No new tests, existing media tests cover this.
1303
1304         * JavaScriptCore.exp: Export cancelCallOnMainThread
1305         * wtf/Platform.h: Define WTF_USE_AVFOUNDATION.
1306
1307 2011-03-11  Dimitri Glazkov  <dglazkov@chromium.org>
1308
1309         Reviewed by Adam Barth.
1310
1311         Tweak dylib paths and add dtrace header generation action to JavaScriptCore gyp project.
1312         https://bugs.webkit.org/show_bug.cgi?id=56207
1313
1314         * JavaScriptCore.gypi: Added Tracing.d to the sources.
1315         * gyp/generate-dtrace-header.sh: Added.
1316         * gyp/JavaScriptCore.gyp: Updated dylib paths (now the project can see them),
1317             and added DTrace header generating step.
1318
1319 2011-03-10  Oliver Hunt  <oliver@apple.com>
1320
1321         Reviewed by Gavin Barraclough.
1322
1323         Fix allocation of native function with a cached thunk
1324         https://bugs.webkit.org/show_bug.cgi?id=56127
1325
1326         Fix this race condition found while fixing zombies.
1327
1328         * collector/handles/HandleHeap.cpp:
1329         (JSC::HandleHeap::clearWeakPointers):
1330         * runtime/Heap.cpp:
1331         (JSC::Heap::reset):
1332         * runtime/JSFunction.cpp:
1333         (JSC::JSFunction::JSFunction):
1334         (JSC::JSFunction::markChildren):
1335         * runtime/JSValue.h:
1336         (JSC::JSValue::decode):
1337         * runtime/JSZombie.cpp:
1338         (JSC::JSZombie::leakedZombieStructure):
1339         * runtime/JSZombie.h:
1340         (JSC::JSZombie::createStructure):
1341         * runtime/MarkedBlock.cpp:
1342
1343 2011-03-10  Luiz Agostini  <luiz.agostini@openbossa.org>
1344
1345         Reviewed by Andreas Kling.
1346
1347         [Qt] fast/workers/stress-js-execution.html is crashing on Qt bot (intermittently)
1348         https://bugs.webkit.org/show_bug.cgi?id=33008
1349
1350         Defining WTF_USE_PTHREAD_BASED_QT=1 for platforms where QThread uses pthread internally.
1351         Symbian is excluded because pthread_kill does not work on it. Mac is excluded because
1352         it has its own ways to do JSC threading.
1353
1354         Defining WTF_USE_PTHREADS inside MachineStackMarker.cpp if USE(PTHREAD_BASED_QT) is true.
1355
1356         * runtime/MachineStackMarker.cpp:
1357         * wtf/Platform.h:
1358
1359 2011-03-10  Gavin Barraclough  <barraclough@apple.com>
1360
1361         Reviewed by Oliver Hunt.
1362
1363         Bug 56077 - ES5 conformance issues with RegExp.prototype
1364
1365         There are three issues causing test failures in sputnik.
1366
1367         (1) lastIndex should be converted at the point it is used, not the point it is set (this is visible if valueOf is overridden).
1368         (2) The 'length' property of the test/exec functions should be 1.
1369         (3) If no input is specified, the input to test()/exec() is "undefined" (i.e. ToString(undefined)) - not RegExp.input.
1370
1371         * runtime/RegExpObject.cpp:
1372         (JSC::RegExpObject::markChildren):
1373             - Added to mark lastIndex
1374         (JSC::regExpObjectLastIndex):
1375         (JSC::setRegExpObjectLastIndex):
1376             - lastIndex is now stored as a JSValue.
1377         (JSC::RegExpObject::match):
1378             - Use accessor methods to get/set lastIndex, add fast case for isUInt32 (don't convert to double).
1379         * runtime/RegExpObject.h:
1380         (JSC::RegExpObject::setLastIndex):
1381         (JSC::RegExpObject::setLastIndex):
1382             - Set lastIndex, either from a size_t or a JSValue.
1383         (JSC::RegExpObject::getLastIndex):
1384             - Get lastIndex.
1385         (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
1386             - Initialize as a JSValue.
1387         * runtime/RegExpPrototype.cpp:
1388         (JSC::RegExpPrototype::RegExpPrototype):
1389             - Add test/exec properties with length 1.
1390         * runtime/StringPrototype.cpp:
1391         (JSC::stringProtoFuncMatch):
1392         (JSC::stringProtoFuncSearch):
1393             - Do not read RegExp.input if none is provided.
1394         * tests/mozilla/js1_2/regexp/RegExp_input.js:
1395         * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js:
1396             - Update these tests (they relied on non-ES5 behaviour).
1397
1398 2011-03-10  Geoffrey Garen  <ggaren@apple.com>
1399
1400         Reviewed by Oliver Hunt.
1401
1402         Rolled back in 80277 and 80280 with event handler layout test failures fixed.
1403         https://bugs.webkit.org/show_bug.cgi?id=55653        
1404
1405         The failures were caused by a last minute typo: assigning to currentEvent
1406         instead of m_currentEvent.
1407
1408         * JavaScriptCore.exp:
1409         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1410         * JavaScriptCore.xcodeproj/project.pbxproj:
1411         * bytecompiler/BytecodeGenerator.cpp:
1412         * jit/JITOpcodes.cpp:
1413         * jit/JITOpcodes32_64.cpp:
1414         * runtime/Arguments.h:
1415         * runtime/JSActivation.cpp:
1416         * runtime/JSActivation.h:
1417         * runtime/JSCell.h:
1418         * runtime/JSGlobalObject.cpp:
1419         * runtime/JSGlobalObject.h:
1420         * runtime/JSObject.cpp:
1421         * runtime/JSStaticScopeObject.cpp:
1422         * runtime/JSStaticScopeObject.h:
1423         * runtime/JSVariableObject.h:
1424         * runtime/MarkedSpace.cpp:
1425         * runtime/MarkedSpace.h:
1426
1427 2011-03-09  Oliver Hunt  <oliver@apple.com>
1428
1429         Reviewed by Gavin Barraclough.
1430
1431         jquery/manipulation.html fails after r80598
1432         https://bugs.webkit.org/show_bug.cgi?id=56019
1433
1434         When linking a call, codeblock now takes ownership of the linked function
1435         This removes the need for unlinking, and thus the incorrectness that was
1436         showing up in these tests.
1437
1438         * bytecode/CodeBlock.cpp:
1439         (JSC::CodeBlock::~CodeBlock):
1440         (JSC::CodeBlock::markAggregate):
1441         * bytecode/CodeBlock.h:
1442         (JSC::CallLinkInfo::CallLinkInfo):
1443         (JSC::CallLinkInfo::setUnlinked):
1444         (JSC::CodeBlock::addCaller):
1445         * jit/JIT.cpp:
1446         (JSC::JIT::privateCompile):
1447         (JSC::JIT::linkCall):
1448         (JSC::JIT::linkConstruct):
1449         * jit/JIT.h:
1450         * runtime/Executable.cpp:
1451         * runtime/Executable.h:
1452
1453 2011-03-09  Daniel Bates  <dbates@rim.com>
1454
1455         Attempt to fix the WinCE build after changeset 80684 <http://trac.webkit.org/changeset/80684>
1456         (Bug #56041<https://bugs.webkit.org/show_bug.cgi?id=56041>).
1457
1458         * interpreter/Interpreter.cpp:
1459         (JSC::Interpreter::privateExecute): Substitute variable callFrame for exec in call to createSyntaxError().
1460
1461 2011-03-09  Gavin Barraclough  <barraclough@apple.com>
1462
1463         Reviewed by Sam Weinig.
1464
1465         Bug 56041 - RexExp constructor should only accept flags "gim"
1466         Fix for issues introduced in r80667.
1467
1468         Invalid flags to a RegExp literal are a late syntax error!
1469
1470         * bytecode/CodeBlock.h:
1471         (JSC::CodeBlock::addRegExp):
1472             - Pass a PassRefPtr<RegExp>
1473         * bytecompiler/BytecodeGenerator.cpp:
1474         (JSC::BytecodeGenerator::addRegExp):
1475         (JSC::BytecodeGenerator::emitNewRegExp):
1476         * bytecompiler/BytecodeGenerator.h:
1477             - Pass a PassRefPtr<RegExp>
1478         * bytecompiler/NodesCodegen.cpp:
1479         (JSC::RegExpNode::emitBytecode):
1480             - Should not be ASSERTing that the flags are valid - this is a late(er) error.
1481         * interpreter/Interpreter.cpp:
1482         (JSC::Interpreter::privateExecute):
1483             - Need to check for error from RegExp constructor.
1484         * jit/JITStubs.cpp:
1485         (JSC::DEFINE_STUB_FUNCTION):
1486             - Need to check for error from RegExp constructor.
1487         * runtime/RegExp.h:
1488         (JSC::RegExp::isValid):
1489             - Make isValid check that the regexp was created with valid flags.
1490         * runtime/RegExpKey.h:
1491             - Since we'll not create RegExp objects with invalid flags, separate out the deleted value.
1492
1493 2011-03-09  Gavin Barraclough  <barraclough@apple.com>
1494
1495         Windows build fix part 2.
1496
1497         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1498
1499 2011-03-09  Gavin Barraclough  <barraclough@apple.com>
1500
1501         Windows build fix part 1.
1502
1503         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1504
1505 2011-03-09  Gavin Barraclough  <barraclough@apple.com>
1506
1507         Reviewed by Darin Adler.
1508
1509         Bug 56041 - RexExp constructor should only accept flags "gim"
1510         We also should be passing the flags around as a bitfield rather than a string,
1511         and should not have redundant, incompatible code for converting the string to a bitfield!
1512
1513         * JavaScriptCore.exp:
1514         * bytecompiler/NodesCodegen.cpp:
1515         (JSC::RegExpNode::emitBytecode):
1516             - Need to parse flags string to enum.
1517         * runtime/RegExp.cpp:
1518         (JSC::regExpFlags):
1519         (JSC::RegExp::RegExp):
1520         (JSC::RegExp::create):
1521             - Add method to parse flags string to enum, change constructor/create args to take enum.
1522         * runtime/RegExp.h:
1523         (JSC::RegExp::global):
1524         (JSC::RegExp::ignoreCase):
1525         (JSC::RegExp::multiline):
1526             - Change to use new enum values.
1527         * runtime/RegExpCache.cpp:
1528         (JSC::RegExpCache::lookupOrCreate):
1529         (JSC::RegExpCache::create):
1530         * runtime/RegExpCache.h:
1531             - Changed to use regExpFlags enum instead of int/const UString&.
1532         * runtime/RegExpConstructor.cpp:
1533         (JSC::constructRegExp):
1534             - Add use new enum parsing, check for error.
1535         * runtime/RegExpKey.h:
1536         (JSC::RegExpKey::RegExpKey):
1537         * runtime/RegExpPrototype.cpp:
1538         (JSC::RegExpPrototype::RegExpPrototype):
1539             - Pass NoFlags value instead of empty string.
1540         (JSC::regExpProtoFuncCompile):
1541             - Add use new enum parsing, check for error.
1542         * runtime/StringPrototype.cpp:
1543         (JSC::stringProtoFuncMatch):
1544         (JSC::stringProtoFuncSearch):
1545             - Pass NoFlags value instead of empty string.
1546
1547 2011-03-08  Gavin Barraclough  <barraclough@apple.com>
1548
1549         Reviewed by Sam Weinig
1550
1551         Bug 55994 - Functions on Array.prototype should check length first.
1552         These methods are designed to work on generic objects too, and if 'length'
1553         is a getter that throws an exception, ensure this is correctly thrown
1554         (even if other exceptions would be thrown, too).
1555
1556         Make the length check the first thing we do.
1557         This change shows a progression on SunSpider on my machine, but this is likely bogus.
1558
1559         * runtime/ArrayPrototype.cpp:
1560         (JSC::arrayProtoFuncToString):
1561         (JSC::arrayProtoFuncToLocaleString):
1562         (JSC::arrayProtoFuncJoin):
1563         (JSC::arrayProtoFuncPop):
1564         (JSC::arrayProtoFuncPush):
1565         (JSC::arrayProtoFuncReverse):
1566         (JSC::arrayProtoFuncShift):
1567         (JSC::arrayProtoFuncSlice):
1568         (JSC::arrayProtoFuncSort):
1569         (JSC::arrayProtoFuncSplice):
1570         (JSC::arrayProtoFuncUnShift):
1571         (JSC::arrayProtoFuncFilter):
1572         (JSC::arrayProtoFuncMap):
1573         (JSC::arrayProtoFuncEvery):
1574         (JSC::arrayProtoFuncForEach):
1575         (JSC::arrayProtoFuncSome):
1576         (JSC::arrayProtoFuncReduce):
1577         (JSC::arrayProtoFuncReduceRight):
1578         (JSC::arrayProtoFuncIndexOf):
1579         (JSC::arrayProtoFuncLastIndexOf):
1580
1581 2011-03-07  Oliver Hunt  <oliver@apple.com>
1582
1583         Reviewed by Gavin Barraclough.
1584
1585         Make CodeBlock GC write barrier safe
1586         https://bugs.webkit.org/show_bug.cgi?id=55910
1587
1588         In order to make CodeBlock WriteBarrier safe it was necessary
1589         to make it have a single GC owner, and for that reason I have
1590         made ExecutableBase a GC allocated object.  This required
1591         updating their creation routines as well as all sites that hold
1592         a reference to them.  GC objects that held Executable's have been
1593         converted to WriteBarriers, and all other sites now use Global<>.
1594
1595         As an added benefit this gets rid of JSGlobalData's list of
1596         GlobalCodeBlocks.
1597
1598         Perf testing shows a 0.5% progression on v8, vs. a 0.3% regression
1599         on SunSpider.  Given none of the tests that show regressions
1600         demonstrate a regression on their own, and sampling shows up nothing.
1601         I suspect we're just getting one or two additional gc passes at
1602         the end of the run.
1603
1604         * bytecode/CodeBlock.cpp:
1605         (JSC::CodeBlock::dump):
1606         (JSC::CodeBlock::CodeBlock):
1607         (JSC::EvalCodeCache::markAggregate):
1608         (JSC::CodeBlock::markAggregate):
1609         * bytecode/CodeBlock.h:
1610         (JSC::CodeBlock::ownerExecutable):
1611         (JSC::CodeBlock::addConstant):
1612         (JSC::CodeBlock::constantRegister):
1613         (JSC::CodeBlock::getConstant):
1614         (JSC::CodeBlock::addFunctionDecl):
1615         (JSC::CodeBlock::addFunctionExpr):
1616         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1617         (JSC::ExecState::r):
1618         * bytecode/EvalCodeCache.h:
1619         (JSC::EvalCodeCache::get):
1620         * bytecode/SamplingTool.h:
1621         (JSC::ScriptSampleRecord::ScriptSampleRecord):
1622         * bytecompiler/BytecodeGenerator.cpp:
1623         (JSC::BytecodeGenerator::addConstantValue):
1624         (JSC::BytecodeGenerator::emitEqualityOp):
1625         * bytecompiler/BytecodeGenerator.h:
1626         (JSC::BytecodeGenerator::makeFunction):
1627         * debugger/Debugger.cpp:
1628         (JSC::evaluateInGlobalCallFrame):
1629         * debugger/DebuggerCallFrame.cpp:
1630         (JSC::DebuggerCallFrame::evaluate):
1631         * interpreter/Interpreter.cpp:
1632         (JSC::Interpreter::callEval):
1633         * jit/JITInlineMethods.h:
1634         (JSC::JIT::emitLoadDouble):
1635         (JSC::JIT::emitLoadInt32ToDouble):
1636         * jit/JITStubs.cpp:
1637         (JSC::JITThunks::JITThunks):
1638         (JSC::JITThunks::hostFunctionStub):
1639         (JSC::JITThunks::clearHostFunctionStubs):
1640         * jit/JITStubs.h:
1641         * runtime/Completion.cpp:
1642         (JSC::checkSyntax):
1643         (JSC::evaluate):
1644         * runtime/Executable.cpp:
1645         (JSC::EvalExecutable::EvalExecutable):
1646         (JSC::ProgramExecutable::ProgramExecutable):
1647         (JSC::FunctionExecutable::FunctionExecutable):
1648         (JSC::FunctionExecutable::~FunctionExecutable):
1649         (JSC::EvalExecutable::markChildren):
1650         (JSC::ProgramExecutable::markChildren):
1651         (JSC::FunctionExecutable::markChildren):
1652         (JSC::FunctionExecutable::fromGlobalCode):
1653         * runtime/Executable.h:
1654         (JSC::ExecutableBase::ExecutableBase):
1655         (JSC::ExecutableBase::createStructure):
1656         (JSC::NativeExecutable::create):
1657         (JSC::NativeExecutable::NativeExecutable):
1658         (JSC::VPtrHackExecutable::VPtrHackExecutable):
1659         (JSC::ScriptExecutable::ScriptExecutable):
1660         (JSC::EvalExecutable::create):
1661         (JSC::EvalExecutable::createStructure):
1662         (JSC::ProgramExecutable::create):
1663         (JSC::ProgramExecutable::createStructure):
1664         (JSC::FunctionExecutable::create):
1665         (JSC::FunctionExecutable::createStructure):
1666         * runtime/FunctionConstructor.cpp:
1667         (JSC::constructFunction):
1668         * runtime/Heap.cpp:
1669         (JSC::Heap::destroy):
1670         (JSC::Heap::markRoots):
1671         * runtime/Heap.h:
1672         * runtime/JSActivation.cpp:
1673         (JSC::JSActivation::JSActivation):
1674         (JSC::JSActivation::markChildren):
1675         * runtime/JSActivation.h:
1676         (JSC::JSActivation::JSActivationData::JSActivationData):
1677         * runtime/JSCell.h:
1678         * runtime/JSFunction.cpp:
1679         (JSC::JSFunction::JSFunction):
1680         (JSC::JSFunction::~JSFunction):
1681         (JSC::JSFunction::markChildren):
1682         * runtime/JSFunction.h:
1683         * runtime/JSGlobalData.cpp:
1684         (JSC::JSGlobalData::storeVPtrs):
1685         (JSC::JSGlobalData::JSGlobalData):
1686         (JSC::JSGlobalData::getHostFunction):
1687         * runtime/JSGlobalData.h:
1688         * runtime/JSGlobalObjectFunctions.cpp:
1689         (JSC::globalFuncEval):
1690         * runtime/JSObject.cpp:
1691         * runtime/JSStaticScopeObject.cpp:
1692         (JSC::JSStaticScopeObject::markChildren):
1693         * runtime/JSStaticScopeObject.h:
1694         (JSC::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData):
1695         (JSC::JSStaticScopeObject::JSStaticScopeObject):
1696         * runtime/JSZombie.cpp:
1697         (JSC::JSZombie::leakedZombieStructure):
1698         * runtime/JSZombie.h:
1699         (JSC::JSZombie::createStructure):
1700         * runtime/MarkedSpace.h:
1701
1702 2011-03-07  Andy Estes  <aestes@apple.com>
1703
1704         Reviewed by Dan Bernstein.
1705
1706         REGRESSION (r79060): Timestamp is missing from tweets in twitter.
1707         https://bugs.webkit.org/show_bug.cgi?id=55228
1708
1709         A change to the date parser to handle the case where the year is
1710         specified before the time zone inadvertently started accepting strings
1711         such as '+0000' as valid years. Those strings actually represent time
1712         zones in an offset of hours and minutes from UTC, not years.
1713
1714         * wtf/DateMath.cpp:
1715         (WTF::parseDateFromNullTerminatedCharacters): If the current character
1716         in dateString is '+' or '-', do not try to parse the next token as a
1717         year.
1718
1719 2011-03-06  Yuta Kitamura  <yutak@chromium.org>
1720
1721         Reviewed by Kent Tamura.
1722
1723         Add SHA-1 for new WebSocket protocol
1724         https://bugs.webkit.org/show_bug.cgi?id=55039
1725
1726         The code is based on Chromium's portable SHA-1 implementation
1727         (src/base/sha1_portable.cc). Modifications were made in order
1728         to make the code comply with WebKit coding style.
1729
1730         * GNUmakefile.am:
1731         * JavaScriptCore.exp:
1732         * JavaScriptCore.gypi:
1733         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1734         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1735         * JavaScriptCore.xcodeproj/project.pbxproj:
1736         * wtf/CMakeLists.txt:
1737         * wtf/MD5.cpp:
1738         (WTF::MD5::MD5):
1739         * wtf/SHA1.cpp: Added.
1740         (WTF::testSHA1): This function will be run the first time SHA1
1741         constructor is called. This function computes a few hash values
1742         and checks the results in debug builds. However, constructor is
1743         probably not a good place to run these tests, so we need to find
1744         a good place for it (bug 55853).
1745         (WTF::expectSHA1):
1746         (WTF::f):
1747         (WTF::k):
1748         (WTF::rotateLeft):
1749         (WTF::SHA1::SHA1):
1750         (WTF::SHA1::addBytes):
1751         (WTF::SHA1::computeHash):
1752         (WTF::SHA1::finalize):
1753         (WTF::SHA1::processBlock):
1754         (WTF::SHA1::reset):
1755         * wtf/SHA1.h: Added.
1756         (WTF::SHA1::addBytes):
1757         * wtf/wtf.pri:
1758
1759 2011-03-05  Adam Barth  <abarth@webkit.org>
1760
1761         Reviewed by Dimitri Glazkov.
1762
1763         Add Derived Sources to WebCore GYP build
1764         https://bugs.webkit.org/show_bug.cgi?id=55813
1765
1766         Rename the action to be friendlier.
1767
1768         * gyp/JavaScriptCore.gyp:
1769
1770 2011-03-04  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
1771
1772         Reviewed by Laszlo Gombos.
1773
1774         [Qt] Need symbian version of cryptographicallyRandomValuesFromOS
1775         https://bugs.webkit.org/show_bug.cgi?id=55782
1776
1777         Implement Symbian version of cryptographicallyRandomValuesFromOS
1778
1779         * wtf/OSRandomSource.cpp:
1780         (WTF::cryptographicallyRandomValuesFromOS):
1781
1782 2011-03-04  Gavin Barraclough  <barraclough@apple.com>
1783
1784         Reviewed by Cameron Zwarich.
1785
1786         Bug 55815 - Should throw an exception from JSObject::defineOwnProperty if !isExtensible().
1787
1788         * runtime/JSObject.cpp:
1789         (JSC::JSObject::defineOwnProperty):
1790             Add missing check.
1791
1792 2011-03-04  Gavin Barraclough  <barraclough@apple.com>
1793
1794         Rubber stamped by olliej.
1795
1796         Bug 54945 - The web page hangs towards the end of page load in Interpreter enabled javascript code in the latest webkit trunk.
1797
1798         * interpreter/Interpreter.cpp:
1799         (JSC::Interpreter::privateExecute):
1800             (1) don't infinite loop.
1801             (2) goto 1.
1802
1803 2011-03-04  Gavin Barraclough  <barraclough@apple.com>
1804
1805         cmake build fix.
1806
1807         * CMakeLists.txt:
1808
1809 2011-03-04  Adam Barth  <abarth@webkit.org>
1810
1811         Reviewed by Dimitri Glazkov.
1812
1813         Add Copy Files step to JavaScriptCore GYP build for apitest and minidom
1814         https://bugs.webkit.org/show_bug.cgi?id=55798
1815
1816         * JavaScriptCore.gypi:
1817         * gyp/JavaScriptCore.gyp:
1818
1819 2011-03-04  Adam Barth  <abarth@webkit.org>
1820
1821         Reviewed by Dimitri Glazkov.
1822
1823         Remove unneeded round-trips through ../Source in the Chromium GYP build
1824         https://bugs.webkit.org/show_bug.cgi?id=55795
1825
1826         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1827
1828 2011-03-04  Adam Barth  <abarth@webkit.org>
1829
1830         Reviewed by Dimitri Glazkov.
1831
1832         Use target_defaults to reduce boilerplate in GYP build system
1833         https://bugs.webkit.org/show_bug.cgi?id=55790
1834
1835         Instead of setting up the configuration in each target, just defer to
1836         target_defaults.  Also, removed a define that was redundant with the
1837         xcconfig.
1838
1839         * gyp/JavaScriptCore.gyp:
1840
1841 2011-03-03  Gavin Barraclough  <barraclough@apple.com>
1842
1843         Reviewed by Sam Weinig.
1844
1845         Bug 55736 - Implement seal/freeze/preventExtensions for normal object types.
1846         Provide basic functionallity from section 15.2.4 of ECMA-262.
1847         This support will need expanding to cover arrays, too.
1848
1849         Shows a 0.5% progression on SunSpidey, this seems to be due to changing
1850         ObjectConstructor to use a static table.
1851
1852         * DerivedSources.make:
1853         * JavaScriptCore.exp:
1854         * interpreter/CallFrame.h:
1855         (JSC::ExecState::objectConstructorTable):
1856             Add a static table for ObjectConstructor.
1857         * runtime/CommonIdentifiers.h:
1858         * runtime/JSGlobalData.cpp:
1859         (JSC::JSGlobalData::JSGlobalData):
1860         (JSC::JSGlobalData::~JSGlobalData):
1861             Add a static table for ObjectConstructor.
1862         * runtime/JSGlobalData.h:
1863         * runtime/JSGlobalObject.cpp:
1864         (JSC::JSGlobalObject::reset):
1865             Add a static table for ObjectConstructor.
1866         * runtime/JSObject.cpp:
1867         (JSC::JSObject::seal):
1868         (JSC::JSObject::freeze):
1869         (JSC::JSObject::preventExtensions):
1870             Transition the object's structure.
1871         (JSC::JSObject::defineOwnProperty):
1872             Check isExtensible.
1873         * runtime/JSObject.h:
1874         (JSC::JSObject::isSealed):
1875         (JSC::JSObject::isFrozen):
1876         (JSC::JSObject::isExtensible):
1877             These wrap method on structure.
1878         (JSC::JSObject::putDirectInternal):
1879             Check isExtensible.
1880         * runtime/ObjectConstructor.cpp:
1881         (JSC::ObjectConstructor::ObjectConstructor):
1882         (JSC::ObjectConstructor::getOwnPropertySlot):
1883         (JSC::ObjectConstructor::getOwnPropertyDescriptor):
1884             Change ObjectConstructor to use a static table.
1885         (JSC::objectConstructorSeal):
1886         (JSC::objectConstructorFreeze):
1887         (JSC::objectConstructorPreventExtensions):
1888         (JSC::objectConstructorIsSealed):
1889         (JSC::objectConstructorIsFrozen):
1890         (JSC::objectConstructorIsExtensible):
1891             Add new methods on Object.
1892         * runtime/ObjectConstructor.h:
1893         (JSC::ObjectConstructor::createStructure):
1894         * runtime/Structure.cpp:
1895         (JSC::Structure::Structure):
1896             init/propagate  m_preventExtensions
1897         (JSC::Structure::sealTransition):
1898         (JSC::Structure::freezeTransition):
1899         (JSC::Structure::preventExtensionsTransition):
1900             transition the structure, materializing the property map, setting m_preventExtensions & changing attributes.
1901         (JSC::Structure::isSealed):
1902         (JSC::Structure::isFrozen):
1903             check attributes to detect if object is sealed/frozen.
1904         * runtime/Structure.h:
1905         (JSC::Structure::isExtensible):
1906             checks the m_preventExtensions flag.
1907
1908 2011-03-04  Steve Falkenburg  <sfalken@apple.com>
1909
1910         Reviewed by Jon Honeycutt.
1911
1912         Adopt VersionStamper tool for Windows WebKit DLLs
1913         https://bugs.webkit.org/show_bug.cgi?id=55784
1914         <rdar://problem/9021273>
1915         
1916         We now use a tool to stamp the version number onto the Apple WebKit DLLs
1917         during the post-build step.
1918
1919         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Removed.
1920         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1921         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
1922         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
1923
1924 2011-03-04  Adam Barth  <abarth@webkit.org>
1925
1926         Reviewed by Dimitri Glazkov.
1927
1928         JavaScriptCore GYP build should use a header map
1929         https://bugs.webkit.org/show_bug.cgi?id=55712
1930
1931         This patch moves the os-win32 files into their own variable so that we
1932         can use a header map in the Apple Mac Xcode build.  The problem is that
1933         the header map searches the whole project rather than just the files
1934         included in a given target.  Another solution to this problem is to
1935         make GYP smarter about filtering out what files are added to the
1936         project file.
1937
1938         * JavaScriptCore.gypi:
1939         * gyp/JavaScriptCore.gyp:
1940
1941 2011-03-03  Ryosuke Niwa  <rniwa@webkit.org>
1942
1943         Reviewed by Darin Adler.
1944
1945         Remove LOOSE_PASS_OWN_ARRAY_PTR from PassOwnArrayPtr.h
1946         https://bugs.webkit.org/show_bug.cgi?id=55554
1947
1948         * runtime/JSGlobalObject.cpp:
1949         (JSC::JSGlobalObject::copyGlobalsTo): Pass nullptr instead of 0.
1950         (JSC::JSGlobalObject::resizeRegisters): Ditto; also use OwnArrayPtr instead of a raw pointer.
1951         * runtime/JSGlobalObject.h:
1952         (JSC::JSGlobalObject::addStaticGlobals): Ditto.
1953         * wtf/PassOwnArrayPtr.h: Removed #define LOOSE_PASS_OWN_ARRAY_PTR
1954         (WTF::PassOwnArrayPtr::PassOwnArrayPtr): Added a constructor that takes nullptr_t.
1955
1956 2011-03-03  Adam Barth  <abarth@webkit.org>
1957
1958         Reviewed by Dimitri Glazkov.
1959
1960         Add jsc to JavaScriptCore GYP build
1961         https://bugs.webkit.org/show_bug.cgi?id=55711
1962
1963         * JavaScriptCore.gypi:
1964             - Move jsc.cpp into jsc_files because it's really part of the jsc
1965               target.
1966         * JavaScriptCore.xcodeproj/project.pbxproj:
1967             - Remove extraneous files from the normal jsc build.  I probably
1968               added these by mistake at some point.
1969         * gyp/JavaScriptCore.gyp:
1970             - Add the jsc target to the GYP file.
1971
1972 2011-03-03  Adam Barth  <abarth@webkit.org>
1973
1974         Reviewed by Dimitri Glazkov.
1975
1976         Add testapi to JavaScriptCore GYP build
1977         https://bugs.webkit.org/show_bug.cgi?id=55707
1978
1979         The new testapi target is slightly incomplete.  There's a resource
1980         copying step that we don't quite have yet.
1981
1982         This patch also cleans up some of the configuration issues in
1983         JavaScriptCore.xcodeproj.  It seems kind of wordy to repeat these for
1984         each target.  I suspect there's a more compact way of defining the
1985         configurations, but this removes the "Default" configuration, which is
1986         progress.
1987
1988         * JavaScriptCore.gypi:
1989         * gyp/JavaScriptCore.gyp:
1990
1991 2011-03-03  Adam Barth  <abarth@webkit.org>
1992
1993         Reviewed by Eric Seidel.
1994
1995         Teach JavaScriptCore GYP build about private headers
1996         https://bugs.webkit.org/show_bug.cgi?id=55532
1997
1998         This patch distinguishes between public and private framework headers
1999         so that public headers are copied into the Headers directory and
2000         private headers are copied into the PrivateHeaders directory.
2001
2002         * gyp/JavaScriptCore.gyp:
2003
2004 2011-03-03  Geoffrey Garen  <ggaren@apple.com>
2005
2006         Rolled out 80277 and 80280 because they caused event handler layout test
2007         failures.
2008
2009         * JavaScriptCore.exp:
2010         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2011         * JavaScriptCore.xcodeproj/project.pbxproj:
2012         * bytecompiler/BytecodeGenerator.cpp:
2013         * jit/JITOpcodes.cpp:
2014         * jit/JITOpcodes32_64.cpp:
2015         * runtime/Arguments.h:
2016         * runtime/JSActivation.cpp:
2017         * runtime/JSActivation.h:
2018         * runtime/JSCell.h:
2019         * runtime/JSGlobalObject.cpp:
2020         * runtime/JSGlobalObject.h:
2021         * runtime/JSObject.cpp:
2022         * runtime/JSStaticScopeObject.cpp:
2023         * runtime/JSStaticScopeObject.h:
2024         * runtime/JSVariableObject.h:
2025         * runtime/MarkedSpace.cpp:
2026         * runtime/MarkedSpace.h:
2027
2028 2011-03-03  Kevin Ollivier  <kevino@theolliviers.com>
2029
2030         [wx] Build fix. Alter order of headers included to make sure windows.h
2031         is configured by wx, and skip Posix implementation file we don't use on Win.
2032
2033         * wscript:
2034         * wtf/wx/StringWx.cpp:
2035
2036 2011-03-03  Oliver Hunt  <oliver@apple.com>
2037
2038         Reviewed by Geoffrey Garen.
2039
2040         JSVariableObject needs to use WriteBarrier for symboltable property storage
2041         https://bugs.webkit.org/show_bug.cgi?id=55698
2042
2043         Replace the direct usage of Register in JSVariableObject (and descendents)
2044         with WriteBarrier.  This requires updating the Arguments object to use
2045         WriteBarrier as well.
2046
2047         * interpreter/Interpreter.cpp:
2048         (JSC::Interpreter::unwindCallFrame):
2049         (JSC::Interpreter::privateExecute):
2050         (JSC::Interpreter::retrieveArguments):
2051         * jit/JITStubs.cpp:
2052         (JSC::DEFINE_STUB_FUNCTION):
2053         * runtime/ArgList.h:
2054         (JSC::MarkedArgumentBuffer::initialize):
2055         * runtime/Arguments.cpp:
2056         (JSC::Arguments::markChildren):
2057         (JSC::Arguments::copyToRegisters):
2058         (JSC::Arguments::fillArgList):
2059         (JSC::Arguments::getOwnPropertySlot):
2060         (JSC::Arguments::getOwnPropertyDescriptor):
2061         (JSC::Arguments::put):
2062         * runtime/Arguments.h:
2063         (JSC::Arguments::setActivation):
2064         (JSC::Arguments::Arguments):
2065         (JSC::Arguments::copyRegisters):
2066         (JSC::JSActivation::copyRegisters):
2067         * runtime/JSActivation.cpp:
2068         (JSC::JSActivation::markChildren):
2069         (JSC::JSActivation::symbolTableGet):
2070         (JSC::JSActivation::symbolTablePut):
2071         (JSC::JSActivation::symbolTablePutWithAttributes):
2072         (JSC::JSActivation::put):
2073         (JSC::JSActivation::putWithAttributes):
2074         (JSC::JSActivation::argumentsGetter):
2075         * runtime/JSActivation.h:
2076         * runtime/JSGlobalObject.cpp:
2077         (JSC::JSGlobalObject::put):
2078         (JSC::JSGlobalObject::putWithAttributes):
2079         (JSC::JSGlobalObject::markChildren):
2080         (JSC::JSGlobalObject::copyGlobalsFrom):
2081         (JSC::JSGlobalObject::copyGlobalsTo):
2082         (JSC::JSGlobalObject::resizeRegisters):
2083         * runtime/JSGlobalObject.h:
2084         (JSC::JSGlobalObject::setRegisters):
2085         (JSC::JSGlobalObject::addStaticGlobals):
2086         * runtime/JSStaticScopeObject.cpp:
2087         (JSC::JSStaticScopeObject::put):
2088         (JSC::JSStaticScopeObject::putWithAttributes):
2089         * runtime/JSVariableObject.cpp:
2090         (JSC::JSVariableObject::symbolTableGet):
2091         * runtime/JSVariableObject.h:
2092         (JSC::JSVariableObject::registerAt):
2093         (JSC::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
2094         (JSC::JSVariableObject::symbolTableGet):
2095         (JSC::JSVariableObject::symbolTablePut):
2096         (JSC::JSVariableObject::symbolTablePutWithAttributes):
2097         (JSC::JSVariableObject::copyRegisterArray):
2098         (JSC::JSVariableObject::setRegisters):
2099
2100 2011-03-03  Geoffrey Garen  <ggaren@apple.com>
2101
2102         Try to fix Windows build.
2103
2104         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed obsolete symbol.
2105
2106         * runtime/JSStaticScopeObject.cpp:
2107         (JSC::JSStaticScopeObject::getOwnPropertySlot): Don't mark this function
2108         inline -- it's virtual.
2109
2110 2011-03-02  Geoffrey Garen  <ggaren@apple.com>
2111
2112         Reviewed by Darin Adler.
2113
2114         Moved all variable object storage inline -- upping the object size limit to 1K
2115         https://bugs.webkit.org/show_bug.cgi?id=55653
2116
2117         * JavaScriptCore.exp:
2118         * bytecompiler/BytecodeGenerator.cpp:
2119         * jit/JITOpcodes.cpp:
2120         * runtime/Arguments.h:
2121         * runtime/JSActivation.h: Removed out-of-line storage. Changed d-> to m_.
2122
2123         * runtime/JSCell.h:
2124         (JSC::JSCell::MarkedSpace::sizeClassFor): Added an imprecise size class
2125         to accomodate objects up to 1K.
2126
2127         * runtime/JSGlobalObject.cpp:
2128         * runtime/JSGlobalObject.h: Removed out-of-line storage. Changed d-> to m_.
2129
2130         * runtime/JSObject.cpp: Don't ASSERT that JSFinalObject fills the maximum
2131         object size, since it doesn't anymore.
2132
2133         * runtime/JSStaticScopeObject.cpp:
2134         * runtime/JSStaticScopeObject.h:
2135         * runtime/JSVariableObject.h: Removed out-of-line storage. Changed d-> to m_.
2136
2137         * runtime/MarkedSpace.cpp:
2138         (JSC::MarkedSpace::MarkedSpace):
2139         (JSC::MarkedSpace::reset):
2140         * runtime/MarkedSpace.h: Added an imprecise size class to accomodate objects up to 1K.
2141
2142 2011-03-03  Timothy Hatcher  <timothy@apple.com>
2143
2144         Make APIShims usable from WebCore.
2145
2146         Reviewed by Oliver Hunt.
2147
2148         * ForwardingHeaders/JavaScriptCore/APIShims.h: Added.
2149         * GNUmakefile.am:
2150         * JavaScriptCore.exp:
2151         * JavaScriptCore.gypi:
2152         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2153         * JavaScriptCore.xcodeproj/project.pbxproj:
2154
2155 2011-03-03  Peter Varga  <pvarga@webkit.org>
2156
2157         Reviewed by Oliver Hunt.
2158
2159         Begin Characters Optimization Causes YARR Interpreter Errors
2160         https://bugs.webkit.org/show_bug.cgi?id=55479
2161
2162         The addBeginTerm function is removed because it doesn't correctly handle those
2163         cases when an "invalid" term has been
2164         collected (e.g. CharacterClass). Move the removed function to the
2165         setupAlternativeBeginTerms method's switch-case
2166         where the non-allowed cases are correctly handled.
2167
2168         Reenable the Beginning Character Optimization in the YARR Interpreter again.
2169
2170         * yarr/YarrPattern.cpp:
2171         (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms):
2172         (JSC::Yarr::YarrPattern::compile):
2173
2174 2011-03-02  Jessie Berlin  <jberlin@apple.com>
2175
2176         Reviewed by Adam Roben.
2177
2178         WebKit2: Use CFNetwork Sessions API.
2179         https://bugs.webkit.org/show_bug.cgi?id=55435
2180
2181         Add the ability to create a Private Browsing storage session.
2182
2183         * wtf/Platform.h:
2184         Add a new #define for using CF Storage Sessions.
2185
2186 2011-03-02  Oliver Hunt  <oliver@apple.com>
2187
2188         Reviewed by Gavin Barraclough.
2189
2190         Remove "register slot" concept from PropertySlot
2191         https://bugs.webkit.org/show_bug.cgi?id=55621
2192
2193         PropertySlot had already stopped storing Register "slots"
2194         so this patch is simply removing that api entirely.
2195         This exposed a problem in the ProgramNode constructor for
2196         BytecodeGenerator where it reads from the registerfile
2197         before it has initialised it.
2198
2199         This bug wasn't a problem before as we were merely testing
2200         for property existence rather than the actual value, and
2201         used to work because setRegisterSlot didn't check that the
2202         provided slot contained an initialised value.
2203
2204         To get around this issue we now use symbolTableHasProperty
2205         to do the symbol table check without trying to read the
2206         RegisterFile.
2207
2208         * JavaScriptCore.xcodeproj/project.pbxproj:
2209         * bytecompiler/BytecodeGenerator.cpp:
2210         (JSC::BytecodeGenerator::BytecodeGenerator):
2211         * runtime/Arguments.cpp:
2212         (JSC::Arguments::getOwnPropertySlot):
2213         * runtime/JSActivation.cpp:
2214         (JSC::JSActivation::symbolTableGet):
2215         * runtime/JSGlobalObject.h:
2216         (JSC::JSGlobalObject::symbolTableHasProperty):
2217         * runtime/JSVariableObject.h:
2218         (JSC::JSVariableObject::symbolTableGet):
2219         * runtime/PropertySlot.h:
2220
2221 2011-03-02  Daniel Cheng  <dcheng@chromium.org>
2222
2223         Reviewed by David Levin.
2224
2225         Add feature define for data transfer items
2226         https://bugs.webkit.org/show_bug.cgi?id=55510
2227
2228         * Configurations/FeatureDefines.xcconfig:
2229         * wtf/Platform.h:
2230
2231 2011-03-02  Adam Roben  <aroben@apple.com>
2232
2233         Delete old .res files whenever any .vsprops file changes
2234
2235         Prospective fix for <http://webkit.org/b/55599> r80079 caused incremental Windows builds to
2236         fail
2237
2238         Reviewed by Tony Chang.
2239
2240         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
2241         (main): Restructured code to loop over a set of file extensions, deleting any old files that
2242         have that extension. Now deletes .res files, too. (We previously deleted any file matching
2243         *.manifest*, but that turned out to just be the union of *.manifest and *.res.)
2244
2245 2011-03-02  Adam Barth  <abarth@webkit.org>
2246
2247         Reviewed by Dimitri Glazkov.
2248
2249         Teach JavaScriptCore GYP build how to build minidom
2250         https://bugs.webkit.org/show_bug.cgi?id=55536
2251
2252         * JavaScriptCore.gypi:
2253         * gyp/JavaScriptCore.gyp:
2254
2255 2011-03-01  Adam Barth  <abarth@webkit.org>
2256
2257         Reviewed by Eric Seidel.
2258
2259         JavaScriptCore GYP build should copy some headers into the target framework
2260         https://bugs.webkit.org/show_bug.cgi?id=55524
2261
2262         After this patch, all the framework headers are exported as public
2263         headers.  We need to teach GYP how to handle private headers.
2264
2265         I struggled to determine how to store the information about whether a
2266         header was public, private, or project (i.e., not exported).
2267         Generally, the GYPI should just list the files, but it seemed siliy to
2268         have an almost duplicated list of files in the GYP file itself.  If
2269         this design doesn't scale, we might have to revisit it in the future.
2270
2271         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2272         * JavaScriptCore.gypi:
2273         * gyp/JavaScriptCore.gyp:
2274
2275 2011-03-01  Sheriff Bot  <webkit.review.bot@gmail.com>
2276
2277         Unreviewed, rolling out r80079.
2278         http://trac.webkit.org/changeset/80079
2279         https://bugs.webkit.org/show_bug.cgi?id=55547
2280
2281         "Broke the Win debug build?" (Requested by dcheng on #webkit).
2282
2283         * wtf/Platform.h:
2284
2285 2011-03-01  Daniel Cheng  <dcheng@chromium.org>
2286
2287         Reviewed by David Levin.
2288
2289         Add feature define for data transfer items
2290         https://bugs.webkit.org/show_bug.cgi?id=55510
2291
2292         * wtf/Platform.h:
2293
2294 2011-03-01  Oliver Hunt  <oliver@apple.com>
2295
2296         Reviewed by Joseph Pecoraro.
2297
2298         Misaligned memory access in CloneDeserializer on all ARM arch.
2299         https://bugs.webkit.org/show_bug.cgi?id=48742
2300
2301         Add a CPU class for architectures that need aligned addresses
2302         for memory access.
2303
2304         * wtf/Platform.h:
2305
2306 2011-03-01  Adam Barth  <abarth@webkit.org>
2307
2308         Reviewed by Dimitri Glazkov.
2309
2310         Add pre- and post-build actions for JavaScriptCore GYP build
2311         https://bugs.webkit.org/show_bug.cgi?id=55507
2312
2313         After this patch, we have all the steps for building the main
2314         JavaScriptCore framework except the "copy headers" step, which I'll do
2315         next.
2316
2317         * gyp/JavaScriptCore.gyp:
2318
2319 2011-03-01  Geoffrey Garen  <ggaren@apple.com>
2320
2321         Reviewed by Sam Weinig.
2322
2323         Rolled back in r79627 now that the underlying cause for it crashing is fixed.
2324         https://bugs.webkit.org/show_bug.cgi?id=55159
2325
2326         * JavaScriptCore.exp:
2327         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2328         * JavaScriptCore.xcodeproj/project.pbxproj:
2329         * runtime/Heap.cpp:
2330         (JSC::Heap::allocateSlowCase):
2331         * runtime/Heap.h:
2332         * runtime/JSCell.h:
2333         (JSC::JSCell::MarkedSpace::sizeClassFor):
2334         (JSC::JSCell::Heap::allocate):
2335         (JSC::JSCell::JSCell::operator new):
2336         * runtime/MarkedBlock.h:
2337         * runtime/MarkedSpace.cpp:
2338         (JSC::MarkedSpace::MarkedSpace):
2339         (JSC::MarkedSpace::allocateBlock):
2340         (JSC::MarkedSpace::reset):
2341         * runtime/MarkedSpace.h:
2342         (JSC::MarkedSpace::SizeClass::SizeClass):
2343
2344 2011-03-01  Mark Rowe  <mrowe@apple.com>
2345
2346         Reviewed by Sam Weinig.
2347
2348         Replace two script phases that do nothing but copy files with copy files build phases.
2349
2350         This speeds up the build by a few seconds on high-end Mac Pros.
2351
2352         * JavaScriptCore.xcodeproj/project.pbxproj:
2353
2354 2011-03-01  David Kilzer  <ddkilzer@apple.com>
2355
2356         Spring cleaning!
2357
2358         Rubber-stamped by Mark Rowe.
2359
2360         * JavaScriptCore.xcodeproj/project.pbxproj:
2361         (Copy Into Framework): Remove "set -x" and its comment.
2362
2363 2011-03-01  Michael Saboff  <msaboff@apple.com>
2364
2365         Reviewed by Darin Adler.
2366
2367         TinyMCE not working in nightlies
2368         https://bugs.webkit.org/show_bug.cgi?id=54978
2369
2370         Disabling setupBeginChars() to temporarily work arround the test 
2371         failure.  Filed https://bugs.webkit.org/show_bug.cgi?id=55479
2372         to track fixing the issue.
2373
2374         * yarr/YarrPattern.cpp:
2375         (JSC::Yarr::YarrPattern::compile):
2376
2377 2011-02-23  Joseph Pecoraro  <joepeck@webkit.org>
2378
2379         Reviewed by Kenneth Rohde Christiansen.
2380
2381         Viewport parsing no longer accepts "1.0;" value as valid.
2382         https://bugs.webkit.org/show_bug.cgi?id=53705
2383
2384         Include a didReadNumber parameter to String -> float / double
2385         conversion functions. This way, if the "ok" boolean out
2386         parameter is false, you can check to see if there in fact
2387         was a valid number parsed with garbage at the end. Examples
2388         of that would be parsing "123x456" would have ok = false,
2389         but didReadNumber = true.
2390
2391         * JavaScriptCore.exp:
2392         * wtf/text/StringImpl.cpp:
2393         (WTF::StringImpl::toDouble):
2394         (WTF::StringImpl::toFloat):
2395         * wtf/text/StringImpl.h:
2396         * wtf/text/WTFString.cpp:
2397         (WTF::String::toDouble):
2398         (WTF::String::toFloat):
2399         (WTF::charactersToDouble):
2400         (WTF::charactersToFloat):
2401         * wtf/text/WTFString.h:
2402
2403 2011-02-28  Geoffrey Garen  <ggaren@apple.com>
2404
2405         Reviewed by Gavin Barraclough.
2406
2407         Past-the-end writes in VM exceptions (caused crashes in r79627)
2408         https://bugs.webkit.org/show_bug.cgi?id=55448
2409         
2410         Some exceptions had the wrong structures, so they misoverestimated their
2411         inline storage sizes.
2412
2413         * runtime/JSGlobalData.cpp:
2414         (JSC::JSGlobalData::JSGlobalData): Use the right structure.
2415
2416         * runtime/JSObject.h:
2417         (JSC::JSNonFinalObject::JSNonFinalObject):
2418         (JSC::JSFinalObject::JSFinalObject): ASSERT that our structure capacity
2419         is correct to verify this doesn't happen again.
2420
2421 2011-03-01  Andras Becsi  <abecsi@webkit.org>
2422
2423         Reviewed by Csaba Osztrogonác.
2424
2425         [Qt] Clean up the project files and move common options to WebKit.pri.
2426
2427         * JavaScriptCore.pri: Move options also needed in WebCore into WebKit.pri.
2428         * JavaScriptCore.pro: Deduplicate options.
2429         * jsc.pro: Ditto.
2430
2431 2011-03-01  Adam Barth  <abarth@webkit.org>
2432
2433         Reviewed by Eric Seidel.
2434
2435         Teach JavaScriptCore GYP build about DEPTH
2436         https://bugs.webkit.org/show_bug.cgi?id=55425
2437
2438         In addition to teaching the JavaScriptCore GYP build about DEPTH, this
2439         change overrides the GCC warning configuration to disable a warning
2440         that's causing probems in Assertions.cpp.  With that warning disabled,
2441         JavaScriptCore builds again.
2442
2443         * gyp/JavaScriptCore.gyp:
2444
2445 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
2446
2447         Windows build fix.
2448
2449         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2450
2451 2011-02-28  Sheriff Bot  <webkit.review.bot@gmail.com>
2452
2453         Unreviewed, rolling out r79948.
2454         http://trac.webkit.org/changeset/79948
2455         https://bugs.webkit.org/show_bug.cgi?id=55439
2456
2457         "caused crashes on the SL release bot" (Requested by ggaren on
2458         #webkit).
2459
2460         * runtime/JSGlobalData.h:
2461         * runtime/WriteBarrier.h:
2462
2463 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
2464
2465         Windows build fix.
2466
2467         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2468
2469 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
2470
2471         Reviewed by Sam Weinig & Darin Adler.
2472
2473         Bug 55423 - Clean up property tables in Structure
2474
2475         Encapsulate, reduce duplication of table search code,
2476         and reduce the size of the tables (remove the index,
2477         just maintain the tables in the correct order).
2478
2479         Shows a 0.5% - 1% progression on sunspider.
2480
2481         * JavaScriptCore.exp:
2482         * runtime/PropertyMapHashTable.h:
2483         (JSC::isPowerOf2):
2484         (JSC::nextPowerOf2):
2485             bit ops used to calculate table size.
2486         (JSC::PropertyMapEntry::PropertyMapEntry):
2487         (JSC::PropertyTable::ordered_iterator::operator++):
2488         (JSC::PropertyTable::ordered_iterator::operator==):
2489         (JSC::PropertyTable::ordered_iterator::operator!=):
2490         (JSC::PropertyTable::ordered_iterator::operator*):
2491         (JSC::PropertyTable::ordered_iterator::operator->):
2492         (JSC::PropertyTable::ordered_iterator::ordered_iterator):
2493             implementation of the iterator types
2494         (JSC::PropertyTable::PropertyTable):
2495         (JSC::PropertyTable::~PropertyTable):
2496             constructors take an initial capacity for the table,
2497             a table to copy, or both.
2498         (JSC::PropertyTable::begin):
2499         (JSC::PropertyTable::end):
2500             create in-order iterators.
2501         (JSC::PropertyTable::find):
2502             search the hash table
2503         (JSC::PropertyTable::add):
2504             add a value to the hash table
2505         (JSC::PropertyTable::remove):
2506             remove a value from the hash table
2507         (JSC::PropertyTable::size):
2508         (JSC::PropertyTable::isEmpty):
2509             accessors.
2510         (JSC::PropertyTable::propertyStorageSize):
2511         (JSC::PropertyTable::clearDeletedOffsets):
2512         (JSC::PropertyTable::hasDeletedOffset):
2513         (JSC::PropertyTable::getDeletedOffset):
2514         (JSC::PropertyTable::addDeletedOffset):
2515             cache deleted (available) offsets in the property storage array.
2516         (JSC::PropertyTable::copy):
2517             take a copy of the PropertyTable, potentially expanding the capacity.
2518         (JSC::PropertyTable::sizeInMemory):
2519             used for DEBUG build statistics
2520         (JSC::PropertyTable::reinsert):
2521         (JSC::PropertyTable::rehash):
2522         (JSC::PropertyTable::tableCapacity):
2523         (JSC::PropertyTable::deletedEntryIndex):
2524         (JSC::PropertyTable::skipDeletedEntries):
2525         (JSC::PropertyTable::table):
2526         (JSC::PropertyTable::usedCount):
2527         (JSC::PropertyTable::dataSize):
2528         (JSC::PropertyTable::sizeForCapacity):
2529         (JSC::PropertyTable::canInsert):
2530             these methods provide internal implementation.
2531         * runtime/Structure.cpp:
2532         (JSC::Structure::dumpStatistics):
2533         (JSC::Structure::~Structure):
2534         (JSC::Structure::materializePropertyMap):
2535         (JSC::Structure::despecifyDictionaryFunction):
2536         (JSC::Structure::addPropertyTransition):
2537         (JSC::Structure::flattenDictionaryStructure):
2538         (JSC::Structure::copyPropertyTable):
2539         (JSC::Structure::get):
2540         (JSC::Structure::despecifyFunction):
2541         (JSC::Structure::despecifyAllFunctions):
2542         (JSC::Structure::put):
2543         (JSC::Structure::remove):
2544         (JSC::Structure::createPropertyMap):
2545         (JSC::Structure::getPropertyNames):
2546         (JSC::PropertyTable::checkConsistency):
2547         (JSC::Structure::checkConsistency):
2548             factored out code to PropertyMapHashTable.h
2549         * runtime/Structure.h:
2550         (JSC::Structure::propertyStorageSize):
2551         (JSC::Structure::isEmpty):
2552         (JSC::Structure::get):
2553             factored out code to PropertyMapHashTable.h
2554
2555 2011-02-28  Xan Lopez  <xlopez@igalia.com>
2556
2557         Another fix build :(
2558
2559         Fix typo.
2560
2561         * runtime/MachineStackMarker.cpp:
2562         (JSC::freePlatformThreadRegisters):
2563
2564 2011-02-28  Xan Lopez  <xlopez@igalia.com>
2565
2566         Unreviewed build fix for Snow Leopard.
2567
2568         * runtime/MachineStackMarker.cpp:
2569         (JSC::freePlatformThreadRegisters):
2570
2571 2011-02-28  Alejandro G. Castro  <alex@igalia.com>
2572
2573         Unreviewed, fix SnowLeopard compilation after r79952.
2574
2575         * runtime/MachineStackMarker.cpp:
2576         (JSC::freePlatformThreadRegisters):
2577
2578 2011-02-28  Mark Rowe  <mrowe@apple.com>
2579
2580         Reviewed by Darin Adler.
2581
2582         <http://webkit.org/b/55430> OwnArrayPtr.h's LOOSE_OWN_ARRAY_PTR results in link errors.
2583
2584         * wtf/OwnArrayPtr.h:
2585         (WTF::::set): Implement OwnArrayPtr::set.
2586
2587 2011-02-28  Martin Zoubek  <martin.zoubek@acision.com> and Alejandro G. Castro  <alex@igalia.com>
2588
2589         Reviewed by Martin Robinson.
2590
2591         Multithread support for JSC on UNIX
2592         https://bugs.webkit.org/show_bug.cgi?id=26838
2593
2594         Implement suspendThread() and resumeThread() for systems with
2595         pthread.h using thread signal handler.
2596
2597         * runtime/MachineStackMarker.cpp:
2598         (JSC::pthreadSignalHandlerSuspendResume):
2599         (JSC::MachineStackMarker::Thread::Thread):
2600         (JSC::getCurrentPlatformThread):
2601         (JSC::suspendThread):
2602         (JSC::resumeThread):
2603         (JSC::getPlatformThreadRegisters):
2604         (JSC::otherThreadStackPointer):
2605         (JSC::freePlatformThreadRegisters):
2606         (JSC::MachineStackMarker::markOtherThreadConservatively):
2607         * wtf/Platform.h: Added Gtk port to use
2608         ENABLE_JSC_MULTIPLE_THREADS.
2609
2610 2011-02-28  Oliver Hunt  <oliver@apple.com>
2611
2612         Reviewed by Darin Adler.
2613
2614         Stop using DeprecatedPtr for the global exception slot
2615         https://bugs.webkit.org/show_bug.cgi?id=55424
2616
2617         Create GCRootPtr to signify that the exception slot is
2618         a gcroot, and so is exempt from the usual writebarrier
2619         restrictions.
2620
2621         * runtime/JSGlobalData.h:
2622         * runtime/WriteBarrier.h:
2623         (JSC::GCRootPtr::GCRootPtr):
2624         (JSC::GCRootPtr::operator=):
2625
2626 2011-02-28  Adam Barth  <abarth@webkit.org>
2627
2628         Reviewed by Dimitri Glazkov.
2629
2630         Use more xcconfig files in JavaScriptCore gyp build
2631         https://bugs.webkit.org/show_bug.cgi?id=55391
2632
2633         The GYP experts tell me that we have have a total of two xcconfig
2634         files: one for the xcodeproj as a whole and one for each target.  This
2635         patch uses that technique to re-use the existing xcconfig files and
2636         eliminate the duplication.
2637
2638         Technically, this patch introduces some build errors because the
2639         xcconfig files assume that the xcodeproj file is one level higher in
2640         the directory hierarchy.  Specifically, the xcodeproj file can no
2641         longer find the Info.plist or the prefix header.  I plan to fix that in
2642         a subsequent patch.
2643
2644         Also, this patch introduces the Release and Production configurations,
2645         which should work correctly now.
2646
2647         * gyp/JavaScriptCore.gyp:
2648
2649 2011-02-28  Jon Honeycutt  <jhoneycutt@apple.com>
2650
2651         Windows build fix.
2652
2653         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2654         Add symbol to export.
2655
2656 2011-02-28  Oliver Hunt  <oliver@apple.com>
2657
2658         Reviewed by Gavin Barraclough.
2659
2660         Make ScopeChainNode GC allocated
2661         https://bugs.webkit.org/show_bug.cgi?id=55283
2662
2663         Simplify lifetime and other issues with the scopechain
2664         by making it gc allocated.  This allows us to simplify
2665         function exit and unwinding, as well as making the
2666         current iterative refcounting go away.
2667
2668         * JavaScriptCore.exp:
2669         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2670         * bytecode/CodeBlock.cpp:
2671         (JSC::CodeBlock::createActivation):
2672         * bytecode/StructureStubInfo.cpp:
2673         * bytecompiler/BytecodeGenerator.cpp:
2674         (JSC::BytecodeGenerator::generate):
2675         (JSC::BytecodeGenerator::BytecodeGenerator):
2676         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2677         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2678         * bytecompiler/BytecodeGenerator.h:
2679         * debugger/Debugger.cpp:
2680         (JSC::Recompiler::operator()):
2681         * debugger/DebuggerCallFrame.h:
2682         (JSC::DebuggerCallFrame::scopeChain):
2683         * interpreter/CachedCall.h:
2684         (JSC::CachedCall::CachedCall):
2685         * interpreter/CallFrame.h:
2686         * interpreter/Interpreter.cpp:
2687         (JSC::depth):
2688         (JSC::Interpreter::unwindCallFrame):
2689         (JSC::Interpreter::throwException):
2690         (JSC::Interpreter::execute):
2691         (JSC::Interpreter::executeCall):
2692         (JSC::Interpreter::executeConstruct):
2693         (JSC::Interpreter::privateExecute):
2694         * jit/JITCall.cpp:
2695         (JSC::JIT::compileOpCallInitializeCallFrame):
2696         (JSC::JIT::compileOpCall):
2697         * jit/JITCall32_64.cpp:
2698         (JSC::JIT::compileOpCallInitializeCallFrame):
2699         (JSC::JIT::emit_op_ret):
2700         (JSC::JIT::emit_op_ret_object_or_this):
2701         (JSC::JIT::compileOpCall):
2702         * jit/JITOpcodes.cpp:
2703         (JSC::JIT::emit_op_end):
2704         (JSC::JIT::emit_op_ret):
2705         (JSC::JIT::emit_op_ret_object_or_this):
2706         * jit/JITOpcodes32_64.cpp:
2707         (JSC::JIT::emit_op_end):
2708         * jit/JITStubs.cpp:
2709         (JSC::DEFINE_STUB_FUNCTION):
2710         * jit/JITStubs.h:
2711         * runtime/ArgList.cpp:
2712         * runtime/Completion.cpp:
2713         (JSC::evaluate):
2714         * runtime/Completion.h:
2715         * runtime/DateConversion.cpp:
2716         * runtime/Executable.cpp:
2717         (JSC::EvalExecutable::compileInternal):
2718         (JSC::ProgramExecutable::compileInternal):
2719         (JSC::FunctionExecutable::compileForCallInternal):
2720         (JSC::FunctionExecutable::compileForConstructInternal):
2721         * runtime/FunctionConstructor.cpp:
2722         (JSC::constructFunction):
2723         * runtime/GCActivityCallbackCF.cpp:
2724         * runtime/Identifier.cpp:
2725         * runtime/JSCell.h:
2726         * runtime/JSChunk.cpp: Added.
2727         * runtime/JSChunk.h: Added.
2728         * runtime/JSFunction.cpp:
2729         (JSC::JSFunction::JSFunction):
2730         (JSC::JSFunction::markChildren):
2731         (JSC::JSFunction::getCallData):
2732         (JSC::JSFunction::getOwnPropertySlot):
2733         (JSC::JSFunction::getConstructData):
2734         * runtime/JSFunction.h:
2735         (JSC::JSFunction::scope):
2736         (JSC::JSFunction::setScope):
2737         * runtime/JSGlobalData.cpp:
2738         (JSC::JSGlobalData::JSGlobalData):
2739         * runtime/JSGlobalData.h:
2740         * runtime/JSGlobalObject.cpp:
2741         (JSC::JSGlobalObject::init):
2742         (JSC::JSGlobalObject::markChildren):
2743         * runtime/JSGlobalObject.h:
2744         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2745         (JSC::JSGlobalObject::globalScopeChain):
2746         * runtime/JSGlobalObjectFunctions.cpp:
2747         (JSC::globalFuncEval):
2748         * runtime/JSLock.cpp:
2749         * runtime/JSNumberCell.cpp:
2750         * runtime/JSZombie.cpp:
2751         * runtime/MarkedBlock.cpp:
2752         * runtime/MarkedSpace.cpp:
2753         * runtime/PropertyNameArray.cpp:
2754         * runtime/ScopeChain.cpp:
2755         (JSC::ScopeChainNode::print):
2756         (JSC::ScopeChainNode::localDepth):
2757         (JSC::ScopeChainNode::markChildren):
2758         * runtime/ScopeChain.h:
2759         (JSC::ScopeChainNode::ScopeChainNode):
2760         (JSC::ScopeChainNode::createStructure):
2761         (JSC::ScopeChainNode::push):
2762         (JSC::ScopeChainNode::pop):
2763         (JSC::ScopeChainIterator::ScopeChainIterator):
2764         (JSC::ScopeChainIterator::operator*):
2765         (JSC::ScopeChainIterator::operator->):
2766         (JSC::ScopeChainIterator::operator++):
2767         (JSC::ScopeChainNode::begin):
2768         (JSC::ScopeChainNode::end):
2769         (JSC::ExecState::globalData):
2770         (JSC::ExecState::lexicalGlobalObject):
2771         (JSC::ExecState::globalThisValue):
2772         * runtime/ScopeChainMark.h:
2773         * wtf/DateMath.cpp:
2774
2775 2011-02-27  Adam Barth  <abarth@webkit.org>
2776
2777         Reviewed by Eric Seidel.
2778
2779         Implement WTF::randomNumber in terms of WTF::cryptographicallyRandomNumber when possible
2780         https://bugs.webkit.org/show_bug.cgi?id=55326
2781
2782         Currently, randomNumber does a bunch of platform-specific work that to
2783         get a cryptographic randomness when available.  Instead, we should use
2784         cryptographicallyRandomNumber, which abstracts this work.
2785         Unfortunately, we can't remove all of the WTF::randomNumber
2786         implementation because not every port has access to cryptographically
2787         random numbers.
2788
2789         * wtf/RandomNumber.cpp:
2790         (WTF::randomNumber):
2791
2792 2011-02-27  Benjamin Poulain  <ikipou@gmail.com>
2793
2794         Reviewed by Darin Adler.
2795
2796         Eliminate DeprecatedPtrList from RenderBlock
2797         https://bugs.webkit.org/show_bug.cgi?id=54972
2798
2799         Add methods find() and contains() using an adaptor to ListHashSet.
2800         Those method are like the one of HashSet, they allow to find objects
2801         based on a different key than the one used to define the set.
2802
2803         Add convenience methods for direct access to the head and tail of the list.
2804         Those methods are providing similar API/behavior as Vector.
2805
2806         * wtf/ListHashSet.h:
2807         (WTF::::first):
2808         (WTF::::last):
2809         (WTF::::removeLast):
2810         (WTF::ListHashSetTranslatorAdapter::hash):
2811         (WTF::ListHashSetTranslatorAdapter::equal):
2812         (WTF::::find):
2813         (WTF::::contains):
2814
2815 2011-02-26  Patrick Gansterer  <paroga@webkit.org>
2816
2817         Reviewed by Andreas Kling.
2818
2819         Add support for DragonFly BSD
2820         https://bugs.webkit.org/show_bug.cgi?id=54407
2821
2822         DragonFly BSD is based on FreeBSD, so handle it like FreeBSD.
2823
2824         * wtf/Platform.h:
2825
2826 2011-02-26  Adam Barth  <abarth@webkit.org>
2827
2828         Reviewed by Dimitri Glazkov.
2829
2830         JavaScriptCore should use the xcconfig file instead of importing that information into GYP
2831         https://bugs.webkit.org/show_bug.cgi?id=55282
2832
2833         Technically, this breaks the build because I had removed one of the
2834         warnings in this config file, but this change seems like an
2835         improvement.
2836
2837         * gyp/JavaScriptCore.gyp:
2838
2839 2011-02-26  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
2840
2841         Reviewed by Nikolas Zimmermann.
2842
2843         SH4 JIT SUPPORT
2844         https://bugs.webkit.org/show_bug.cgi?id=44329
2845
2846         Provide an ExecutableAllocater::cacheFlush() implementation for
2847         Linux/SH4.
2848
2849         * jit/ExecutableAllocator.h:
2850         (JSC::ExecutableAllocator::cacheFlush):
2851
2852 2011-02-25  Sheriff Bot  <webkit.review.bot@gmail.com>
2853
2854         Unreviewed, rolling out r79627.
2855         http://trac.webkit.org/changeset/79627
2856         https://bugs.webkit.org/show_bug.cgi?id=55274
2857
2858         broke worker tests (Requested by olliej on #webkit).
2859
2860         * JavaScriptCore.exp:
2861         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2862         * runtime/Heap.cpp:
2863         (JSC::Heap::allocate):
2864         * runtime/Heap.h:
2865         * runtime/JSCell.h:
2866         (JSC::JSCell::JSCell::operator new):
2867         (JSC::JSCell::MarkedSpace::sizeClassFor):
2868         (JSC::JSCell::MarkedSpace::allocate):
2869         * runtime/MarkedBlock.h:
2870         * runtime/MarkedSpace.cpp:
2871         (JSC::MarkedSpace::MarkedSpace):
2872         (JSC::MarkedSpace::allocateBlock):
2873         (JSC::MarkedSpace::reset):
2874         * runtime/MarkedSpace.h:
2875         (JSC::MarkedSpace::SizeClass::SizeClass):
2876
2877 2011-02-25  Michael Saboff  <msaboff@apple.com>
2878
2879         Reviewed by Darin Adler.
2880
2881         Leak in JSParser::Scope of ScopeLabelInfo Vector
2882         https://bugs.webkit.org/show_bug.cgi?id=55249
2883
2884         Changed m_labels to be an OwnPtr<>.  Added VectorTraits
2885         and Scope copy constructor to support this change.
2886
2887         * parser/JSParser.cpp:
2888         (JSC::JSParser::Scope::~Scope):
2889
2890 2011-02-25  Fumitoshi Ukai  <ukai@chromium.org>
2891
2892         Reviewed by Adam Barth.
2893
2894         WebSocket uses insecure random numbers
2895         https://bugs.webkit.org/show_bug.cgi?id=54714
2896
2897         * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber()
2898
2899 2011-02-25  Patrick Gansterer  <paroga@webkit.org>
2900
2901         Reviewed by Adam Roben.
2902
2903         Move timeBeginPeriod into OS(WINDOWS) section
2904         https://bugs.webkit.org/show_bug.cgi?id=55247
2905
2906         * jsc.cpp:
2907         (main): timeBeginPeriod is available on all Windows versions and not compiler specific.
2908
2909 2011-02-25  Patrick Gansterer  <paroga@webkit.org>
2910
2911         Unreviewed WinCE build fix for r79695.
2912
2913         * jsc.cpp:
2914         (main): SetErrorMode isn't available on WinCE.
2915
2916 2011-02-25  Adam Roben  <aroben@apple.com>
2917
2918         Work around Cygwin's crash-suppression behavior
2919
2920         Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which any processes it launches will
2921         inherit. This is bad for testing/debugging, as it causes the post-mortem debugger not to be
2922         invoked. (Cygwin does this because it makes crashes more UNIX-y.) We reset the error mode
2923         when our test apps launch to work around Cygwin's behavior.
2924
2925         Fixes <http://webkit.org/b/55222> Test apps crash silently (without invoking post-mortem
2926         debugger) when launched from Cygwin 1.7
2927
2928         Reviewed by Darin Adler.
2929
2930         * API/tests/testapi.c: Added a now-needed #include.
2931         (main):
2932         * jsc.cpp:
2933         (main):
2934         Call ::SetErrorMode(0) to undo Cygwin's folly.
2935
2936         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Define NOMINMAX like many of our
2937         other projects do so that windows.h won't define min/max macros that interfere with
2938         std::numeric_limits<T>::min/max.
2939
2940 2011-02-24  Adam Barth  <abarth@webkit.org>
2941
2942         Reviewed by Eric Seidel.
2943
2944         Add GYP project for JavaScriptCore
2945         https://bugs.webkit.org/show_bug.cgi?id=55027
2946
2947         Again, this GYP files is very rough, but it succeeds in building
2948         JavaScriptCore.  There's a lot more work to do here, especially in the
2949         area of sharing with JavaScriptGlue.gyp.  This patch is more of a
2950         checkpoint so that other folks can help out if they wish.
2951
2952         * gyp: Added.
2953         * gyp/JavaScriptCore.gyp: Added.
2954         * gyp/generate-derived-sources.sh: Added.
2955
2956 2011-02-24  Adam Barth  <abarth@webkit.org>
2957
2958         Reviewed by Eric Seidel.
2959
2960         Add missing files to JavaScriptCore.gypi
2961         https://bugs.webkit.org/show_bug.cgi?id=55193
2962
2963         I forgot to add mm files in my previous patch.
2964
2965         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2966         * JavaScriptCore.gypi:
2967
2968 2011-02-24  Adam Barth  <abarth@webkit.org>
2969
2970         Reviewed by Eric Seidel.
2971
2972         Remove unused parameter name in GCActivityCallback.cpp
2973         https://bugs.webkit.org/show_bug.cgi?id=55194
2974
2975         This change is not strictly required for the GYP-based build system,
2976         but I noticed this error when working on the new build system.
2977
2978         * runtime/GCActivityCallback.cpp:
2979         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
2980
2981 2011-02-24  James Robinson  <jamesr@chromium.org>
2982
2983         Reviewed by Darin Fisher.
2984
2985         Add a USE() macro to control use of the built-in UTF8 codec
2986         https://bugs.webkit.org/show_bug.cgi?id=55189
2987
2988         Defaults USE(BUILTIN_UTF8_CODEC) to true for all platforms except chromium, which controls the flag via features.gypi.
2989
2990         * wtf/Platform.h:
2991
2992 2011-02-24  Geoffrey Garen  <ggaren@apple.com>
2993
2994         Reviewed by Darin Adler.
2995
2996         Variable-sized allocation (but still capped at 64 bytes)
2997         https://bugs.webkit.org/show_bug.cgi?id=55159
2998         
2999         SunSpider reports no change.
3000
3001         * JavaScriptCore.exp: Some day, I hope not to have to edit this file.
3002
3003         * runtime/Heap.cpp:
3004         (JSC::Heap::allocateSlowCase): Split allocation into a fast and slow
3005         case, so the fast case can inline size class selection and turn it into
3006         a compile-time constant.
3007         
3008         Changed the collect-on-every allocation debugging switch to collect only
3009         on every slow allocation, so you can still flip the switch without
3010         recompiling the world. This may also be preferable for debugging purposes,
3011         since collecting after every single allocation can be unusably slow,
3012         and can mask problems by running destructors early.
3013
3014         * runtime/Heap.h: Ditto.
3015
3016         * runtime/JSCell.h:
3017         (JSC::JSCell::MarkedSpace::sizeClassFor):
3018         (JSC::JSCell::Heap::allocate):
3019         (JSC::JSCell::JSCell::operator new): The inlining mentioned above.
3020
3021         * runtime/MarkedBlock.h: Dropped the block size from 256KB to 16KB. With
3022         multiple size classes, allocating a full 256KB for the first allocation
3023         in a given class can be pathologically wasteful. (8KB, or 4KB Mac and
3024         8KB Windows, would be even better, but that seems to be a peformance
3025         regression for now.)
3026         
3027         * runtime/MarkedSpace.cpp:
3028         (JSC::MarkedSpace::MarkedSpace):
3029         (JSC::MarkedSpace::allocateBlock):
3030         (JSC::MarkedSpace::reset): There's more than one size class now, and its
3031         cell size is not constant.
3032
3033         * runtime/MarkedSpace.h:
3034         (JSC::MarkedSpace::SizeClass::SizeClass): Ditto.
3035
3036 2011-02-23  Oliver Hunt  <oliver@apple.com>
3037
3038         Reviewed by Geoffrey Garen.
3039
3040         Make WeakGCMap use new handle infrastructure
3041         https://bugs.webkit.org/show_bug.cgi?id=55100
3042
3043         Remove old WeakGCMap implementation and move over to new handle
3044         based logic.
3045
3046         This has a number of benefits, most notably it makes a WeakGCMap
3047         always reflect the true state of the world by as all entries are
3048         removed at the first gc cycle that makes them dead.  This allows
3049         us to get rid of code in a wide variety of objects where the only
3050         purpose was to remove themselves from maps.
3051
3052         It also means that we no longer need to have special "unchecked"
3053         versions of any functions on WeakGCMap.  Alas in order to maintain
3054         compatibility with the JSWeakObjectMapClear API it is still
3055         necessary to have an api that resembles uncheckedRemove, this is
3056         now deprecatedRemove and will be dealt with in a later patch.
3057
3058         In order to get correct semantics in WeakGCMap we need more
3059         contextual information in the finalizer, so we've added an
3060         abstract class based finaliser and a context parameter to the
3061         calls.
3062
3063         The new an improved WeakGCMap also results in sigificantly more
3064         churn in the weak handle lists so exposed some potential problems
3065         during the post mark phase which have been rectified as well.
3066
3067         * API/JSWeakObjectMapRefPrivate.cpp:
3068         * API/JSWeakObjectMapRefPrivate.h:
3069         * runtime/Heap.cpp:
3070         (JSC::Heap::globalObjectCount):
3071         (JSC::Heap::protectedGlobalObjectCount):
3072         * runtime/JSGlobalData.cpp:
3073         (JSC::JSGlobalData::JSGlobalData):
3074         * runtime/JSGlobalData.h:
3075         * runtime/JSGlobalObject.cpp:
3076         (JSC::JSGlobalObject::~JSGlobalObject):
3077         (JSC::JSGlobalObject::init):
3078         * runtime/WeakGCMap.h:
3079         (JSC::WeakGCMap::iterator::iterator):
3080         (JSC::WeakGCMap::iterator::get):
3081         (JSC::WeakGCMap::iterator::getSlot):
3082         (JSC::WeakGCMap::iterator::operator++):
3083         (JSC::WeakGCMap::iterator::operator==):
3084         (JSC::WeakGCMap::iterator::operator!=):
3085         (JSC::WeakGCMap::WeakGCMap):
3086         (JSC::WeakGCMap::isEmpty):
3087         (JSC::WeakGCMap::clear):
3088         (JSC::WeakGCMap::get):
3089         (JSC::WeakGCMap::getSlot):
3090         (JSC::WeakGCMap::set):
3091         (JSC::WeakGCMap::take):
3092         (JSC::WeakGCMap::size):
3093         (JSC::WeakGCMap::deprecatedRemove):
3094         (JSC::WeakGCMap::begin):
3095         (JSC::WeakGCMap::end):
3096         (JSC::WeakGCMap::~WeakGCMap):
3097         (JSC::WeakGCMap::finalize):
3098         * runtime/WeakGCPtr.h:
3099         (JSC::WeakGCPtr::WeakGCPtr):
3100         (JSC::WeakGCPtr::set):
3101
3102 2011-02-24  Oliver Hunt  <oliver@apple.com>
3103
3104         Reviewed by Gavin Barraclough.
3105
3106         Make weaklist processing deal with weak handles being removed during the iteration
3107         https://bugs.webkit.org/show_bug.cgi?id=55105
3108
3109         It is possible for the handle heap to end up in a broken state if
3110         a handle's finalizer removes either the current or next handle
3111         to be visited during the post-gc cleanup.  This patch removes that
3112         problem by allowing the deallocate(Node*) routine to update the
3113         iterator if it is called during finalization.
3114
3115         * collector/handles/HandleHeap.cpp:
3116         (JSC::HandleHeap::HandleHeap):
3117         (JSC::HandleHeap::updateAfterMark):
3118         (JSC::HandleHeap::clearWeakPointers):
3119         (JSC::HandleHeap::writeBarrier):
3120         (JSC::HandleHeap::protectedGlobalObjectCount):
3121         * collector/handles/HandleHeap.h:
3122         (JSC::Finalizer::~Finalizer):
3123         (JSC::HandleHeap::getFinalizer):
3124         (JSC::HandleHeap::deallocate):
3125         (JSC::HandleHeap::makeWeak):
3126         (JSC::HandleHeap::makeSelfDestroying):
3127         (JSC::HandleHeap::Node::Node):
3128         (JSC::HandleHeap::Node::setFinalizer):
3129         (JSC::HandleHeap::Node::finalizer):
3130         (JSC::HandleHeap::Node::finalizerContext):
3131         * interpreter/RegisterFile.cpp:
3132         (JSC::RegisterFile::setGlobalObject):
3133         (JSC::GlobalObjectNotifier::finalize):
3134         (JSC::RegisterFile::globalObjectCollectedNotifier):
3135         * interpreter/RegisterFile.h:
3136         (JSC::RegisterFile::RegisterFile):
3137         * runtime/Heap.cpp:
3138         (JSC::Heap::destroy):
3139         * runtime/WeakGCPtr.h:
3140         (JSC::WeakGCPtr::WeakGCPtr):
3141         (JSC::WeakGCPtr::set):
3142
3143 2011-02-24  Michael Saboff  <msaboff@apple.com>
3144
3145         Reviewed by Oliver Hunt.
3146
3147         PatternAlternative leaked in YarrPatternConstructor::atomParenthesesEnd()
3148         https://bugs.webkit.org/show_bug.cgi?id=55156
3149
3150         Added code to delete unneeded PatternAlternative after it is removed
3151         from m_alternatives Vector.
3152
3153         * yarr/YarrPattern.cpp:
3154         (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
3155
3156 2011-02-24  Eric Seidel  <eric@webkit.org>
3157
3158         Reviewed by Anders Carlsson.
3159
3160         VectorBuffer should not call malloc(0)
3161         https://bugs.webkit.org/show_bug.cgi?id=55091
3162
3163         Turns out the malloc() call which was so hot in:
3164         https://bugs.webkit.org/show_bug.cgi?id=55005
3165         was actually just malloc(0).
3166
3167         We shouldn't be calling malloc(0) anyway, since there is no need to
3168         and it might actually do work on some systems.
3169         I believe on Mac it ends up taking the standard spinlocks (expensive)
3170         and the code on Brew actually does a malloc(1) instead.  Neither is desirable.
3171
3172         * wtf/Vector.h:
3173         (WTF::VectorBufferBase::allocateBuffer):
3174         (WTF::VectorBufferBase::tryAllocateBuffer):
3175
3176 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
3177
3178         Reviewed by Darin Adler.
3179
3180         Remove obsolete PLATFORM(CI)
3181         https://bugs.webkit.org/show_bug.cgi?id=55082
3182
3183         * wtf/Platform.h:
3184
3185 2011-02-24  Martin Robinson  <mrobinson@igalia.com>
3186
3187         Reviewed by Xan Lopez.
3188
3189         [GTK] Remove the GFile GOwnPtr specialization
3190         https://bugs.webkit.org/show_bug.cgi?id=55154
3191
3192         Remove the GFile specialization of GOwnPtr. It's sufficient to use GRefPtr
3193         to track GFiles since they are just regular reference-counted GObjects.
3194
3195         * wtf/gobject/GOwnPtr.cpp: Remove GFile specialization.
3196         * wtf/gobject/GOwnPtr.h: Ditto.
3197
3198 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
3199
3200         Reviewed by Eric Seidel.
3201
3202         Rename PLATFORM(SKIA) to USE(SKIA)
3203         https://bugs.webkit.org/show_bug.cgi?id=55090
3204
3205         * wtf/Platform.h:
3206
3207 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
3208
3209         Reviewed by Alexey Proskuryakov.
3210
3211         Remove pthreads dependecy for JSLock
3212         https://bugs.webkit.org/show_bug.cgi?id=54832
3213
3214         JSLock is only needed to support an obsolete execution model where JavaScriptCore
3215         automatically protected against concurrent access from multiple threads.
3216         So it's safe to disable it on non-mac platforms where we don't have native pthreads.
3217
3218         * runtime/JSLock.cpp:
3219
3220 2011-02-24  Chao-ying Fu  <fu@mips.com>
3221
3222         Reviewed by Eric Seidel.
3223
3224         Fix MIPS build with new patchOffsetPut/GetByIdPropertyMapOffset1/2 values
3225         https://bugs.webkit.org/show_bug.cgi?id=54997
3226
3227         * jit/JIT.h:
3228         * jit/JITStubs.cpp:
3229         (JSC::JITThunks::JITThunks):
3230
3231 2011-02-24  Andras Becsi  <abecsi@webkit.org>
3232
3233         Reviewed by Laszlo Gombos.
3234
3235         [Qt] MinGW build fails to link
3236         https://bugs.webkit.org/show_bug.cgi?id=55050
3237
3238         Prepend the libraries of subcomponents instead of appending them
3239         to fix the library order according to the dependency of the libraries
3240
3241         * JavaScriptCore.pri: rename addJavaScriptCore to prependJavaScriptCore
3242         * jsc.pro: ditto
3243
3244 2011-02-24  Eric Seidel  <eric@webkit.org>
3245
3246         Reviewed by Adam Barth.
3247
3248         Deque<T> should support inline capacity
3249         https://bugs.webkit.org/show_bug.cgi?id=55032
3250
3251         The title says it all.  There are currently no places
3252         which use this code yet, however it's been tested in conjunction
3253         with code for bug 55005.
3254
3255         This also adds an ASSERT that capacity is never 1.  If you were able
3256         to set the capacity equal to 1, the Deque would just get confused
3257         and happily append your item but still think it had size 0.
3258
3259         * wtf/Deque.h:
3260         (WTF::DequeIterator::DequeIterator):
3261         (WTF::DequeConstIterator::DequeConstIterator):
3262         (WTF::DequeReverseIterator::DequeReverseIterator):
3263         (WTF::DequeConstReverseIterator::DequeConstReverseIterator):
3264         (WTF::::checkValidity):
3265         (WTF::::checkIndexValidity):
3266         (WTF::::invalidateIterators):
3267         (WTF::::Deque):
3268         (WTF::deleteAllValues):
3269         (WTF::::operator):
3270         (WTF::::destroyAll):
3271         (WTF::::~Deque):
3272         (WTF::::swap):
3273         (WTF::::clear):
3274         (WTF::::findIf):
3275         (WTF::::expandCapacityIfNeeded):
3276         (WTF::::expandCapacity):
3277         (WTF::::takeFirst):
3278         (WTF::::append):
3279         (WTF::::prepend):
3280         (WTF::::removeFirst):
3281         (WTF::::remove):
3282         (WTF::::addToIteratorsList):
3283         (WTF::::removeFromIteratorsList):
3284         (WTF::::DequeIteratorBase):
3285         (WTF::::~DequeIteratorBase):
3286         (WTF::::isEqual):
3287         (WTF::::increment):
3288         (WTF::::decrement):
3289         (WTF::::after):
3290         (WTF::::before):
3291         * wtf/Vector.h:
3292
3293 2011-02-22  Adam Barth  <abarth@webkit.org>
3294
3295         Reviewed by Ojan Vafai. 
3296
3297         Add missing files to JavaScriptCore.gypi 
3298         https://bugs.webkit.org/show_bug.cgi?id=55020 
3299
3300         gypi files are supposed to list every file under the sun.  This patch 
3301         adds some missing files and sorts the rest. 
3302
3303         * JavaScriptCore.gypi: 
3304
3305 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
3306
3307         Reviewed by Darin Adler.
3308
3309         Refactored MarkedSpace to operate in terms of size classes
3310         https://bugs.webkit.org/show_bug.cgi?id=55106
3311         
3312         SunSpider reports no change.
3313
3314         * runtime/JSCell.h:
3315         (JSC::JSCell::MarkedSpace::sizeClassFor):
3316         (JSC::JSCell::MarkedSpace::allocate): Delegate allocation based on size
3317         class. Since these functions are inline, the compiler can constant fold
3318         them.
3319
3320         * runtime/MarkedBlock.h:
3321         (JSC::MarkedBlock::cellSize):
3322         (JSC::MarkedBlock::size): Factored out a cellSize() helper.
3323
3324         * runtime/MarkedSpace.cpp:
3325         (JSC::MarkedSpace::allocateBlock):
3326         (JSC::MarkedSpace::allocateFromSizeClass):
3327         (JSC::MarkedSpace::shrink):
3328         (JSC::MarkedSpace::reset):
3329         * runtime/MarkedSpace.h:
3330         (JSC::MarkedSpace::SizeClass::SizeClass):
3331         (JSC::MarkedSpace::SizeClass::reset): Changed to operate in terms of
3332         abstract SizeClass objects, which are independent linked lists of blocks
3333         of a certain size class, instead of a single m_heap object.
3334
3335 2011-02-23  Adam Barth  <abarth@webkit.org>
3336
3337         Reviewed by James Robinson.
3338
3339         [Chromium] Use WebKitClient for OSRandomSource instead of trying to talk to the file system in the sandbox
3340         https://bugs.webkit.org/show_bug.cgi?id=55093
3341
3342         Exclude OSRandomSource.cpp from the Chromium build.  This function is
3343         implemented in WebKit/chromium/src instead.
3344
3345         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3346
3347 2011-02-23  Oliver Hunt  <oliver@apple.com>
3348
3349         Roll out r64156 as it introduces incorrect behaviour.
3350
3351         * runtime/JSByteArray.h:
3352         (JSC::JSByteArray::setIndex):
3353
3354 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
3355
3356         Reviewed by Oliver Hunt.
3357
3358         Moved the "nextAtom" allocation pointer into MarkedBlock for better encapsulation
3359         https://bugs.webkit.org/show_bug.cgi?id=55079
3360         
3361         SunSpider reports no change.
3362
3363         * runtime/Heap.cpp:
3364         (JSC::Heap::reset): Moved Zombie sweeping here, up from MarkedSpace,
3365         since we want Heap to logically control MarkedSpace. MarkedSpace should
3366         never choose to sweep itself.
3367
3368         * runtime/JSCell.h:
3369         (JSC::JSCell::MarkedBlock::allocate): Updated for nextAtom becoming a
3370         member of MarkedBlock. No need to reset nextAtom to firstAtom() when
3371         we reach the end of a block, since there's now an explicit reset pass
3372         during GC.
3373
3374         * runtime/MarkedBlock.cpp:
3375         (JSC::MarkedBlock::MarkedBlock):
3376         * runtime/MarkedBlock.h:
3377         (JSC::MarkedBlock::reset): Added the nextAtom data member, and reordered
3378         some data members to improve cache locality.
3379
3380         * runtime/MarkedSpace.cpp:
3381         (JSC::MarkedSpace::MarkedSpace):
3382         (JSC::MarkedSpace::allocate):
3383         (JSC::MarkedSpace::reset):
3384         * runtime/MarkedSpace.h:
3385         (JSC::CollectorHeap::CollectorHeap): Removed nextAtom, and added an
3386         explicit reset pass.
3387
3388 2011-02-23  James Robinson  <jamesr@chromium.org>
3389
3390         Unreviewed, rolling out r79428.
3391         http://trac.webkit.org/changeset/79428
3392         https://bugs.webkit.org/show_bug.cgi?id=54714
3393
3394         Does not work in the Chromium sandbox
3395
3396         * JavaScriptCore.exp:
3397
3398 2011-02-23  Adam Roben  <aroben@apple.com>
3399
3400         Fix an off-by-one error in JSC::appendSourceToError
3401
3402         Looks like this bug has been around since the code was first added in r35245.
3403
3404         Fixes <http://webkit.org/b/55052> <rdar://problem/9043512> Crash in JSC::appendSourceToError
3405         when running fast/dom/objc-big-method-name.html on Windows with full page heap enabled
3406
3407         Reviewed by Darin Adler.
3408
3409         * interpreter/Interpreter.cpp:
3410         (JSC::appendSourceToError): When trimming whitespace off the end of the string, examine the
3411         character at stop-1 rather than at stop. At this point in the code, stop represents the
3412         index just past the end of the characters we care about, and can even be just past the end
3413         of the entire data buffer.
3414
3415 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
3416
3417         Reviewed by Darin Adler.
3418         
3419         Rolled back in r79367 with SnowLeopard Release bot crash fixed.
3420         https://bugs.webkit.org/show_bug.cgi?id=54999
3421         
3422         The crash was caused by failure to update the "nextBlock" pointer when
3423         removing a block from the list while shrinking. The fix is to update the
3424         "nextBlock" pointer.
3425         
3426         This crash was very rare because it only happened in cases where the very
3427         first block in the heap contained no marked cells.
3428
3429 2011-02-23  Dan Bernstein  <mitz@apple.com>
3430
3431         Reviewed by Gavin Barraclough.
3432
3433         Include frame numbers in backtraces.
3434         https://bugs.webkit.org/show_bug.cgi?id=55060
3435
3436         * wtf/Assertions.cpp:
3437
3438 2011-02-23  Xan Lopez  <xlopez@igalia.com>
3439
3440         Reviewed by Gavin Barraclough.
3441
3442         latest jsc for armv7 crashes in sunspider tests
3443         https://bugs.webkit.org/show_bug.cgi?id=54667
3444
3445         Update JIT offset values in ARMv7 after r78732. Fixes crashes in
3446         SunSpider and JavaScript tests.
3447
3448         * jit/JIT.h: update values.
3449
3450 2011-02-23  Sheriff Bot  <webkit.review.bot@gmail.com>
3451
3452         Unreviewed, rolling out r79418.
3453         http://trac.webkit.org/changeset/79418
3454         https://bugs.webkit.org/show_bug.cgi?id=55043
3455
3456         "breaks shlib linux build" (Requested by morrita on #webkit).
3457
3458         * JavaScriptCore.gyp/JavaScriptCore.gyp:
3459         * JavaScriptCore.gypi:
3460
3461 2011-02-23  Patrick Gansterer  <paroga@webkit.org>
3462
3463         Reviewed by Alexey Proskuryakov.
3464
3465         Use DEFINE_STATIC_LOCAL for ignoreSetMutex in Structure.cpp
3466         https://bugs.webkit.org/show_bug.cgi?id=54831
3467
3468         * runtime/InitializeThreading.cpp:
3469         (JSC::initializeThreadingOnce):
3470         * runtime/Structure.cpp:
3471         (JSC::ignoreSetMutex):
3472         (JSC::Structure::Structure):
3473         (JSC::Structure::~Structure):
3474         (JSC::Structure::initializeThreading):
3475         * runtime/Structure.h:
3476
3477 2011-02-23  Patrick Gansterer  <paroga@webkit.org>
3478
3479         Reviewed by Darin Adler.
3480
3481         Rename PLATFORM(CF) to USE(CF)
3482         https://bugs.webkit.org/show_bug.cgi?id=53540
3483
3484         * runtime/DatePrototype.cpp:
3485         * runtime/GCActivityCallbackCF.cpp:
3486         * runtime/JSGlobalData.cpp:
3487         (JSC::JSGlobalData::JSGlobalData):
3488         * wtf/CurrentTime.cpp:
3489         * wtf/Platform.h:
3490         * wtf/text/AtomicString.h:
3491         * wtf/text/StringImpl.h:
3492         (WTF::StringImpl::computeHash):
3493         * wtf/text/WTFString.h:
3494         * wtf/unicode/icu/CollatorICU.cpp:
3495         (WTF::Collator::userDefault):
3496
3497 2011-02-23  Fumitoshi Ukai  <ukai@chromium.org>
3498
3499         Unreviewed build fix for Windows.
3500
3501         WebSocket uses insecure random numbers
3502         https://bugs.webkit.org/show_bug.cgi?id=54714
3503
3504         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export WTF::cryptographicallyRandomNumber()
3505
3506 2011-02-23  Fumitoshi Ukai  <ukai@chromium.org>
3507
3508         Reviewed by Adam Barth.
3509
3510         WebSocket uses insecure random numbers
3511         https://bugs.webkit.org/show_bug.cgi?id=54714
3512
3513         * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber()
3514
3515 2011-02-22  Adam Barth  <abarth@webkit.org>
3516
3517         Reviewed by Ojan Vafai.