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