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