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