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