a5d0438e7be1e6b1d98829d56646279f4160a1d1
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
2
3         Reviewed by Oliver Hunt.
4
5         Nixed special finalizer handling for WebCore strings
6         https://bugs.webkit.org/show_bug.cgi?id=59425
7         
8         SunSpider reports no change.
9         
10         Not needed anymore, since weak handles have finalizers.
11
12         * runtime/JSString.cpp:
13         (JSC::JSString::resolveRope):
14         (JSC::JSString::resolveRopeSlowCase):
15         (JSC::JSString::outOfMemory):
16         (JSC::JSString::substringFromRope):
17         (JSC::JSString::replaceCharacter): Updated for removal of union.
18
19         * runtime/JSString.h:
20         (JSC::RopeBuilder::JSString):
21         (JSC::RopeBuilder::~JSString):
22         (JSC::RopeBuilder::appendStringInConstruct):
23         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): No need for
24         union or special constructor anymore.
25
26 2011-04-26  Gabor Loki  <loki@webkit.org>
27
28         Reviewed by Csaba Osztrogonác.
29
30         Speeding up SVG filters with multicore (SMP) support
31         https://bugs.webkit.org/show_bug.cgi?id=43903
32
33         Some SVG filters execute a huge number of pixel manipulations, which
34         cannot be sped up by graphics accelerators, since their algorithm is
35         too complex. Using the power of Symmetric Multi Processing (SMP) we
36         can split up a task to smaller (data independent) tasks, which can be
37         executed independently.
38
39         The ParallelJobs framework provides a simple way for distributed
40         programming. The framework is based on WebKit's threading infrastructure,
41         Open Multi-Processing's (OpenMP) API, and libdispatch API.
42
43         * GNUmakefile.list.am:
44         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
45         * JavaScriptCore.xcodeproj/project.pbxproj:
46         * wtf/CMakeLists.txt:
47         * wtf/ParallelJobs.h: Added.
48         (WTF::ParallelJobs::ParallelJobs):
49         (WTF::ParallelJobs::numberOfJobs):
50         (WTF::ParallelJobs::parameterForJob):
51         (WTF::ParallelJobs::executeJobs):
52         * wtf/ParallelJobsGeneric.cpp: Added.
53         (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
54         (WTF::ParallelEnvironment::ThreadPrivate::executeJob):
55         (WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
56         (WTF::ParallelEnvironment::ThreadPrivate::workerThread):
57         * wtf/ParallelJobsGeneric.h: Added.
58         (WTF::ParallelEnvironment::ParallelEnvironment):
59         (WTF::ParallelEnvironment::numberOfJobs):
60         (WTF::ParallelEnvironment::parameterForJob):
61         (WTF::ParallelEnvironment::executeJobs):
62         (WTF::ParallelEnvironment::ThreadPrivate::ThreadPrivate):
63         (WTF::ParallelEnvironment::ThreadPrivate::create):
64         * wtf/ParallelJobsLibdispatch.h: Added.
65         (WTF::ParallelEnvironment::ParallelEnvironment):
66         (WTF::ParallelEnvironment::numberOfJobs):
67         (WTF::ParallelEnvironment::parameterForJob):
68         (WTF::ParallelEnvironment::executeJobs):
69         * wtf/ParallelJobsOpenMP.h: Added.
70         (WTF::ParallelEnvironment::ParallelEnvironment):
71         (WTF::ParallelEnvironment::numberOfJobs):
72         (WTF::ParallelEnvironment::parameterForJob):
73         (WTF::ParallelEnvironment::executeJobs):
74         * wtf/Platform.h:
75         * wtf/wtf.pri:
76
77 2011-04-26  Mihai Parparita  <mihaip@chromium.org>
78
79         Reviewed by Adam Barth.
80
81         Turn off make built-in implicit rules for derived sources makefile
82         https://bugs.webkit.org/show_bug.cgi?id=59418
83         
84         We don't use any of make's built-in implicit rules, turning them off
85         speeds up parsing of the makefile.
86
87         * JavaScriptCore.xcodeproj/project.pbxproj:
88         * gyp/generate-derived-sources.sh:
89
90 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
91
92         Reviewed by Oliver Hunt.
93
94         Custom prototypes on DOM objects don't persist after garbage collection
95         https://bugs.webkit.org/show_bug.cgi?id=59412
96         
97         SunSpider reports no change.
98         
99         The hasCustomProperties() check didn't check for a custom prototype.
100
101         * runtime/JSObject.h:
102         (JSC::JSObject::hasCustomProperties): Changed to delegate to Structure
103         because it is the "truth" about an object's pedigree.
104
105         * runtime/Structure.cpp:
106         (JSC::Structure::Structure):
107         * runtime/Structure.h:
108         (JSC::Structure::didTransition): Track whether a Structure has ever
109         transitioned for any reason. If so, we have to assume that the object
110         holding it is custom in some way.
111
112 2011-04-25  Gavin Barraclough  <barraclough@apple.com>
113
114         Reviewed by Geoff Garen.
115
116         https://bugs.webkit.org/show_bug.cgi?id=59405
117         DFG JIT - add type speculation for integer & array types, for vars & args.
118
119         If a var or argument is used as the base for a GetByVal or PutByVal access
120         we are speculating that it is of type Array (we only generate code on the
121         speculative path to perform array accesses). By typing the var or args slot
122         as Array, and checking on entry to the function (in the case of args), and
123         each time the local is written to, we can avoid a type check at each point
124         the array is accessed. This will typically hoist type checks out of loops.
125
126         Similarly, any local that is incremented or decremented, or is the input or
127         output or a bitwise operator, is likely to be an integer. By typing the
128         local as int32 we can avoid speculation checks on access, and tagging when
129         writing to the slot. All accesses can become 32bit instead of 64.
130
131         * dfg/DFGByteCodeParser.cpp:
132         (JSC::DFG::ByteCodeParser::set):
133         (JSC::DFG::ByteCodeParser::predictArray):
134         (JSC::DFG::ByteCodeParser::predictInt32):
135         (JSC::DFG::ByteCodeParser::parseBlock):
136         * dfg/DFGGraph.h:
137         (JSC::DFG::PredictionSlot::PredictionSlot):
138         (JSC::DFG::Graph::Graph):
139         (JSC::DFG::Graph::predict):
140         (JSC::DFG::Graph::getPrediction):
141         * dfg/DFGJITCompiler.cpp:
142         (JSC::DFG::JITCompiler::compileFunction):
143         * dfg/DFGJITCompiler.h:
144         (JSC::DFG::JITCompiler::tagFor):
145         (JSC::DFG::JITCompiler::payloadFor):
146         * dfg/DFGNode.h:
147         * dfg/DFGNonSpeculativeJIT.cpp:
148         (JSC::DFG::NonSpeculativeJIT::compile):
149         * dfg/DFGSpeculativeJIT.cpp:
150         (JSC::DFG::SpeculativeJIT::compile):
151         (JSC::DFG::SpeculativeJIT::checkArgumentTypes):
152         (JSC::DFG::SpeculativeJIT::initializeVariableTypes):
153         * dfg/DFGSpeculativeJIT.h:
154         * runtime/Executable.cpp:
155         (JSC::tryDFGCompile):
156
157 2011-04-25  David Levin  <levin@chromium.org>
158
159         Reviewed by James Robinson.
160
161         Fix OwnPtr strict mode violation in MessageQueue.h
162         https://bugs.webkit.org/show_bug.cgi?id=59400
163
164         * wtf/MessageQueue.h:
165         (WTF::::waitForMessage):
166         (WTF::::waitForMessageFilteredWithTimeout):
167         (WTF::::tryGetMessage):
168
169 2011-04-25  Adam Barth  <abarth@webkit.org>
170
171         Reviewed by Darin Adler.
172
173         JavaScriptCore should play nice strict OwnPtrs
174         https://bugs.webkit.org/show_bug.cgi?id=59401
175
176         * dfg/DFGByteCodeParser.cpp:
177         (JSC::DFG::ByteCodeParser::parse):
178         * heap/Heap.cpp:
179         (JSC::TypeCounter::TypeCounter):
180         * jit/JITStubs.cpp:
181         (JSC::JITThunks::JITThunks):
182         * parser/JSParser.cpp:
183         (JSC::JSParser::Scope::Scope):
184         * yarr/YarrJIT.cpp:
185         (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
186
187 2011-04-25  Mark Rowe  <mrowe@apple.com>
188
189         Build fix.
190
191         * wtf/ListHashSet.h:
192
193 2011-04-25  Gavin Barraclough  <barraclough@apple.com>
194
195         Reviewed by Oliver Hunt.
196
197         Bug 59370 - DFG JIT - fix leak of BlocksBlocks
198         (put the blocks immediately into an OwnPtr).
199
200         * dfg/DFGByteCodeParser.cpp:
201         (JSC::DFG::ByteCodeParser::parse):
202
203 2011-04-25  James Robinson  <jamesr@chromium.org>
204
205         Reviewed by David Levin.
206
207         Fix strict OwnPtr violations in ListHashSet and RenderLayerCompositor
208         https://bugs.webkit.org/show_bug.cgi?id=59353
209
210         * wtf/ListHashSet.h:
211         (WTF::::ListHashSet):
212
213 2011-04-25  David Levin  <levin@chromium.org>
214
215         Reviewed by Adam Barth.
216
217         Fix PassOwnPtr issues in Structure and JSGlobalData.cpp
218         https://bugs.webkit.org/show_bug.cgi?id=59347
219
220         * runtime/JSGlobalData.cpp:
221         (JSC::JSGlobalData::JSGlobalData):
222         * runtime/Structure.cpp:
223         (JSC::Structure::copyPropertyTable):
224         (JSC::Structure::createPropertyMap):
225         * runtime/Structure.h:
226
227 2011-04-25  Oliver Hunt  <oliver@apple.com>
228
229         Reviewed by Geoffrey Garen.
230
231         Make ClassInfo required when creating a Structure
232         https://bugs.webkit.org/show_bug.cgi?id=59340
233
234         Add ClassInfo to all those types which currently don't
235         have it, and add an assertion to Structure::create to
236         ensure that the provided classInfo is not null.
237
238         * runtime/Executable.h:
239         (JSC::EvalExecutable::createStructure):
240         (JSC::ProgramExecutable::createStructure):
241         (JSC::FunctionExecutable::createStructure):
242         * runtime/GetterSetter.cpp:
243         * runtime/GetterSetter.h:
244         (JSC::GetterSetter::createStructure):
245         * runtime/JSAPIValueWrapper.cpp:
246         * runtime/JSAPIValueWrapper.h:
247         (JSC::JSAPIValueWrapper::createStructure):
248         * runtime/JSCell.cpp:
249         * runtime/JSCell.h:
250         * runtime/JSString.cpp:
251         * runtime/JSString.h:
252         (JSC::RopeBuilder::createStructure):
253         * runtime/Structure.h:
254         (JSC::Structure::create):
255         (JSC::JSCell::createDummyStructure):
256
257 2011-04-25  David Levin  <levin@chromium.org>
258
259         Reviewed by Adam Barth.
260
261         PropertyMapHashTable.h should use adoptPtr instead of implicit conversions to PassRefPtr.
262         https://bugs.webkit.org/show_bug.cgi?id=59342
263
264         This patch is to prepare for the strict OwnPtr hack-a-thon.
265
266         * runtime/PropertyMapHashTable.h:
267         (JSC::PropertyTable::copy):
268
269 2011-04-25  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
270
271         Reviewed by Gavin Barraclough.
272
273         Rationalize MacroAssembler branch methods
274         https://bugs.webkit.org/show_bug.cgi?id=58950
275
276         split out the 'Condition' enum into 'RelationalCondition' and 'ResultCondition' 
277         and apply related changes (only for SH4 platforms).
278
279         * assembler/MacroAssemblerSH4.cpp:
280         * assembler/MacroAssemblerSH4.h:
281         (JSC::MacroAssemblerSH4::compare32):
282         (JSC::MacroAssemblerSH4::branch32WithUnalignedHalfWords):
283         (JSC::MacroAssemblerSH4::branchDouble):
284         (JSC::MacroAssemblerSH4::branch32):
285         (JSC::MacroAssemblerSH4::branchTest8):
286         (JSC::MacroAssemblerSH4::branch8):
287         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
288         (JSC::MacroAssemblerSH4::test8):
289         (JSC::MacroAssemblerSH4::branch16):
290         (JSC::MacroAssemblerSH4::branchTest32):
291         (JSC::MacroAssemblerSH4::branchAdd32):
292         (JSC::MacroAssemblerSH4::branchMul32):
293         (JSC::MacroAssemblerSH4::branchSub32):
294         (JSC::MacroAssemblerSH4::branchOr32):
295         (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
296         (JSC::MacroAssemblerSH4::branchPtrWithPatch):
297         (JSC::MacroAssemblerSH4::SH4Condition):
298         * assembler/SH4Assembler.h:
299         (JSC::SH4Assembler::cmpEqImmR0):
300
301 2011-04-25  Adam Barth  <abarth@webkit.org>
302
303         Reviewed by Eric Seidel.
304
305         PropertyMapHashTable should work with strict OwnPtr
306         https://bugs.webkit.org/show_bug.cgi?id=59337
307
308         This patch is in preparation for the strict OwnPtr hack-a-thon.
309
310         * runtime/PropertyMapHashTable.h:
311         (JSC::PropertyTable::PropertyTable):
312         (JSC::PropertyTable::addDeletedOffset):
313
314 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
315
316         Reviewed by Sam Weinig.
317
318         Nixed MarkStack::deprecatedAppend, since it has no clients left.
319
320         * heap/MarkStack.h:
321
322 2011-04-23  Gavin Barraclough  <barraclough@apple.com>
323
324         Reviewed by Oliver Hunt.
325
326         Bug 59287 - DFG JIT - Handle temporaries as vars, allowing support for ?:
327
328         SetLocals to temporaries will only be generated if they are used within other
329         blocks, due to the SSA based DCE.
330
331         * dfg/DFGByteCodeParser.cpp:
332         (JSC::DFG::ByteCodeParser::ByteCodeParser):
333         (JSC::DFG::ByteCodeParser::get):
334         (JSC::DFG::ByteCodeParser::set):
335         (JSC::DFG::ByteCodeParser::getLocal):
336         (JSC::DFG::ByteCodeParser::setLocal):
337         (JSC::DFG::ByteCodeParser::parseBlock):
338         (JSC::DFG::ByteCodeParser::processPhiStack):
339         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
340         (JSC::DFG::ByteCodeParser::parse):
341         * dfg/DFGGraph.h:
342         (JSC::DFG::BasicBlock::BasicBlock):
343
344 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
345
346         Reviewed by Sam Weinig & Geoff Garen.
347
348         Bug 59266 - DFG JIT - Add SSA style DCE
349
350         This works by making GetLocal nodes reference SetLocal nodes from prior blocks,
351         via intermediate Phi nodes. Whenever we add a GetLocal to the graph, also add a
352         matching child Phi, and add the Phi to a work queue to add references to prior
353         definitions once we have the full CFG & can determine predecessors. This process
354         is iterative, inserting new phis into predecessors as necessary.
355
356         * dfg/DFGByteCodeParser.cpp:
357         (JSC::DFG::ByteCodeParser::getVariable):
358         (JSC::DFG::ByteCodeParser::setVariable):
359         (JSC::DFG::ByteCodeParser::getArgument):
360         (JSC::DFG::ByteCodeParser::setArgument):
361         (JSC::DFG::ByteCodeParser::parseBlock):
362         (JSC::DFG::ByteCodeParser::processWorkQueue):
363         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
364         (JSC::DFG::ByteCodeParser::parse):
365         * dfg/DFGGraph.cpp:
366         (JSC::DFG::Graph::dump):
367         (JSC::DFG::Graph::refChildren):
368         * dfg/DFGGraph.h:
369         (JSC::DFG::Graph::ref):
370         * dfg/DFGNode.h:
371         (JSC::DFG::Node::ref):
372         * dfg/DFGNonSpeculativeJIT.cpp:
373         (JSC::DFG::NonSpeculativeJIT::compile):
374         * dfg/DFGScoreBoard.h:
375         (JSC::DFG::ScoreBoard::~ScoreBoard):
376         (JSC::DFG::ScoreBoard::dump):
377         * dfg/DFGSpeculativeJIT.cpp:
378         (JSC::DFG::SpeculativeJIT::compile):
379
380 2011-04-22  Vitaly Repeshko  <vitalyr@chromium.org>
381
382         Reviewed by Adam Barth.
383
384         Add missing default constructors for HashMap iterator specializations.
385         https://bugs.webkit.org/show_bug.cgi?id=59250
386
387         * wtf/HashIterators.h:
388         * wtf/HashTable.h:
389         (WTF::HashTableConstIterator::HashTableConstIterator): Added cast
390         to help compiler find the function template.
391
392 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
393
394         Reviewed by Sam Weinig.
395
396         Bug 59262 - DFG JIT - reduce size of VariableRecord
397
398         We never need both the get & set node, only the most recent
399         (which is always a set, if both exist).
400
401         * dfg/DFGByteCodeParser.cpp:
402         (JSC::DFG::ByteCodeParser::getVariable):
403         (JSC::DFG::ByteCodeParser::setVariable):
404         (JSC::DFG::ByteCodeParser::getArgument):
405         (JSC::DFG::ByteCodeParser::setArgument):
406         (JSC::DFG::ByteCodeParser::parseBlock):
407         * dfg/DFGGraph.h:
408         (JSC::DFG::VariableRecord::VariableRecord):
409
410 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
411
412         Reviewed by Geoffrey Garen.
413
414         Bug 59254 - DFG JIT - retain VariableRecords for args/var in all basic blocks,
415         such that this information is available for DCE.  Also, since this enlarges the
416         size of BasicBlock, make Graph hold a vector of pointers to basic blocks, not a
417         vector of blocks.
418
419         * dfg/DFGByteCodeParser.cpp:
420         (JSC::DFG::ByteCodeParser::ByteCodeParser):
421         (JSC::DFG::ByteCodeParser::get):
422         (JSC::DFG::ByteCodeParser::set):
423         (JSC::DFG::ByteCodeParser::getVariable):
424         (JSC::DFG::ByteCodeParser::setVariable):
425         (JSC::DFG::ByteCodeParser::getArgument):
426         (JSC::DFG::ByteCodeParser::setArgument):
427         (JSC::DFG::ByteCodeParser::parseBlock):
428         (JSC::DFG::ByteCodeParser::setupPredecessors):
429         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
430         (JSC::DFG::ByteCodeParser::parse):
431         * dfg/DFGGraph.cpp:
432         (JSC::DFG::Graph::dump):
433         * dfg/DFGGraph.h:
434         (JSC::DFG::VariableRecord::VariableRecord):
435         (JSC::DFG::BasicBlock::BasicBlock):
436         (JSC::DFG::BasicBlock::getBytecodeBegin):
437         (JSC::DFG::Graph::blockIndexForBytecodeOffset):
438         (JSC::DFG::Graph::blockForBytecodeOffset):
439         * dfg/DFGNonSpeculativeJIT.cpp:
440         (JSC::DFG::NonSpeculativeJIT::compile):
441         * dfg/DFGSpeculativeJIT.cpp:
442         (JSC::DFG::SpeculativeJIT::compile):
443         * dfg/DFGSpeculativeJIT.h:
444         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
445
446 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
447
448         Errk, build fix.
449
450         * dfg/DFGSpeculativeJIT.cpp:
451         (JSC::DFG::SpeculativeJIT::compile):
452
453 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
454
455         Reviewed by Sam Weinig.
456
457         Quick cleanup to SpeculativeJIT/NonSpeculativeJIT compile loop,
458         move out the call to checkConsistency().
459
460         * dfg/DFGNonSpeculativeJIT.cpp:
461         (JSC::DFG::NonSpeculativeJIT::compile):
462         * dfg/DFGSpeculativeJIT.cpp:
463         (JSC::DFG::SpeculativeJIT::compile):
464         * dfg/DFGSpeculativeJIT.h:
465         (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
466         (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
467
468 2011-04-21  Vitaly Repeshko  <vitalyr@chromium.org>
469
470         Reviewed by Adam Barth.
471
472         Provide default constructors for HashMap iterators.
473         https://bugs.webkit.org/show_bug.cgi?id=59151
474
475         These will be used to implement an iterator over EventTarget's
476         listeners.
477
478         * wtf/HashTable.h:
479         (WTF::HashTableConstIteratorAdapter::HashTableConstIteratorAdapter):
480         (WTF::HashTableIteratorAdapter::HashTableIteratorAdapter):
481
482 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
483
484         Reviewed by Geoff Garen.
485
486         Bug 59232 - DFG JIT - Add predecessor links to BasicBlocks
487
488         These will be necessary for DCE support.
489         Also factor allocateVirtualRegisters out into its own method.
490
491         * dfg/DFGByteCodeParser.cpp:
492         (JSC::DFG::ByteCodeParser::setupPredecessors):
493         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
494         (JSC::DFG::ByteCodeParser::parse):
495         * dfg/DFGGraph.h:
496         (JSC::DFG::Graph::blockForBytecodeOffset):
497         * dfg/DFGNode.h:
498         (JSC::DFG::Node::isTerminal):
499
500 2011-04-22  Oliver Hunt  <oliver@apple.com>
501
502         Reviewed by Geoffrey Garen.
503
504         Object.create creates uncachable objects
505         https://bugs.webkit.org/show_bug.cgi?id=59164
506
507         Use the prototype object's inheritorID, as we
508         should always have done
509
510         * runtime/JSGlobalObject.cpp:
511         (JSC::JSGlobalObject::reset):
512         (JSC::JSGlobalObject::visitChildren):
513         * runtime/JSGlobalObject.h:
514         (JSC::JSGlobalObject::nullPrototypeObjectStructure):
515         * runtime/ObjectConstructor.cpp:
516         (JSC::objectConstructorCreate):
517
518 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
519
520         Reviewed by Sam Weinig.
521
522         Bug 59222 - DFG JIT - don't allocate virtual registers to nodes with no result
523
524         We currently allocate virtual registers to nodes which have no result - these are
525         clearly unused, and may result in us allocating a larger than necessary stack frame.
526
527         Encapsulate Node::virtualRegister such that we can ASSERT this is only called on
528         nodes that have results, and improve the quality of output from the consistency check.
529
530         * dfg/DFGByteCodeParser.cpp:
531         (JSC::DFG::ByteCodeParser::parse):
532         * dfg/DFGGraph.cpp:
533         (JSC::DFG::Graph::dump):
534         * dfg/DFGGraph.h:
535         (JSC::DFG::Graph::ref):
536         (JSC::DFG::Graph::deref):
537         * dfg/DFGJITCodeGenerator.cpp:
538         (JSC::DFG::JITCodeGenerator::fillInteger):
539         (JSC::DFG::JITCodeGenerator::fillDouble):
540         (JSC::DFG::JITCodeGenerator::fillJSValue):
541         (JSC::DFG::JITCodeGenerator::dump):
542         (JSC::DFG::JITCodeGenerator::checkConsistency):
543         * dfg/DFGJITCodeGenerator.h:
544         (JSC::DFG::JITCodeGenerator::canReuse):
545         (JSC::DFG::JITCodeGenerator::isFilled):
546         (JSC::DFG::JITCodeGenerator::isFilledDouble):
547         (JSC::DFG::JITCodeGenerator::use):
548         (JSC::DFG::JITCodeGenerator::integerResult):
549         (JSC::DFG::JITCodeGenerator::noResult):
550         (JSC::DFG::JITCodeGenerator::cellResult):
551         (JSC::DFG::JITCodeGenerator::jsValueResult):
552         (JSC::DFG::JITCodeGenerator::doubleResult):
553         (JSC::DFG::JITCodeGenerator::initConstantInfo):
554         * dfg/DFGJITCompiler.cpp:
555         (JSC::DFG::JITCompiler::fillNumericToDouble):
556         (JSC::DFG::JITCompiler::fillInt32ToInteger):
557         (JSC::DFG::JITCompiler::fillToJS):
558         (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
559         * dfg/DFGNode.h:
560         (JSC::DFG::Node::Node):
561         (JSC::DFG::Node::hasResult):
562         (JSC::DFG::Node::virtualRegister):
563         (JSC::DFG::Node::setVirtualRegister):
564         (JSC::DFG::Node::refCount):
565         (JSC::DFG::Node::ref):
566         (JSC::DFG::Node::deref):
567         (JSC::DFG::Node::adjustedRefCount):
568         * dfg/DFGNonSpeculativeJIT.cpp:
569         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
570         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
571         (JSC::DFG::NonSpeculativeJIT::compile):
572         * dfg/DFGScoreBoard.h:
573         (JSC::DFG::ScoreBoard::use):
574         * dfg/DFGSpeculativeJIT.cpp:
575         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
576         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
577         (JSC::DFG::SpeculativeJIT::compile):
578
579 2011-04-22  Sam Weinig  <sam@webkit.org>
580
581         Reviewed by Gavin Barraclough and Oliver Hunt.
582
583         Arrays should participate in global object forwarding fun
584         https://bugs.webkit.org/show_bug.cgi?id=59215
585
586         * runtime/JSGlobalObject.h:
587         (JSC::constructEmptyArray):
588         (JSC::constructArray):
589         Add variants of constructArray that take a global object.
590
591 2011-04-22  Sheriff Bot  <webkit.review.bot@gmail.com>
592
593         Unreviewed, rolling out r84650 and r84654.
594         http://trac.webkit.org/changeset/84650
595         http://trac.webkit.org/changeset/84654
596         https://bugs.webkit.org/show_bug.cgi?id=59218
597
598         Broke Windows build (Requested by bweinstein on #webkit).
599
600         * API/JSCallbackObjectFunctions.h:
601         (JSC::::init):
602         * JavaScriptCore.exp:
603         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
604         * heap/Handle.h:
605         (JSC::HandleBase::operator!):
606         (JSC::HandleBase::operator UnspecifiedBoolType*):
607         (JSC::HandleTypes::getFromSlot):
608         * heap/HandleHeap.cpp:
609         (JSC::HandleHeap::markStrongHandles):
610         (JSC::HandleHeap::markWeakHandles):
611         (JSC::HandleHeap::finalizeWeakHandles):
612         (JSC::HandleHeap::writeBarrier):
613         (JSC::HandleHeap::protectedGlobalObjectCount):
614         (JSC::HandleHeap::isValidWeakNode):
615         * heap/HandleHeap.h:
616         (JSC::HandleHeap::copyWeak):
617         (JSC::HandleHeap::makeWeak):
618         (JSC::HandleHeap::Node::slot):
619         * heap/HandleStack.cpp:
620         (JSC::HandleStack::mark):
621         (JSC::HandleStack::grow):
622         * heap/HandleStack.h:
623         (JSC::HandleStack::zapTo):
624         (JSC::HandleStack::push):
625         * heap/Heap.cpp:
626         (JSC::HandleHeap::protectedObjectTypeCounts):
627         * heap/Local.h:
628         (JSC::::set):
629         * heap/Strong.h:
630         (JSC::Strong::set):
631         * heap/Weak.h:
632         (JSC::Weak::set):
633         * runtime/StructureTransitionTable.h:
634         (JSC::StructureTransitionTable::singleTransition):
635         (JSC::StructureTransitionTable::setSingleTransition):
636         * runtime/WeakGCMap.h:
637         (JSC::WeakGCMap::add):
638         (JSC::WeakGCMap::set):
639         * runtime/WriteBarrier.h:
640
641 2011-04-22  Brian Weinstein  <bweinstein@apple.com>
642
643         Part of Windows build fix from r84650.
644
645         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
646
647 2011-04-22  Oliver Hunt  <oliver@apple.com>
648
649         Reviewed by Geoffrey Garen.
650
651         Make it harder to use HandleSlot incorrectly
652         https://bugs.webkit.org/show_bug.cgi?id=59205
653
654         Just add a little type fudging to make it harder to
655         incorrectly assign through a HandleSlot.
656
657         * API/JSCallbackObjectFunctions.h:
658         (JSC::::init):
659         * JavaScriptCore.exp:
660         * heap/Handle.h:
661         (JSC::HandleBase::operator!):
662         (JSC::HandleBase::operator UnspecifiedBoolType*):
663         (JSC::HandleTypes::getFromSlot):
664         * heap/HandleHeap.cpp:
665         (JSC::HandleHeap::markStrongHandles):
666         (JSC::HandleHeap::markWeakHandles):
667         (JSC::HandleHeap::finalizeWeakHandles):
668         (JSC::HandleHeap::writeBarrier):
669         (JSC::HandleHeap::protectedGlobalObjectCount):
670         (JSC::HandleHeap::isValidWeakNode):
671         * heap/HandleHeap.h:
672         (JSC::HandleHeap::copyWeak):
673         (JSC::HandleHeap::makeWeak):
674         (JSC::HandleHeap::Node::slot):
675         * heap/HandleStack.cpp:
676         (JSC::HandleStack::mark):
677         (JSC::HandleStack::grow):
678         * heap/HandleStack.h:
679         (JSC::HandleStack::zapTo):
680         (JSC::HandleStack::push):
681         * heap/Heap.cpp:
682         (JSC::HandleHeap::protectedObjectTypeCounts):
683         * heap/Local.h:
684         (JSC::::set):
685         * heap/Strong.h:
686         (JSC::Strong::set):
687         * heap/Weak.h:
688         (JSC::Weak::set):
689         * runtime/StructureTransitionTable.h:
690         (JSC::StructureTransitionTable::singleTransition):
691         (JSC::StructureTransitionTable::setSingleTransition):
692         * runtime/WeakGCMap.h:
693         (JSC::WeakGCMap::add):
694         (JSC::WeakGCMap::set):
695         * runtime/WriteBarrier.h:
696         (JSC::OpaqueJSValue::toJSValue):
697         (JSC::OpaqueJSValue::toJSValueRef):
698         (JSC::OpaqueJSValue::fromJSValue):
699
700 2011-04-22  Patrick Gansterer  <paroga@webkit.org>
701
702         Unreviewed. Build fix for ENABLE(INTERPRETER) after r84556.
703
704         * bytecode/CodeBlock.cpp:
705         (JSC::CodeBlock::visitAggregate):
706
707 2011-04-21  Sheriff Bot  <webkit.review.bot@gmail.com>
708
709         Unreviewed, rolling out r84583.
710         http://trac.webkit.org/changeset/84583
711         https://bugs.webkit.org/show_bug.cgi?id=59173
712
713         "broke
714         http://trac.webkit.org/export/84593/trunk/LayoutTests/fast/js
715         /Object-create.html" (Requested by ggaren on #webkit).
716
717         * runtime/ObjectConstructor.cpp:
718         (JSC::objectConstructorCreate):
719
720 2011-04-21  Maciej Stachowiak  <mjs@apple.com>
721
722         Reviewed by Adam Roben.
723
724         Add a feature define to allow <details> and <summary> to be disabled
725         https://bugs.webkit.org/show_bug.cgi?id=59118
726         <rdar://problem/9257045>
727
728         * Configurations/FeatureDefines.xcconfig:
729
730 2011-04-21  Oliver Hunt  <oliver@apple.com>
731
732         Reviewed by Geoffrey Garen.
733
734         Object.create creates uncachable objects
735         https://bugs.webkit.org/show_bug.cgi?id=59164
736
737         Use the prototype object's inheritorID, as we
738         should always have done
739
740         * runtime/ObjectConstructor.cpp:
741         (JSC::objectConstructorCreate):
742
743 2011-04-21  Oliver Hunt  <oliver@apple.com>
744
745         Reviewed by Geoffrey Garen.
746
747         Start moving to a general visitor pattern for GC traversal
748         https://bugs.webkit.org/show_bug.cgi?id=59141
749
750         This is just a rename:
751             markChildren -> visitChildren
752             markAggregate -> visitAggregate
753             markStack -> visitor
754             MarkStack -> typedef'd to SlotVisitor
755
756         * API/JSCallbackObject.h:
757         (JSC::JSCallbackObjectData::visitChildren):
758         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):
759         (JSC::JSCallbackObject::visitChildren):
760         * JavaScriptCore.exp:
761         * bytecode/CodeBlock.cpp:
762         (JSC::CodeBlock::visitStructures):
763         (JSC::EvalCodeCache::visitAggregate):
764         (JSC::CodeBlock::visitAggregate):
765         * bytecode/CodeBlock.h:
766         * bytecode/EvalCodeCache.h:
767         * bytecode/Instruction.h:
768         (JSC::PolymorphicAccessStructureList::visitAggregate):
769         * bytecode/StructureStubInfo.cpp:
770         (JSC::StructureStubInfo::visitAggregate):
771         * bytecode/StructureStubInfo.h:
772         * debugger/DebuggerActivation.cpp:
773         (JSC::DebuggerActivation::visitChildren):
774         * debugger/DebuggerActivation.h:
775         * heap/HandleHeap.cpp:
776         (JSC::WeakHandleOwner::isReachableFromOpaqueRoots):
777         (JSC::HandleHeap::markStrongHandles):
778         (JSC::HandleHeap::markWeakHandles):
779         * heap/HandleHeap.h:
780         * heap/HandleStack.cpp:
781         (JSC::HandleStack::mark):
782         * heap/HandleStack.h:
783         * heap/Heap.cpp:
784         (JSC::Heap::markProtectedObjects):
785         (JSC::Heap::markTempSortVectors):
786         (JSC::Heap::markRoots):
787         * heap/Heap.h:
788         * heap/MarkStack.cpp:
789         (JSC::MarkStack::visitChildren):
790         (JSC::MarkStack::drain):
791         * heap/MarkStack.h:
792         (JSC::HeapRootVisitor::HeapRootVisitor):
793         (JSC::HeapRootVisitor::mark):
794         (JSC::HeapRootVisitor::visitor):
795         * heap/MarkedSpace.h:
796         * runtime/ArgList.cpp:
797         (JSC::MarkedArgumentBuffer::markLists):
798         * runtime/ArgList.h:
799         * runtime/Arguments.cpp:
800         (JSC::Arguments::visitChildren):
801         * runtime/Arguments.h:
802         * runtime/Executable.cpp:
803         (JSC::EvalExecutable::visitChildren):
804         (JSC::ProgramExecutable::visitChildren):
805         (JSC::FunctionExecutable::visitChildren):
806         * runtime/Executable.h:
807         * runtime/GetterSetter.cpp:
808         (JSC::GetterSetter::visitChildren):
809         * runtime/GetterSetter.h:
810         (JSC::GetterSetter::createStructure):
811         * runtime/JSAPIValueWrapper.h:
812         (JSC::JSAPIValueWrapper::createStructure):
813         * runtime/JSActivation.cpp:
814         (JSC::JSActivation::visitChildren):
815         * runtime/JSActivation.h:
816         * runtime/JSArray.cpp:
817         (JSC::JSArray::visitChildren):
818         * runtime/JSArray.h:
819         (JSC::JSArray::visitDirect):
820         * runtime/JSCell.h:
821         (JSC::JSCell::JSCell::visitChildren):
822         * runtime/JSFunction.cpp:
823         (JSC::JSFunction::visitChildren):
824         * runtime/JSFunction.h:
825         * runtime/JSGlobalObject.cpp:
826         (JSC::visitIfNeeded):
827         (JSC::JSGlobalObject::visitChildren):
828         * runtime/JSGlobalObject.h:
829         * runtime/JSONObject.cpp:
830         * runtime/JSObject.cpp:
831         (JSC::JSObject::visitChildren):
832         * runtime/JSObject.h:
833         (JSC::JSObject::visitDirect):
834         * runtime/JSPropertyNameIterator.cpp:
835         (JSC::JSPropertyNameIterator::visitChildren):
836         * runtime/JSPropertyNameIterator.h:
837         (JSC::JSPropertyNameIterator::createStructure):
838         * runtime/JSStaticScopeObject.cpp:
839         (JSC::JSStaticScopeObject::visitChildren):
840         * runtime/JSStaticScopeObject.h:
841         * runtime/JSTypeInfo.h:
842         (JSC::TypeInfo::TypeInfo):
843         (JSC::TypeInfo::overridesVisitChildren):
844         * runtime/JSWrapperObject.cpp:
845         (JSC::JSWrapperObject::visitChildren):
846         * runtime/JSWrapperObject.h:
847         * runtime/JSZombie.h:
848         (JSC::JSZombie::visitChildren):
849         * runtime/NativeErrorConstructor.cpp:
850         (JSC::NativeErrorConstructor::visitChildren):
851         * runtime/NativeErrorConstructor.h:
852         * runtime/RegExpObject.cpp:
853         (JSC::RegExpObject::visitChildren):
854         * runtime/RegExpObject.h:
855         * runtime/ScopeChain.cpp:
856         (JSC::ScopeChainNode::visitChildren):
857         * runtime/ScopeChain.h:
858         * runtime/SmallStrings.cpp:
859         (JSC::SmallStrings::visitChildren):
860         * runtime/SmallStrings.h:
861         * runtime/Structure.cpp:
862         (JSC::Structure::Structure):
863         (JSC::Structure::visitChildren):
864         * runtime/Structure.h:
865         * runtime/StructureChain.cpp:
866         (JSC::StructureChain::visitChildren):
867         * runtime/StructureChain.h:
868         (JSC::StructureChain::createStructure):
869
870 2011-04-21  Sheriff Bot  <webkit.review.bot@gmail.com>
871
872         Unreviewed, rolling out r84548.
873         http://trac.webkit.org/changeset/84548
874         https://bugs.webkit.org/show_bug.cgi?id=59144
875
876         Broke chromium-win build (Requested by aklein on #webkit).
877
878         * wtf/Platform.h:
879
880 2011-04-21  Adam Klein  <adamk@chromium.org>
881
882         Reviewed by David Levin.
883
884         [fileapi] Worker File API calls that create Blobs fail in debug builds due to random number generator thread assertion
885         https://bugs.webkit.org/show_bug.cgi?id=55728
886
887         Enable WTF_MULTIPLE_THREADS for Chromium.
888
889         * wtf/Platform.h:
890
891 2011-04-20  Michael Saboff  <msaboff@apple.com>
892
893         Reviewed by Geoff Garen.
894
895         JSString::resolveRope inefficient for common 2 fiber case
896         https://bugs.webkit.org/show_bug.cgi?id=58994
897
898         Split JSString::resolveRope into three routines.
899         resolveRope allocates the new buffer and handles the 1 or 2
900         fiber case with single level fibers.
901         resolveRopeSlowCase handles the general case.
902         outOfMemory handles the rare out of memory exception case.
903
904         * runtime/JSString.cpp:
905         (JSC::JSString::resolveRope):
906         (JSC::JSString::resolveRopeSlowCase):
907         (JSC::JSString::outOfMemory):
908         * runtime/JSString.h:
909
910 2011-04-20  Adam Klein  <adamk@chromium.org>
911
912         Reviewed by David Levin.
913
914         Rename all uses of JSC_MULTIPLE_THREADS under wtf/... to WTF_MULTIPLE_THREADS
915         https://bugs.webkit.org/show_bug.cgi?id=59040
916
917         This will be used to fix https://bugs.webkit.org/show_bug.cgi?id=55728
918         by enabling WTF_MULTIPLE_THREADS for Chromium.
919
920         * wtf/CryptographicallyRandomNumber.cpp:
921         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber):
922         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues):
923         * wtf/FastMalloc.cpp:
924         * wtf/Platform.h:
925         Enable WTF_MULTIPLE_THREADS whenever JSC_MULTIPLE_THREADS is enabled.
926         * wtf/RandomNumber.cpp:
927         (WTF::randomNumber):
928         * wtf/RefCountedLeakCounter.cpp:
929         (WTF::RefCountedLeakCounter::increment):
930         (WTF::RefCountedLeakCounter::decrement):
931         * wtf/dtoa.cpp:
932         (WTF::pow5mult):
933
934 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
935
936         Rubber stamped by Geoff Garen
937
938         Bug 59069 - DFG JIT - register allocate r8, r9, r10
939
940         * dfg/DFGJITCompiler.h:
941         (JSC::DFG::JITCompiler::gprToRegisterID):
942
943 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
944
945         Build fix - revert accidental change.
946
947         * wtf/Platform.h:
948
949 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
950
951         Reviewed by Sam Weinig.
952
953         Add SAMPLING_FLAGS tool to DFG JIT.
954
955         * bytecode/SamplingTool.h:
956         (JSC::SamplingFlags::addressOfFlags):
957         * dfg/DFGJITCompiler.cpp:
958         (JSC::DFG::JITCompiler::setSamplingFlag):
959         (JSC::DFG::JITCompiler::clearSamplingFlag):
960         * dfg/DFGJITCompiler.h:
961         * jit/JITInlineMethods.h:
962         (JSC::JIT::setSamplingFlag):
963         (JSC::JIT::clearSamplingFlag):
964         * wtf/Platform.h:
965
966 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
967
968         Reviewed by Oliver Hunt.
969
970         Bug 59022 - DFG JIT - Optimize branch-on-relational-compare
971
972         If a relational compare (< or <=) is immediately followed by a branch,
973         we can combine the two, avoiding generation of a boolean into a register.
974
975         * assembler/MacroAssemblerX86Common.h:
976         (JSC::MacroAssemblerX86Common::branch32):
977         (JSC::MacroAssemblerX86Common::invert):
978         (JSC::MacroAssemblerX86Common::commute):
979         * dfg/DFGNode.h:
980         (JSC::DFG::Node::adjustedRefCount):
981         * dfg/DFGSpeculativeJIT.cpp:
982         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
983         (JSC::DFG::SpeculativeJIT::compile):
984         * dfg/DFGSpeculativeJIT.h:
985         (JSC::DFG::SpeculativeJIT::isJSConstantWithInt32Value):
986         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
987
988 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
989
990         ARMv7 build fix II.
991
992         * jit/JITOpcodes32_64.cpp:
993         (JSC::JIT::softModulo):
994
995 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
996
997         ARMv7 build fix.
998
999         * assembler/MacroAssemblerARM.h:
1000         (JSC::MacroAssemblerARM::test8):
1001
1002 2011-04-19  Gavin Barraclough  <barraclough@apple.com>
1003
1004         Reviewed by Oliver Hunt.
1005
1006         Rationalize MacroAssembler branch methods
1007         https://bugs.webkit.org/show_bug.cgi?id=58950
1008
1009         The MacroAssembler currently exposes x86's weird behaviour that the 'setcc'
1010         instruction only sets the low 8 bits of a register. Stop that.
1011
1012         Having done so, to clarify remove the 'set32' prefix from test & compare
1013         instructions - these methods all now set a full 32/64 bit register (Ptr size).
1014         The size in the function name should indicate the amount of data being compared.
1015
1016         Also split out the 'Condition' enum into 'RelationalCondition' and
1017         'ResultCondition'. The former is used in binary comparison, the latter is a unary
1018         condition check on the result of an operation.
1019
1020         * JavaScriptCore.xcodeproj/project.pbxproj:
1021         * assembler/MacroAssembler.h:
1022         (JSC::MacroAssembler::branchPtr):
1023         (JSC::MacroAssembler::branch32):
1024         (JSC::MacroAssembler::branch16):
1025         (JSC::MacroAssembler::branchTestPtr):
1026         (JSC::MacroAssembler::comparePtr):
1027         (JSC::MacroAssembler::branchAddPtr):
1028         (JSC::MacroAssembler::branchSubPtr):
1029         (JSC::MacroAssembler::branchTest8):
1030         * assembler/MacroAssemblerARM.h:
1031         (JSC::MacroAssemblerARM::branch8):
1032         (JSC::MacroAssemblerARM::branch32):
1033         (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
1034         (JSC::MacroAssemblerARM::branch16):
1035         (JSC::MacroAssemblerARM::branchTest8):
1036         (JSC::MacroAssemblerARM::branchTest32):
1037         (JSC::MacroAssemblerARM::branchAdd32):
1038         (JSC::MacroAssemblerARM::branchMul32):
1039         (JSC::MacroAssemblerARM::branchSub32):
1040         (JSC::MacroAssemblerARM::branchNeg32):
1041         (JSC::MacroAssemblerARM::branchOr32):
1042         (JSC::MacroAssemblerARM::compare32):
1043         (JSC::MacroAssemblerARM::test32):
1044         (JSC::MacroAssemblerARM::test8):
1045         (JSC::MacroAssemblerARM::branchPtrWithPatch):
1046         (JSC::MacroAssemblerARM::ARMCondition):
1047         * assembler/MacroAssemblerARMv7.h:
1048         (JSC::MacroAssemblerARMv7::branch32):
1049         (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
1050         (JSC::MacroAssemblerARMv7::branch16):
1051         (JSC::MacroAssemblerARMv7::branch8):
1052         (JSC::MacroAssemblerARMv7::branchTest32):
1053         (JSC::MacroAssemblerARMv7::branchTest8):
1054         (JSC::MacroAssemblerARMv7::branchAdd32):
1055         (JSC::MacroAssemblerARMv7::branchMul32):
1056         (JSC::MacroAssemblerARMv7::branchOr32):
1057         (JSC::MacroAssemblerARMv7::branchSub32):
1058         (JSC::MacroAssemblerARMv7::compare32):
1059         (JSC::MacroAssemblerARMv7::test32):
1060         (JSC::MacroAssemblerARMv7::test8):
1061         (JSC::MacroAssemblerARMv7::branchPtrWithPatch):
1062         (JSC::MacroAssemblerARMv7::makeBranch):
1063         (JSC::MacroAssemblerARMv7::armV7Condition):
1064         * assembler/MacroAssemblerMIPS.h:
1065         (JSC::MacroAssemblerMIPS::branch8):
1066         (JSC::MacroAssemblerMIPS::branch32):
1067         (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords):
1068         (JSC::MacroAssemblerMIPS::branch16):
1069         (JSC::MacroAssemblerMIPS::branchTest32):
1070         (JSC::MacroAssemblerMIPS::branchTest8):
1071         (JSC::MacroAssemblerMIPS::branchAdd32):
1072         (JSC::MacroAssemblerMIPS::branchMul32):
1073         (JSC::MacroAssemblerMIPS::branchSub32):
1074         (JSC::MacroAssemblerMIPS::branchOr32):
1075         (JSC::MacroAssemblerMIPS::compare32):
1076         (JSC::MacroAssemblerMIPS::test8):
1077         (JSC::MacroAssemblerMIPS::test32):
1078         (JSC::MacroAssemblerMIPS::branchPtrWithPatch):
1079         * assembler/MacroAssemblerX86.h:
1080         (JSC::MacroAssemblerX86::branch32):
1081         (JSC::MacroAssemblerX86::branchPtrWithPatch):
1082         * assembler/MacroAssemblerX86Common.h:
1083         (JSC::MacroAssemblerX86Common::branch8):
1084         (JSC::MacroAssemblerX86Common::branch32):
1085         (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
1086         (JSC::MacroAssemblerX86Common::branch16):
1087         (JSC::MacroAssemblerX86Common::branchTest32):
1088         (JSC::MacroAssemblerX86Common::branchTest8):
1089         (JSC::MacroAssemblerX86Common::branchAdd32):
1090         (JSC::MacroAssemblerX86Common::branchMul32):
1091         (JSC::MacroAssemblerX86Common::branchSub32):
1092         (JSC::MacroAssemblerX86Common::branchNeg32):
1093         (JSC::MacroAssemblerX86Common::branchOr32):
1094         (JSC::MacroAssemblerX86Common::compare32):
1095         (JSC::MacroAssemblerX86Common::test8):
1096         (JSC::MacroAssemblerX86Common::test32):
1097         (JSC::MacroAssemblerX86Common::x86Condition):
1098         * assembler/MacroAssemblerX86_64.h:
1099         (JSC::MacroAssemblerX86_64::comparePtr):
1100         (JSC::MacroAssemblerX86_64::branchPtr):
1101         (JSC::MacroAssemblerX86_64::branchTestPtr):
1102         (JSC::MacroAssemblerX86_64::branchAddPtr):
1103         (JSC::MacroAssemblerX86_64::branchSubPtr):
1104         (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
1105         (JSC::MacroAssemblerX86_64::branchTest8):
1106         * dfg/DFGSpeculativeJIT.cpp:
1107         (JSC::DFG::SpeculativeJIT::compile):
1108         * jit/JITOpcodes.cpp:
1109         (JSC::JIT::emit_op_eq):
1110         (JSC::JIT::emit_op_neq):
1111         (JSC::JIT::compileOpStrictEq):
1112         (JSC::JIT::emit_op_eq_null):
1113         (JSC::JIT::emit_op_neq_null):
1114         * jit/JITOpcodes32_64.cpp:
1115         (JSC::JIT::emit_op_eq):
1116         (JSC::JIT::emit_op_neq):
1117         (JSC::JIT::compileOpStrictEq):
1118         (JSC::JIT::emit_op_eq_null):
1119         (JSC::JIT::emit_op_neq_null):
1120
1121 2011-04-20  Balazs Kelemen  <kbalazs@webkit.org>
1122
1123         Reviewed by Csaba Osztrogonác.
1124
1125         [Qt] Cleanup includepath adjustment for generated files
1126         https://bugs.webkit.org/show_bug.cgi?id=58869
1127
1128         * JavaScriptCore.pri:  Add the directory of generated files to the include
1129         path with absolute path to make it valid in the final build step.
1130
1131 2011-04-19  Oliver Hunt  <oliver@apple.com>
1132
1133         Reviewed by Gavin Barraclough.
1134
1135         Remove unneeded deprecated methods from MarkStack
1136         https://bugs.webkit.org/show_bug.cgi?id=58853
1137
1138         Remove deprecated methods
1139
1140         * heap/MarkStack.h:
1141
1142 2011-04-19  Mark Rowe  <mrowe@apple.com>
1143
1144         Things work best when the Xcode project refers to the file at a path that exists.
1145
1146         * JavaScriptCore.xcodeproj/project.pbxproj:
1147
1148 2011-04-19  Renata Hodovan  <reni@webkit.org>
1149
1150         Reviewed by Eric Seidel.
1151
1152         Move the alignment related macros in Vector.h to new Alignment.h.
1153         https://bugs.webkit.org/show_bug.cgi?id=56000
1154
1155         * JavaScriptCore.gypi:
1156         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1157         * JavaScriptCore.xcodeproj/project.pbxproj:
1158         * wtf/Alignment.h: Added.
1159         * wtf/CMakeLists.txt:
1160         * wtf/Vector.h:
1161
1162 2011-04-19  Oliver Hunt  <oliver@apple.com>
1163
1164         Reviewed by Gavin Barraclough.
1165
1166         Remove DeprecatedPtr
1167         https://bugs.webkit.org/show_bug.cgi?id=58718
1168
1169         Remove the class an all functions that still exist to support it.
1170
1171         * heap/MarkStack.h:
1172         (JSC::MarkStack::append):
1173         * runtime/JSValue.h:
1174         * runtime/WriteBarrier.h:
1175
1176 2011-04-19  Jungshik Shin  <jshin@chromium.org>
1177
1178         Reviewed by David Levin
1179
1180         Add U+FEFF (Zero width no-break space) to CharacterNames.h.
1181         It's added to the list of characters to treat as zero-width
1182         in WebCore.
1183
1184         https://bugs.webkit.org/show_bug.cgi?id=48860
1185
1186         * wtf/unicode/CharacterNames.h:
1187
1188 2011-04-19  Csaba Osztrogonác  <ossy@webkit.org>
1189
1190         [Qt] REGRESSION(84176): http/tests/xmlhttprequest/event-listener-gc.html fails
1191         https://bugs.webkit.org/show_bug.cgi?id=58871
1192
1193         Unreviewed, rolling out r84176, r84178, r84186, r84212 and r84231.
1194         http://trac.webkit.org/changeset/84176 (original patch)
1195         http://trac.webkit.org/changeset/84178 (original patch - part 2)
1196         http://trac.webkit.org/changeset/84186 (build fix)
1197         http://trac.webkit.org/changeset/84212
1198         http://trac.webkit.org/changeset/84231 (skip failing test)
1199
1200         original bugs:
1201          - https://bugs.webkit.org/show_bug.cgi?id=58718
1202          - https://bugs.webkit.org/show_bug.cgi?id=58853
1203
1204         * heap/MarkStack.h:
1205         (JSC::MarkStack::deprecatedAppendValues):
1206         (JSC::MarkStack::append):
1207         (JSC::MarkStack::deprecatedAppend):
1208         * runtime/JSValue.h:
1209         * runtime/WriteBarrier.h:
1210         (JSC::DeprecatedPtr::DeprecatedPtr):
1211         (JSC::DeprecatedPtr::get):
1212         (JSC::DeprecatedPtr::operator*):
1213         (JSC::DeprecatedPtr::operator->):
1214         (JSC::DeprecatedPtr::slot):
1215         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
1216         (JSC::DeprecatedPtr::operator!):
1217         (JSC::operator==):
1218
1219 2011-04-18  Oliver Hunt  <oliver@apple.com>
1220
1221         Reviewed by Gavin Barraclough.
1222
1223         Remove unneeded deprecated methods from MarkStack
1224         https://bugs.webkit.org/show_bug.cgi?id=58853
1225
1226         Remove deprecated methods
1227
1228         * heap/MarkStack.h:
1229
1230 2011-04-18  Oliver Hunt  <oliver@apple.com>
1231
1232         Reviewed by Adam Roben.
1233
1234         Off by one initialising repeat callframe
1235         https://bugs.webkit.org/show_bug.cgi?id=58838
1236         <rdar://problem/8756810>
1237
1238         If the end of a callframe made for a repeat call landed on
1239         a page boundary the following page may not have been committed
1240         which means that the off by one could lead to a crash.  However
1241         it could only happen in this case and only on windows which is
1242         why it was so hard to repro.  Alas given the steps needed to
1243         reproduce are such that it's not really possible to make a
1244         testcase.
1245
1246         This fix makes the code a little less squirrely by not trying
1247         to avoid the unnecessary initialisation of |this|.
1248
1249         * interpreter/Interpreter.cpp:
1250         (JSC::Interpreter::prepareForRepeatCall):
1251
1252 2011-04-18  Gavin Barraclough  <barraclough@apple.com>
1253
1254         Reviewed by Geoff Garen.
1255
1256         Bug 58829 - DFG JIT - Optimize add/sub immediate, multiply.
1257
1258         Add code generation for add/subtract instruction with immediate operands
1259         (where a child is a constant), and don't bail to non-speculative if an
1260         integer multiple results in a +0 result (only if it should be generating -0).
1261
1262         * dfg/DFGSpeculativeJIT.cpp:
1263         (JSC::DFG::SpeculativeJIT::compile):
1264         * dfg/DFGSpeculativeJIT.h:
1265         (JSC::DFG::SpeculativeJIT::isDoubleConstantWithInt32Value):
1266
1267 2011-04-18  Gavin Barraclough  <barraclough@apple.com>
1268
1269         Reviewed by Geoff Garen.
1270
1271         Bug 58817 - DFG JIT - if speculative compilation fails, throw away code.
1272
1273         If we detect a logical conflict, throw away generated code,
1274         and only compile through the NonSpeculativeJIT.
1275
1276         * assembler/AbstractMacroAssembler.h:
1277         (JSC::AbstractMacroAssembler::rewindToLabel):
1278         * assembler/AssemblerBuffer.h:
1279         (JSC::AssemblerBuffer::rewindToOffset):
1280         * assembler/MacroAssemblerX86Common.h:
1281         (JSC::MacroAssemblerX86Common::branchAdd32):
1282         (JSC::MacroAssemblerX86Common::branchSub32):
1283         * assembler/X86Assembler.h:
1284         (JSC::X86Assembler::rewindToLabel):
1285         (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel):
1286         * dfg/DFGJITCompiler.cpp:
1287         (JSC::DFG::JITCompiler::linkSpeculationChecks):
1288         (JSC::DFG::JITCompiler::compileFunction):
1289         * dfg/DFGNode.h:
1290         * dfg/DFGNonSpeculativeJIT.cpp:
1291         (JSC::DFG::NonSpeculativeJIT::compile):
1292         * dfg/DFGSpeculativeJIT.cpp:
1293         (JSC::DFG::SpeculativeJIT::compile):
1294         * dfg/DFGSpeculativeJIT.h:
1295         (JSC::DFG::SpeculationCheckIndexIterator::SpeculationCheckIndexIterator):
1296
1297 2011-04-18  Oliver Hunt  <oliver@apple.com>
1298
1299         Reviewed by Gavin Barraclough.
1300
1301         Remove DeprecatedPtr
1302         https://bugs.webkit.org/show_bug.cgi?id=58718
1303
1304         As simple as it sounds.
1305
1306         * runtime/JSValue.h:
1307         * runtime/WriteBarrier.h:
1308
1309 2011-04-17  Cameron Zwarich  <zwarich@apple.com>
1310
1311         Reviewed by Dan Bernstein.
1312
1313         JSC no longer builds with Clang due to -Woverloaded-virtual warning
1314         https://bugs.webkit.org/show_bug.cgi?id=58760
1315
1316         Rename Structure's specificValue overload of put to putSpecificValue to avoid
1317         Clang's warning for overloading a virtual function.
1318
1319         * runtime/Structure.cpp:
1320         (JSC::Structure::addPropertyTransition):
1321         (JSC::Structure::addPropertyWithoutTransition):
1322         (JSC::Structure::putSpecificValue):
1323         * runtime/Structure.h:
1324
1325 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1326
1327         Reviewed by Adam Barth.
1328
1329         Remove WTF_PLATFORM_SGL
1330         https://bugs.webkit.org/show_bug.cgi?id=58743
1331
1332         WTF_PLATFORM_SGL and PLATFORM(SGL) are not used in the code anywhere.
1333
1334         * wtf/Platform.h:
1335
1336 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1337
1338         Reviewed by Adam Barth.
1339
1340         Rename PLATFORM(CA) to USE(CA)
1341         https://bugs.webkit.org/show_bug.cgi?id=58742
1342
1343         * wtf/Platform.h:
1344
1345 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1346
1347         Reviewed by Adam Barth.
1348
1349         Rename PLATFORM(CG) to USE(CG)
1350         https://bugs.webkit.org/show_bug.cgi?id=58729
1351
1352         * wtf/Platform.h:
1353
1354 2011-04-16  Patrick Gansterer  <paroga@webkit.org>
1355
1356         Reviewed by Eric Seidel.
1357
1358         Rename PLATFORM(CAIRO) to USE(CAIRO)
1359         https://bugs.webkit.org/show_bug.cgi?id=55192
1360
1361         * wtf/Platform.h:
1362         * wtf/gobject/GTypedefs.h:
1363
1364 2011-04-15  Sheriff Bot  <webkit.review.bot@gmail.com>
1365
1366         Unreviewed, rolling out r84067.
1367         http://trac.webkit.org/changeset/84067
1368         https://bugs.webkit.org/show_bug.cgi?id=58724
1369
1370         qt build are failing. (Requested by loislo2 on #webkit).
1371
1372         * heap/MarkStack.h:
1373         (JSC::MarkStack::append):
1374         * runtime/JSValue.h:
1375         * runtime/WriteBarrier.h:
1376         (JSC::DeprecatedPtr::DeprecatedPtr):
1377         (JSC::DeprecatedPtr::get):
1378         (JSC::DeprecatedPtr::operator*):
1379         (JSC::DeprecatedPtr::operator->):
1380         (JSC::DeprecatedPtr::slot):
1381         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
1382         (JSC::DeprecatedPtr::operator!):
1383         (JSC::operator==):
1384
1385 2011-04-15  Shishir Agrawal  <shishir@chromium.org>
1386
1387         Reviewed by James Robinson.
1388
1389         Add a flag to guard Page Visibility API changes.
1390         https://bugs.webkit.org/show_bug.cgi?id=58464
1391
1392         * Configurations/FeatureDefines.xcconfig:
1393
1394 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1395
1396         Errrk! - build fix from !x86-64.
1397
1398         * dfg/DFGNode.h:
1399
1400 2011-04-15  David Levin  <levin@chromium.org>
1401
1402         Revert of r83974.
1403
1404         JavaScriptCore shouldn't depend on ../ThirdParty/gtest/xcode/gtest.xcodeproj
1405         https://bugs.webkit.org/show_bug.cgi?id=58716
1406
1407         * JavaScriptCore.xcodeproj/project.pbxproj:
1408         * wtf/tests/RunAllWtfTests.cpp: Removed.
1409         * wtf/tests/StringTests.cpp: Removed.
1410
1411 2011-04-15  Oliver Hunt  <oliver@apple.com>
1412
1413         Reviewed by Gavin Barraclough.
1414
1415         Remove DeprecatedPtr
1416         https://bugs.webkit.org/show_bug.cgi?id=58718
1417
1418         As simple as it sounds.
1419
1420         * heap/MarkStack.h:
1421         (JSC::MarkStack::append):
1422         * runtime/JSValue.h:
1423         * runtime/WriteBarrier.h:
1424
1425 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1426
1427         Reviewed by Oliver Hunt.
1428
1429         Add a simple tool to gather statistics on whether functions
1430         are completed through the new or old JIT.
1431
1432         * dfg/DFGNode.h:
1433         * dfg/DFGNonSpeculativeJIT.cpp:
1434         (JSC::DFG::NonSpeculativeJIT::compile):
1435         * dfg/DFGSpeculativeJIT.cpp:
1436         (JSC::DFG::SpeculativeJIT::compile):
1437         * jit/JIT.cpp:
1438         (JSC::JIT::privateCompile):
1439
1440 2011-04-15  Oliver Hunt  <oliver@apple.com>
1441
1442         GC allocate Structure
1443         https://bugs.webkit.org/show_bug.cgi?id=58483
1444
1445         Rolling r83894 r83827 r83810 r83809 r83808 back in with
1446         a workaround for the gcc bug seen by the gtk bots
1447
1448         * API/JSCallbackConstructor.cpp:
1449         (JSC::JSCallbackConstructor::JSCallbackConstructor):
1450         * API/JSCallbackConstructor.h:
1451         (JSC::JSCallbackConstructor::createStructure):
1452         * API/JSCallbackFunction.h:
1453         (JSC::JSCallbackFunction::createStructure):
1454         * API/JSCallbackObject.h:
1455         (JSC::JSCallbackObject::createStructure):
1456         * API/JSCallbackObjectFunctions.h:
1457         (JSC::::JSCallbackObject):
1458         * API/JSContextRef.cpp:
1459         * JavaScriptCore.JSVALUE32_64only.exp:
1460         * JavaScriptCore.JSVALUE64only.exp:
1461         * JavaScriptCore.exp:
1462         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1463         * bytecode/CodeBlock.cpp:
1464         (JSC::CodeBlock::~CodeBlock):
1465         (JSC::CodeBlock::markStructures):
1466         (JSC::CodeBlock::markAggregate):
1467         * bytecode/CodeBlock.h:
1468         (JSC::MethodCallLinkInfo::setSeen):
1469         (JSC::GlobalResolveInfo::GlobalResolveInfo):
1470         * bytecode/Instruction.h:
1471         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
1472         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
1473         (JSC::PolymorphicAccessStructureList::markAggregate):
1474         (JSC::Instruction::Instruction):
1475         * bytecode/StructureStubInfo.cpp:
1476         (JSC::StructureStubInfo::deref):
1477         (JSC::StructureStubInfo::markAggregate):
1478         * bytecode/StructureStubInfo.h:
1479         (JSC::StructureStubInfo::initGetByIdSelf):
1480         (JSC::StructureStubInfo::initGetByIdProto):
1481         (JSC::StructureStubInfo::initGetByIdChain):
1482         (JSC::StructureStubInfo::initPutByIdTransition):
1483         (JSC::StructureStubInfo::initPutByIdReplace):
1484         * debugger/DebuggerActivation.cpp:
1485         (JSC::DebuggerActivation::DebuggerActivation):
1486         * debugger/DebuggerActivation.h:
1487         (JSC::DebuggerActivation::createStructure):
1488         * heap/Handle.h:
1489         * heap/MarkStack.cpp:
1490         (JSC::MarkStack::markChildren):
1491         (JSC::MarkStack::drain):
1492         * heap/MarkedBlock.cpp:
1493         (JSC::MarkedBlock::MarkedBlock):
1494         (JSC::MarkedBlock::sweep):
1495         * heap/Strong.h:
1496         (JSC::Strong::Strong):
1497         (JSC::Strong::set):
1498         * interpreter/Interpreter.cpp:
1499         (JSC::Interpreter::resolveGlobal):
1500         (JSC::Interpreter::resolveGlobalDynamic):
1501         (JSC::Interpreter::tryCachePutByID):
1502         (JSC::Interpreter::uncachePutByID):
1503         (JSC::Interpreter::tryCacheGetByID):
1504         (JSC::Interpreter::uncacheGetByID):
1505         (JSC::Interpreter::privateExecute):
1506         * jit/JIT.h:
1507         * jit/JITPropertyAccess.cpp:
1508         (JSC::JIT::privateCompilePutByIdTransition):
1509         (JSC::JIT::patchMethodCallProto):
1510         (JSC::JIT::privateCompileGetByIdProto):
1511         (JSC::JIT::privateCompileGetByIdSelfList):
1512         (JSC::JIT::privateCompileGetByIdProtoList):
1513         (JSC::JIT::privateCompileGetByIdChainList):
1514         (JSC::JIT::privateCompileGetByIdChain):
1515         * jit/JITPropertyAccess32_64.cpp:
1516         (JSC::JIT::privateCompilePutByIdTransition):
1517         (JSC::JIT::patchMethodCallProto):
1518         (JSC::JIT::privateCompileGetByIdProto):
1519         (JSC::JIT::privateCompileGetByIdSelfList):
1520         (JSC::JIT::privateCompileGetByIdProtoList):
1521         (JSC::JIT::privateCompileGetByIdChainList):
1522         (JSC::JIT::privateCompileGetByIdChain):
1523         * jit/JITStubs.cpp:
1524         (JSC::JITThunks::tryCachePutByID):
1525         (JSC::JITThunks::tryCacheGetByID):
1526         (JSC::DEFINE_STUB_FUNCTION):
1527         (JSC::getPolymorphicAccessStructureListSlot):
1528         * jit/JSInterfaceJIT.h:
1529         (JSC::JSInterfaceJIT::storePtrWithWriteBarrier):
1530         * jsc.cpp:
1531         (cleanupGlobalData):
1532         * runtime/Arguments.h:
1533         (JSC::Arguments::createStructure):
1534         (JSC::Arguments::Arguments):
1535         (JSC::JSActivation::copyRegisters):
1536         * runtime/ArrayConstructor.cpp:
1537         (JSC::ArrayConstructor::ArrayConstructor):
1538         (JSC::constructArrayWithSizeQuirk):
1539         * runtime/ArrayConstructor.h:
1540         * runtime/ArrayPrototype.cpp:
1541         (JSC::ArrayPrototype::ArrayPrototype):
1542         (JSC::arrayProtoFuncSplice):
1543         * runtime/ArrayPrototype.h:
1544         (JSC::ArrayPrototype::createStructure):
1545         * runtime/BatchedTransitionOptimizer.h:
1546         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
1547         * runtime/BooleanConstructor.cpp:
1548         (JSC::BooleanConstructor::BooleanConstructor):
1549         * runtime/BooleanConstructor.h:
1550         * runtime/BooleanObject.cpp:
1551         (JSC::BooleanObject::BooleanObject):
1552         * runtime/BooleanObject.h:
1553         (JSC::BooleanObject::createStructure):
1554         * runtime/BooleanPrototype.cpp:
1555         (JSC::BooleanPrototype::BooleanPrototype):
1556         * runtime/BooleanPrototype.h:
1557         * runtime/DateConstructor.cpp:
1558         (JSC::DateConstructor::DateConstructor):
1559         * runtime/DateConstructor.h:
1560         * runtime/DateInstance.cpp:
1561         (JSC::DateInstance::DateInstance):
1562         * runtime/DateInstance.h:
1563         (JSC::DateInstance::createStructure):
1564         * runtime/DatePrototype.cpp:
1565         (JSC::DatePrototype::DatePrototype):
1566         * runtime/DatePrototype.h:
1567         (JSC::DatePrototype::createStructure):
1568         * runtime/Error.cpp:
1569         (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
1570         * runtime/ErrorConstructor.cpp:
1571         (JSC::ErrorConstructor::ErrorConstructor):
1572         * runtime/ErrorConstructor.h:
1573         * runtime/ErrorInstance.cpp:
1574         (JSC::ErrorInstance::ErrorInstance):
1575         (JSC::ErrorInstance::create):
1576         * runtime/ErrorInstance.h:
1577         (JSC::ErrorInstance::createStructure):
1578         * runtime/ErrorPrototype.cpp:
1579         (JSC::ErrorPrototype::ErrorPrototype):
1580         * runtime/ErrorPrototype.h:
1581         * runtime/ExceptionHelpers.cpp:
1582         (JSC::InterruptedExecutionError::InterruptedExecutionError):
1583         (JSC::TerminatedExecutionError::TerminatedExecutionError):
1584         * runtime/Executable.cpp:
1585         * runtime/Executable.h:
1586         (JSC::ExecutableBase::ExecutableBase):
1587         (JSC::ExecutableBase::createStructure):
1588         (JSC::NativeExecutable::createStructure):
1589         (JSC::NativeExecutable::NativeExecutable):
1590         (JSC::ScriptExecutable::ScriptExecutable):
1591         (JSC::EvalExecutable::createStructure):
1592         (JSC::ProgramExecutable::createStructure):
1593         (JSC::FunctionExecutable::createStructure):
1594         * runtime/FunctionConstructor.cpp:
1595         (JSC::FunctionConstructor::FunctionConstructor):
1596         * runtime/FunctionConstructor.h:
1597         * runtime/FunctionPrototype.cpp:
1598         (JSC::FunctionPrototype::FunctionPrototype):
1599         * runtime/FunctionPrototype.h:
1600         (JSC::FunctionPrototype::createStructure):
1601         * runtime/GetterSetter.h:
1602         (JSC::GetterSetter::GetterSetter):
1603         (JSC::GetterSetter::createStructure):
1604         * runtime/InitializeThreading.cpp:
1605         (JSC::initializeThreadingOnce):
1606         * runtime/InternalFunction.cpp:
1607         (JSC::InternalFunction::InternalFunction):
1608         * runtime/InternalFunction.h:
1609         (JSC::InternalFunction::createStructure):
1610         * runtime/JSAPIValueWrapper.h:
1611         (JSC::JSAPIValueWrapper::createStructure):
1612         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
1613         * runtime/JSActivation.cpp:
1614         (JSC::JSActivation::JSActivation):
1615         * runtime/JSActivation.h:
1616         (JSC::JSActivation::createStructure):
1617         * runtime/JSArray.cpp:
1618         (JSC::JSArray::JSArray):
1619         * runtime/JSArray.h:
1620         (JSC::JSArray::createStructure):
1621         * runtime/JSByteArray.cpp:
1622         (JSC::JSByteArray::JSByteArray):
1623         (JSC::JSByteArray::createStructure):
1624         * runtime/JSByteArray.h:
1625         (JSC::JSByteArray::JSByteArray):
1626         * runtime/JSCell.cpp:
1627         (JSC::isZombie):
1628         * runtime/JSCell.h:
1629         (JSC::JSCell::JSCell::JSCell):
1630         (JSC::JSCell::JSCell::addressOfStructure):
1631         (JSC::JSCell::JSCell::structure):
1632         (JSC::JSCell::JSCell::markChildren):
1633         (JSC::JSCell::JSValue::isZombie):
1634         * runtime/JSFunction.cpp:
1635         (JSC::JSFunction::JSFunction):
1636         * runtime/JSFunction.h:
1637         (JSC::JSFunction::createStructure):
1638         * runtime/JSGlobalData.cpp:
1639         (JSC::JSGlobalData::storeVPtrs):
1640         (JSC::JSGlobalData::JSGlobalData):
1641         (JSC::JSGlobalData::clearBuiltinStructures):
1642         (JSC::JSGlobalData::createLeaked):
1643         * runtime/JSGlobalData.h:
1644         (JSC::allocateGlobalHandle):
1645         * runtime/JSGlobalObject.cpp:
1646         (JSC::JSGlobalObject::reset):
1647         (JSC::JSGlobalObject::markChildren):
1648         (JSC::JSGlobalObject::copyGlobalsFrom):
1649         * runtime/JSGlobalObject.h:
1650         (JSC::JSGlobalObject::JSGlobalObject):
1651         (JSC::JSGlobalObject::createStructure):
1652         (JSC::Structure::prototypeChain):
1653         (JSC::Structure::isValid):
1654         (JSC::constructEmptyArray):
1655         * runtime/JSNotAnObject.h:
1656         (JSC::JSNotAnObject::JSNotAnObject):
1657         (JSC::JSNotAnObject::createStructure):
1658         * runtime/JSONObject.cpp:
1659         (JSC::JSONObject::JSONObject):
1660         * runtime/JSONObject.h:
1661         (JSC::JSONObject::createStructure):
1662         * runtime/JSObject.cpp:
1663         (JSC::JSObject::defineGetter):
1664         (JSC::JSObject::defineSetter):
1665         (JSC::JSObject::seal):
1666         (JSC::JSObject::freeze):
1667         (JSC::JSObject::preventExtensions):
1668         (JSC::JSObject::removeDirect):
1669         (JSC::JSObject::createInheritorID):
1670         * runtime/JSObject.h:
1671         (JSC::JSObject::createStructure):
1672         (JSC::JSObject::JSObject):
1673         (JSC::JSNonFinalObject::createStructure):
1674         (JSC::JSNonFinalObject::JSNonFinalObject):
1675         (JSC::JSFinalObject::create):
1676         (JSC::JSFinalObject::createStructure):
1677         (JSC::JSFinalObject::JSFinalObject):
1678         (JSC::constructEmptyObject):
1679         (JSC::createEmptyObjectStructure):
1680         (JSC::JSObject::~JSObject):
1681         (JSC::JSObject::setPrototype):
1682         (JSC::JSObject::setStructure):
1683         (JSC::JSObject::inheritorID):
1684         (JSC::JSObject::putDirectInternal):
1685         (JSC::JSObject::transitionTo):
1686         (JSC::JSObject::markChildrenDirect):
1687         * runtime/JSObjectWithGlobalObject.cpp:
1688         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
1689         * runtime/JSObjectWithGlobalObject.h:
1690         (JSC::JSObjectWithGlobalObject::createStructure):
1691         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
1692         * runtime/JSPropertyNameIterator.cpp:
1693         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1694         (JSC::JSPropertyNameIterator::create):
1695         (JSC::JSPropertyNameIterator::get):
1696         * runtime/JSPropertyNameIterator.h:
1697         (JSC::JSPropertyNameIterator::createStructure):
1698         (JSC::JSPropertyNameIterator::setCachedStructure):
1699         (JSC::Structure::setEnumerationCache):
1700         * runtime/JSStaticScopeObject.h:
1701         (JSC::JSStaticScopeObject::JSStaticScopeObject):
1702         (JSC::JSStaticScopeObject::createStructure):
1703         * runtime/JSString.h:
1704         (JSC::RopeBuilder::JSString):
1705         (JSC::RopeBuilder::createStructure):
1706         * runtime/JSType.h:
1707         * runtime/JSTypeInfo.h:
1708         (JSC::TypeInfo::TypeInfo):
1709         * runtime/JSValue.h:
1710         * runtime/JSVariableObject.h:
1711         (JSC::JSVariableObject::createStructure):
1712         (JSC::JSVariableObject::JSVariableObject):
1713         (JSC::JSVariableObject::copyRegisterArray):
1714         * runtime/JSWrapperObject.h:
1715         (JSC::JSWrapperObject::createStructure):
1716         (JSC::JSWrapperObject::JSWrapperObject):
1717         * runtime/JSZombie.cpp:
1718         * runtime/JSZombie.h:
1719         (JSC::JSZombie::JSZombie):
1720         (JSC::JSZombie::createStructure):
1721         * runtime/MathObject.cpp:
1722         (JSC::MathObject::MathObject):
1723         * runtime/MathObject.h:
1724         (JSC::MathObject::createStructure):
1725         * runtime/NativeErrorConstructor.cpp:
1726         (JSC::NativeErrorConstructor::NativeErrorConstructor):
1727         (JSC::NativeErrorConstructor::markChildren):
1728         (JSC::constructWithNativeErrorConstructor):
1729         * runtime/NativeErrorConstructor.h:
1730         (JSC::NativeErrorConstructor::createStructure):
1731         * runtime/NativeErrorPrototype.cpp:
1732         (JSC::NativeErrorPrototype::NativeErrorPrototype):
1733         * runtime/NativeErrorPrototype.h:
1734         * runtime/NumberConstructor.cpp:
1735         (JSC::NumberConstructor::NumberConstructor):
1736         * runtime/NumberConstructor.h:
1737         (JSC::NumberConstructor::createStructure):
1738         * runtime/NumberObject.cpp:
1739         (JSC::NumberObject::NumberObject):
1740         * runtime/NumberObject.h:
1741         (JSC::NumberObject::createStructure):
1742         * runtime/NumberPrototype.cpp:
1743         (JSC::NumberPrototype::NumberPrototype):
1744         * runtime/NumberPrototype.h:
1745         * runtime/ObjectConstructor.cpp:
1746         (JSC::ObjectConstructor::ObjectConstructor):
1747         * runtime/ObjectConstructor.h:
1748         (JSC::ObjectConstructor::createStructure):
1749         * runtime/ObjectPrototype.cpp:
1750         (JSC::ObjectPrototype::ObjectPrototype):
1751         * runtime/ObjectPrototype.h:
1752         * runtime/PropertyMapHashTable.h:
1753         (JSC::PropertyTable::PropertyTable):
1754         * runtime/RegExpConstructor.cpp:
1755         (JSC::RegExpConstructor::RegExpConstructor):
1756         (JSC::RegExpMatchesArray::RegExpMatchesArray):
1757         * runtime/RegExpConstructor.h:
1758         (JSC::RegExpConstructor::createStructure):
1759         * runtime/RegExpObject.cpp:
1760         (JSC::RegExpObject::RegExpObject):
1761         * runtime/RegExpObject.h:
1762         (JSC::RegExpObject::createStructure):
1763         * runtime/RegExpPrototype.cpp:
1764         (JSC::RegExpPrototype::RegExpPrototype):
1765         * runtime/RegExpPrototype.h:
1766         * runtime/ScopeChain.h:
1767         (JSC::ScopeChainNode::ScopeChainNode):
1768         (JSC::ScopeChainNode::createStructure):
1769         * runtime/StrictEvalActivation.cpp:
1770         (JSC::StrictEvalActivation::StrictEvalActivation):
1771         * runtime/StringConstructor.cpp:
1772         (JSC::StringConstructor::StringConstructor):
1773         * runtime/StringConstructor.h:
1774         * runtime/StringObject.cpp:
1775         (JSC::StringObject::StringObject):
1776         * runtime/StringObject.h:
1777         (JSC::StringObject::createStructure):
1778         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1779         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
1780         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1781         * runtime/StringPrototype.cpp:
1782         (JSC::StringPrototype::StringPrototype):
1783         * runtime/StringPrototype.h:
1784         (JSC::StringPrototype::createStructure):
1785         * runtime/Structure.cpp:
1786         (JSC::StructureTransitionTable::remove):
1787         (JSC::StructureTransitionTable::add):
1788         (JSC::Structure::Structure):
1789         (JSC::Structure::~Structure):
1790         (JSC::Structure::materializePropertyMap):
1791         (JSC::Structure::addPropertyTransitionToExistingStructure):
1792         (JSC::Structure::addPropertyTransition):
1793         (JSC::Structure::removePropertyTransition):
1794         (JSC::Structure::changePrototypeTransition):
1795         (JSC::Structure::despecifyFunctionTransition):
1796         (JSC::Structure::getterSetterTransition):
1797         (JSC::Structure::toDictionaryTransition):
1798         (JSC::Structure::toCacheableDictionaryTransition):
1799         (JSC::Structure::toUncacheableDictionaryTransition):
1800         (JSC::Structure::sealTransition):
1801         (JSC::Structure::freezeTransition):
1802         (JSC::Structure::preventExtensionsTransition):
1803         (JSC::Structure::flattenDictionaryStructure):
1804         (JSC::Structure::copyPropertyTable):
1805         (JSC::Structure::put):
1806         (JSC::Structure::markChildren):
1807         * runtime/Structure.h:
1808         (JSC::Structure::create):
1809         (JSC::Structure::setPrototypeWithoutTransition):
1810         (JSC::Structure::createStructure):
1811         (JSC::JSCell::createDummyStructure):
1812         (JSC::StructureTransitionTable::keyForWeakGCMapFinalizer):
1813         * runtime/StructureChain.cpp:
1814         (JSC::StructureChain::StructureChain):
1815         (JSC::StructureChain::markChildren):
1816         * runtime/StructureChain.h:
1817         (JSC::StructureChain::create):
1818         (JSC::StructureChain::head):
1819         (JSC::StructureChain::createStructure):
1820         * runtime/StructureTransitionTable.h:
1821         (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::finalizerContextFor):
1822         (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::keyForFinalizer):
1823         (JSC::StructureTransitionTable::~StructureTransitionTable):
1824         (JSC::StructureTransitionTable::slot):
1825         (JSC::StructureTransitionTable::setMap):
1826         (JSC::StructureTransitionTable::singleTransition):
1827         (JSC::StructureTransitionTable::clearSingleTransition):
1828         (JSC::StructureTransitionTable::setSingleTransition):
1829         * runtime/WeakGCMap.h:
1830         (JSC::DefaultWeakGCMapFinalizerCallback::finalizerContextFor):
1831         (JSC::DefaultWeakGCMapFinalizerCallback::keyForFinalizer):
1832         (JSC::WeakGCMap::contains):
1833         (JSC::WeakGCMap::find):
1834         (JSC::WeakGCMap::remove):
1835         (JSC::WeakGCMap::add):
1836         (JSC::WeakGCMap::set):
1837         (JSC::WeakGCMap::finalize):
1838         * runtime/WriteBarrier.h:
1839         (JSC::writeBarrier):
1840         (JSC::WriteBarrierBase::set):
1841         (JSC::WriteBarrierBase::operator*):
1842         (JSC::WriteBarrierBase::operator->):
1843         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
1844
1845 2011-04-15  Fridrich Strba  <fridrich.strba@bluewin.ch>
1846
1847         Reviewed by Gavin Barraclough.
1848
1849         Correctly prefix symbols. Since gcc 4.5.0, Windows x64 symbols
1850         are not prefixed by underscore anymore. This is consistent with
1851         what MSVC does.
1852         https://bugs.webkit.org/show_bug.cgi?id=58573
1853
1854         * jit/JITStubs.cpp:
1855
1856 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1857
1858         Reviewed by Geoff Garen.
1859
1860         Bug 58705 - DFG JIT Add support for flow control (branch, jump).
1861
1862         Add support for control flow by breaking the CodeBlock up into multiple
1863         basic blocks, generating code for each basic block in turn through the
1864         speculative JIT & then the non-speculative JIT.
1865
1866         * dfg/DFGByteCodeParser.cpp:
1867         (JSC::DFG::ByteCodeParser::setTemporary):
1868         (JSC::DFG::ByteCodeParser::addToGraph):
1869         (JSC::DFG::ByteCodeParser::parseBlock):
1870         (JSC::DFG::ByteCodeParser::parse):
1871         * dfg/DFGGraph.cpp:
1872         (JSC::DFG::Graph::dump):
1873         * dfg/DFGGraph.h:
1874         (JSC::DFG::BasicBlock::BasicBlock):
1875         (JSC::DFG::BasicBlock::getBytecodeOffset):
1876         (JSC::DFG::Graph::blockIndexForBytecodeOffset):
1877         * dfg/DFGJITCodeGenerator.h:
1878         (JSC::DFG::JITCodeGenerator::JITCodeGenerator):
1879         (JSC::DFG::JITCodeGenerator::addBranch):
1880         (JSC::DFG::JITCodeGenerator::linkBranches):
1881         (JSC::DFG::JITCodeGenerator::BranchRecord::BranchRecord):
1882         * dfg/DFGNode.h:
1883         (JSC::DFG::Node::Node):
1884         (JSC::DFG::Node::isJump):
1885         (JSC::DFG::Node::isBranch):
1886         (JSC::DFG::Node::takenBytecodeOffset):
1887         (JSC::DFG::Node::notTakenBytecodeOffset):
1888         * dfg/DFGNonSpeculativeJIT.cpp:
1889         (JSC::DFG::NonSpeculativeJIT::compile):
1890         * dfg/DFGNonSpeculativeJIT.h:
1891         * dfg/DFGSpeculativeJIT.cpp:
1892         (JSC::DFG::SpeculativeJIT::compile):
1893         * dfg/DFGSpeculativeJIT.h:
1894
1895 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1896
1897         Reviewed by Geoff Garen.
1898
1899         Bug 58701 - DFG JIT - add GetLocal/SetLocal nodes
1900
1901         Use these for both access to arguments & local variables, adds ability
1902         to set locals, such that values will persist between basic blocks.
1903
1904         * dfg/DFGByteCodeParser.cpp:
1905         (JSC::DFG::ByteCodeParser::ByteCodeParser):
1906         (JSC::DFG::ByteCodeParser::get):
1907         (JSC::DFG::ByteCodeParser::set):
1908         (JSC::DFG::ByteCodeParser::getVariable):
1909         (JSC::DFG::ByteCodeParser::setVariable):
1910         (JSC::DFG::ByteCodeParser::getArgument):
1911         (JSC::DFG::ByteCodeParser::setArgument):
1912         (JSC::DFG::ByteCodeParser::getThis):
1913         (JSC::DFG::ByteCodeParser::setThis):
1914         (JSC::DFG::ByteCodeParser::VariableRecord::VariableRecord):
1915         (JSC::DFG::ByteCodeParser::parseBlock):
1916         * dfg/DFGGraph.cpp:
1917         (JSC::DFG::Graph::dump):
1918         (JSC::DFG::Graph::derefChildren):
1919         * dfg/DFGGraph.h:
1920         (JSC::DFG::Graph::ref):
1921         (JSC::DFG::Graph::deref):
1922         * dfg/DFGNode.h:
1923         (JSC::DFG::Node::hasLocal):
1924         (JSC::DFG::Node::local):
1925         * dfg/DFGNonSpeculativeJIT.cpp:
1926         (JSC::DFG::NonSpeculativeJIT::compile):
1927         * dfg/DFGSpeculativeJIT.cpp:
1928         (JSC::DFG::SpeculativeJIT::compile):
1929
1930 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1931
1932         Reviewed by Sam Weinig.
1933
1934         Bug 58696 - DFG JIT split handling of vars/temporaries
1935
1936         Presently all callee registers are treated as having single block scope,
1937         since the DFG JIT can only compile single block functions. In order to
1938         expand the JIT to support control flow we will need to change to retaining
1939         locals (but not temporaries) across basic block boundaries.
1940
1941         * dfg/DFGByteCodeParser.cpp:
1942         (JSC::DFG::ByteCodeParser::ByteCodeParser):
1943         (JSC::DFG::ByteCodeParser::get):
1944         (JSC::DFG::ByteCodeParser::set):
1945         (JSC::DFG::ByteCodeParser::getVariable):
1946         (JSC::DFG::ByteCodeParser::setVariable):
1947         (JSC::DFG::ByteCodeParser::getTemporary):
1948         (JSC::DFG::ByteCodeParser::setTemporary):
1949         (JSC::DFG::ByteCodeParser::getArgument):
1950         (JSC::DFG::ByteCodeParser::getInt32Constant):
1951         (JSC::DFG::ByteCodeParser::getDoubleConstant):
1952         (JSC::DFG::ByteCodeParser::getJSConstant):
1953         (JSC::DFG::ByteCodeParser::constantUndefined):
1954         (JSC::DFG::ByteCodeParser::constantNull):
1955         (JSC::DFG::ByteCodeParser::one):
1956         (JSC::DFG::ByteCodeParser::parseBlock):
1957         (JSC::DFG::ByteCodeParser::parse):
1958         (JSC::DFG::parse):
1959         * dfg/DFGNode.h:
1960         * dfg/DFGScoreBoard.h:
1961         (JSC::DFG::ScoreBoard::ScoreBoard):
1962         (JSC::DFG::ScoreBoard::~ScoreBoard):
1963         (JSC::DFG::ScoreBoard::allocate):
1964         (JSC::DFG::ScoreBoard::use):
1965
1966 2011-04-15  Michael Saboff  <msaboff@apple.com>
1967
1968         Reviewed by Oliver Hunt.
1969
1970         globalObject moved to JSObjectWithGlobalObject.cpp inhibits inlining
1971         https://bugs.webkit.org/show_bug.cgi?id=58677
1972
1973         Moved JSObjectWithGlobalObject::globalObject() to 
1974         runtime/JSObjectWithGlobalObject.h to allow the compiler to inline
1975         it for a performance benefit.  An equivalent instance had been in
1976         a header file before r60057.
1977
1978         * JavaScriptCore.exp:
1979         * runtime/JSObjectWithGlobalObject.cpp:
1980         * runtime/JSObjectWithGlobalObject.h:
1981         (JSC::JSObjectWithGlobalObject::globalObject):
1982
1983 2011-04-14  Oliver Hunt  <oliver@apple.com>
1984
1985         Reviewed by Geoffrey Garen.
1986
1987         Make JSNodeFilterCondition handle its lifetime correctly
1988         https://bugs.webkit.org/show_bug.cgi?id=58622
1989
1990         Add export
1991
1992         * JavaScriptCore.exp:
1993
1994 2011-04-14  Alexey Proskuryakov  <ap@apple.com>
1995
1996         Reviewed by Dan Bernstein.
1997
1998         WebKit2: Password field input does not switch to ASCII-compatible source
1999         https://bugs.webkit.org/show_bug.cgi?id=58583
2000         <rdar://problem/9059651>
2001
2002         * wtf/Platform.h: Removed WTF_USE_CARBON_SECURE_INPUT_MODE. It's now only used by Chromium,
2003         and shouldn't be enabled on any other platforms, so there is no reason to make it
2004         configurable via Platform.h.
2005
2006 2011-04-15  Dmitry Lomov  <dslomov@google.com>
2007
2008         Reviewed by David Levin.
2009
2010         Add a sample test case for GTest framework
2011         https://bugs.webkit.org/show_bug.cgi?id=58509
2012
2013         Add an example of GTest testcase, complete with a runner, to JavaScriptCore.
2014
2015         * JavaScriptCore.xcodeproj/project.pbxproj:
2016         * wtf/tests/RunAllWtfTests.cpp: Added.
2017         (main):
2018         * wtf/tests/StringTests.cpp: Added.
2019
2020 2011-04-15  Anna Cavender  <annacc@chromium.org>
2021
2022         Reviewed by Eric Carlson.
2023
2024         Renaming TRACK feature define to VIDEO_TRACK
2025         https://bugs.webkit.org/show_bug.cgi?id=53556
2026
2027         * Configurations/FeatureDefines.xcconfig:
2028
2029 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2030
2031         Rubber stamped by Geoffrey Garen.
2032
2033         Hide DFG_JIT_RESTRICTIONS behind ARITHMETIC_OP() macro, and rename
2034         m_regressionGuard to m_parseFailed, such that it can be reused for
2035         other failure cases.
2036
2037         * dfg/DFGByteCodeParser.cpp:
2038         (JSC::DFG::ByteCodeParser::ByteCodeParser):
2039         (JSC::DFG::ByteCodeParser::parse):
2040
2041 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2042
2043         Reviewed by Geoffrey Garen.
2044
2045         Bug 58620 - DFG JIT - loading of arguments should not be lazy
2046
2047         This optimization is overly simplistic. It only works because we never
2048         write out definitions to arguments (since we currently only compile
2049         single block functions). Revert this for now, we may want to reintroduce
2050         something like this again in the future, but it will need to be aware
2051         how to schedule definitions to arguments versus lazy loads that have not
2052         yet been performed.
2053
2054         * dfg/DFGGenerationInfo.h:
2055         (JSC::DFG::GenerationInfo::needsSpill):
2056         * dfg/DFGGraph.cpp:
2057         (JSC::DFG::Graph::dump):
2058         * dfg/DFGGraph.h:
2059         * dfg/DFGJITCodeGenerator.cpp:
2060         (JSC::DFG::JITCodeGenerator::fillInteger):
2061         (JSC::DFG::JITCodeGenerator::fillDouble):
2062         (JSC::DFG::JITCodeGenerator::fillJSValue):
2063         * dfg/DFGJITCodeGenerator.h:
2064         (JSC::DFG::JITCodeGenerator::initConstantInfo):
2065         * dfg/DFGJITCompiler.cpp:
2066         (JSC::DFG::JITCompiler::fillNumericToDouble):
2067         (JSC::DFG::JITCompiler::fillInt32ToInteger):
2068         (JSC::DFG::JITCompiler::fillToJS):
2069         * dfg/DFGNonSpeculativeJIT.cpp:
2070         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
2071         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
2072         (JSC::DFG::NonSpeculativeJIT::compile):
2073         * dfg/DFGSpeculativeJIT.cpp:
2074         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
2075         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
2076         (JSC::DFG::SpeculativeJIT::compile):
2077
2078 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2079
2080         Reviewed by Geoffrey Garen.
2081
2082         Bug 58600 - DFG JIT bugs in ValueToInt, PutByVal
2083
2084         The bug in PutByVal is that an operand is in JSValueOperand - when this
2085         locks an integer into a register it will always retag the value without
2086         checking if the register is already locked. This is a problem where the
2087         value being stored by a PutByVal is the same as the subscript.
2088         The subscript is locked into a register first, as a strict integer.
2089         Locking the value results in the subscript being modified.
2090
2091         The bug in ValueToInt related to the function of sillentFillAllRegisters.
2092         The problem is that this method will restore all register values from
2093         prior to the call, overwriting the result of the call out. Allow a
2094         register to be passed to specifically be excluded from being preserved.
2095
2096         * assembler/ARMAssembler.h:
2097         (JSC::ARMAssembler::debugOffset):
2098         * assembler/ARMv7Assembler.h:
2099         (JSC::ARMv7Assembler::ARMInstructionFormatter::debugOffset):
2100         * assembler/AbstractMacroAssembler.h:
2101         (JSC::AbstractMacroAssembler::debugOffset):
2102         * assembler/AssemblerBuffer.h:
2103         (JSC::AssemblerBuffer::debugOffset):
2104         * assembler/LinkBuffer.h:
2105         (JSC::LinkBuffer::debugAddress):
2106         * assembler/MIPSAssembler.h:
2107         (JSC::MIPSAssembler::debugOffset):
2108         * assembler/MacroAssemblerX86_64.h:
2109         (JSC::MacroAssemblerX86_64::orPtr):
2110         * assembler/X86Assembler.h:
2111         (JSC::X86Assembler::debugOffset):
2112         (JSC::X86Assembler::X86InstructionFormatter::debugOffset):
2113         * dfg/DFGByteCodeParser.cpp:
2114         (JSC::DFG::ByteCodeParser::parse):
2115         * dfg/DFGGenerationInfo.h:
2116         * dfg/DFGJITCodeGenerator.cpp:
2117         (JSC::DFG::JITCodeGenerator::fillJSValue):
2118         * dfg/DFGJITCodeGenerator.h:
2119         (JSC::DFG::JITCodeGenerator::isConstant):
2120         * dfg/DFGJITCompiler.cpp:
2121         (JSC::DFG::JITCompiler::compileFunction):
2122         * dfg/DFGJITCompiler.h:
2123         (JSC::DFG::JITCompiler::isConstant):
2124         * dfg/DFGNonSpeculativeJIT.cpp:
2125         (JSC::DFG::NonSpeculativeJIT::valueToNumber):
2126         (JSC::DFG::NonSpeculativeJIT::valueToInt32):
2127         (JSC::DFG::NonSpeculativeJIT::numberToInt32):
2128         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
2129         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
2130         (JSC::DFG::NonSpeculativeJIT::compile):
2131         * dfg/DFGNonSpeculativeJIT.h:
2132         (JSC::DFG::NonSpeculativeJIT::silentSpillGPR):
2133         (JSC::DFG::NonSpeculativeJIT::silentSpillFPR):
2134         (JSC::DFG::NonSpeculativeJIT::silentFillGPR):
2135         (JSC::DFG::NonSpeculativeJIT::silentFillFPR):
2136         (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters):
2137         (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters):
2138         * dfg/DFGSpeculativeJIT.cpp:
2139         (JSC::DFG::SpeculativeJIT::compile):
2140
2141 2011-04-14  Geoffrey Garen  <ggaren@apple.com>
2142
2143         Reviewed by Oliver Hunt.
2144
2145         Drain the mark stack while marking weak handles, not after.
2146         https://bugs.webkit.org/show_bug.cgi?id=58574
2147
2148         Otherwise, items that would have caused more weak handle marking are
2149         processed after all weak handle marking has finished, and referenced
2150         weak handles get recycled.
2151
2152         * heap/HandleHeap.cpp:
2153         (JSC::HandleHeap::markWeakHandles): Removed looping from here, since we
2154         want Heap::markRoots to be responsible for draining the mark stack.
2155
2156         * heap/Heap.cpp:
2157         (JSC::Heap::markRoots): Moved looping to here, as explained above.
2158         
2159         For efficiency's sake, drain the mark stack before starting to mark weak
2160         handles. Otherwise, items drained while marking weak handles may force
2161         an extra trip through the weak handle list.
2162
2163         For correctness's sake, drain the mark stack each time through the weak
2164         handle list. Otherwise, opaque roots that would make weak handles reachable
2165         are not discovered until after weak handle marking is over.
2166
2167 2011-04-14  Oliver Hunt  <oliver@apple.com>
2168
2169         Reviewed by Geoffrey Garen.
2170
2171         Make protected object list in caches window reflect reality
2172         https://bugs.webkit.org/show_bug.cgi?id=58565
2173
2174         Make sure the heap includes objects protected by Strong handles
2175         in its list of protected objects.
2176
2177         * heap/HandleHeap.h:
2178         * heap/Heap.cpp:
2179         (JSC::HandleHeap::protectedObjectTypeCounts):
2180
2181 2011-04-14  Satish Sampath  <satish@chromium.org>
2182
2183         Reviewed by Anders Carlsson.
2184
2185         Don't emit RegExp tables for chromium where they are not used
2186         https://bugs.webkit.org/show_bug.cgi?id=58544
2187
2188         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2189         * create_regex_tables: Added the "--notables" command line argument.
2190
2191 2011-04-13  Geoffrey Garen  <ggaren@apple.com>
2192
2193         Try to fix ASSERTs seen on Windows bots.
2194
2195         * wtf/HashTable.h:
2196         (WTF::hashTableSwap): Force MSVC to use the right version of swap.
2197
2198 2011-04-13  Ryuan Choi  <ryuan.choi@samsung.com>
2199
2200         Reviewed by Kenneth Rohde Christiansen.
2201
2202         [CMAKE] Separate DerivedSources.
2203         https://bugs.webkit.org/show_bug.cgi?id=58427
2204
2205         * CMakeLists.txt: Change DERIVED_SOURCES_DIR to DERIVED_SOURCES_JAVASCRIPTCORE_DIR.
2206
2207 2011-04-13  Geoffrey Garen  <ggaren@apple.com>
2208
2209         Reviewed by Oliver Hunt.
2210
2211         Switched DOM wrappers to use HashMap of Weak<T> instead of WeakGCMap<T>
2212         https://bugs.webkit.org/show_bug.cgi?id=58482
2213         
2214         This will allow wrappers to make individual decisions about their lifetimes.
2215
2216         * heap/HandleHeap.h:
2217         (JSC::HandleHeap::copyWeak): New function for copying a weak handle.
2218         It's wasn't previously possible to perform this operation using HandleHeap
2219         API because the HandleHeap doesn't expose its underlying Node structure.
2220
2221         * heap/Local.h:
2222         (JSC::::set):
2223         * heap/Strong.h:
2224         (JSC::Strong::set): Added ASSERTs to verify that dead objects are not
2225         resurrected by placement into handles.
2226
2227         (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table
2228         is efficient.
2229
2230         * heap/Weak.h:
2231         (JSC::Weak::Weak): Fixed a bug where copying a weak pointer would not
2232         copy its weak callback and context.
2233
2234         (JSC::Weak::operator=): Added an assignment operator, since the default
2235         C++ assignment operator did the wrong thing.
2236
2237         (JSC::Weak::set): Added ASSERTs to verify that dead objects are not
2238         resurrected by placement into handles.
2239
2240         (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table
2241         is efficient, and can be done without copying, which is illegal during
2242         the handle finalization phase.
2243
2244 2011-04-13  Oliver Hunt  <oliver@apple.com>
2245
2246         Reviewed by Gavin Barraclough.
2247
2248         Make PropertyMapEntry use a WriteBarrier for specificValue
2249         https://bugs.webkit.org/show_bug.cgi?id=58407
2250
2251         Make PropertyMapEntry use a WriteBarrier for specificValue, and then
2252         propagate the required JSGlobalData through all the methods it ends
2253         up being needed.
2254
2255         * API/JSClassRef.cpp:
2256         (OpaqueJSClass::prototype):
2257         * API/JSContextRef.cpp:
2258         * API/JSObjectRef.cpp:
2259         (JSObjectMake):
2260         (JSObjectSetPrototype):
2261         * JavaScriptCore.exp:
2262         * bytecompiler/BytecodeGenerator.cpp:
2263         (JSC::BytecodeGenerator::BytecodeGenerator):
2264         * interpreter/Interpreter.cpp:
2265         (JSC::appendSourceToError):
2266         (JSC::Interpreter::tryCacheGetByID):
2267         (JSC::Interpreter::privateExecute):
2268         * jit/JITStubs.cpp:
2269         (JSC::JITThunks::tryCacheGetByID):
2270         (JSC::DEFINE_STUB_FUNCTION):
2271         * runtime/BatchedTransitionOptimizer.h:
2272         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2273         * runtime/InternalFunction.cpp:
2274         (JSC::InternalFunction::name):
2275         (JSC::InternalFunction::displayName):
2276         * runtime/JSActivation.cpp:
2277         (JSC::JSActivation::getOwnPropertySlot):
2278         * runtime/JSFunction.cpp:
2279         (JSC::JSFunction::name):
2280         (JSC::JSFunction::displayName):
2281         (JSC::JSFunction::getOwnPropertySlot):
2282         * runtime/JSGlobalObject.cpp:
2283         (JSC::JSGlobalObject::putWithAttributes):
2284         (JSC::JSGlobalObject::reset):
2285         (JSC::JSGlobalObject::resetPrototype):
2286         * runtime/JSGlobalObject.h:
2287         * runtime/JSObject.cpp:
2288         (JSC::JSObject::put):
2289         (JSC::JSObject::deleteProperty):
2290         (JSC::JSObject::defineGetter):
2291         (JSC::JSObject::defineSetter):
2292         (JSC::JSObject::lookupGetter):
2293         (JSC::JSObject::lookupSetter):
2294         (JSC::JSObject::getPropertySpecificValue):
2295         (JSC::JSObject::getOwnPropertyNames):
2296         (JSC::JSObject::seal):
2297         (JSC::JSObject::freeze):
2298         (JSC::JSObject::preventExtensions):
2299         (JSC::JSObject::removeDirect):
2300         (JSC::JSObject::getOwnPropertyDescriptor):
2301         (JSC::JSObject::defineOwnProperty):
2302         * runtime/JSObject.h:
2303         (JSC::JSObject::getDirect):
2304         (JSC::JSObject::getDirectLocation):
2305         (JSC::JSObject::isSealed):
2306         (JSC::JSObject::isFrozen):
2307         (JSC::JSObject::setPrototypeWithCycleCheck):
2308         (JSC::JSObject::setPrototype):
2309         (JSC::JSObject::inlineGetOwnPropertySlot):
2310         (JSC::JSObject::putDirectInternal):
2311         (JSC::JSObject::putDirectWithoutTransition):
2312         (JSC::JSObject::putDirectFunctionWithoutTransition):
2313         * runtime/Lookup.cpp:
2314         (JSC::setUpStaticFunctionSlot):
2315         * runtime/ObjectConstructor.cpp:
2316         (JSC::objectConstructorCreate):
2317         (JSC::objectConstructorSeal):
2318         (JSC::objectConstructorFreeze):
2319         (JSC::objectConstructorPreventExtensions):
2320         (JSC::objectConstructorIsSealed):
2321         (JSC::objectConstructorIsFrozen):
2322         * runtime/Operations.h:
2323         (JSC::normalizePrototypeChain):
2324         * runtime/PropertyMapHashTable.h:
2325         (JSC::PropertyMapEntry::PropertyMapEntry):
2326         (JSC::PropertyTable::PropertyTable):
2327         (JSC::PropertyTable::copy):
2328         * runtime/Structure.cpp:
2329         (JSC::Structure::materializePropertyMap):
2330         (JSC::Structure::despecifyDictionaryFunction):
2331         (JSC::Structure::addPropertyTransition):
2332         (JSC::Structure::removePropertyTransition):
2333         (JSC::Structure::changePrototypeTransition):
2334         (JSC::Structure::despecifyFunctionTransition):
2335         (JSC::Structure::getterSetterTransition):
2336         (JSC::Structure::toDictionaryTransition):
2337         (JSC::Structure::toCacheableDictionaryTransition):
2338         (JSC::Structure::toUncacheableDictionaryTransition):
2339         (JSC::Structure::sealTransition):
2340         (JSC::Structure::freezeTransition):
2341         (JSC::Structure::preventExtensionsTransition):
2342         (JSC::Structure::isSealed):
2343         (JSC::Structure::isFrozen):
2344         (JSC::Structure::addPropertyWithoutTransition):
2345         (JSC::Structure::removePropertyWithoutTransition):
2346         (JSC::Structure::copyPropertyTable):
2347         (JSC::Structure::get):
2348         (JSC::Structure::despecifyFunction):
2349         (JSC::Structure::despecifyAllFunctions):
2350         (JSC::Structure::put):
2351         (JSC::Structure::getPropertyNames):
2352         * runtime/Structure.h:
2353         (JSC::Structure::get):
2354         (JSC::Structure::materializePropertyMapIfNecessary):
2355
2356 2011-04-13  Paul Knight  <pknight@apple.com>
2357
2358         Reviewed by Gavin Barraclough.
2359
2360         BACKTRACE() macro should check for Debug configuration in macro, not WTFReportBacktrace definition
2361         https://bugs.webkit.org/show_bug.cgi?id=58405
2362
2363         The BACKTRACE() macro requires JavaScriptCore be built with a Debug
2364         configuration in order for it to be enabled. Move the NDEBUG check to
2365         the header so it will be enabled when the calling framework or
2366         application is built with a Debug configuration, similar to how
2367         ASSERT() and friends work.
2368
2369         * wtf/Assertions.cpp:
2370         * wtf/Assertions.h:
2371
2372 2011-04-12  Ben Taylor  <bentaylor.solx86@gmail.com>
2373
2374         Reviewed by Alexey Proskuryakov.
2375
2376         https://bugs.webkit.org/show_bug.cgi?id=58131
2377
2378         Provide a workaround for an obscure Studio 12 compiler bug, which
2379         couldn't call src->~T() on a const T *src.
2380
2381         * wtf/Vector.h:
2382
2383 2011-04-12  Gavin Barraclough  <barraclough@apple.com>
2384
2385         Reviewed by Oliver Hunt.
2386
2387         https://bugs.webkit.org/show_bug.cgi?id=58395
2388         Exceptions thrown from property getters called from Array prototype functions can be missed
2389
2390         This is caught by an ASSERT in the top of Interpreter::executeCall.
2391         Check for exceptions after accessing properties that could be getters.
2392
2393         * runtime/ArrayPrototype.cpp:
2394         (JSC::arrayProtoFuncSort):
2395         (JSC::arrayProtoFuncFilter):
2396         (JSC::arrayProtoFuncMap):
2397         (JSC::arrayProtoFuncEvery):
2398         (JSC::arrayProtoFuncForEach):
2399         (JSC::arrayProtoFuncSome):
2400         (JSC::arrayProtoFuncReduce):
2401         (JSC::arrayProtoFuncReduceRight):
2402             - Add exception checks.
2403
2404 2011-04-12  Oliver Hunt  <oliver@apple.com>
2405
2406         Reviewed by Geoffrey Garen.
2407
2408         Make API callback objects use weak handles to run their finalizers
2409         https://bugs.webkit.org/show_bug.cgi?id=58389
2410
2411         Make the API object's private data struct act as a finalizer for
2412         an api object if the callback object has a API defined finalizer.
2413
2414         * API/JSCallbackObject.cpp:
2415         (JSC::JSCallbackObjectData::finalize):
2416         * API/JSCallbackObject.h:
2417         * API/JSCallbackObjectFunctions.h:
2418         (JSC::::init):
2419         * heap/Handle.h:
2420
2421 2011-04-12  Geoffrey Garen  <ggaren@apple.com>
2422
2423         Reviewed by Geoffrey Garen.
2424
2425         Cleaned up hash traits, and added hash traits for handles
2426         https://bugs.webkit.org/show_bug.cgi?id=58381
2427
2428         * heap/Handle.h:
2429         (JSC::HandleBase::swap):
2430         (JSC::Handle::Handle):
2431         (JSC::Handle::swap): Implemented swap, so we can rehash efficiently, and
2432         without creating new handles (which is not allowed during handle finalization).
2433
2434         * heap/Strong.h:
2435         (JSC::Strong::swap): Use new SimpleClassHashTraits to avoid duplication.
2436
2437         * heap/Weak.h:
2438         (JSC::Weak::isHashTableDeletedValue):
2439         (JSC::Weak::Weak):
2440         (JSC::Weak::swap):
2441         (JSC::Weak::hashTableDeletedValue): Ditto.
2442
2443         * wtf/HashTraits.h:
2444         (WTF::SimpleClassHashTraits::constructDeletedValue):
2445         (WTF::SimpleClassHashTraits::isDeletedValue): Added SimpleClassHashTraits,
2446         which are analogous to SimpleClassVectorTraits, since they are used in a
2447         bunch of places.
2448
2449         * wtf/RetainPtr.h: Use new SimpleClassHashTraits to avoid duplication.
2450
2451         * wtf/text/StringHash.h: Use new SimpleClassHashTraits to avoid duplication.
2452
2453 2011-04-12  Geoffrey Garen  <ggaren@apple.com>
2454
2455         Reviewed by Sam Weinig.
2456
2457         Cleaned up some Vector traits, and added missing Vector traits for handles
2458         https://bugs.webkit.org/show_bug.cgi?id=58372
2459
2460         * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication.
2461
2462         * heap/Strong.h: Ditto.
2463
2464         * heap/Weak.h: Ditto.
2465
2466         * parser/JSParser.cpp: Fixed a traits error. No test case because this
2467         particular trait is not currently exercised by the parser.
2468
2469         * runtime/UString.h: No need to override canInitializeWithMemset, since
2470         our base class sets it to true.
2471
2472         * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication.
2473
2474         * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since
2475         our base class sets it to true.
2476
2477 2011-04-12  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
2478
2479         Reviewed by Eric Seidel.
2480
2481         [Qt] Enable JIT build for SH4 platforms.
2482         https://bugs.webkit.org/show_bug.cgi?id=58317
2483         enable JIT build for QT backend  for SH4 platforms.
2484
2485         * JavaScriptCore.pro:
2486         * wtf/Platform.h:
2487
2488 2011-04-11  Ben Taylor  <bentaylor.solx86@gmail.com>
2489
2490         Reviewed by Alexey Proskuryakov.
2491
2492         https://bugs.webkit.org/show_bug.cgi?id=58289
2493
2494         Fix compilation on Solaris/Studio 12 C++ in wtf/FastMalloc.cpp,
2495         WTF::TCMalloc_PageHeap::runScavengerThread(void*) expected to return a value.
2496
2497         * wtf/FastMalloc.cpp:
2498         (WTF::TCMalloc_PageHeap::runScavengerThread):
2499
2500 2011-04-11  Mark Rowe  <mrowe@apple.com>
2501
2502         Fix the build.
2503
2504         * JavaScriptCore.xcodeproj/project.pbxproj: Headers used outside of JavaScriptCore need to be marked as private.
2505
2506 2011-04-11  Anna Cavender  <annacc@chromium.org>
2507
2508         Reviewed by Eric Carlson.
2509
2510         Setup ENABLE(TRACK) feature define
2511         https://bugs.webkit.org/show_bug.cgi?id=53556
2512
2513
2514         * Configurations/FeatureDefines.xcconfig:
2515
2516 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
2517
2518         Try to fix a few builds.
2519         
2520         Updated a few more build configurations for file moves.
2521
2522         * CMakeListsWinCE.txt:
2523
2524 2011-04-11  Gavin Barraclough  <barraclough@apple.com>
2525
2526         Reviewed by Sam Weinig.
2527
2528         Bug 58263 - Use EncodedValueDescriptor on both JSVALUE32_64, JSVALUE64
2529
2530         The JSJITInterface already uses EncodedValueDescriptor to access the tag/payload
2531         separately on JSVALUE64, even though EncodedValueDescriptor is not used in
2532         JSVALUE64's implementation of JSValue. Remove the separate definition for m_ptr
2533         on X86_64. Using the union allows us to remove a layer of makeImmediate()/
2534         immedaiteValue() methods.
2535
2536         * dfg/DFGNonSpeculativeJIT.cpp:
2537         (JSC::DFG::NonSpeculativeJIT::compile):
2538         * dfg/DFGSpeculativeJIT.cpp:
2539         (JSC::DFG::SpeculativeJIT::compile):
2540         * jit/JITInlineMethods.h:
2541         (JSC::JIT::emitTagAsBoolImmediate):
2542         * jit/JITOpcodes.cpp:
2543         (JSC::JIT::emit_op_not):
2544         (JSC::JIT::emit_op_jeq_null):
2545         (JSC::JIT::emit_op_jneq_null):
2546         (JSC::JIT::emit_op_get_pnames):
2547         (JSC::JIT::emit_op_eq_null):
2548         (JSC::JIT::emit_op_neq_null):
2549         (JSC::JIT::emitSlow_op_not):
2550         * runtime/JSCell.h:
2551         * runtime/JSValue.h:
2552         * runtime/JSValueInlineMethods.h:
2553         (JSC::JSValue::encode):
2554         (JSC::JSValue::decode):
2555         (JSC::JSValue::operator==):
2556         (JSC::JSValue::operator!=):
2557         (JSC::JSValue::JSValue):
2558         (JSC::JSValue::operator bool):
2559         (JSC::JSValue::asInt32):
2560         (JSC::JSValue::isUndefinedOrNull):
2561         (JSC::JSValue::isBoolean):
2562         (JSC::JSValue::isCell):
2563         (JSC::JSValue::isInt32):
2564         (JSC::JSValue::asDouble):
2565         (JSC::JSValue::isNumber):
2566         (JSC::JSValue::asCell):
2567
2568 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
2569
2570         Try to fix a few builds.
2571         
2572         Updated a few more build configurations for file moves.
2573
2574         * CMakeListsEfl.txt:
2575         * wscript:
2576
2577 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
2578
2579         Build fix: Updated a file name.
2580
2581         * CMakeLists.txt:
2582
2583 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
2584
2585         Rubber-stamped by Sam Weinig.
2586         
2587         Moved remaining heap implementation files to the heap folder.
2588
2589         * Android.mk:
2590         * CMakeLists.txt:
2591         * GNUmakefile.list.am:
2592         * JavaScriptCore.gypi:
2593         * JavaScriptCore.pro:
2594         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2595         * JavaScriptCore.xcodeproj/project.pbxproj:
2596         * heap/ConservativeRoots.cpp: Copied from runtime/ConservativeSet.cpp.
2597         * heap/ConservativeRoots.h: Copied from runtime/ConservativeSet.h.
2598         * heap/Handle.h:
2599         * heap/Heap.cpp:
2600         * heap/MachineStackMarker.cpp: Copied from runtime/MachineStackMarker.cpp.
2601         * heap/MachineStackMarker.h: Copied from runtime/MachineStackMarker.h.
2602         * heap/MarkStack.cpp: Copied from runtime/MarkStack.cpp.
2603         * heap/MarkStack.h: Copied from runtime/MarkStack.h.
2604         * heap/MarkStackPosix.cpp: Copied from runtime/MarkStackPosix.cpp.
2605         * heap/MarkStackSymbian.cpp: Copied from runtime/MarkStackSymbian.cpp.
2606         * heap/MarkStackWin.cpp: Copied from runtime/MarkStackWin.cpp.
2607         * heap/MarkedBlock.cpp: Copied from runtime/MarkedBlock.cpp.
2608         * heap/MarkedBlock.h: Copied from runtime/MarkedBlock.h.
2609         * heap/MarkedSpace.cpp: Copied from runtime/MarkedSpace.cpp.
2610         * heap/MarkedSpace.h: Copied from runtime/MarkedSpace.h.
2611         * interpreter/RegisterFile.cpp:
2612         * runtime/ConservativeSet.cpp: Removed.
2613         * runtime/ConservativeSet.h: Removed.
2614         * runtime/MachineStackMarker.cpp: Removed.
2615         * runtime/MachineStackMarker.h: Removed.
2616         * runtime/MarkStack.cpp: Removed.
2617         * runtime/MarkStack.h: Removed.
2618         * runtime/MarkStackPosix.cpp: Removed.
2619         * runtime/MarkStackSymbian.cpp: Removed.
2620         * runtime/MarkStackWin.cpp: Removed.
2621         * runtime/MarkedBlock.cpp: Removed.
2622         * runtime/MarkedBlock.h: Removed.
2623         * runtime/MarkedSpace.cpp: Removed.
2624         * runtime/MarkedSpace.h: Removed.
2625
2626 2011-04-11  Gavin Barraclough  <barraclough@apple.com>
2627
2628         Windows build fix.
2629
2630         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2631
2632 2011-04-09  Gavin Barraclough  <barraclough@apple.com>
2633
2634         Reviewed by Sam Weinig.
2635
2636         Bug 58198 - Clean up JSValue implementation for JSVALUE64
2637
2638         Remove JSNumberCell, JSImmediate, unify some methods between JSVALUE32_64/JSVALUE64
2639
2640         JSNumberCell.h largely just contained the constructors for JSValue on JSVALUE64,
2641         which should not have been here.  JSImmediate mostly contained uncalled methods,
2642         along with the internal implementation of the JSValue constructors split unnecessarily
2643         across a number of layers of function calls. These could largely be merged back
2644         together. Many methods and constructors from JSVALUE32_64 and JSVALUE64 can by unified.
2645
2646         The .cpp files were empty.
2647
2648         Moving all these methods into JSValue.h seems to be a repro measurable regression, so
2649         I have kept these methods in a separate JSValueInlineMethods.h. Adding the 64-bit tag
2650         values as static const members of JSValue also measures as a repro regression, so I
2651         have made these #defines.
2652
2653         * Android.mk:
2654         * CMakeLists.txt:
2655         * GNUmakefile.list.am:
2656         * JavaScriptCore.exp:
2657         * JavaScriptCore.gypi:
2658         * JavaScriptCore.pro:
2659         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2660         * JavaScriptCore.xcodeproj/project.pbxproj:
2661             - Removed JSImmediate.h, JSNumberCell.h.
2662         * bytecompiler/BytecodeGenerator.cpp:
2663         (JSC::BytecodeGenerator::emitLoad):
2664             - Removed class JSImmediate.
2665         * dfg/DFGNonSpeculativeJIT.cpp:
2666         (JSC::DFG::NonSpeculativeJIT::compile):
2667             - Removed class JSImmediate.
2668         * dfg/DFGSpeculativeJIT.cpp:
2669         (JSC::DFG::SpeculativeJIT::compile):
2670             - Removed class JSImmediate.
2671         * jit/JITArithmetic.cpp:
2672         (JSC::JIT::compileBinaryArithOpSlowCase):
2673             - Removed class JSImmediate.
2674         * jit/JITInlineMethods.h:
2675         (JSC::JIT::emitJumpIfJSCell):
2676         (JSC::JIT::emitJumpIfNotJSCell):
2677         (JSC::JIT::emitJumpIfImmediateInteger):
2678         (JSC::JIT::emitJumpIfNotImmediateInteger):
2679         (JSC::JIT::emitFastArithDeTagImmediate):
2680         (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
2681         (JSC::JIT::emitFastArithReTagImmediate):
2682         (JSC::JIT::emitTagAsBoolImmediate):
2683             - Removed class JSImmediate.
2684         * jit/JITOpcodes.cpp:
2685         (JSC::JIT::emit_op_not):
2686         (JSC::JIT::emit_op_jeq_null):
2687         (JSC::JIT::emit_op_jneq_null):
2688         (JSC::JIT::emit_op_get_pnames):
2689         (JSC::JIT::emit_op_eq_null):
2690         (JSC::JIT::emit_op_neq_null):
2691         (JSC::JIT::emitSlow_op_not):
2692             - Removed class JSImmediate.
2693         * jit/JSInterfaceJIT.h:
2694             - Removed class JSImmediate.
2695         * runtime/JSCell.h:
2696             - Removed JSImmediate.h, JSNumberCell.h.
2697         * runtime/JSImmediate.cpp: Removed.
2698         * runtime/JSImmediate.h: Removed.
2699         * runtime/JSNumberCell.cpp: Removed.
2700         * runtime/JSNumberCell.h: Removed.
2701             - Removed.
2702         * runtime/JSObject.h:
2703             - Removed JSImmediate.h, JSNumberCell.h.
2704         * runtime/JSString.h:
2705             - Removed JSImmediate.h, JSNumberCell.h.
2706         * runtime/JSValue.h:
2707             - Added tags for JSVALUE64, moved out some JSVALUE32_64 methods, unified with JSVALUE64.
2708         * runtime/JSValueInlineMethods.h: Added.
2709         (JSC::JSValue::toInt32):
2710         (JSC::JSValue::toUInt32):
2711         (JSC::JSValue::isUInt32):
2712         (JSC::JSValue::asUInt32):
2713         (JSC::JSValue::uncheckedGetNumber):
2714         (JSC::JSValue::toJSNumber):
2715         (JSC::jsNaN):
2716         (JSC::JSValue::getNumber):
2717         (JSC::JSValue::getBoolean):
2718         (JSC::JSValue::JSValue):
2719         (JSC::JSValue::encode):
2720         (JSC::JSValue::decode):
2721         (JSC::JSValue::operator bool):
2722         (JSC::JSValue::operator==):
2723         (JSC::JSValue::operator!=):
2724         (JSC::JSValue::isUndefined):
2725         (JSC::JSValue::isNull):
2726         (JSC::JSValue::isUndefinedOrNull):
2727         (JSC::JSValue::isCell):
2728         (JSC::JSValue::isInt32):
2729         (JSC::JSValue::isDouble):
2730         (JSC::JSValue::isTrue):
2731         (JSC::JSValue::isFalse):
2732         (JSC::JSValue::tag):
2733         (JSC::JSValue::payload):
2734         (JSC::JSValue::asInt32):
2735         (JSC::JSValue::asDouble):
2736         (JSC::JSValue::asCell):
2737         (JSC::JSValue::isNumber):
2738         (JSC::JSValue::isBoolean):
2739         (JSC::JSValue::makeImmediate):
2740         (JSC::JSValue::immediateValue):
2741         (JSC::reinterpretDoubleToIntptr):
2742         (JSC::reinterpretIntptrToDouble):
2743             - Methods moved here from JSImmediate.h/JSNumberCell.h/JSValue.h.
2744         * runtime/Operations.h:
2745             - Removed JSImmediate.h, JSNumberCell.h.
2746         * wtf/StdLibExtras.h:
2747             - Export bitwise_cast.
2748
2749 2011-04-11  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
2750
2751         Reviewed by Oliver Hunt.
2752
2753         SH4 JIT SUPPORT.
2754         https://bugs.webkit.org/show_bug.cgi?id=44329
2755
2756         Add JIT remaining part for SH4 platforms.
2757
2758         * assembler/MacroAssemblerSH4.h:
2759         * jit/JIT.h:
2760         * jit/JITInlineMethods.h:
2761         * jit/JITOpcodes32_64.cpp:
2762         * jit/JITPropertyAccess32_64.cpp:
2763         * jit/JITStubs.cpp:
2764         * jit/JITStubs.h:
2765         * jit/JSInterfaceJIT.h:
2766
2767 2011-04-10  Geoffrey Garen  <ggaren@apple.com>
2768
2769         Rubber-stamped by Beth Dakin.
2770
2771         Moved Heap.h and Heap.cpp to the heap folder, because anything less 
2772         would be uncivilized.
2773
2774         * Android.mk:
2775         * CMakeLists.txt:
2776         * GNUmakefile.list.am:
2777         * JavaScriptCore.gypi:
2778         * JavaScriptCore.pro:
2779         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2780         * JavaScriptCore.xcodeproj/project.pbxproj:
2781         * heap/Heap.cpp: Copied from JavaScriptCore/runtime/Heap.cpp.
2782         * heap/Heap.h: Copied from JavaScriptCore/runtime/Heap.h.
2783         * runtime/Heap.cpp: Removed.
2784         * runtime/Heap.h: Removed.
2785
2786 2011-04-10  Patrick Gansterer  <paroga@webkit.org>
2787
2788         Reviewed by Darin Adler.
2789
2790         Remove duplicated code from AtomicString::fromUTF8()
2791         https://bugs.webkit.org/show_bug.cgi?id=53711
2792
2793         * JavaScriptCore.exp:
2794         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2795         * wtf/text/AtomicString.cpp:
2796         (WTF::AtomicString::fromUTF8Internal):
2797         * wtf/text/AtomicString.h:
2798         (WTF::AtomicString::fromUTF8):
2799         * wtf/unicode/UTF8.cpp:
2800         (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
2801         * wtf/unicode/UTF8.h:
2802
2803 2011-04-10  Maciej Stachowiak  <mjs@apple.com>
2804
2805         Not reviewed.
2806
2807         Fix build (at least on Lion) by adding some newish header files to
2808         PrivateHeaders.
2809
2810         * JavaScriptCore.xcodeproj/project.pbxproj:
2811
2812 2011-04-09  Geoffrey Garen  <ggaren@apple.com>
2813
2814         Not reviewed.
2815
2816         Try recommitting some things svn left out of its last commit.
2817
2818         * heap/Handle.h:
2819         (JSC::HandleBase::operator!):
2820         (JSC::HandleBase::HandleBase):
2821         (JSC::HandleBase::slot):
2822         (JSC::HandleBase::setSlot):
2823         (JSC::Handle::Handle):
2824         * heap/HandleHeap.cpp:
2825         (JSC::HandleHeap::markWeakHandles):
2826         (JSC::HandleHeap::finalizeWeakHandles):
2827         (JSC::HandleHeap::isValidWeakNode):
2828         * heap/HandleHeap.h:
2829         (JSC::HandleHeap::globalData):
2830
2831 2011-04-08  Geoffrey Garen  <ggaren@apple.com>
2832
2833         Reviewed by Oliver Hunt.
2834
2835         A few heap-related renames and file moves.
2836         
2837         WeakGCPtr<T> => Weak<T>
2838         Global<T> => Strong<T>
2839         collector/ => heap/
2840         collector/* => heap/*
2841         runtime/WeakGCPtr.h => heap/Weak.h
2842         
2843         (Eventually, even more files should move into the heap directory. Like
2844         Heap.h and Heap.cpp, for example.)
2845
2846         * API/JSClassRef.h:
2847         * CMakeLists.txt:
2848         * GNUmakefile.am:
2849         * GNUmakefile.list.am:
2850         * JavaScriptCore.gypi:
2851         * JavaScriptCore.pri:
2852         * JavaScriptCore.pro:
2853         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2854         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2855         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd:
2856         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2857         * JavaScriptCore.xcodeproj/project.pbxproj:
2858         * bytecode/SamplingTool.h:
2859         * bytecompiler/BytecodeGenerator.h:
2860         * collector: Removed.
2861         * collector/handles: Removed.
2862         * collector/handles/Global.h: Removed.
2863         * collector/handles/Handle.h: Removed.
2864         * collector/handles/HandleHeap.cpp: Removed.
2865         * collector/handles/HandleHeap.h: Removed.
2866         * collector/handles/HandleStack.cpp: Removed.
2867         * collector/handles/HandleStack.h: Removed.
2868         * collector/handles/Local.h: Removed.
2869         * collector/handles/LocalScope.h: Removed.
2870         * heap: Copied from collector.
2871         * heap/Handle.h: Copied from collector/handles/Handle.h.
2872         * heap/HandleHeap.cpp: Copied from collector/handles/HandleHeap.cpp.
2873         * heap/HandleHeap.h: Copied from collector/handles/HandleHeap.h.
2874         * heap/HandleStack.cpp: Copied from collector/handles/HandleStack.cpp.
2875         * heap/HandleStack.h: Copied from collector/handles/HandleStack.h.
2876         * heap/Local.h: Copied from collector/handles/Local.h.
2877         * heap/LocalScope.h: Copied from collector/handles/LocalScope.h.
2878         * heap/Strong.h: Copied from collector/handles/Global.h.
2879         (JSC::Strong::Strong):
2880         (JSC::Strong::~Strong):
2881         (JSC::Strong::operator=):
2882         * heap/Weak.h: Copied from runtime/WeakGCPtr.h.
2883         (JSC::Weak::Weak):
2884         (JSC::Weak::~Weak):
2885         * heap/handles: Removed.
2886         * interpreter/RegisterFile.h:
2887         * jit/JITStubs.cpp:
2888         (JSC::JITThunks::hostFunctionStub):
2889         * jit/JITStubs.h:
2890         * runtime/Structure.h:
2891         * runtime/WeakGCPtr.h: Removed.
2892
2893 2011-04-08  Alpha Lam  <hclam@chromium.org>
2894
2895         Unreviewed, rolling out r83335.
2896         http://trac.webkit.org/changeset/83335
2897         https://bugs.webkit.org/show_bug.cgi?id=53556
2898
2899         GTK and QT bots are broken
2900
2901         * Configurations/FeatureDefines.xcconfig:
2902
2903 2011-04-08  Gavin Barraclough  <barraclough@apple.com>
2904
2905         Ooops, typo, build fix.
2906
2907         * dfg/DFGByteCodeParser.cpp:
2908         (JSC::DFG::ByteCodeParser::parse):
2909
2910 2011-04-08  Gavin Barraclough  <barraclough@apple.com>
2911
2912         Reviewed by Oliver Hunt.
2913
2914         Bug 58154 - Add support for comparison operators to the DFG JIT.
2915
2916         Add support for <, <=, ==, ===, and also !.  Add support for all corresponding
2917         bytecode ops, including the not- and -null forms.  Initially add functionally
2918         correct support, we'll revisit the performance.
2919
2920         * dfg/DFGByteCodeParser.cpp:
2921         (JSC::DFG::ByteCodeParser::ByteCodeParser):
2922         (JSC::DFG::ByteCodeParser::constantNull):
2923         (JSC::DFG::ByteCodeParser::parse):
2924             - Add support for parsing of bytecode opcodes, 
2925         * dfg/DFGJITCodeGenerator.h:
2926         (JSC::DFG::JITCodeGenerator::callOperation):
2927             - Add new operation call types, return bool values.
2928         * dfg/DFGNode.h:
2929             - Add new node types.
2930         * dfg/DFGNonSpeculativeJIT.cpp:
2931         (JSC::DFG::NonSpeculativeJIT::compile):
2932             - Add code generation for new nodes.
2933         * dfg/DFGOperations.cpp:
2934         (JSC::DFG::operationCompareLess):
2935         (JSC::DFG::operationCompareLessEq):
2936         (JSC::DFG::operationCompareEq):
2937         (JSC::DFG::operationCompareStrictEq):
2938         (JSC::DFG::dfgConvertJSValueToBoolean):
2939         * dfg/DFGOperations.h:
2940             - Add operation callbacks to implement new ops.
2941         * dfg/DFGSpeculativeJIT.cpp:
2942         (JSC::DFG::SpeculativeJIT::compile):
2943             - Add code generation for new nodes.
2944         * jit/JITOpcodes.cpp:
2945         (JSC::JIT::privateCompileCTIMachineTrampolines):
2946             - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
2947         * jit/JITPropertyAccess.cpp:
2948         (JSC::JIT::privateCompilePatchGetArrayLength):
2949             - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
2950         * runtime/JSImmediate.h:
2951             - Make tag values public, rather than relying on a friend - this matches JSVALUE32_64.
2952
2953 2011-04-07  Anna Cavender  <annacc@chromium.org>
2954
2955         Reviewed by Eric Carlson.
2956
2957         Setup ENABLE(TRACK) feature define
2958         https://bugs.webkit.org/show_bug.cgi?id=53556
2959
2960
2961         * Configurations/FeatureDefines.xcconfig:
2962
2963 2011-04-07  Balazs Kelemen  <kbalazs@webkit.org>
2964
2965         Reviewed by Kenneth Rohde Christiansen.
2966
2967         [WK2][Qt][GTK] Introduce common use flag for the shared UNIX domain socket IPC implementation
2968         https://bugs.webkit.org/show_bug.cgi?id=58030
2969
2970         * wtf/Platform.h: Introduce USE(UNIX_DOMAIN_SOCKETS) for WebKit2.
2971
2972 2011-04-08  Adam Roben  <aroben@apple.com>
2973
2974         Clean build fix
2975
2976         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Don't try to delete directories that
2977         don't exist. Also switched from del /s to rmdir /s, which has the benefit of deleting the
2978         directory itself in addition to the files it contains.
2979
2980 2011-04-07  Geoffrey Garen  <ggaren@apple.com>
2981
2982         Reviewed by Maciej Stachowiak.
2983
2984         Some Handle<T> cleanup
2985         https://bugs.webkit.org/show_bug.cgi?id=58109
2986
2987         * bytecode/SamplingTool.h: Sorted alphabetically because that's the
2988         WebKit style. Added a Global.h #include that was previously missing
2989         but harmless.
2990
2991         * collector/handles/Global.h:
2992         (JSC::Global::Global): Added a null constructor. No need for a special
2993         tag, and the tag is incompatible with some data structures.
2994         
2995         (JSC::Global::isHashTableDeletedValue):
2996         (JSC::Global::~Global):
2997         (JSC::Global::set):
2998         (JSC::Global::operator=):
2999         (JSC::Global::clear):
3000         (JSC::Global::hashTableDeletedValue): Reordered constructors to be near
3001         each other.
3002
3003         (JSC::Global::setWithWriteBarrier): Renamed internalSet to
3004         setWithWriteBarrier for clarity, and funneled more code into using set
3005         and setWithWriteBarrier to reduce duplication.
3006
3007         * collector/handles/Handle.h:
3008         (JSC::HandleBase::operator!):
3009         (JSC::HandleBase::HandleBase): Removed isEmpty(), since we already have
3010         boolean and ! operators.
3011
3012         (JSC::HandleBase::slot):
3013         (JSC::HandleBase::setSlot):
3014         (JSC::Handle::Handle): Added general support for null Handles. This was
3015         previously outlawed by ASSERTs, but our code has grown to support and
3016         rely on null Handles.
3017         
3018         * collector/handles/HandleHeap.cpp:
3019         (JSC::HandleHeap::markWeakHandles):
3020         (JSC::HandleHeap::finalizeWeakHandles):
3021         (JSC::HandleHeap::isValidWeakNode): Migrated from isValidWeakHandle,
3022         and beefed this up a bit.
3023
3024         * collector/handles/HandleHeap.h:
3025         (JSC::HandleHeap::globalData): Added accessor, used by some new set functions.
3026
3027         * collector/handles/Local.h: Moved hash traits to the bottom of the file,
3028         since this file is about the Local class, not the traits.
3029
3030         (JSC::::Local): Updated for removal of invalidate().
3031
3032         (JSC::::operator): Deployed "using" to avoid a lot of this->
3033         template funny business.
3034
3035         (JSC::::setWithSlotCheck): Renamed from internalSet, more specific now.
3036
3037         * interpreter/RegisterFile.h:
3038         (JSC::RegisterFile::RegisterFile): Updated to use null constructor.
3039
3040         * jit/JITStubs.cpp:
3041         (JSC::JITThunks::hostFunctionStub):
3042
3043         * runtime/JSPropertyNameIterator.h:
3044         (JSC::Structure::setEnumerationCache):
3045         * runtime/Structure.h: Removed clearEnumerationCache
3046         because it was an unused holdover from when the enumeration cache was
3047         not a handle.
3048
3049         * runtime/WeakGCMap.h:
3050         (JSC::WeakGCMap::set): Finish initializing our handle before putting it
3051         in the table. This seemed more logical, and at one point was required
3052         to avoid triggering an ASSERT.
3053
3054         * runtime/WeakGCPtr.h: Inherit from Handle instead of rolling our own
3055         handle-like behavior, to avoid duplication.
3056
3057         (JSC::WeakGCPtr::WeakGCPtr):
3058         (JSC::WeakGCPtr::~WeakGCPtr):
3059         (JSC::WeakGCPtr::get):
3060         (JSC::WeakGCPtr::clear):
3061         (JSC::WeakGCPtr::set):
3062         (JSC::WeakGCPtr::setWithWriteBarrier): Removed duplicate code and
3063         standardized on Handle idioms.
3064
3065 2011-04-07  Adam Barth  <abarth@webkit.org>
3066
3067         Reviewed by Martin Robinson.
3068
3069         Refactor Gtk build system to separate list of files
3070         https://bugs.webkit.org/show_bug.cgi?id=58090
3071
3072         This is the first step towards generating part of the GTK build system
3073         using GYP.  In the first iteration, our plan is to just generate the
3074         list of files.  This patch is the first step, which is to separate out
3075         the part of JavaScriptCore build system that we intend to generate from
3076         the rest of the build system.
3077
3078         * GNUmakefile.am:
3079         * GNUmakefile.list.am: Added.
3080
3081 2011-04-07  Zoltan Herczeg  <zherczeg@webkit.org>
3082
3083         Reviewed by Gavin Barraclough.
3084
3085         Mapping booleans the same way as integers
3086         https://bugs.webkit.org/show_bug.cgi?id=56913
3087
3088         Instead of having a seperate tag field for booleans,
3089         the logical values are stored in the payload field
3090         (for JSValue32_64 representation).
3091
3092         1.007x speedup on SunSpider.
3093
3094         * jit/JIT.h:
3095         * jit/JITInlineMethods.h:
3096         (JSC::JIT::emitStoreBool):
3097         * jit/JITOpcodes32_64.cpp:
3098         (JSC::JIT::emit_op_instanceof):
3099         (JSC::JIT::emit_op_not):
3100         (JSC::JIT::emit_op_jfalse):
3101         (JSC::JIT::emitSlow_op_jfalse):
3102         (JSC::JIT::emit_op_jtrue):
3103         (JSC::JIT::emitSlow_op_jtrue):
3104         (JSC::JIT::emit_op_jeq_null):
3105         (JSC::JIT::emit_op_jneq_null):
3106         (JSC::JIT::emit_op_eq):
3107         (JSC::JIT::emitSlow_op_eq):
3108         (JSC::JIT::emit_op_neq):
3109         (JSC::JIT::emitSlow_op_neq):
3110         (JSC::JIT::compileOpStrictEq):
3111         (JSC::JIT::emit_op_eq_null):
3112         (JSC::JIT::emit_op_neq_null):
3113         * jit/JSInterfaceJIT.h:
3114         * runtime/JSValue.h:
3115         (JSC::JSValue::JSValue):
3116         (JSC::JSValue::isTrue):
3117         (JSC::JSValue::isFalse):
3118         (JSC::JSValue::getBoolean):
3119
3120 2011-04-07  Eric Seidel  <eric@webkit.org>
3121
3122         Reviewed by Adam Barth.
3123
3124         Add stub support for generating Gtk build system from gyp
3125         https://bugs.webkit.org/show_bug.cgi?id=58086
3126
3127         This does not produce a buildable JavaScriptCore, but it
3128         does allow running gyp/configure --port=gtk and having
3129         it generate a gtk.Makefile which we can use for testing
3130         the rest of the plumbing.
3131
3132         * gyp/gtk.gyp: Added.
3133
3134 2011-04-07  Andrew Scherkus  <scherkus@chromium.org>
3135
3136         Revert ENABLE_TRACK patch due to compile failures.
3137
3138         * Configurations/FeatureDefines.xcconfig:
3139
3140 2011-04-07  Adam Barth  <abarth@webkit.org>
3141
3142         Fix whitespace in GNUmakefile.am.
3143
3144         * GNUmakefile.am:
3145
3146 2011-04-07  Gavin Barraclough  <barraclough@apple.com>
3147
3148         Fix a couple of typos in comments that Darin spotted.
3149
3150         * jit/JITOpcodes.cpp:
3151         (JSC::JIT::emit_op_not):
3152         * runtime/JSImmediate.h:
3153
3154 2011-04-06  Gavin Barraclough  <barraclough@apple.com>
3155
3156         Reviewed by Geoff Garen.
3157         Bug 58057 - Store boolean payload in low bit of JSImmediate
3158
3159         And remove some uncalled functions from JSImmediate.h
3160
3161         * jit/JITInlineMethods.h:
3162         (JSC::JIT::emitTagAsBoolImmediate):
3163         * jit/JITOpcodes.cpp:
3164         (JSC::JIT::emit_op_not):
3165         * runtime/JSImmediate.h:
3166         (JSC::JSImmediate::makeInt):
3167         (JSC::JSImmediate::makeBool):
3168         (JSC::JSImmediate::intValue):
3169         (JSC::JSImmediate::boolValue):
3170         (JSC::JSImmediate::asInt32):
3171         (JSC::JSImmediate::toDouble):
3172         (JSC::JSValue::asInt32):
3173         (JSC::JSValue::isUInt32):
3174         (JSC::JSValue::asUInt32):
3175
3176 2011-04-07  Liang Qi  <liang.qi@nokia.com>
3177
3178         Reviewed by Laszlo Gombos.
3179
3180         [Qt][Symbian] Enable webkit build with GCCE on Symbian.
3181         https://bugs.webkit.org/show_bug.cgi?id=57841
3182
3183         * wtf/MathExtras.h: GCCE compiler doesn't support those std static functions.
3184
3185 2011-04-06  Dai Mikurube  <dmikurube@chromium.org>
3186
3187         Reviewed by David Levin.
3188
3189         Add QUOTA build flag for unified quota API
3190         https://bugs.webkit.org/show_bug.cgi?id=57918
3191
3192         * Configurations/FeatureDefines.xcconfig: Added QUOTA build flag
3193
3194 2011-04-06  Kevin Ollivier  <kevino@theolliviers.com>
3195         
3196         Reviewed by Darin Adler.
3197         
3198         Make sure JS_EXPORT_PRIVATE is an empty define when we aren't using the export macros.
3199         
3200         https://bugs.webkit.org/show_bug.cgi?id=27551
3201
3202         * config.h:
3203
3204 2011-04-06  Oliver Hunt  <oliver@apple.com>
3205
3206         Reviewed by Gavin Barraclough.
3207
3208         Stop JSObject::isUsingInlineStorage() from using the structure
3209         https://bugs.webkit.org/show_bug.cgi?id=57986
3210
3211         Make the isUsingInlineStorage() implementation just look at
3212         whether the property storage is inside the object.
3213
3214         * runtime/JSObject.h:
3215         (JSC::JSObject::isUsingInlineStorage):
3216         (JSC::JSObject::JSObject):
3217
3218 2011-04-06  Gavin Barraclough  <barraclough@apple.com>
3219
3220         Rubber stamped by Geoff Garen.
3221
3222         Update comments documenting JSVALUE64/JSVALUE32_64 JSValue representations.
3223
3224         * runtime/JSImmediate.h:
3225         * runtime/JSValue.h:
3226
3227 2011-04-06  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
3228
3229         cmake: Fix build for ARMv7
3230
3231         * CMakeLists.txt: add missing file.
3232
3233 2011-04-06  Liang Qi  <liang.qi@nokia.com>
3234
3235         Reviewed by Benjamin Poulain.
3236
3237         Correct a include file name.
3238         https://bugs.webkit.org/show_bug.cgi?id=57839
3239
3240         * wtf/PageAllocatorSymbian.h: It should be case sensitive. This fix 
3241         builds on Unix hosts.
3242
3243 2011-04-06  Adam Roben  <aroben@apple.com>
3244
3245         Build fix after r83056
3246
3247         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Added property svn:executable.
3248
3249 2011-04-06  Adam Roben  <aroben@apple.com>
3250
3251         Move JavaScriptCoreGenerated's file-copying logic out to a new script
3252
3253         Hopefully this will make it easier to modify this logic in the future. I also made the
3254         script much quieter than the old logic, since it didn't seem helpful to see long lists of
3255         filenames during the copying phase.
3256
3257         If we like this new style, we could copy it for our other projects.
3258
3259         Fixes <http://webkit.org/b/57950> JavaScriptCoreGenerated's file-copying logic is hard to
3260         modify and noisy
3261
3262         Reviewed by Steve Falkenburg.
3263
3264         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Moved logic to copy
3265         files from here...
3266         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: ...to here. (Added.)
3267
3268         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added copy-files.cmd
3269         for convenience.
3270
3271 2011-04-05  Geoffrey Garen  <ggaren@apple.com>
3272
3273         Try to fix the Windows build.
3274
3275         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Who likes export files? I do!
3276
3277 2011-04-05  Geoffrey Garen  <ggaren@apple.com>
3278
3279         Reviewed by Oliver Hunt.
3280
3281         Introduced the concept of opaque roots, in preparation for marking the DOM with them
3282         https://bugs.webkit.org/show_bug.cgi?id=57903
3283
3284         * JavaScriptCore.exp: Who likes export files? I do!
3285
3286         * collector/handles/HandleHeap.cpp:
3287         (JSC::isValidWeakHandle): Factored out a helper function for ASSERTs.
3288
3289         (JSC::WeakHandleOwner::~WeakHandleOwner): Moved from header to avoid
3290         weak linkage problems.
3291
3292         (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): New callback.
3293         Currently unused.
3294
3295         (JSC::WeakHandleOwner::finalize): Switched from pure virtual to a
3296         default empty implementation, since not all clients necessarily want
3297         or need non-trivial finalizers.
3298
3299         (JSC::HandleHeap::markWeakHandles): Split updateWeakHandles into two
3300         passes. The first pass marks all reachable weak handles. The second pass
3301         finalizes all unreachable weak handles. This must be two passes because
3302         we don't know the set of finalizable weak handles until we're done
3303         marking all weak handles.
3304
3305         (JSC::HandleHeap::finalizeWeakHandles): Use new helper function.
3306
3307         * collector/handles/HandleHeap.h: Ditto.
3308
3309         * runtime/Heap.cpp: 
3310         (JSC::Heap::destroy):
3311         (JSC::Heap::markRoots):
3312         (JSC::Heap::reset): Split out handle marking from handle finalization.
3313
3314         * runtime/MarkStack.cpp:
3315         (JSC::MarkStack::reset):
3316         * runtime/MarkStack.h:
3317         (JSC::MarkStack::addOpaqueRoot):
3318         (JSC::MarkStack::containsOpaqueRoot):
3319         (JSC::MarkStack::opaqueRootCount):
3320         (JSC::HeapRootMarker::markStack): New helper functions for managing the
3321         set of opaque roots.
3322
3323         * runtime/WeakGCMap.h:
3324         (JSC::WeakGCMap::finalize): Renamed to match parent class declaration.
3325
3326 2011-04-05  Balazs Kelemen  <kbalazs@webkit.org>
3327
3328         Reviewed by Darin Adler.
3329
3330         Build fix for YarrParser.h
3331         https://bugs.webkit.org/show_bug.cgi?id=57822
3332
3333         * yarr/YarrParser.h:
3334         (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
3335
3336 2011-04-05  Steve Falkenburg  <sfalken@apple.com>
3337
3338         Follow-up Windows build fix.
3339         Don't skip react-to-vsprops-changes.py for all production builds,
3340         only those initiated via JavaScriptCore.make.
3341
3342         * JavaScriptCore.vcproj/JavaScriptCore.make:
3343         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
3344
3345 2011-04-05  Oliver Hunt  <oliver@apple.com>
3346
3347         Reviewed by Darin Adler.
3348
3349         REGRESSION (r82849): 85,000+ JSC-related leaks seen on SnowLeopard Intel Leaks
3350         https://bugs.webkit.org/show_bug.cgi?id=57857
3351
3352         Whoops, accidentally removed a deref().
3353
3354         * bytecode/StructureStubInfo.cpp:
3355         (JSC::StructureStubInfo::deref):
3356
3357 2011-04-05  Steve Falkenburg  <sfalken@apple.com>
3358
3359         Windows build fix.
3360
3361         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add per-configuration vsprops files.
3362         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed inheritance from common.vsprops.
3363         Set production environment variable before calling make.
3364         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Added.
3365         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Added.
3366         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Added.
3367         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Added.
3368         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Added.
3369         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Added.
3370         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Added.
3371
3372 2011-04-05  Oliver Hunt  <oliver@apple.com>
3373
3374         Reviewed by Gavin Barraclough.
3375
3376         Make caches window show more info about non-jsobject GC values
3377         https://bugs.webkit.org/show_bug.cgi?id=57874
3378
3379         Add ClassInfo to the various internal JS types that currently
3380         don't have any, and make the text for caches window show the
3381         classname for non-JSObject instances.
3382
3383         * runtime/Executable.cpp:
3384         * runtime/Executable.h:
3385         (JSC::ExecutableBase::createStructure):
3386         (JSC::NativeExecutable::createStructure):
3387         (JSC::NativeExecutable::NativeExecutable):
3388         (JSC::EvalExecutable::createStructure):
3389         (JSC::ProgramExecutable::createStructure):
3390         (JSC::FunctionExecutable::createStructure):
3391         * runtime/Heap.cpp:
3392         (JSC::TypeCounter::typeName):
3393         * runtime/JSGlobalData.cpp:
3394         (JSC::JSGlobalData::JSGlobalData):
3395         * runtime/JSGlobalData.h:
3396         * runtime/ScopeChain.cpp:
3397         * runtime/ScopeChain.h:
3398         (JSC::ScopeChainNode::createStructure):
3399         * runtime/StructureChain.cpp:
3400         * runtime/StructureChain.h:
3401         (JSC::StructureChain::createStructure):
3402
3403 2011-04-05  Nikolas Zimmermann  <nzimmermann@rim.com>
3404
3405         Reviewed by Andreas Kling.
3406
3407         Cleanup StringConcatenate
3408         https://bugs.webkit.org/show_bug.cgi?id=57836
3409
3410         Don't use PassRefPtr in local variables, properly store in RefPtrs and release on return.
3411         Add a makeString() variant taking 9 arguments, needed by a follow-up patch.
3412
3413         * wtf/text/StringConcatenate.h:
3414         (WTF::tryMakeString):
3415         (WTF::makeString):
3416
3417 2011-04-04  Sheriff Bot  <webkit.review.bot@gmail.com>
3418
3419         Unreviewed, rolling out r82876.
3420         http://trac.webkit.org/changeset/82876
3421         https://bugs.webkit.org/show_bug.cgi?id=57816
3422
3423         Caused a lot of test crashes (Requested by tkent on #webkit).
3424
3425         * JavaScriptCore.exp:
3426         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3427         * wtf/FastMalloc.cpp:
3428         (WTF::tryFastMalloc):
3429         (WTF::fastMalloc):
3430         (WTF::tryFastCalloc):
3431         (WTF::fastCalloc):
3432         (WTF::fastFree):
3433         (WTF::tryFastRealloc):
3434         (WTF::fastRealloc):
3435         (WTF::fastMallocSize):
3436         (WTF::TCMalloc_PageHeap::isScavengerSuspended):
3437         (WTF::TCMalloc_PageHeap::scheduleScavenger):
3438         (WTF::TCMalloc_PageHeap::suspendScavenger):
3439         (WTF::TCMalloc_PageHeap::signalScavenger):
3440         (WTF::TCMallocStats::malloc):
3441         (WTF::TCMallocStats::free):
3442         (WTF::TCMallocStats::fastCalloc):
3443         (WTF::TCMallocStats::tryFastCalloc):
3444         (WTF::TCMallocStats::calloc):
3445         (WTF::TCMallocStats::fastRealloc):
3446         (WTF::TCMallocStats::tryFastRealloc):
3447         (WTF::TCMallocStats::realloc):
3448         (WTF::TCMallocStats::fastMallocSize):
3449         * wtf/FastMalloc.h:
3450         (WTF::Internal::fastMallocMatchValidationType):
3451         (WTF::Internal::fastMallocMatchValidationValue):
3452         (WTF::Internal::setFastMallocMatchValidationType):
3453         (WTF::fastMallocMatchValidateFree):
3454         * wtf/Platform.h:
3455
3456 2011-04-04  Oliver Hunt  <oliver@apple.com>
3457
3458         Reviewed by Antti Koivisto.
3459
3460         Stop JSCell.h from including Structure.h
3461         https://bugs.webkit.org/show_bug.cgi?id=57809
3462
3463         * runtime/GetterSetter.h:
3464         * runtime/JSAPIValueWrapper.h:
3465         * runtime/JSCell.h:
3466         (JSC::JSCell::JSValue::toThisObject):
3467         * runtime/JSString.h:
3468         * runtime/ScopeChain.h:
3469         * runtime/Structure.h:
3470         (JSC::JSCell::isObject):
3471         (JSC::JSCell::isString):
3472         (JSC::JSCell::classInfo):
3473         (JSC::JSCell::createDummyStructure):
3474         (JSC::JSValue::needsThisConversion):
3475         (JSC::MarkStack::internalAppend):
3476         * runtime/StructureChain.h:
3477
3478 2011-04-04  Oliver Hunt  <oliver@apple.com>
3479
3480         Fix clang build.
3481
3482         * wtf/FastMalloc.cpp:
3483         (WTF::fastMalloc):
3484         (WTF::fastCalloc):
3485         (WTF::fastRealloc):
3486
3487 2011-04-04  Oliver Hunt  <oliver@apple.com>
3488
3489         Remove accidental change to Platform.h