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