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