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