a847bf9313332211b48b8e06fe5621d7e08ba9f8
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2013-07-16  Oliver Hunt  <oliver@apple.com>
2
3         Merged dfgFourthTier r148570
4
5     2013-04-16  Filip Pizlo  <fpizlo@apple.com>
6
7         fourthTier: DFG should be able to query Structure without modifying it
8         https://bugs.webkit.org/show_bug.cgi?id=114708
9
10         Reviewed by Oliver Hunt.
11         
12         This is work towards allowing the DFG, and FTL, to run on a separate thread.
13         The idea is that the most evil thing that the DFG does that has thread-safety
14         issues is fiddling with Structures by calling Structure::get(). This can lead
15         to rematerialization of property tables, which is definitely not thread-safe
16         due to how StringImpl works. So, this patch completely side-steps the problem
17         by creating a new version of Structure::get, called
18         Structure::getWithoutMaterializing, which may choose to do an O(n) search if
19         necessary to avoid materialization. I believe this should be fine - the DFG
20         does't call into these code path often enough for this to matter, and most of
21         the time, the Structure that we call this on will already have a property
22         table because some inline cache would have already called ::get() on that
23         Structure.
24         
25         Also cleaned up the materialization logic: we can stop the search as soon as
26         we find any Structure with a property table rather than searching all the way
27         for a pinned one.
28
29         * bytecode/GetByIdStatus.cpp:
30         (JSC::GetByIdStatus::computeFor):
31         * bytecode/PutByIdStatus.cpp:
32         (JSC::PutByIdStatus::computeFromLLInt):
33         (JSC::PutByIdStatus::computeFor):
34         * runtime/Structure.cpp:
35         (JSC::Structure::findStructuresAndMapForMaterialization):
36         (JSC::Structure::materializePropertyMap):
37         (JSC::Structure::getWithoutMaterializing):
38         (JSC):
39         * runtime/Structure.h:
40         (Structure):
41         * runtime/StructureInlines.h:
42         (JSC::Structure::getWithoutMaterializing):
43         (JSC):
44
45 2013-07-15  Oliver Hunt  <oliver@apple.com>
46
47         Merged dfgFourthTier r148047
48
49     2013-04-09  Filip Pizlo  <fpizlo@apple.com>
50
51         fourthTier: DFG should provide utilities for common OSR exit tasks
52         https://bugs.webkit.org/show_bug.cgi?id=114306
53
54         Reviewed by Mark Hahnenberg.
55         
56         Just abstract out some things that the FTL will want to use as well.
57
58         * CMakeLists.txt:
59         * GNUmakefile.list.am:
60         * JavaScriptCore.xcodeproj/project.pbxproj:
61         * Target.pri:
62         * dfg/DFGDriver.cpp:
63         (JSC::DFG::compile):
64         * dfg/DFGOSRExitCompiler.cpp:
65         * dfg/DFGOSRExitCompiler.h:
66         (OSRExitCompiler):
67         * dfg/DFGOSRExitCompiler32_64.cpp:
68         (JSC::DFG::OSRExitCompiler::compileExit):
69         * dfg/DFGOSRExitCompiler64.cpp:
70         (JSC::DFG::OSRExitCompiler::compileExit):
71         * dfg/DFGOSRExitCompilerCommon.cpp: Added.
72         (DFG):
73         (JSC::DFG::handleExitCounts):
74         (JSC::DFG::reifyInlinedCallFrames):
75         (JSC::DFG::adjustAndJumpToTarget):
76         * dfg/DFGOSRExitCompilerCommon.h: Added.
77         (DFG):
78
79 2013-07-15  Oliver Hunt  <oliver@apple.com>
80
81         Merged dfgFourthTier r148037
82
83     2013-04-09  Filip Pizlo  <fpizlo@apple.com>
84
85         fourthTier: DFG should better abstract floating point arguments
86         https://bugs.webkit.org/show_bug.cgi?id=114300
87
88         Reviewed by Mark Hahnenberg.
89
90         * dfg/DFGFPRInfo.h:
91         (FPRInfo):
92         (JSC::DFG::FPRInfo::toArgumentRegister):
93
94 2013-07-15  Oliver Hunt  <oliver@apple.com>
95
96         Merged dfgFourthTier r147821
97
98     2013-04-05  Filip Pizlo  <fpizlo@apple.com>
99
100         fourthTier: DFG should better abstract arguments
101         https://bugs.webkit.org/show_bug.cgi?id=114073
102
103         Reviewed by Mark Hahnenberg.
104
105         * dfg/DFGGPRInfo.h:
106         (GPRInfo):
107         (JSC::DFG::GPRInfo::toArgumentRegister):
108
109 2013-07-15  Oliver Hunt  <oliver@apple.com>
110
111         Merged dfgFourthTier r147609
112
113     2013-04-03  Filip Pizlo  <fpizlo@apple.com>
114
115         fourthTier: put DFG data into a DFG::JITCode, and put common DFG and FTL data into something accessible from both DFG::JITCode and FTL::JITCode
116         https://bugs.webkit.org/show_bug.cgi?id=113905
117
118         Reviewed by Geoffrey Garen.
119         
120         This removes one pointer from CodeBlock.
121         
122         It also gives us a framework for having JITType-specific data in CodeBlock, by
123         putting it into the appropriate JITCode class (either DFG::JITCode or
124         FTL::JITCode). And it allows us to have DFG and FTL share some common data,
125         via DFG::CommonData, which is stored in both DFG::JITCode and FTL::JITCode and
126         always accessible via JITCode::dfgCommon().
127
128         * CMakeLists.txt:
129         * GNUmakefile.list.am:
130         * JavaScriptCore.xcodeproj/project.pbxproj:
131         * Target.pri:
132         * bytecode/CodeBlock.cpp:
133         (JSC):
134         (JSC::CodeBlock::dumpBytecode):
135         (JSC::CodeBlock::visitAggregate):
136         (JSC::CodeBlock::performTracingFixpointIteration):
137         (JSC::CodeBlock::finalizeUnconditionally):
138         (JSC::CodeBlock::stronglyVisitWeakReferences):
139         (JSC::CodeBlock::shrinkToFit):
140         (JSC::CodeBlock::tallyFrequentExitSites):
141         * bytecode/CodeBlock.h:
142         (CodeBlock):
143         (JSC::CodeBlock::setJITCode):
144         (JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan):
145         (JSC::DFGCodeBlocks::mark):
146         * dfg/DFGAssemblyHelpers.h:
147         * dfg/DFGCommonData.cpp: Added.
148         (DFG):
149         (JSC::DFG::CommonData::notifyCompilingStructureTransition):
150         (JSC::DFG::CommonData::shrinkToFit):
151         * dfg/DFGCommonData.h: Added.
152         (JSC):
153         (DFG):
154         (JSC::DFG::WeakReferenceTransition::WeakReferenceTransition):
155         (WeakReferenceTransition):
156         (CommonData):
157         (JSC::DFG::CommonData::CommonData):
158         * dfg/DFGDriver.cpp:
159         (JSC::DFG::compile):
160         (JSC::DFG::tryCompile):
161         (JSC::DFG::tryCompileFunction):
162         * dfg/DFGDriver.h:
163         (DFG):
164         (JSC::DFG::tryCompile):
165         (JSC::DFG::tryCompileFunction):
166         * dfg/DFGGraph.h:
167         (Graph):
168         * dfg/DFGJITCode.cpp: Added.
169         (DFG):
170         (JSC::DFG::JITCode::JITCode):
171         (JSC::DFG::JITCode::~JITCode):
172         (JSC::DFG::JITCode::dfgCommon):
173         (JSC::DFG::JITCode::dfg):
174         (JSC::DFG::JITCode::shrinkToFit):
175         * dfg/DFGJITCode.h: Added.
176         (DFG):
177         (JITCode):
178         (JSC::DFG::JITCode::appendOSREntryData):
179         (JSC::DFG::JITCode::osrEntryDataForBytecodeIndex):
180         (JSC::DFG::JITCode::appendOSRExit):
181         (JSC::DFG::JITCode::lastOSRExit):
182         (JSC::DFG::JITCode::appendSpeculationRecovery):
183         (JSC::DFG::JITCode::appendWatchpoint):
184         * dfg/DFGJITCompiler.cpp:
185         (JSC::DFG::JITCompiler::JITCompiler):
186         (JSC::DFG::JITCompiler::linkOSRExits):
187         (JSC::DFG::JITCompiler::link):
188         (JSC::DFG::JITCompiler::compile):
189         (JSC::DFG::JITCompiler::compileFunction):
190         * dfg/DFGJITCompiler.h:
191         (JITCompiler):
192         (JSC::DFG::JITCompiler::addWeakReference):
193         (JSC::DFG::JITCompiler::noticeOSREntry):
194         (JSC::DFG::JITCompiler::jitCode):
195         * dfg/DFGOSREntry.cpp:
196         (JSC::DFG::prepareOSREntry):
197         * dfg/DFGOSRExit.h:
198         (OSRExit):
199         * dfg/DFGOSRExitCompiler.cpp:
200         * dfg/DFGSpeculativeJIT.cpp:
201         (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
202         (JSC::DFG::SpeculativeJIT::backwardSpeculationCheck):
203         (JSC::DFG::SpeculativeJIT::speculationWatchpoint):
204         (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
205         * dfg/DFGSpeculativeJIT32_64.cpp:
206         (JSC::DFG::SpeculativeJIT::compile):
207         * dfg/DFGSpeculativeJIT64.cpp:
208         (JSC::DFG::SpeculativeJIT::compile):
209         * dfg/DFGVariableEventStream.cpp:
210         * heap/DFGCodeBlocks.cpp:
211         (JSC::DFGCodeBlocks::~DFGCodeBlocks):
212         (JSC::DFGCodeBlocks::jettison):
213         (JSC::DFGCodeBlocks::clearMarks):
214         (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
215         (JSC::DFGCodeBlocks::traceMarkedCodeBlocks):
216         * jit/JITCode.cpp:
217         (JSC::JITCode::dfgCommon):
218         (JSC):
219         (JSC::JITCode::dfg):
220         (JSC::JITCode::ftl):
221         (JSC::DirectJITCode::DirectJITCode):
222         (JSC::DirectJITCode::initializeCodeRef):
223         (JSC::DirectJITCode::addressForCall):
224         (JSC::DirectJITCode::executableAddressAtOffset):
225         (JSC::DirectJITCode::dataAddressAtOffset):
226         (JSC::DirectJITCode::offsetOf):
227         (JSC::DirectJITCode::size):
228         (JSC::DirectJITCode::contains):
229         * jit/JITCode.h:
230         (DFG):
231         (FTL):
232         (JSC):
233         (JITCode):
234         (DirectJITCode):
235
236 2013-07-15  Oliver Hunt  <oliver@apple.com>
237
238         Merge dfgFourthTier r147587
239
240     2013-04-03  Filip Pizlo  <fpizlo@apple.com>
241
242         fourthTier: Everyone should know about the FTL
243         https://bugs.webkit.org/show_bug.cgi?id=113897
244
245         Reviewed by Mark Hahnenberg.
246         
247         In order to get OSR exit to work right, we need the distinction between DFG and
248         FTL to be clear even after compilation finishes, since they will have subtly
249         different OSR stories and likely use different data structures.
250
251         * bytecode/CodeBlock.cpp:
252         (JSC::CodeBlock::resetStubInternal):
253         (JSC::ProgramCodeBlock::compileOptimized):
254         (JSC::EvalCodeBlock::compileOptimized):
255         (JSC::FunctionCodeBlock::compileOptimized):
256         (JSC::CodeBlock::adjustedExitCountThreshold):
257         (JSC::CodeBlock::tallyFrequentExitSites):
258         * bytecode/CodeBlock.h:
259         (JSC::CodeBlock::setJITCode):
260         (JSC::CodeBlock::hasOptimizedReplacement):
261         (JSC::ExecState::isInlineCallFrame):
262         * ftl/FTLCompile.cpp:
263         (JSC::FTL::compile):
264         * ftl/FTLJITCode.cpp:
265         (JSC::FTL::JITCode::JITCode):
266         * ftl/FTLState.cpp:
267         (JSC::FTL::State::dumpState):
268         * heap/DFGCodeBlocks.cpp:
269         (JSC::DFGCodeBlocks::jettison):
270         * interpreter/Interpreter.cpp:
271         (JSC::getLineNumberForCallFrame):
272         (JSC::getCallerInfo):
273         * jit/JITCode.cpp:
274         (WTF::printInternal):
275         * jit/JITCode.h:
276         (JSC::JITCode::topTierJIT):
277         (JSC::JITCode::nextTierJIT):
278         (JITCode):
279         (JSC::JITCode::isJIT):
280         (JSC::JITCode::isLowerTier):
281         (JSC::JITCode::isHigherTier):
282         (JSC::JITCode::isLowerOrSameTier):
283         (JSC::JITCode::isHigherOrSameTier):
284         (JSC::JITCode::isOptimizingJIT):
285         * jit/JITDriver.h:
286         (JSC::jitCompileIfAppropriate):
287         (JSC::jitCompileFunctionIfAppropriate):
288         * jit/JITStubs.cpp:
289         (JSC::DEFINE_STUB_FUNCTION):
290         * runtime/Executable.cpp:
291         (JSC::EvalExecutable::compileOptimized):
292         (JSC::samplingDescription):
293         (JSC::ProgramExecutable::compileOptimized):
294         (JSC::FunctionExecutable::compileOptimizedForCall):
295         (JSC::FunctionExecutable::compileOptimizedForConstruct):
296
297 2013-04-03  Filip Pizlo  <fpizlo@apple.com>
298
299         fourthTier: DFG should abstract out how it does forward exits, and that code should be simplified
300         https://bugs.webkit.org/show_bug.cgi?id=113894
301
302         Reviewed by Mark Hahnenberg.
303         
304         1) We previously had two different ways of convertingToForward, one path for
305            where we had a ValueRecovery for the current node and one where we didn't.
306            But the paths were doing exactly the same thing except that if you have a
307            ValueRecovery, you also find the last applicable mov hint and do some
308            extra things. This patch combines the two paths and bases both of them on
309            the previous no-ValueRecovery path, which was simpler to begin with.
310         
311         2) This moves the logic into DFG::OSRExit, which further simplifies the code
312            and makes the logic available to the FTL.
313
314         * dfg/DFGOSRExit.cpp:
315         (JSC::DFG::OSRExit::convertToForward):
316         (DFG):
317         * dfg/DFGOSRExit.h:
318         (DFG):
319         (OSRExit):
320         * dfg/DFGSpeculativeJIT.cpp:
321         (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
322
323 2013-07-15  Oliver Hunt  <oliver@apple.com>
324
325         Merge dfgFourthTier r147582
326
327 2013-07-15  Oliver Hunt  <oliver@apple.com>
328
329         Merge dfgFourthTier r147014
330
331     2013-03-27  Filip Pizlo  <fpizlo@apple.com>
332
333         fourthTier: JITCode should abstract exactly how the JIT code is structured and where it was allocated
334         https://bugs.webkit.org/show_bug.cgi?id=113437
335
336         Reviewed by Mark Hahnenberg.
337         
338         JITCode is now a virtual base class, which will allow different JITs to have radically
339         different memory allocation and management conventions in the future. It will also
340         make it easier to store JIT-specific meta-data in CodeBlock just by putting it into
341         an appropriate JITCode subclass.
342         
343         For now there is one subclass, DirectJITCode, which just behaves like JITCode used to
344         behave.
345
346         * assembler/RepatchBuffer.h:
347         (JSC::RepatchBuffer::RepatchBuffer):
348         * bytecode/CodeBlock.cpp:
349         (JSC::CodeBlock::resetStubInternal):
350         (JSC::CodeBlock::bytecodeOffset):
351         (JSC::CodeBlock::codeOriginForReturn):
352         * bytecode/CodeBlock.h:
353         (JSC::CodeBlock::setJITCode):
354         (JSC::CodeBlock::getJITCode):
355         (JSC::CodeBlock::getJITType):
356         (CodeBlock):
357         * dfg/DFGDriver.cpp:
358         (JSC::DFG::compile):
359         (JSC::DFG::tryCompile):
360         (JSC::DFG::tryCompileFunction):
361         * dfg/DFGDriver.h:
362         (DFG):
363         (JSC::DFG::tryCompile):
364         (JSC::DFG::tryCompileFunction):
365         * dfg/DFGJITCompiler.cpp:
366         (JSC::DFG::JITCompiler::compile):
367         (JSC::DFG::JITCompiler::compileFunction):
368         * dfg/DFGJITCompiler.h:
369         (JITCompiler):
370         * dfg/DFGOSREntry.cpp:
371         (JSC::DFG::prepareOSREntry):
372         * dfg/DFGOSRExit.cpp:
373         (JSC::DFG::OSRExit::codeLocationForRepatch):
374         * dfg/DFGOSRExitCompiler32_64.cpp:
375         (JSC::DFG::OSRExitCompiler::compileExit):
376         * dfg/DFGOSRExitCompiler64.cpp:
377         (JSC::DFG::OSRExitCompiler::compileExit):
378         * dfg/DFGOperations.cpp:
379         * interpreter/Interpreter.cpp:
380         (JSC::Interpreter::execute):
381         (JSC::Interpreter::executeCall):
382         (JSC::Interpreter::executeConstruct):
383         * jit/JIT.cpp:
384         (JSC::JIT::privateCompile):
385         * jit/JIT.h:
386         (JSC::JIT::compile):
387         (JIT):
388         * jit/JITCode.cpp:
389         (JSC):
390         (JSC::JITCode::JITCode):
391         (JSC::JITCode::~JITCode):
392         (JSC::JITCode::execute):
393         (JSC::JITCode::hostFunction):
394         (JSC::DirectJITCode::DirectJITCode):
395         (JSC::DirectJITCode::~DirectJITCode):
396         (JSC::DirectJITCode::addressForCall):
397         (JSC::DirectJITCode::executableAddressAtOffset):
398         (JSC::DirectJITCode::dataAddressAtOffset):
399         (JSC::DirectJITCode::offsetOf):
400         (JSC::DirectJITCode::size):
401         (JSC::DirectJITCode::contains):
402         * jit/JITCode.h:
403         (JSC):
404         (JITCode):
405         (JSC::JITCode::bottomTierJIT):
406         (JSC::JITCode::topTierJIT):
407         (JSC::JITCode::nextTierJIT):
408         (JSC::JITCode::isOptimizingJIT):
409         (JSC::JITCode::isBaselineCode):
410         (JSC::JITCode::jitType):
411         (JSC::JITCode::jitTypeFor):
412         (JSC::JITCode::executableAddress):
413         (JSC::JITCode::start):
414         (JSC::JITCode::end):
415         (DirectJITCode):
416         * jit/JITDriver.h:
417         (JSC::jitCompileIfAppropriate):
418         (JSC::jitCompileFunctionIfAppropriate):
419         * jit/JITStubs.cpp:
420         (JSC::lazyLinkFor):
421         (JSC::DEFINE_STUB_FUNCTION):
422         * jit/ThunkGenerators.cpp:
423         (JSC::virtualForGenerator):
424         * llint/LLIntEntrypoints.cpp:
425         (JSC::LLInt::getFunctionEntrypoint):
426         (JSC::LLInt::getEvalEntrypoint):
427         (JSC::LLInt::getProgramEntrypoint):
428         * llint/LLIntEntrypoints.h:
429         (JSC):
430         (LLInt):
431         (JSC::LLInt::getEntrypoint):
432         * llint/LLIntSlowPaths.cpp:
433         (JSC::LLInt::jitCompileAndSetHeuristics):
434         (JSC::LLInt::entryOSR):
435         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
436         * runtime/Executable.cpp:
437         (JSC::EvalExecutable::compileInternal):
438         (JSC::ProgramExecutable::compileInternal):
439         (JSC::FunctionExecutable::compileForCallInternal):
440         (JSC::FunctionExecutable::compileForConstructInternal):
441         * runtime/Executable.h:
442         (JSC::ExecutableBase::generatedJITCodeForCall):
443         (JSC::ExecutableBase::generatedJITCodeForConstruct):
444         (JSC::ExecutableBase::generatedJITCodeFor):
445         (ExecutableBase):
446         (JSC::ExecutableBase::hostCodeEntryFor):
447         (JSC::ExecutableBase::jsCodeEntryFor):
448         (JSC::ExecutableBase::jsCodeWithArityCheckEntryFor):
449         (JSC::NativeExecutable::create):
450         (JSC::NativeExecutable::finishCreation):
451         (JSC::EvalExecutable::generatedJITCode):
452         (JSC::ProgramExecutable::generatedJITCode):
453         * runtime/ExecutionHarness.h:
454         (JSC::prepareForExecution):
455         (JSC::prepareFunctionForExecution):
456
457 2013-07-24  Filip Pizlo  <fpizlo@apple.com>
458
459         It should be possible to hijack IndexingHeader for things other than lengths
460         https://bugs.webkit.org/show_bug.cgi?id=119065
461
462         Reviewed by Mark Hahnenberg.
463         
464         Made the body of IndexingHeader be a union.
465         
466         Modified the offlineasm so that you can say IndexingHeader::u.lengths.publicLength.
467         Previously those dots would cause parse errors. Now an identifier in offlineasm can
468         have a dot anywhere except the first character.
469
470         * llint/LowLevelInterpreter32_64.asm:
471         * llint/LowLevelInterpreter64.asm:
472         * offlineasm/parser.rb:
473         * runtime/IndexingHeader.h:
474         (JSC::IndexingHeader::offsetOfPublicLength):
475         (JSC::IndexingHeader::offsetOfVectorLength):
476         (JSC::IndexingHeader::IndexingHeader):
477         (JSC::IndexingHeader::vectorLength):
478         (JSC::IndexingHeader::setVectorLength):
479         (JSC::IndexingHeader::publicLength):
480         (JSC::IndexingHeader::setPublicLength):
481
482 2013-07-24  Mark Hahnenberg  <mhahnenberg@apple.com>
483
484         JIT::updateTopCallFrame doesn't update the CallFrame's bytecodeOffset if bytecodeOffset == 0
485         https://bugs.webkit.org/show_bug.cgi?id=118923
486
487         Reviewed by Filip Pizlo.
488
489         This bug causes the CallFrame's bytecodeOffset to not be properly set when we 
490         enter, e.g., cti_optimize from an op_enter.
491
492         * jit/JITInlines.h:
493         (JSC::JIT::updateTopCallFrame):
494
495 2013-07-23  Filip Pizlo  <fpizlo@apple.com>
496
497         DFG string concatenation optimizations might emit speculative nodes after emitting nodes that kill the original inputs
498         https://bugs.webkit.org/show_bug.cgi?id=119032
499
500         Reviewed by Oliver Hunt.
501
502         It just needs some Phantom action.
503
504         * dfg/DFGFixupPhase.cpp:
505         (JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
506
507 2013-07-10  Mark Lam  <mark.lam@apple.com>
508
509         Need ExpressionRangeInfo before ResolveForPuts in strict mode.
510         https://bugs.webkit.org/show_bug.cgi?id=118997.
511
512         Reviewed by Oliver Hunt.
513
514         If we add an assertion in UnlinkedCodeBlock::expressionRangeForBytecodeOffset()
515         to ensure that we are able to find an ExpressionRangeInfo for any given bytecode
516         offset, the following tests will fails:
517             fast/js/basic-strict-mode.html
518             fast/js/mozilla/strict/8.7.2.html
519         With this fix, those tests will no longer fail.
520
521         * bytecompiler/NodesCodegen.cpp:
522         (JSC::AssignResolveNode::emitBytecode):
523         (JSC::ForInNode::emitBytecode):
524         - Emit expression info before calls to emitResolveBaseForPut() when in strict mode.
525
526 2013-07-23  Mark Lam  <mark.lam@apple.com>
527
528         Added ExpressionRangeInfo for BinaryOpNodes that can throw exceptions
529         due to type coersion.
530         https://bugs.webkit.org/show_bug.cgi?id=116853.
531
532         Reviewed by Geoffrey Garen.
533
534         * bytecompiler/NodesCodegen.cpp:
535         (JSC::BinaryOpNode::emitBytecode):
536         - Added expression info for the strcat and the general binary op cases.
537           I did not add expression info for the "compare with null" case because
538           that comparison cannot trigger type coersion, and hence it won't throw
539           any exceptions and doesn't need the expression info.
540
541 2013-07-23  Mark Lam  <mark.lam@apple.com>
542
543         Removed unused sourceOffset from JSTokenLocation.
544         https://bugs.webkit.org/show_bug.cgi?id=118996.
545
546         Reviewed by Geoffrey Garen.
547
548         This also removes the assertion reported in the bug because it is now
549         moot, thereby resolving the assertion failure issue on Windows.
550
551         * bytecompiler/NodesCodegen.cpp:
552         (JSC::ArrayNode::toArgumentList):
553         (JSC::ApplyFunctionCallDotNode::emitBytecode):
554         * parser/Lexer.cpp:
555         (JSC::::lex):
556         * parser/Lexer.h:
557         (JSC::::lexExpectIdentifier):
558         * parser/Nodes.h:
559         * parser/Parser.cpp:
560         (JSC::::Parser):
561         (JSC::::parseFunctionInfo):
562         (JSC::::parseExpressionOrLabelStatement):
563         (JSC::::parseMemberExpression):
564         * parser/Parser.h:
565         (JSC::::parse):
566         * parser/ParserTokens.h:
567         (JSC::JSTokenLocation::JSTokenLocation):
568
569 2013-07-22  Alex Christensen  <achristensen@apple.com>
570
571         Added assembly files to Windows 64-bit builds.
572         https://bugs.webkit.org/show_bug.cgi?id=118931
573
574         Reviewed by Brent Fulgham.
575
576         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Added JITStubsMSVC64.asm for x64 and enabled MASM.
577         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Added JITStubsMSVC64.asm.
578
579 2013-07-20  Brent Fulgham  <bfulgham@apple.com>
580
581         [Windows] Remove unneeded custom stdint.h now that we build on VS2010.
582         https://bugs.webkit.org/show_bug.cgi?id=118868.
583
584         Reviewed by Anders Carlsson.
585
586         * os-win32/stdint.h: Removed.
587         * GNUmakefile.list.am: Removed reference to os-win32/stdint.h
588
589 2013-07-19  Alex Christensen  <achristensen@apple.com>
590
591         Added x64 configuration to Visual Studio build.
592         https://bugs.webkit.org/show_bug.cgi?id=118888
593
594         Reviewed by Brent Fulgham.
595
596         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
597         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
598         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
599         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
600         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
601         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
602         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
603         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
604
605 2013-07-18  Andreas Kling  <akling@apple.com>
606
607         CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
608         <http://webkit.org/b/118875>
609         <rdar://problem/14488577>
610
611         Reviewed by Geoffrey Garen.
612
613         Move the CodeBlock::shrinkToFit() call out of JITCompiler::link() and to the call sites
614         so SpeculativeJIT::linkOSREntries() can fill in CodeBlock::m_dfgData->osrEntry first.
615
616         886 kB progression on <http://twitter.com/awesomekling>
617
618         * dfg/DFGJITCompiler.cpp:
619         (JSC::DFG::JITCompiler::link):
620         (JSC::DFG::JITCompiler::compile):
621         (JSC::DFG::JITCompiler::compileFunction):
622
623 2013-07-18  Chris Curtis  <chris_curtis@apple.com>
624
625         Fixed ASSERTION FAILED: callFrame == vm->topCallFrame in JSC::Interpreter::addStackTraceIfNecessary
626         https://bugs.webkit.org/show_bug.cgi?id=118498
627
628         Reviewed by Geoffrey Garen.
629
630         * jit/JITStubs.cpp:
631         (throwExceptionFromOpCall):
632         Created new throwExceptionFromOpCall that takes in a functor that contains
633         a function pointer (to create the errorObject) instead of a JSValue. Inside
634         of throwExceptionFromOpCall the topCallFrame is being rolled back in order
635         to handle the error throw. By passing the function pointer in, we can defer
636         the creation of the error object until after topCallFrame has been rolled 
637         back. This allows the error object to be created with the appropriate top 
638         frame.
639
640         DEFINE_STUB_FUNCTION(void*, stack_check):
641         DEFINE_STUB_FUNCTION(void*, op_call_arityCheck):
642         DEFINE_STUB_FUNCTION(void*, op_construct_arityCheck):
643         DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_NotJSFunction):
644         DEFINE_STUB_FUNCTION(EncodedJSValue, op_construct_NotJSConstruct):
645
646         (JSC::ErrorFunctor::~ErrorFunctor):
647         (JSC::ErrorWithExecFunctor::ErrorWithExecFunctor):
648         (JSC::ErrorWithExecFunctor::operator()):
649         (JSC::ErrorWithExecAndCalleeFunctor::ErrorWithExecAndCalleeFunctor):
650         (JSC::ErrorWithExecAndCalleeFunctor::operator()):
651         (JSC::ErrorWithExceptionFunctor::ErrorWithExceptionFunctor):
652         (JSC::ErrorWithExceptionFunctor::operator()):
653         (JSC::throwExceptionFromOpCall):
654
655         In order to eliminate the need to duplicate code, an error functor was 
656         created for the 3 different throwExceptionFromOpCall handles. 
657         1. The exception needs to be created, and the function pointer takes 1 
658             parameter(callFrame->callerFrame()).
659         2. The exception needs to be created, and the function pointer takes 2 
660             parameters (callFrame->callerFrame(), callFrame.calleeAsValue()).
661         3. The exception is already created. In this case, At the time when 
662             the error functor is called, vm.exception is returned. 
663
664         * llint/LLIntSlowPaths.cpp:
665         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
666         * runtime/ExceptionHelpers.cpp:
667         (JSC::errorDescriptionForValue):
668         (JSC::createError):
669         (JSC::createInvalidParameterError):
670         (JSC::createNotAConstructorError):
671         (JSC::createNotAFunctionError):
672         (JSC::createNotAnObjectError):
673         * runtime/ExceptionHelpers.h:
674
675         The function toString() was being used to stringify an object for an exception
676         message. If the user wrote a toString() for that object, then the system would 
677         continue to evaluate that code. A new helper function was created to prevent 
678         the system to continue execution and exception creation from that execution.
679
680 2013-07-18  Filip Pizlo  <fpizlo@apple.com>
681
682         LLInt get_argument_by_val for JSVALUE64 stores into the array profile when it meant to store into the value profile
683         https://bugs.webkit.org/show_bug.cgi?id=118865
684
685         Reviewed by Mark Hahnenberg.
686
687         * llint/LowLevelInterpreter64.asm:
688
689 2013-07-18  Andreas Kling  <akling@apple.com>
690
691         CodeBlock::m_argumentValueProfiles wastes a lot of memory.
692         <http://webkit.org/b/118852>
693         <rdar://problem/14481659>
694
695         Reviewed by Anders Carlsson.
696
697         Use Vector::resizeToFit() for CodeBlock::m_argumentValueProfiles. We don't need any padding
698         for growth, since we won't be appending to it anyway.
699
700         921 KB progression on <http://twitter.com/awesomekling>
701
702         * bytecode/CodeBlock.cpp:
703         (JSC::CodeBlock::setNumParameters):
704
705 2013-07-17  Filip Pizlo  <fpizlo@apple.com>
706
707         Unreviewed, fix 32-bit after http://trac.webkit.org/changeset/152813
708
709         * dfg/DFGSpeculativeJIT.cpp:
710         (JSC::DFG::SpeculativeJIT::compileNewFunctionNoCheck):
711         * dfg/DFGSpeculativeJIT32_64.cpp:
712         (JSC::DFG::SpeculativeJIT::compile):
713
714 2013-07-17  Geoffrey Garen  <ggaren@apple.com>
715
716         API tests should test for JSStringCreateWithCFString with empty string
717         https://bugs.webkit.org/show_bug.cgi?id=118819
718
719         Reviewed by Mark Hahnenberg.
720
721         * API/tests/testapi.c:
722         (main): Test!
723
724 2013-07-17  Filip Pizlo  <fpizlo@apple.com>
725
726         DFG assumes that NewFunction will never pass its input through
727         https://bugs.webkit.org/show_bug.cgi?id=118798
728
729         Reviewed by Sam Weinig.
730         
731         Previously the DFG was assuming that NewFunction always returns a function. That's not
732         the case. It may return whatever was passed to it, if it wasn't passed SpecEmpty.
733         
734         This fact needed to be wired through the compiler.
735
736         * dfg/DFGAbstractState.cpp:
737         (JSC::DFG::AbstractState::executeEffects):
738         * dfg/DFGAbstractValue.h:
739         (JSC::DFG::AbstractValue::makeTop):
740         * dfg/DFGGraph.cpp:
741         (JSC::DFG::Graph::dump):
742         * dfg/DFGOperations.cpp:
743         * dfg/DFGOperations.h:
744         * dfg/DFGPredictionPropagationPhase.cpp:
745         (JSC::DFG::PredictionPropagationPhase::propagate):
746         * dfg/DFGSpeculativeJIT.h:
747         (JSC::DFG::SpeculativeJIT::callOperation):
748         * dfg/DFGSpeculativeJIT32_64.cpp:
749         (JSC::DFG::SpeculativeJIT::compile):
750         * dfg/DFGSpeculativeJIT64.cpp:
751         (JSC::DFG::SpeculativeJIT::compile):
752
753 2013-07-17  Geoffrey Garen  <ggaren@apple.com>
754
755         JSStringCreateWithCFString should not convert the empty string into the NULL string
756         https://bugs.webkit.org/show_bug.cgi?id=118816
757
758         Reviewed by Sam Weinig.
759
760         * API/JSStringRef.cpp:
761         (JSStringCreateWithUTF8CString): Removed an extraneous comment, which
762         a previous version of the patch made incorrect.
763
764         * API/JSStringRefCF.cpp:
765         (JSStringCreateWithCFString): Don't convert the empty string into the
766         null string.
767
768 2013-07-17  Chris Curtis  <chris_curtis@apple.com>
769
770         Naming convention on createInvalidParamError is incorrect.
771         https://bugs.webkit.org/show_bug.cgi?id=118756
772
773         Reviewed by Geoffrey Garen.
774         
775         Changed the naming of createInvalidParamError to createInvalidParameterError.
776         This corrects the naming convention for the function listed in the WebKit code styling.
777
778         * interpreter/Interpreter.cpp:
779         (JSC::loadVarargs):
780         * jit/JITStubs.cpp:
781         (JSC::DEFINE_STUB_FUNCTION):
782         * llint/LLIntSlowPaths.cpp:
783         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
784         * runtime/CommonSlowPaths.h:
785         (JSC::CommonSlowPaths::opIn):
786         * runtime/ExceptionHelpers.cpp:
787         (JSC::createInvalidParameterError):
788         * runtime/ExceptionHelpers.h:
789         * runtime/JSObject.cpp:
790         (JSC::JSObject::hasInstance):
791
792 2013-07-16  David Farler  <dfarler@apple.com>
793
794         Typo in DFGInsertionSet.h header guard: "DFGInsectionSet_h" -> "DFGInsertionSet_h"
795         https://bugs.webkit.org/show_bug.cgi?id=118753
796
797         Reviewed by Geoffrey Garen.
798
799         * dfg/DFGInsertionSet.h:
800         "DFGInsectionSet_h" -> "DFGInsertionSet_h"
801
802 2013-07-16  Filip Pizlo  <fpizlo@apple.com>
803
804         MakeRope fixup shouldn't lead to an Identity without kids
805         https://bugs.webkit.org/show_bug.cgi?id=118745
806
807         Reviewed by Mark Hahnenberg.
808         
809         Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
810         
811         Make Node::convertToIdentity release-assert that it has exactly one kid.
812
813         * dfg/DFGFixupPhase.cpp:
814         (JSC::DFG::FixupPhase::fixupMakeRope):
815         * dfg/DFGNode.h:
816         (JSC::DFG::Node::convertToIdentity):
817
818 2013-07-16  Mark Hahnenberg  <mhahnenberg@apple.com>
819
820         Remove reference to JSValueStructSupport.h from JSExport.h
821         https://bugs.webkit.org/show_bug.cgi?id=118746
822
823         Reviewed by Filip Pizlo.
824
825         * API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
826
827 2013-07-13  Commit Queue  <commit-queue@webkit.org>
828
829         Unreviewed, rolling out r151978.
830         http://trac.webkit.org/changeset/151978
831         https://bugs.webkit.org/show_bug.cgi?id=118651
832
833         Caused regressions at least 3 websites (Requested by rniwa on
834         #webkit).
835
836         * runtime/JSCJSValue.h:
837         * runtime/JSString.h:
838
839 2013-07-12  Chris Curtis    <chris_curtis@apple.com>
840
841         Optimize addStrackTraceIfNecessary to be faster in the case when it's not necessary
842         https://bugs.webkit.org/show_bug.cgi?id=118328
843
844         Reviewed by Geoffrey Garen.
845
846         Retrieving the stack is costly. We want to get it only once. By moving the check
847         for the .stack property above the code to retrieve the stack, we ensure this. 
848
849         * interpreter/Interpreter.cpp:
850         (JSC::Interpreter::addStackTraceIfNecessary):
851
852 2013-07-12  Brent Fulgham  <bfulgham@apple.com>
853
854         [Windows] Build correction after r152573/r152577.
855         https://bugs.webkit.org/show_bug.cgi?id=118610
856
857         Reviewed by Oliver Hunt.
858
859         * jit/JITThunks.cpp:
860         (JSC::JITThunks::hostFunctionStub): Hand-feed MSVC++ the fact that we want the second
861         argument of the make_pair to be a function pointer.
862
863 2013-07-11  Oliver Hunt  <oliver@apple.com>
864
865         Attempt to fix the windows build.
866
867         * jit/JITThunks.cpp:
868         (JSC::JITThunks::hostFunctionStub):
869         * jit/JITThunks.h:
870
871 2013-07-10  Oliver Hunt  <oliver@apple.com>
872
873         NativeExecutable cache needs to use both call and construct functions for key
874         https://bugs.webkit.org/show_bug.cgi?id=118545
875
876         Reviewed by Geoffrey Garen.
877
878         Make the native executable cache make use a key pair so we don't decide to
879         treat all subsequent functions as not being constructors.
880
881         * jit/JITThunks.cpp:
882         (JSC::JITThunks::hostFunctionStub):
883         * jit/JITThunks.h:
884         * runtime/JSBoundFunction.cpp:
885         (JSC::JSBoundFunction::create):
886         * runtime/JSCell.cpp:
887         (JSC::JSCell::getCallData):
888         (JSC::JSCell::getConstructData):
889
890 2013-07-09  Mark Lam  <mark.lam@apple.com>
891
892         Gardening to unbreak builds on the Windows bot.
893
894         Not reviewed.
895
896         * parser/ParserTokens.h:
897
898 2013-07-09  Mark Lam  <mark.lam@apple.com>
899
900         Fix 30% JSBench regression (caused by adding column numbers to stack traces).
901         https://bugs.webkit.org/show_bug.cgi?id=118481.
902
903         Reviewed by Mark Hahnenberg and Geoffrey Garen.
904
905         Previously, we already capture ExpressionRangeInfo that provides a divot for
906         each bytecode that can potentially throw an exception (and therefore generate
907         a stack trace). On first attempt to compute column numbers, we then do a walk
908         of the source string to record all line start positions in a table associated
909         with the SourceProvider. The column number can then be computed as
910             divot - lineStartFor(bytecodeOffset).
911
912         The computation of this lineStarts table is the source of the 30% JSBench
913         performance regression.
914
915         The new code now records lineStarts as the lexer and parser scans the source
916         code. These lineStarts are then used to compute the column number for the
917         given divot, and stored in the ExpressionRangeInfo. Similarly, we also capture
918         the line number at the divot point and store that in the ExpressionRangeInfo.
919         Hence, to look up line and column numbers, we now lookup the ExpressionRangeInfo
920         for the bytecodeOffset, and then compute the line and column from the values
921         stored in the expression info.
922
923         The strategy:
924         1. We want to minimize perturbations to the lexer and parser. Specifically,
925            the changes added should not change how it scans code, and generate bytecode.
926         2. We regard the divot as the source character position we are interested
927            in. As such, we'll capture line and lineStart (for column) at the point
928            when we capture the divot information. This ensures that the 3 values are
929            consistent.
930
931         How the change is done:
932         1. Change the lexer to track lineStarts.
933         2. Change the parser to capture line and lineStarts at the point of capturing
934            divots.
935         3. Change the parser and associated code to plumb these values all the way to
936            the point that the correspoinding ExpressionRangeInfo is emitted.
937         4. Propagate and record SourceCode firstLine and firstLineColumnOffset to the
938            the necessary places so that we can add them as needed when reifying
939            UnlinkedCodeBlocks into CodeBlocks.
940         5. Compress the line and column number values in the ExpressionRangeInfo. In
941            practice, we seldom have both large line and column numbers. Hence, we can
942            encode both in an uint32_t most of the time. For the times when we encounter
943            both large line and column numbers, we have a fallback to store the "fat"
944            position info.
945         6. Emit an ExpressionRangeInfo for UnaryOp nodes to get more line and column
946            number coverage.
947         7. Change the interpreter to use the new way of computing line and column.
948         8. Delete old line and column computation code that is now unused.
949
950         Misc details:
951         - the old lexer was tracking both a startOffset and charPosition where
952           charPosition equals startOffset - SourceCode.startOffset. We now use
953           startOffset exclusively throughout the system for consistency.
954           All offset values (including lineStart) are relative to the start of the
955           SourceProvider string. These values will only be converted to be relative
956           to the SourceCode.startOffset at the very last minute i.e. when the divot
957           is stored into the ExpressionRangeInfo.
958
959           This change to use the same offset system everywhere reduces confusion
960           from having to convert back and forth between the 2 systems. It also
961           enables a lot of assertions to be used.
962
963         - Also fixed some bugs in the choice of divot positions to use. For example,
964           both Eval and Function expressions previously used column numbers from
965           the start of the expression but used the line number at the end of the
966           expression. This is now fixed to use either the start or end positions
967           as appropriate, but not a mix of line and columns from both.
968
969         - Why use ints instead of unsigneds for offsets and lineStarts inside the
970           lexer and parser?
971           Some tests (e.g. fast/js/call-base-resolution.html and
972           fast/js/eval-cross-window.html) has shown that lineStart offsets can be
973           prior to the SourceCode.startOffset. Keeping the lexer offsets as ints
974           simplifies computations and makes it easier to maintain the assertions
975           that (startOffset >= lineStartOffset).
976
977           However, column and line numbers are always unsigned when we publish
978           them to the ExpressionRangeInfo. The ints are only used inside the
979           lexer and parser ... well, and bytecode generator.
980
981         - For all cases, lineStart is always captured where the divot is captured.
982           However, some sputnik conformance tests have shown that we cannot honor
983           line breaks for assignment statements like the following:
984
985               eval("x\u000A*=\u000A-1;");
986
987           In this case, the lineStart is expected to be captured at the start of
988           the assignment expression instead of at the divot point in the middle.
989           The assignment expression is the only special case for this.
990
991         This patch has been tested against the full layout tests both with release
992         and debug builds with no regression.
993
994         * API/JSContextRef.cpp:
995         (JSContextCreateBacktrace):
996           - Updated to use the new StackFrame::computeLineAndColumn().
997         * bytecode/CodeBlock.cpp:
998         (JSC::CodeBlock::CodeBlock):
999           - Added m_firstLineColumnOffset initialization.
1000           - Plumbed the firstLineColumnOffset into the SourceCode.
1001           - Initialized column for op_debug using the new way.
1002         (JSC::CodeBlock::lineNumberForBytecodeOffset):
1003           - Changed to compute line number using the ExpressionRangeInfo.
1004         (JSC::CodeBlock::columnNumberForBytecodeOffset): Added
1005           - Changed to compute column number using the ExpressionRangeInfo.
1006         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
1007         * bytecode/CodeBlock.h:
1008         (JSC::CodeBlock::firstLineColumnOffset):
1009         (JSC::GlobalCodeBlock::GlobalCodeBlock):
1010           - Plumbed firstLineColumnOffset through to the super class.
1011         (JSC::ProgramCodeBlock::ProgramCodeBlock):
1012           - Plumbed firstLineColumnOffset through to the super class.
1013         (JSC::EvalCodeBlock::EvalCodeBlock):
1014           - Plumbed firstLineColumnOffset through to the super class.
1015             But for EvalCodeBlocks, the firstLineColumnOffset is always 1
1016             because we're starting with a new source string with no start
1017             offset.
1018         (JSC::FunctionCodeBlock::FunctionCodeBlock):
1019           - Plumbed firstLineColumnOffset through to the super class.
1020
1021         * bytecode/ExpressionRangeInfo.h:
1022           - Added modes for encoding line and column into a single 30-bit
1023             unsigned. The encoding is in 1 of 3 modes:
1024             1. FatLineMode: 22-bit line, 8-bit column
1025             2. FatColumnMode: 8-bit line, 22-bit column
1026             3. FatLineAndColumnMode: 32-bit line, 32-bit column
1027         (JSC::ExpressionRangeInfo::encodeFatLineMode): Added.
1028           - Encodes line and column into the 30-bit position using FatLine mode.
1029         (JSC::ExpressionRangeInfo::encodeFatColumnMode): Added.
1030           - Encodes line and column into the 30-bit position using FatColumn mode.
1031         (JSC::ExpressionRangeInfo::decodeFatLineMode): Added.
1032           - Decodes the FatLine mode 30-bit position into line and column.
1033         (JSC::ExpressionRangeInfo::decodeFatColumnMode): Added.
1034           - Decodes the FatColumn mode 30-bit position into line and column.
1035
1036         * bytecode/UnlinkedCodeBlock.cpp:
1037         (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
1038           - Plumbed startColumn through.
1039         (JSC::UnlinkedFunctionExecutable::link):
1040           - Plumbed startColumn through.
1041         (JSC::UnlinkedCodeBlock::lineNumberForBytecodeOffset):
1042           - Computes a line number using the new way.
1043         (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeOffset):
1044           - Added decoding of line and column.
1045           - Added handling of the case when we do not find a fitting expression
1046             range info for a specified bytecodeOffset. This only happens if the
1047             bytecodeOffset is below the first expression range info. In that
1048             case, we'll use the first expression range info entry.
1049         (JSC::UnlinkedCodeBlock::addExpressionInfo):
1050           - Added encoding of line and column.
1051
1052         * bytecode/UnlinkedCodeBlock.h:
1053           - Added m_expressionInfoFatPositions in RareData.
1054         (JSC::UnlinkedFunctionExecutable::functionStartColumn):
1055         (JSC::UnlinkedCodeBlock::shrinkToFit):
1056           - Removed obsoleted m_lineInfo.
1057         * bytecompiler/BytecodeGenerator.cpp:
1058         (JSC::BytecodeGenerator::emitCall): Plumbed line and lineStart through.
1059         (JSC::BytecodeGenerator::emitCallEval): Plumbed line and lineStart through.
1060         (JSC::BytecodeGenerator::emitCallVarargs): Plumbed line and lineStart through.
1061         (JSC::BytecodeGenerator::emitConstruct): Plumbed line and lineStart through.
1062         (JSC::BytecodeGenerator::emitDebugHook): Plumbed lineStart through.
1063         * bytecompiler/BytecodeGenerator.h:
1064         (JSC::BytecodeGenerator::emitNode):
1065         (JSC::BytecodeGenerator::emitNodeInConditionContext):
1066           - Removed obsoleted m_lineInfo.
1067         (JSC::BytecodeGenerator::emitExpressionInfo):
1068           - Plumbed line and lineStart through.
1069           - Compute the line and column to be added to the expression range info.
1070         * bytecompiler/NodesCodegen.cpp:
1071         (JSC::ThrowableExpressionData::emitThrowReferenceError):
1072         (JSC::ResolveNode::emitBytecode):
1073         (JSC::ArrayNode::toArgumentList):
1074         (JSC::BracketAccessorNode::emitBytecode):
1075         (JSC::DotAccessorNode::emitBytecode):
1076         (JSC::NewExprNode::emitBytecode):
1077         (JSC::EvalFunctionCallNode::emitBytecode):
1078         (JSC::FunctionCallValueNode::emitBytecode):
1079         (JSC::FunctionCallResolveNode::emitBytecode):
1080         (JSC::FunctionCallBracketNode::emitBytecode):
1081         (JSC::FunctionCallDotNode::emitBytecode):
1082         (JSC::CallFunctionCallDotNode::emitBytecode):
1083         (JSC::ApplyFunctionCallDotNode::emitBytecode):
1084         (JSC::PostfixNode::emitResolve):
1085         (JSC::PostfixNode::emitBracket):
1086         (JSC::PostfixNode::emitDot):
1087         (JSC::DeleteResolveNode::emitBytecode):
1088         (JSC::DeleteBracketNode::emitBytecode):
1089         (JSC::DeleteDotNode::emitBytecode):
1090         (JSC::PrefixNode::emitResolve):
1091         (JSC::PrefixNode::emitBracket):
1092         (JSC::PrefixNode::emitDot):
1093           - Plumbed line and lineStart through the above as needed.
1094
1095         (JSC::UnaryOpNode::emitBytecode):
1096           - Added emission of an ExpressionRangeInfo for the UnaryOp node.
1097
1098         (JSC::BinaryOpNode::emitStrcat):
1099         (JSC::ThrowableBinaryOpNode::emitBytecode):
1100         (JSC::InstanceOfNode::emitBytecode):
1101         (JSC::emitReadModifyAssignment):
1102         (JSC::ReadModifyResolveNode::emitBytecode):
1103         (JSC::AssignResolveNode::emitBytecode):
1104         (JSC::AssignDotNode::emitBytecode):
1105         (JSC::ReadModifyDotNode::emitBytecode):
1106         (JSC::AssignBracketNode::emitBytecode):
1107         (JSC::ReadModifyBracketNode::emitBytecode):
1108           - Plumbed line and lineStart through the above as needed.
1109
1110         (JSC::ConstStatementNode::emitBytecode):
1111         (JSC::EmptyStatementNode::emitBytecode):
1112         (JSC::DebuggerStatementNode::emitBytecode):
1113         (JSC::ExprStatementNode::emitBytecode):
1114         (JSC::VarStatementNode::emitBytecode):
1115         (JSC::IfElseNode::emitBytecode):
1116         (JSC::DoWhileNode::emitBytecode):
1117         (JSC::WhileNode::emitBytecode):
1118         (JSC::ForNode::emitBytecode):
1119         (JSC::ForInNode::emitBytecode):
1120         (JSC::ContinueNode::emitBytecode):
1121         (JSC::BreakNode::emitBytecode):
1122         (JSC::ReturnNode::emitBytecode):
1123         (JSC::WithNode::emitBytecode):
1124         (JSC::SwitchNode::emitBytecode):
1125         (JSC::LabelNode::emitBytecode):
1126         (JSC::ThrowNode::emitBytecode):
1127         (JSC::TryNode::emitBytecode):
1128         (JSC::ProgramNode::emitBytecode):
1129         (JSC::EvalNode::emitBytecode):
1130         (JSC::FunctionBodyNode::emitBytecode):
1131           - Plumbed line and lineStart through the above as needed.
1132
1133         * interpreter/Interpreter.cpp:
1134         (JSC::appendSourceToError):
1135           - Added line and column arguments for expressionRangeForBytecodeOffset().
1136         (JSC::StackFrame::computeLineAndColumn):
1137           - Replaces StackFrame::line() and StackFrame::column().
1138         (JSC::StackFrame::expressionInfo):
1139           - Added line and column arguments.
1140         (JSC::StackFrame::toString):
1141           - Changed to use the new StackFrame::computeLineAndColumn().
1142         (JSC::Interpreter::getStackTrace):
1143           - Added the needed firstLineColumnOffset arg for the StackFrame.
1144
1145         * interpreter/Interpreter.h:
1146         * parser/ASTBuilder.h:
1147         (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
1148         (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
1149         (JSC::ASTBuilder::createResolve):
1150         (JSC::ASTBuilder::createBracketAccess):
1151         (JSC::ASTBuilder::createDotAccess):
1152         (JSC::ASTBuilder::createRegExp):
1153         (JSC::ASTBuilder::createNewExpr):
1154         (JSC::ASTBuilder::createAssignResolve):
1155         (JSC::ASTBuilder::createFunctionExpr):
1156         (JSC::ASTBuilder::createFunctionBody):
1157         (JSC::ASTBuilder::createGetterOrSetterProperty):
1158         (JSC::ASTBuilder::createFuncDeclStatement):
1159         (JSC::ASTBuilder::createBlockStatement):
1160         (JSC::ASTBuilder::createExprStatement):
1161         (JSC::ASTBuilder::createIfStatement):
1162         (JSC::ASTBuilder::createForLoop):
1163         (JSC::ASTBuilder::createForInLoop):
1164         (JSC::ASTBuilder::createVarStatement):
1165         (JSC::ASTBuilder::createReturnStatement):
1166         (JSC::ASTBuilder::createBreakStatement):
1167         (JSC::ASTBuilder::createContinueStatement):
1168         (JSC::ASTBuilder::createTryStatement):
1169         (JSC::ASTBuilder::createSwitchStatement):
1170         (JSC::ASTBuilder::createWhileStatement):
1171         (JSC::ASTBuilder::createDoWhileStatement):
1172         (JSC::ASTBuilder::createLabelStatement):
1173         (JSC::ASTBuilder::createWithStatement):
1174         (JSC::ASTBuilder::createThrowStatement):
1175         (JSC::ASTBuilder::createDebugger):
1176         (JSC::ASTBuilder::createConstStatement):
1177         (JSC::ASTBuilder::appendBinaryExpressionInfo):
1178         (JSC::ASTBuilder::appendUnaryToken):
1179         (JSC::ASTBuilder::unaryTokenStackLastStart):
1180         (JSC::ASTBuilder::unaryTokenStackLastLineStartPosition): Added.
1181         (JSC::ASTBuilder::assignmentStackAppend):
1182         (JSC::ASTBuilder::createAssignment):
1183         (JSC::ASTBuilder::setExceptionLocation):
1184         (JSC::ASTBuilder::makeDeleteNode):
1185         (JSC::ASTBuilder::makeFunctionCallNode):
1186         (JSC::ASTBuilder::makeBinaryNode):
1187         (JSC::ASTBuilder::makeAssignNode):
1188         (JSC::ASTBuilder::makePrefixNode):
1189         (JSC::ASTBuilder::makePostfixNode):.
1190           - Plumbed line, lineStart, and startColumn through the above as needed.
1191
1192         * parser/Lexer.cpp:
1193         (JSC::::currentSourcePtr):
1194         (JSC::::setCode):
1195           - Added tracking for sourceoffset and lineStart.
1196         (JSC::::internalShift):
1197         (JSC::::parseIdentifier):
1198           - Added tracking for lineStart.
1199         (JSC::::parseIdentifierSlowCase):
1200         (JSC::::parseString):
1201           - Added tracking for lineStart.
1202         (JSC::::parseStringSlowCase):
1203         (JSC::::lex):
1204           - Added tracking for sourceoffset.
1205         (JSC::::sourceCode):
1206         * parser/Lexer.h:
1207         (JSC::Lexer::currentOffset):
1208         (JSC::Lexer::currentLineStartOffset):
1209         (JSC::Lexer::setOffset):
1210           - Added tracking for lineStart.
1211         (JSC::Lexer::offsetFromSourcePtr): Added. conversion function.
1212         (JSC::Lexer::sourcePtrFromOffset): Added. conversion function.
1213         (JSC::Lexer::setOffsetFromSourcePtr):
1214         (JSC::::lexExpectIdentifier):
1215           - Added tracking for sourceoffset and lineStart.
1216
1217         * parser/NodeConstructors.h:
1218         (JSC::Node::Node):
1219         (JSC::ResolveNode::ResolveNode):
1220         (JSC::EvalFunctionCallNode::EvalFunctionCallNode):
1221         (JSC::FunctionCallValueNode::FunctionCallValueNode):
1222         (JSC::FunctionCallResolveNode::FunctionCallResolveNode):
1223         (JSC::FunctionCallBracketNode::FunctionCallBracketNode):
1224         (JSC::FunctionCallDotNode::FunctionCallDotNode):
1225         (JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
1226         (JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
1227         (JSC::PostfixNode::PostfixNode):
1228         (JSC::DeleteResolveNode::DeleteResolveNode):
1229         (JSC::DeleteBracketNode::DeleteBracketNode):
1230         (JSC::DeleteDotNode::DeleteDotNode):
1231         (JSC::PrefixNode::PrefixNode):
1232         (JSC::ReadModifyResolveNode::ReadModifyResolveNode):
1233         (JSC::ReadModifyBracketNode::ReadModifyBracketNode):
1234         (JSC::AssignBracketNode::AssignBracketNode):
1235         (JSC::AssignDotNode::AssignDotNode):
1236         (JSC::ReadModifyDotNode::ReadModifyDotNode):
1237         (JSC::AssignErrorNode::AssignErrorNode):
1238         (JSC::WithNode::WithNode):
1239         (JSC::ForInNode::ForInNode):
1240           - Plumbed line and lineStart through the above as needed.
1241         * parser/Nodes.cpp:
1242         (JSC::StatementNode::setLoc): Plumbed lineStart.
1243         (JSC::ScopeNode::ScopeNode): Plumbed lineStart.
1244         (JSC::ProgramNode::ProgramNode): Plumbed startColumn.
1245         (JSC::ProgramNode::create): Plumbed startColumn.
1246         (JSC::EvalNode::create):
1247         (JSC::FunctionBodyNode::FunctionBodyNode): Plumbed startColumn.
1248         (JSC::FunctionBodyNode::create): Plumbed startColumn.
1249         * parser/Nodes.h:
1250         (JSC::Node::startOffset):
1251         (JSC::Node::lineStartOffset): Added.
1252         (JSC::StatementNode::firstLine):
1253         (JSC::StatementNode::lastLine):
1254         (JSC::ThrowableExpressionData::ThrowableExpressionData):
1255         (JSC::ThrowableExpressionData::setExceptionSourceCode):
1256         (JSC::ThrowableExpressionData::divotStartOffset):
1257         (JSC::ThrowableExpressionData::divotEndOffset):
1258         (JSC::ThrowableExpressionData::divotLine):
1259         (JSC::ThrowableExpressionData::divotLineStart):
1260         (JSC::ThrowableSubExpressionData::ThrowableSubExpressionData):
1261         (JSC::ThrowableSubExpressionData::setSubexpressionInfo):
1262         (JSC::ThrowableSubExpressionData::subexpressionDivot):
1263         (JSC::ThrowableSubExpressionData::subexpressionStartOffset):
1264         (JSC::ThrowableSubExpressionData::subexpressionEndOffset):
1265         (JSC::ThrowableSubExpressionData::subexpressionLine):
1266         (JSC::ThrowableSubExpressionData::subexpressionLineStart):
1267         (JSC::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
1268         (JSC::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
1269         (JSC::ThrowablePrefixedSubExpressionData::subexpressionDivot):
1270         (JSC::ThrowablePrefixedSubExpressionData::subexpressionStartOffset):
1271         (JSC::ThrowablePrefixedSubExpressionData::subexpressionEndOffset):
1272         (JSC::ThrowablePrefixedSubExpressionData::subexpressionLine):
1273         (JSC::ThrowablePrefixedSubExpressionData::subexpressionLineStart):
1274         (JSC::ScopeNode::startStartOffset):
1275         (JSC::ScopeNode::startLineStartOffset):
1276         (JSC::ProgramNode::startColumn):
1277         (JSC::EvalNode::startColumn):
1278         (JSC::FunctionBodyNode::startColumn):
1279           - Plumbed line and lineStart through the above as needed.
1280         * parser/Parser.cpp:
1281         (JSC::::Parser):
1282         (JSC::::parseSourceElements):
1283         (JSC::::parseVarDeclarationList):
1284         (JSC::::parseConstDeclarationList):
1285         (JSC::::parseForStatement):
1286         (JSC::::parseBreakStatement):
1287         (JSC::::parseContinueStatement):
1288         (JSC::::parseReturnStatement):
1289         (JSC::::parseThrowStatement):
1290         (JSC::::parseWithStatement):
1291           - Plumbed line and lineStart through the above as needed.
1292         (JSC::::parseFunctionBody):
1293           - Plumbed startColumn.
1294         (JSC::::parseFunctionInfo):
1295         (JSC::::parseFunctionDeclaration):
1296         (JSC::LabelInfo::LabelInfo):
1297         (JSC::::parseExpressionOrLabelStatement):
1298         (JSC::::parseAssignmentExpression):
1299         (JSC::::parseBinaryExpression):
1300         (JSC::::parseProperty):
1301         (JSC::::parseObjectLiteral):
1302         (JSC::::parsePrimaryExpression):
1303         (JSC::::parseMemberExpression):
1304         (JSC::::parseUnaryExpression):
1305           - Plumbed line, lineStart, startColumn through the above as needed.
1306         * parser/Parser.h:
1307         (JSC::Parser::next):
1308         (JSC::Parser::nextExpectIdentifier):
1309         (JSC::Parser::tokenStart):
1310         (JSC::Parser::tokenColumn):
1311         (JSC::Parser::tokenEnd):
1312         (JSC::Parser::tokenLineStart):
1313         (JSC::Parser::lastTokenLine):
1314         (JSC::Parser::lastTokenLineStart):
1315         (JSC::::parse):
1316         * parser/ParserTokens.h:
1317         (JSC::JSTokenLocation::JSTokenLocation):
1318           - Plumbed lineStart.
1319         (JSC::JSTokenLocation::lineStartPosition):
1320         (JSC::JSTokenLocation::startPosition):
1321         (JSC::JSTokenLocation::endPosition):
1322         * parser/SourceCode.h:
1323         (JSC::SourceCode::SourceCode):
1324         (JSC::SourceCode::startColumn):
1325         (JSC::makeSource):
1326         (JSC::SourceCode::subExpression):
1327         * parser/SourceProvider.cpp: delete old code.
1328         * parser/SourceProvider.h: delete old code.
1329         * parser/SourceProviderCacheItem.h:
1330         (JSC::SourceProviderCacheItem::closeBraceToken):
1331         (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
1332           - Plumbed lineStart.
1333         * parser/SyntaxChecker.h:
1334         (JSC::SyntaxChecker::makeFunctionCallNode):
1335         (JSC::SyntaxChecker::makeAssignNode):
1336         (JSC::SyntaxChecker::makePrefixNode):
1337         (JSC::SyntaxChecker::makePostfixNode):
1338         (JSC::SyntaxChecker::makeDeleteNode):
1339         (JSC::SyntaxChecker::createResolve):
1340         (JSC::SyntaxChecker::createBracketAccess):
1341         (JSC::SyntaxChecker::createDotAccess):
1342         (JSC::SyntaxChecker::createRegExp):
1343         (JSC::SyntaxChecker::createNewExpr):
1344         (JSC::SyntaxChecker::createAssignResolve):
1345         (JSC::SyntaxChecker::createFunctionExpr):
1346         (JSC::SyntaxChecker::createFunctionBody):
1347         (JSC::SyntaxChecker::createFuncDeclStatement):
1348         (JSC::SyntaxChecker::createForInLoop):
1349         (JSC::SyntaxChecker::createReturnStatement):
1350         (JSC::SyntaxChecker::createBreakStatement):
1351         (JSC::SyntaxChecker::createContinueStatement):
1352         (JSC::SyntaxChecker::createWithStatement):
1353         (JSC::SyntaxChecker::createLabelStatement):
1354         (JSC::SyntaxChecker::createThrowStatement):
1355         (JSC::SyntaxChecker::createGetterOrSetterProperty):
1356         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
1357         (JSC::SyntaxChecker::operatorStackPop):
1358           - Made SyntaxChecker prototype changes to match ASTBuilder due to new
1359             args added for plumbing line, lineStart, and startColumn.
1360         * runtime/CodeCache.cpp:
1361         (JSC::CodeCache::generateBytecode):
1362         (JSC::CodeCache::getCodeBlock):
1363           - Plumbed startColumn.
1364         * runtime/Executable.cpp:
1365         (JSC::FunctionExecutable::FunctionExecutable):
1366         (JSC::ProgramExecutable::compileInternal):
1367         (JSC::FunctionExecutable::produceCodeBlockFor):
1368         (JSC::FunctionExecutable::fromGlobalCode):
1369           - Plumbed startColumn.
1370         * runtime/Executable.h:
1371         (JSC::ScriptExecutable::startColumn):
1372         (JSC::ScriptExecutable::recordParse):
1373         (JSC::FunctionExecutable::create):
1374           - Plumbed startColumn.
1375
1376 2013-07-08  Carlos Garcia Campos  <cgarcia@igalia.com>
1377
1378         Unreviewed. Fix make distcheck.
1379
1380         * GNUmakefile.list.am: Add missing header files.
1381
1382 2013-07-04  Patrick Gansterer  <paroga@webkit.org>
1383
1384         [CMake] Add generation of JITStubs for x86_64 MSVC
1385         https://bugs.webkit.org/show_bug.cgi?id=116666
1386
1387         Reviewed by Laszlo Gombos.
1388
1389         Also move the generation for ARM CPU into the CMakeLists.txt,
1390         since it's compiler specific and not dedicated to Windows CE.
1391
1392         * CMakeLists.txt:
1393         * PlatformWinCE.cmake: Removed.
1394
1395 2013-07-04  Patrick Gansterer  <paroga@webkit.org>
1396
1397         [CMake] Add STATICALLY_LINKED_WITH_WTF to JavaScriptCore project
1398         https://bugs.webkit.org/show_bug.cgi?id=118120
1399
1400         Reviewed by Gyuyoung Kim.
1401
1402         Since WTF is a static library linked to JavaScriptCore on all CMake ports
1403         we need to define STATICALLY_LINKED_WITH_WTF for all of them.
1404         This makes only a difference for Windows, since WTF_EXPORT and WTF_IMPORT
1405         are the same on all other platforms.
1406
1407         * CMakeLists.txt:
1408
1409 2013-07-02  Mark Hahnenberg  <mhahnenberg@apple.com>
1410
1411         Replace RELEASE_ASSERT with ASSERT in CodeBlock:: bytecodeOffsetForCallAtIndex
1412         https://bugs.webkit.org/show_bug.cgi?id=118316
1413
1414         Reviewed by Geoffrey Garen.
1415
1416         This is causing some crashiness in release builds. We should replace it with an ASSERT 
1417         until we track down all the places that need fixing in bug 118315.
1418
1419         * bytecode/CodeBlock.h:
1420         (JSC::CodeBlock::bytecodeOffsetForCallAtIndex):
1421
1422 2013-07-02  Brent Fulgham  <bfulgham@apple.com>
1423
1424         [Windows] Unreviewed build correction for 'DebugSuffix' target.
1425
1426         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj: Must pass the
1427         DEBUGSUFFIX definition to the nmake instance to be available during script processing.
1428
1429 2013-07-01  Sergio Correia  <sergio.correia@openbossa.org>
1430
1431         [JSC]: Fix maybe-uninitialized gcc 4.8 warning in DFGSpeculativeJIT.cpp
1432         https://bugs.webkit.org/show_bug.cgi?id=118278
1433
1434         Reviewed by Filip Pizlo.
1435
1436         * dfg/DFGSpeculativeJIT.cpp:
1437         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
1438         Initialize valueGPR with InvalidGPRReg.
1439
1440 2013-07-01  Csaba Osztrogonác  <ossy@webkit.org>
1441
1442         Fix cast-align warnings in JavaScriptCore/heap/HandleBlockInlines.h
1443         https://bugs.webkit.org/show_bug.cgi?id=118242
1444
1445         Reviewed by Mark Hahnenberg.
1446
1447         * heap/HandleBlockInlines.h:
1448         (JSC::HandleBlock::nodes):
1449
1450 2013-06-29  Andreas Kling  <akling@apple.com>
1451
1452         Follow-up to r152206: also update HashFlags8BitBuffer in the LLInt.
1453
1454         * llint/LowLevelInterpreter.asm:
1455
1456 2013-06-28  Andreas Kling  <akling@apple.com>
1457
1458         Un-crashify JSC tests on debug bots after Anders had his way with StringImpl.
1459
1460         * llint/LLIntData.cpp:
1461         (JSC::LLInt::Data::performAssertions):
1462
1463 2013-06-28  Anders Carlsson  <andersca@apple.com>
1464
1465         Remove String::deprecatedCharactersWithNullTermination() and related code
1466         https://bugs.webkit.org/show_bug.cgi?id=118211
1467
1468         Reviewed by Benjamin Poulain.
1469
1470         * API/JSStringRef.cpp:
1471         (JSStringCreateWithCharactersNoCopy):
1472         Update call to StringImpl::createWithoutCopying.
1473
1474 2013-06-27  Timothy Hatcher  <timothy@apple.com>
1475
1476         Notify the debugger about functions created from source code via new Function() or WebCore::JSLazyEventListener.
1477
1478         https://bugs.webkit.org/show_bug.cgi?id=118063
1479
1480         Reviewed by Geoffrey Garen.
1481
1482         * bytecode/UnlinkedCodeBlock.cpp:
1483         (JSC::UnlinkedFunctionExecutable::fromGlobalCode): Call Debugger::sourceParsed.
1484
1485 2013-06-26  Anders Carlsson  <andersca@apple.com>
1486
1487         Add JSStringCreateWithCharactersNoCopy SPI
1488         https://bugs.webkit.org/show_bug.cgi?id=118074
1489         <rdar://problem/14279905>
1490
1491         Reviewed by Geoffrey Garen.
1492
1493         * API/JSStringRef.cpp:
1494         (JSStringCreateWithCharactersNoCopy):
1495         Create a new OpaqueJSString, using the newly added StringImpl::createWithoutCopying function.
1496
1497         * API/JSStringRefPrivate.h: Added.
1498         Add a home for the JSStringCreateWithCharactersNoCopy function.
1499
1500         * API/OpaqueJSString.h:
1501         (OpaqueJSString::OpaqueJSString):
1502         Just call isolatedCopy on the passed in string.
1503
1504         * API/tests/testapi.c:
1505         Add an API test for JSStringCreateWithCharactersNoCopy.
1506
1507         * JavaScriptCore.xcodeproj/project.pbxproj:
1508         Add new files.
1509
1510 2013-06-25  Ryosuke Niwa  <rniwa@webkit.org>
1511
1512         JSString should remember AtomicString
1513         https://bugs.webkit.org/show_bug.cgi?id=117386
1514
1515         Reviewed by Geoffrey Garen.
1516
1517         Added JSValue::toAtomicString and JSString::atomicString. These two functions allow WebCore to update
1518         JSString's m_value to set isAtomic flag and avoid the AtomicStringTable lookups in subsequent attempts
1519         to obtain the AtomicString of the same value.
1520
1521         * runtime/JSCJSValue.h:
1522         * runtime/JSString.h:
1523         (JSC::JSString::atomicString):
1524         (JSC::JSValue::toAtomicString):
1525
1526 2013-06-24  Roger Fong  <roger_fong@apple.com>
1527
1528         Unreviewed. Makefile build fix for AppleWindows.
1529
1530         * JavaScriptCore.vcxproj/JavaScriptCore.make:
1531
1532 2013-06-17  Darin Adler  <darin@apple.com>
1533
1534         Sort all the Xcode project files
1535         https://bugs.webkit.org/show_bug.cgi?id=117696
1536
1537         Reviewed by Anders Carlsson.
1538
1539         * JavaScriptCore.xcodeproj/project.pbxproj: Ran the sort-Xcode-project-file script.
1540
1541 2013-06-21  Mark Lam  <mark.lam@apple.com>
1542
1543         Introducing the VMStackBounds class.
1544         https://bugs.webkit.org/show_bug.cgi?id=117862.
1545
1546         Reviewed by Geoffrey Garen.
1547
1548         - Removed Interpreter::StackPolicy.
1549         - The new VMStackBounds will take over choosing the appropriate stack
1550           size requirements, and invoking the underlying WTF::StackBounds to
1551           to the real bounds check.
1552         - VMStackBounds will now be used universally throughout JSC instead of
1553           WTF::StackBounds.
1554
1555         * JavaScriptCore.xcodeproj/project.pbxproj:
1556         * bytecompiler/BytecodeGenerator.cpp:
1557         (JSC::BytecodeGenerator::BytecodeGenerator):
1558         * bytecompiler/BytecodeGenerator.h:
1559         * interpreter/Interpreter.cpp:
1560         (JSC::Interpreter::execute):
1561         (JSC::Interpreter::executeCall):
1562         (JSC::Interpreter::executeConstruct):
1563         (JSC::Interpreter::prepareForRepeatCall):
1564         * interpreter/Interpreter.h:
1565         (JSC::Interpreter::isInErrorHandlingMode):
1566         * parser/Parser.cpp:
1567         (JSC::::Parser):
1568         * parser/Parser.h:
1569         * runtime/StringRecursionChecker.h:
1570         (JSC::StringRecursionChecker::performCheck):
1571         * runtime/VMStackBounds.h: Added.
1572         (JSC::VMStackBounds::VMStackBounds):
1573         (JSC::VMStackBounds::isSafeToRecurse):
1574         (JSC::VMStackBounds::requiredCapacity):
1575
1576 2013-06-20  Mark Lam  <mark.lam@apple.com>
1577
1578         Change stack capacity requirement to be more reasonable.
1579         https://bugs.webkit.org/show_bug.cgi?id=117801.
1580
1581         Reviewed by Geoffrey Garen.
1582
1583         Previously, the requiredStack in StackPolicy::StackPolicy() was set to
1584         to a high value like 256K to reduce the chances of encountering an
1585         undetected stack overflow in a scenario where we have a combination of
1586         deeply nested divs and a large amount recursive re-entries into the VM.
1587
1588         However, this high value of requiredStack still does not completely
1589         ensure that we will never encounter an undetected stack overflow. It
1590         only lessens the probability of encountering it.
1591
1592         Secondly, on some platforms, the total stack size can be less than 256K
1593         to start with. Hence, this high value requiredStack renders the VM
1594         unuseable on those platforms.
1595
1596         This patch will fix the requiredStack to be more reasonable based on
1597         real world stack usage by the VM. We won't (and cannot) try to prevent
1598         undetected stack overflows outside of JSC as well. External code that
1599         do deep recursion (e.g. Documnet::updateLayout()) should do their own
1600         stack checks.
1601
1602         From a previous experiment, we measured the following:
1603
1604         On a debug build on OSX:
1605         1. Stack usage different between recursive calls to interpreter entry:
1606            7744 bytes
1607         On a release build on OSX:
1608         2. Stack usage difference between recursive calls to interpreter entry:
1609            6352 bytes
1610
1611         Using these as a guide, we'll pick the following values for the
1612         StackPolicy:
1613            requiredStack: 32K
1614            errorModeRequiredStack: 16K
1615
1616         The requiredStack is chosen to be 4x the measured usage above. The
1617         additional 3x is a conservative estimate to account for stack space
1618         that may be needed by other native functions called while in the
1619         interpreter.
1620
1621         The errorModeRequiredStack has to be less than the requiredStack or we
1622         won't be able to reenter the interpreter to do error handling work when
1623         an imminent stack overflow is detected. It is assumed that the error
1624         handling code will only do minimal work to allocate an exception and its
1625         stack trace, and not run any arbitrary JS code. As such, it is safe to
1626         allow re-entry into the interpreter with only 2x the measured usage in
1627         this case.
1628
1629         * interpreter/Interpreter.cpp:
1630         (JSC::Interpreter::StackPolicy::StackPolicy):
1631
1632 2013-06-20  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
1633
1634         HashSet: reverse the order of the template arguments at alternate 'find', 'contains' and 'add' methods
1635         https://bugs.webkit.org/show_bug.cgi?id=117830
1636
1637         Reviewed by Anders Carlsson.
1638
1639         The order of the template arguments at HashSet alternate 'find', 'contains' and
1640         'add' methods is reversed so that callers can just pass the translator
1641         and let the compiler deduce input argument type.
1642
1643         * runtime/Identifier.h:
1644         (JSC::IdentifierTable::add):
1645
1646 2013-06-20  Roger Fong  <roger_fong@apple.com>
1647
1648         Make Windows makefile copy build output to a different folder.
1649         <rdar://problem/14219184>.
1650
1651         * JavaScriptCore.vcxproj/JavaScriptCore.make:
1652
1653 2013-06-20  Mark Hahnenberg  <mhahnenberg@apple.com>
1654
1655         Improper deallocation of JSManagedValue causes crashes during autorelease pool draining
1656         https://bugs.webkit.org/show_bug.cgi?id=117840
1657
1658         Reviewed by Geoffrey Garen.
1659
1660         Improperly managing a JSManagedValue can cause a crash when the JSC::Weak inside the 
1661         JSManagedValue is destroyed upon deallocation. We would rather have improperly maintained 
1662         JSManagedValues cause memory leaks than take down the whole app. 
1663
1664         The fix is to use the callback to the JSC::Weak on the destruction of the VM so that we 
1665         can safely null it out. This will prevent ~Weak from crashing.
1666
1667         * API/JSManagedValue.mm:
1668         (-[JSManagedValue JSC::JSC::]):
1669         (JSManagedValueHandleOwner::finalize):
1670         * API/tests/testapi.mm: Added a test that crashed prior to this fix due to a leaked 
1671         managed reference. Also fixed a small style nit I noticed in another test.
1672
1673 2013-06-18  Oliver Hunt  <oliver@apple.com>
1674
1675         Going to google.com/trends causes a crash
1676         https://bugs.webkit.org/show_bug.cgi?id=117602
1677
1678         Reviewed by Geoffrey Garen.
1679
1680         When handling op_throw, etc we need to flush the variables and arguments
1681         for the entire inline stack, not just the top frame.
1682
1683         * dfg/DFGByteCodeParser.cpp:
1684         (JSC::DFG::ByteCodeParser::flushAllArgumentsAndCapturedVariablesInInlineStack):
1685         (JSC::DFG::ByteCodeParser::parseBlock):
1686
1687 2013-06-18  Roger Fong  <roger_fong@apple.com>
1688
1689         Replace tools32 folder with tools and update WebKit Windows solution accordingly.
1690         <rdar://problem/14118143>.
1691
1692         Rubberstamped by Brent Fulgham.
1693
1694         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
1695         * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
1696         * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
1697         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
1698         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
1699         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
1700         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
1701         * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
1702         * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
1703         * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
1704         * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
1705         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
1706         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
1707         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
1708         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
1709         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
1710         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
1711         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
1712         * JavaScriptCore.vcxproj/jsc/jscDebug.props:
1713         * JavaScriptCore.vcxproj/jsc/jscProduction.props:
1714         * JavaScriptCore.vcxproj/jsc/jscRelease.props:
1715         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
1716         * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
1717         * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
1718         * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
1719         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
1720         * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
1721         * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
1722         * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
1723         * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
1724         * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
1725
1726 2013-06-17  Roger Fong  <roger_fong@apple.com>
1727
1728         Modify Windows makefiles to copy some bin output into Program Files.
1729         https://bugs.webkit.org/show_bug.cgi?id=117714.
1730         <rdar://problem/14179054>
1731
1732         Reviewed by Brent Fulgham.
1733
1734         * JavaScriptCore.vcxproj/JavaScriptCore.make:
1735
1736 2013-06-14  Ryosuke Niwa  <rniwa@webkit.org>
1737
1738         Function names on Object.prototype should be common identifiers
1739         https://bugs.webkit.org/show_bug.cgi?id=117614
1740
1741         Reviewed by Darin Adler.
1742
1743         Patch written by Sam Weinig. Make Object's prototype function names common identififers since they're used frequently.
1744
1745         * runtime/CommonIdentifiers.h:
1746         * runtime/FunctionConstructor.cpp:
1747         (JSC::constructFunction):
1748         * runtime/JSGlobalObject.cpp:
1749         (JSC::JSGlobalObject::reset):
1750         * runtime/JSObject.h:
1751         * runtime/ObjectPrototype.cpp:
1752         (JSC::ObjectPrototype::finishCreation):
1753         * runtime/StringPrototype.cpp:
1754         (JSC::StringPrototype::finishCreation):
1755
1756 2013-06-13  Ryosuke Niwa  <rniwa@webkit.org>
1757
1758         Remove LiteralIdentifierTable
1759         https://bugs.webkit.org/show_bug.cgi?id=117613
1760
1761         Reviewed by Geoffrey Garen.
1762
1763         Removed LiteralIdentifierTable since it doesn't seem to have any perf. impact now.
1764
1765         * runtime/Identifier.cpp:
1766         (JSC::Identifier::add):
1767
1768 2013-06-12  Conrad Shultz  <conrad_shultz@apple.com>
1769
1770         JSExport header documentation substitutes "semicolon" for "colon"
1771         https://bugs.webkit.org/show_bug.cgi?id=117552
1772
1773         Reviewed by Mark Hahnenberg.
1774
1775         * API/JSExport.h:
1776         Fix a couple typos.
1777
1778 2013-06-10  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>
1779
1780         [JSC] Remove a vestige of wxWidgets support.
1781         https://bugs.webkit.org/show_bug.cgi?id=117419
1782
1783         Reviewed by Benjamin Poulain.
1784
1785         * runtime/JSExportMacros.h: Remove a check for BUILDING_WX__ that
1786         seems to have gone unnoticed when the wxWidgets port was removed.
1787
1788 2013-06-06  Roger Fong  <roger_fong@apple.com>
1789
1790         Stop copying AAS binaries into build folder.
1791         https://bugs.webkit.org/show_bug.cgi?id=117319.
1792
1793         Rubberstamped by Darin Adler.
1794
1795         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
1796         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
1797         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
1798         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
1799         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
1800         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
1801
1802 2013-06-05  Filip Pizlo  <fpizlo@apple.com>
1803
1804         DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
1805         https://bugs.webkit.org/show_bug.cgi?id=117279
1806         <rdar://problem/14078025>        
1807
1808         Reviewed by Mark Hahnenberg.
1809
1810         * dfg/DFGAbstractValue.h:
1811         (JSC::DFG::AbstractValue::filterArrayModesByType):
1812
1813 2013-06-05  Michael Saboff  <msaboff@apple.com>
1814
1815         JSC: Crash beneath cti_op_div @ http://gmailblog.blogspot.com
1816         https://bugs.webkit.org/show_bug.cgi?id=117280
1817
1818         Reviewed by Filip Pizlo.
1819
1820         Updated the merging of VariableAccessData nodes in ArgumentPosition lists
1821         to find the unified VariableAccessData node that is the root of the
1822         current node instead of using the current node directly when merging
1823         attributes.
1824         Added new dump code to dump the ArgumentPosition list.
1825
1826         * dfg/DFGArgumentPosition.h:
1827         (JSC::DFG::rgumentPosition::mergeArgumentPredictionAwareness):
1828         (JSC::DFG::ArgumentPosition::mergeArgumentUnboxingAwareness):
1829         (JSC::DFG::ArgumentPosition::dump):
1830         * dfg/DFGGraph.cpp:
1831         (JSC::DFG::Graph::dump):
1832
1833 2013-06-05  Bear Travis  <betravis@adobe.com>
1834
1835         [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
1836         https://bugs.webkit.org/show_bug.cgi?id=117172
1837
1838         Reviewed by Alexandru Chiculita.
1839
1840         Adding the CSS_SHAPES compile flag.
1841
1842         * Configurations/FeatureDefines.xcconfig:
1843
1844 2013-06-05  Balazs Kilvady  <kilvadyb@homejinni.com>
1845
1846         JSC Assertion tests failures on MIPS.
1847         https://bugs.webkit.org/show_bug.cgi?id=116552
1848
1849         Reviewed by Geoffrey Garen.
1850
1851         Fix condition handlig in branchAdd32 implemetations.
1852
1853         * assembler/MacroAssemblerMIPS.h:
1854         (JSC::MacroAssemblerMIPS::branchAdd32):
1855
1856 2013-06-04  Julien Brianceau  <jbrianceau@nds.com>
1857
1858         [sh4] Add floating point absolute function support in baseline JIT.
1859         https://bugs.webkit.org/show_bug.cgi?id=117147
1860
1861         Reviewed by Geoffrey Garen.
1862
1863         * assembler/MacroAssemblerSH4.h:
1864         (JSC::MacroAssemblerSH4::supportsFloatingPointAbs):
1865         (JSC::MacroAssemblerSH4::absDouble):
1866         * assembler/SH4Assembler.h:
1867         (JSC::SH4Assembler::dabs):
1868         (JSC::SH4Assembler::printInstr):
1869
1870 2013-06-04  Zan Dobersek  <zdobersek@igalia.com>
1871
1872         [JSC] Test262 15.5.4.9_3 test is failing
1873         https://bugs.webkit.org/show_bug.cgi?id=116789
1874
1875         Reviewed by Geoffrey Garen.
1876
1877         Bring the String.prototype.localeCompare behavior in line wit ES5 15.9.4.9.
1878         If method is not given enough arguments, the minimal amount of arguments must be assumed, with their value being undefined.
1879         The first argument to localeCompare, in its string form, is used as the 'that' string that's used in the comparison.
1880         Therefor, when calling str.localeCompare() or str.localeCompare(undefined), the first argument is `undefined` and the
1881         string "undefined" is used as the string to which value of str is compared.
1882
1883         * runtime/StringPrototype.cpp:
1884         (JSC::stringProtoFuncLocaleCompare): Remove the early return in case of no given arguments to achieve the desired behavior.
1885
1886 2013-06-03  Hojong Han  <hojong.han@samsung.com>
1887
1888         [EFL] Implement GCActivityCallback
1889         https://bugs.webkit.org/show_bug.cgi?id=95923
1890
1891         Reviewed by Geoffrey Garen.
1892
1893         Implements the activity triggered garbage collector.
1894         Additional GCs can be triggered by platfrom timer.
1895         It has sort of compaction effect not to make JSC heap grow fast
1896         so that memory usage becomes lower than usual.
1897
1898         * PlatformEfl.cmake: Added.
1899         * heap/HeapTimer.cpp:
1900         (JSC):
1901         (JSC::HeapTimer::HeapTimer):
1902         (JSC::HeapTimer::~HeapTimer):
1903         (JSC::HeapTimer::add):
1904         (JSC::HeapTimer::stop):
1905         (JSC::HeapTimer::timerEvent):
1906         * heap/HeapTimer.h:
1907         (HeapTimer):
1908         * jsc.cpp:
1909         (main):
1910         * runtime/GCActivityCallback.cpp:
1911         (JSC):
1912         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
1913         (JSC::DefaultGCActivityCallback::scheduleTimer):
1914         (JSC::DefaultGCActivityCallback::cancelTimer):
1915         (JSC::DefaultGCActivityCallback::didAllocate):
1916         * runtime/GCActivityCallback.h:
1917         (GCActivityCallback):
1918         (JSC::GCActivityCallback::GCActivityCallback):
1919         (DefaultGCActivityCallback):
1920
1921 2013-06-03  Roger Fong  <roger_fong@apple.com>
1922
1923         Nuke VS2005 files from the tree.
1924         <rdar://problem/14042021>.
1925
1926         Rubberstamped by Brent Fulgham.
1927
1928         * JavaScriptCore.vcproj: Removed.
1929         * JavaScriptCore.vcproj/JavaScriptCore: Removed.
1930         * JavaScriptCore.vcproj/JavaScriptCore.make: Removed.
1931         * JavaScriptCore.vcproj/JavaScriptCore.resources: Removed.
1932         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Removed.
1933         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed.
1934         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed.
1935         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Removed.
1936         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Removed.
1937         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Removed.
1938         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Removed.
1939         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Removed.
1940         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Removed.
1941         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Removed.
1942         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Removed.
1943         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Removed.
1944         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed.
1945         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Removed.
1946         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Removed.
1947         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Removed.
1948         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Removed.
1949         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Removed.
1950         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Removed.
1951         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Removed.
1952         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Removed.
1953         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Removed.
1954         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Removed.
1955         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Removed.
1956         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Removed.
1957         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Removed.
1958         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Removed.
1959         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Removed.
1960         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Removed.
1961         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Removed.
1962         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Removed.
1963         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed.
1964         * JavaScriptCore.vcproj/LLIntAssembly: Removed.
1965         * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.make: Removed.
1966         * JavaScriptCore.vcproj/LLIntAssembly/LLIntAssembly.vcproj: Removed.
1967         * JavaScriptCore.vcproj/LLIntAssembly/build-LLIntAssembly.sh: Removed.
1968         * JavaScriptCore.vcproj/LLIntDesiredOffsets: Removed.
1969         * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.make: Removed.
1970         * JavaScriptCore.vcproj/LLIntDesiredOffsets/LLIntDesiredOffsets.vcproj: Removed.
1971         * JavaScriptCore.vcproj/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh: Removed.
1972         * JavaScriptCore.vcproj/LLIntOffsetsExtractor: Removed.
1973         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcproj: Removed.
1974         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops: Removed.
1975         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.vsprops: Removed.
1976         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugAll.vsprops: Removed.
1977         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebugCairoCFLite.vsprops: Removed.
1978         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.vsprops: Removed.
1979         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.vsprops: Removed.
1980         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleaseCairoCFLite.vsprops: Removed.
1981         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorReleasePGO.vsprops: Removed.
1982         * JavaScriptCore.vcproj/jsc: Removed.
1983         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed.
1984         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Removed.
1985         * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Removed.
1986         * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Removed.
1987         * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Removed.
1988         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Removed.
1989         * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Removed.
1990         * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Removed.
1991         * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Removed.
1992         * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Removed.
1993         * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Removed.
1994         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Removed.
1995         * JavaScriptCore.vcproj/testRegExp: Removed.
1996         * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj: Removed.
1997         * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops: Removed.
1998         * JavaScriptCore.vcproj/testRegExp/testRegExpDebug.vsprops: Removed.
1999         * JavaScriptCore.vcproj/testRegExp/testRegExpDebugAll.vsprops: Removed.
2000         * JavaScriptCore.vcproj/testRegExp/testRegExpDebugCairoCFLite.vsprops: Removed.
2001         * JavaScriptCore.vcproj/testRegExp/testRegExpPostBuild.cmd: Removed.
2002         * JavaScriptCore.vcproj/testRegExp/testRegExpPreBuild.cmd: Removed.
2003         * JavaScriptCore.vcproj/testRegExp/testRegExpPreLink.cmd: Removed.
2004         * JavaScriptCore.vcproj/testRegExp/testRegExpProduction.vsprops: Removed.
2005         * JavaScriptCore.vcproj/testRegExp/testRegExpRelease.vsprops: Removed.
2006         * JavaScriptCore.vcproj/testRegExp/testRegExpReleaseCairoCFLite.vsprops: Removed.
2007         * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops: Removed.
2008         * JavaScriptCore.vcproj/testapi: Removed.
2009         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Removed.
2010         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Removed.
2011         * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Removed.
2012         * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Removed.
2013         * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Removed.
2014         * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Removed.
2015         * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Removed.
2016         * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Removed.
2017         * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Removed.
2018         * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Removed.
2019         * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Removed.
2020
2021 2013-05-31  Filip Pizlo  <fpizlo@apple.com>
2022
2023         Incorrect assertion in DFG::Graph::uncheckedActivationRegisterFor()
2024         <rdar://problem/13989324>
2025
2026         Rubber stamped by Mark Hahnenberg.
2027         
2028         This has a bogus assertion that checks that the passed CodeOrigin doesn't have
2029         an inline call frame. This was well intentioned in the sense that it is true
2030         that inlined call frames wouldn't have an activation register. But that doesn't
2031         mean that people won't ask. Removing the assertion fixes a debug-only crash and
2032         has no impact on production code. This change adds a comment to that effect.
2033
2034         * dfg/DFGGraph.h:
2035         (JSC::DFG::Graph::uncheckedActivationRegisterFor):
2036
2037 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
2038
2039         [sh4] Fix Overflow case of branchMul32 in baseline JIT.
2040         https://bugs.webkit.org/show_bug.cgi?id=117057
2041
2042         Reviewed by Oliver Hunt.
2043
2044         Current implementation of Overflow case in branchMul32 performs an
2045         unsigned multiplication whereas a signed multiplication is expected.
2046
2047         * assembler/MacroAssemblerSH4.h:
2048         (JSC::MacroAssemblerSH4::branchMul32):
2049
2050 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
2051
2052         [sh4] Fix floating point comparisons in baseline JIT.
2053         https://bugs.webkit.org/show_bug.cgi?id=117066.
2054
2055         Reviewed by Oliver Hunt.
2056
2057         Current implementation of branchDouble function in baseline JIT is wrong
2058         for some conditions and overkill for others. For instance:
2059         - With DoubleGreaterThanOrEqual condition, branch will be taken if either
2060           operand is NaN with current implementation whereras it should not.
2061         - With DoubleNotEqualOrUnordered condition, performed NaN checks are
2062           useless (because comparison result is false if either operand is NaN).
2063
2064         * assembler/MacroAssemblerSH4.h:
2065         (JSC::MacroAssemblerSH4::branchDouble):
2066
2067 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
2068
2069         [sh4] Fix double floating point transfer in baseline JIT.
2070         https://bugs.webkit.org/show_bug.cgi?id=117054
2071
2072         Reviewed by Oliver Hunt.
2073
2074         In current implementation, dmovRegReg function transfers only one single
2075         FPRegister as PR=1 and SZ=0 in floating point status/control register.
2076         Double transfers must be performed with two fmov.s opcodes.
2077
2078         * assembler/MacroAssemblerSH4.h:
2079         (JSC::MacroAssemblerSH4::moveDouble):
2080         (JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
2081         (JSC::MacroAssemblerSH4::sqrtDouble):
2082         * assembler/SH4Assembler.h:
2083         (JSC::SH4Assembler::fmovsRegReg):
2084
2085 2013-05-31  Julien Brianceau  <jbrianceau@nds.com>
2086
2087         [sh4] Handle branchType properly in branchTruncateDoubleToInt32.
2088         https://bugs.webkit.org/show_bug.cgi?id=117062
2089
2090         Reviewed by Oliver Hunt.
2091
2092         Current implementation of branchTruncateDoubleToInt32 is incorrect
2093         when branchType == BranchIfTruncateSuccessful in sh4 baseline JIT.
2094
2095         * assembler/MacroAssemblerSH4.h:
2096         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
2097
2098 2013-05-31  Brent Fulgham  <bfulgham@apple.com>
2099
2100         [Windows] Unreviewed build fix for VS2005 builders.
2101
2102         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: Add
2103         missing export for WTF::SHA1::computeHexDigest
2104
2105 2013-05-30  David Farler  <dfarler@apple.com>
2106
2107         Fix jscore-test when not using --sdk option with jsDriver.pl
2108         https://bugs.webkit.org/show_bug.cgi?id=116339
2109
2110         Reviewed by Joe Pecoraro.
2111
2112         * tests/mozilla/jsDriver.pl:
2113         (execute_tests):
2114         With each test, the shell_command needs to be started from scratch.
2115
2116         This fix will clear the shell_command and start over as before with
2117         the opt_arch option when not using --sdk with jsDriver.pl.
2118
2119 2013-05-30  Roger Fong  <roger_fong@apple.com>
2120
2121         Get rid of JavaScript exports file on AppleWin port.
2122         https://bugs.webkit.org/show_bug.cgi?id=117050.
2123
2124         Reviewed by Darin Adler.
2125
2126         Delete the JavaScriptCoreExportGenerator folder and remove dependencies.
2127         Start linking in WTF.lib now that it's a shared library.
2128
2129         * JavaScriptCore.vcxproj/JavaScriptCore.submit.sln:
2130         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
2131         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
2132         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator: Removed.
2133         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj: Removed.
2134         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters: Removed.
2135         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd: Removed.
2136         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props: Removed.
2137         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props: Removed.
2138         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd: Removed.
2139         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd: Removed.
2140         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props: Removed.
2141         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props: Removed.
2142         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: Removed.
2143         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/make-export-file-generator: Removed.
2144         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
2145         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
2146         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
2147         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
2148         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
2149
2150 2013-05-22  David Farler  <dfarler@apple.com>
2151
2152         Add --sdk option to jsDriver.pl to run with iOS Simulator
2153         https://bugs.webkit.org/show_bug.cgi?id=116339
2154
2155         Reviewed by David Kilzer.
2156
2157         * tests/mozilla/jsDriver.pl:
2158         (execute_tests):
2159         Prefix shell command with the path to the "sim" tool.
2160         (parse_args):
2161         Add -d / --sdk option.
2162         (usage):
2163         Help message for -d / --sdk option.
2164
2165 2013-05-30  Julien Brianceau  <jbrianceau@nds.com>
2166
2167         [sh4] Optimize NaN checks in LLINT for floating point comparisons.
2168         https://bugs.webkit.org/show_bug.cgi?id=117049
2169
2170         Reviewed by Oliver Hunt.
2171
2172         Use the fcmp/eq opcode in sh4 LLINT to test if a double is NaN.
2173         This is more efficient, doesn't require two tmp registers and requires
2174         less code than current implementation (which converts double to float,
2175         then checks 'E = Emax + 1' and 'f != 0').
2176
2177         * offlineasm/sh4.rb:
2178
2179 2013-05-30  Oliver Hunt  <oliver@apple.com>
2180
2181         JSCallbackObject does not correctly initialise the PropertySlot for getOwnPropertyDescriptor
2182         https://bugs.webkit.org/show_bug.cgi?id=117053
2183
2184         Reviewed by Mark Hahnenberg.
2185
2186         Set appropriate thisValue on the PropertySlot
2187
2188         * API/JSCallbackObjectFunctions.h:
2189         (JSC::::getOwnPropertyDescriptor):
2190         * API/tests/testapi.mm:
2191
2192 2013-05-29  Jeffrey Pfau  <jpfau@apple.com>
2193
2194         [Mac] Enable cache partitioning and the public suffix list on 10.8
2195         <rdar://problem/13679019>
2196
2197         Rubber-stamped by David Kilzer.
2198
2199         * Configurations/FeatureDefines.xcconfig:
2200
2201 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
2202
2203         [Windows] Put correct byteCompile symbol in file. Previous version
2204         had an extra 'i' appended to the end.
2205
2206         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2207         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2208
2209 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
2210
2211         [Windows] Unreviewed build fix.  Remove ?byteCompile symbol that
2212         is no longer accessible during link.
2213
2214         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2215         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2216
2217 2013-05-28  Gavin Barraclough  <barraclough@apple.com>
2218
2219         String(new Date(2010,10,1)) is wrong in KRAT, YAKT
2220         https://bugs.webkit.org/show_bug.cgi?id=106750
2221
2222         Reviewed by Darin Adler.
2223
2224         * runtime/JSDateMath.cpp:
2225         (JSC::msToGregorianDateTime):
2226             - Additional review comment fix.
2227
2228 2013-05-28  Brent Fulgham  <bfulgham@apple.com>
2229
2230         [Windows] Unreviewed build fix after r150833
2231
2232         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2233         A CR/LF combination was lost in the file, combining two symbols.
2234
2235 2013-05-27  Gavin Barraclough  <barraclough@apple.com>
2236
2237         String(new Date(2010,10,1)) is wrong in KRAT, YAKT
2238         https://bugs.webkit.org/show_bug.cgi?id=106750
2239
2240         Reviewed by Darin Adler.
2241
2242         First part of a fix, simplfy date handling code, instead of operating separately
2243         on the UTC-standard and standard-DST offsets, just generate a combined UTC-local
2244         offset (this is what we actually need, and what the OS gives us).
2245
2246         * runtime/JSDateMath.cpp:
2247         (JSC::getLocalTimeOffset):
2248             - removed getUTCOffset, converted getDSTOffset -> getLocalTimeOffset
2249         (JSC::gregorianDateTimeToMS):
2250         (JSC::msToGregorianDateTime):
2251         (JSC::parseDateFromNullTerminatedCharacters):
2252             - call getLocalTimeOffset instead of getUTCOffset/getDSTOffset
2253         * runtime/VM.cpp:
2254         (JSC::VM::resetDateCache):
2255             - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
2256         * runtime/VM.h:
2257         (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
2258         (JSC::LocalTimeOffsetCache::reset):
2259         (LocalTimeOffsetCache):
2260             - removed cachedUTCOffset, converted DSTOffsetCache -> LocalTimeOffsetCache
2261
2262 2013-05-28  Mark Hahnenberg  <mhahnenberg@apple.com>
2263
2264         r150199 is very wrong
2265         https://bugs.webkit.org/show_bug.cgi?id=116876
2266
2267         JSValue needs to protect its internal JSValueRef.
2268
2269         Reviewed by Darin Adler.
2270
2271         * API/JSValue.mm:
2272         (-[JSValue initWithValue:inContext:]):
2273         (-[JSValue dealloc]):
2274         * API/tests/testapi.mm: Added a simple test to make sure that we protect the
2275         underlying JavaScript value across garbage collections.
2276
2277 2013-05-27  Patrick Gansterer  <paroga@webkit.org>
2278
2279         Use ICU_INCLUDE_DIRS in BlackBerry CMake files
2280         https://bugs.webkit.org/show_bug.cgi?id=116210
2281
2282         Reviewed by Rob Buis.
2283
2284         Set and use the ICU_INCLUDE_DIRS variable to avoid
2285         duplicated adding of the ICU include directory.
2286
2287         * PlatformBlackBerry.cmake:
2288
2289 2013-05-27  Gabor Rapcsanyi  <rgabor@webkit.org>
2290
2291         MacroAssemblerARM should use xor to swap registers instead of move
2292         https://bugs.webkit.org/show_bug.cgi?id=116306
2293
2294         Reviewed by Zoltan Herczeg.
2295
2296         Change register swapping to xor from move and this way we don't need
2297         temporary register anymore.
2298
2299         * assembler/MacroAssemblerARM.h:
2300         (JSC::MacroAssemblerARM::swap):
2301
2302 2013-05-25  Filip Pizlo  <fpizlo@apple.com>
2303
2304         We broke (-2^31/-1)|0 in the DFG
2305         https://bugs.webkit.org/show_bug.cgi?id=116767
2306
2307         Reviewed by Andreas Kling.
2308         
2309         The bug is that we were assuming that in the -2^31 case, we already had -2^31
2310         in the result register. This was a wrong assumption.
2311
2312         * dfg/DFGSpeculativeJIT.cpp:
2313         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2314
2315 2013-05-24  Filip Pizlo  <fpizlo@apple.com>
2316
2317         We broke !(0/0)
2318         https://bugs.webkit.org/show_bug.cgi?id=116736
2319
2320         Reviewed by Gavin Barraclough.
2321
2322         * parser/ASTBuilder.h:
2323         (JSC::ASTBuilder::createLogicalNot):
2324         * runtime/JSCJSValueInlines.h:
2325         (JSC::JSValue::pureToBoolean):
2326
2327 2013-05-24  Julien Brianceau  <jbrianceau@nds.com>
2328
2329         [sh4] Optimize LLINT generated code and fix few bugs in baseline JIT.
2330         https://bugs.webkit.org/show_bug.cgi?id=116716
2331
2332         Reviewed by Geoffrey Garen.
2333
2334         * assembler/MacroAssemblerSH4.h:
2335         (JSC::MacroAssemblerSH4::mul32): Cosmetic changes.
2336         (JSC::MacroAssemblerSH4::convertInt32ToDouble): Absolute address was not dereferenced.
2337         (JSC::MacroAssemblerSH4::branch32): Absolute address was not dereferenced.
2338         (JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch): Use all 32 bits of pointer for revertJump call.
2339         * assembler/SH4Assembler.h:
2340         (JSC::SH4Assembler::revertJump): Use changePCrelativeAddress to patch the whole pointer.
2341         (JSC::SH4Assembler::linkJump): Cosmetic change.
2342         * offlineasm/sh4.rb: Optimize LLINT generated code.
2343
2344 2013-05-23  Peter Wang  <peter.wang@torchmobile.com.cn>
2345
2346         CLoop llint backend should not use the d8 register as scratch register
2347         https://bugs.webkit.org/show_bug.cgi?id=116019
2348
2349         Reviewed by Csaba Osztrogonác.
2350
2351         * offlineasm/cloop.rb:
2352
2353 2013-05-22  Peter Wang  <peter.wang@torchmobile.com.cn>
2354
2355         Use uninitialized register in "JIT::emit_op_neq_null" and "emit_op_eq_null"
2356         https://bugs.webkit.org/show_bug.cgi?id=116593
2357
2358         Reviewed by Filip Pizlo.
2359
2360         Generated instructions using uninitialized register. It's caused by a mistake of r126494.
2361
2362         * jit/JITOpcodes32_64.cpp:
2363         (JSC::JIT::emit_op_eq_null):
2364         (JSC::JIT::emit_op_neq_null):
2365
2366 2013-05-22  Filip Pizlo  <fpizlo@apple.com>
2367
2368         Fix indentation of CodeBlock.h
2369
2370         Rubber stampted by Mark Hahnenberg.
2371
2372         * bytecode/CodeBlock.h:
2373
2374 2013-05-22  Julien Brianceau  <jbrianceau@nds.com>
2375
2376         [sh4] Remove MacroAssemblerSH4.cpp file.
2377         https://bugs.webkit.org/show_bug.cgi?id=116596.
2378
2379         Reviewed by Geoffrey Garen.
2380
2381         Move linkCall and repatchCall implementations from MacroAssemblerSH4.cpp
2382         to MacroAssemblerSH4.h and remove MacroAssemblerSH4.cpp, as it is done
2383         for other architectures.
2384
2385         * GNUmakefile.list.am:
2386         * JavaScriptCore.xcodeproj/project.pbxproj:
2387         * Target.pri:
2388         * assembler/MacroAssemblerSH4.cpp: Removed.
2389         * assembler/MacroAssemblerSH4.h:
2390         (JSC::MacroAssemblerSH4::linkCall):
2391         (MacroAssemblerSH4):
2392         (JSC::MacroAssemblerSH4::repatchCall):
2393
2394 2013-05-21  Brent Fulgham  <bfulgham@apple.com>
2395
2396         [Windows] Unreviewed speculative fix for test-bots.
2397
2398         Add export declaration for WTFInvokeCrashHook to avoid runtime
2399         load error on test bots.
2400
2401         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2402         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2403
2404 2013-05-21  Mark Lam  <mark.lam@apple.com>
2405
2406         Added missing assert condition for PositiveOrZero in ARM branch32().
2407         https://bugs.webkit.org/show_bug.cgi?id=116538.
2408
2409         Reviewed by Geoffrey Garen.
2410
2411         * assembler/MacroAssemblerARM.h:
2412         (JSC::MacroAssemblerARM::branchAdd32):
2413
2414 2013-05-20  Mark Hahnenberg  <mhahnenberg@apple.com>
2415
2416         Disable SuperRegion
2417         https://bugs.webkit.org/show_bug.cgi?id=116362
2418
2419         Rubber stamped by Geoff Garen.
2420
2421         * heap/Region.h:
2422
2423 2013-05-20  Oliver Hunt  <oliver@apple.com>
2424
2425         Make C API more robust against null contexts
2426         https://bugs.webkit.org/show_bug.cgi?id=116462
2427
2428         Reviewed by Anders Carlsson.
2429
2430         Handle null contexts in a non-crashy way.  It's a bug to ever call the
2431         API with a null context, and the absence of a context means we can't
2432         produce a meaningful result, so we still assert in debug builds.
2433
2434         Now where possible we detect and early return, returning null for any
2435         pointer type, NaN for doubles, and false for any boolean result.
2436
2437         * API/JSBase.cpp:
2438         (JSEvaluateScript):
2439         (JSCheckScriptSyntax):
2440         (JSReportExtraMemoryCost):
2441         * API/JSContextRef.cpp:
2442         (JSContextGetGlobalObject):
2443         (JSContextGetGroup):
2444         (JSContextGetGlobalContext):
2445         (JSContextCreateBacktrace):
2446         * API/JSObjectRef.cpp:
2447         (JSObjectMake):
2448         (JSObjectMakeFunctionWithCallback):
2449         (JSObjectMakeConstructor):
2450         (JSObjectMakeFunction):
2451         (JSObjectMakeArray):
2452         (JSObjectMakeDate):
2453         (JSObjectMakeError):
2454         (JSObjectMakeRegExp):
2455         (JSObjectGetPrototype):
2456         (JSObjectSetPrototype):
2457         (JSObjectHasProperty):
2458         (JSObjectGetProperty):
2459         (JSObjectSetProperty):
2460         (JSObjectGetPropertyAtIndex):
2461         (JSObjectSetPropertyAtIndex):
2462         (JSObjectDeleteProperty):
2463         (JSObjectCopyPropertyNames):
2464         * API/JSValueRef.cpp:
2465         (JSValueGetType):
2466         (JSValueIsUndefined):
2467         (JSValueIsNull):
2468         (JSValueIsBoolean):
2469         (JSValueIsNumber):
2470         (JSValueIsString):
2471         (JSValueIsObject):
2472         (JSValueIsObjectOfClass):
2473         (JSValueIsEqual):
2474         (JSValueIsStrictEqual):
2475         (JSValueIsInstanceOfConstructor):
2476         (JSValueMakeUndefined):
2477         (JSValueMakeNull):
2478         (JSValueMakeBoolean):
2479         (JSValueMakeNumber):
2480         (JSValueMakeString):
2481         (JSValueMakeFromJSONString):
2482         (JSValueCreateJSONString):
2483         (JSValueToBoolean):
2484         (JSValueToNumber):
2485         (JSValueToStringCopy):
2486         (JSValueToObject):
2487         (JSValueProtect):
2488         * API/JSWeakObjectMapRefPrivate.cpp:
2489
2490 2013-05-20  David Kilzer  <ddkilzer@apple.com>
2491
2492         Synchronize FeatureDefines.xcconfig
2493
2494         * Configurations/FeatureDefines.xcconfig: Remove
2495         ENABLE_LINK_PRERENDER.  This was missed in r150356.
2496
2497 2013-05-19  Anders Carlsson  <andersca@apple.com>
2498
2499         Remove link prerendering code
2500         https://bugs.webkit.org/show_bug.cgi?id=116415
2501
2502         Reviewed by Darin Adler.
2503
2504         This code was only used by Chromium and is dead now.
2505
2506         * Configurations/FeatureDefines.xcconfig:
2507
2508 2013-05-18  Patrick Gansterer  <paroga@webkit.org>
2509
2510         [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
2511         https://bugs.webkit.org/show_bug.cgi?id=114554
2512
2513         Reviewed by Gyuyoung Kim.
2514
2515         Using variables as target names is very uncommon in CMake.
2516         The usual way to specify the name of the resulting binary
2517         is to set the OUTPUT_NAME target property.
2518
2519         * CMakeLists.txt:
2520         * shell/CMakeLists.txt:
2521
2522 2013-05-17  Patrick Gansterer  <paroga@webkit.org>
2523
2524         [CMake] Remove invalid include paths
2525         https://bugs.webkit.org/show_bug.cgi?id=116213
2526
2527         Reviewed by Gyuyoung Kim.
2528
2529         Since "${JAVASCRIPTCORE_DIR}/wtf" does not exist, it is safe
2530         to remove them from the list of include directories.
2531
2532         * PlatformEfl.cmake: Removed.
2533         * PlatformGTK.cmake: Removed.
2534
2535 2013-05-16  Patrick Gansterer  <paroga@webkit.org>
2536
2537         Consolidate lists in JavaScriptCore CMake files
2538         https://bugs.webkit.org/show_bug.cgi?id=115992
2539
2540         Reviewed by Gyuyoung Kim.
2541
2542         Move common files into the CMakeLists.txt to avoid duplicating the list of files.
2543         Also rebase the recently added GTK files to match the other CMake ports, since
2544         the submitted patch was based on an older version of the source tree.
2545
2546         * CMakeLists.txt:
2547         * PlatformEfl.cmake:
2548         * PlatformGTK.cmake:
2549         * shell/CMakeLists.txt:
2550         * shell/PlatformEfl.cmake:
2551         * shell/PlatformGTK.cmake:
2552
2553 2013-05-16  Geoffrey Garen  <ggaren@apple.com>
2554
2555         JSValue shouldn't protect/unprotect its context
2556         https://bugs.webkit.org/show_bug.cgi?id=116234
2557
2558         Reviewed by Mark Hahnenberg.
2559
2560         Our retain on _context is sufficient.
2561
2562         * API/JSValue.mm:
2563         (-[JSValue initWithValue:inContext:]):
2564         (-[JSValue dealloc]):
2565
2566 2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>
2567
2568         Another Windows build fix attempt after r150160.
2569
2570         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
2571         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
2572
2573 2013-05-15  Oliver Hunt  <oliver@apple.com>
2574
2575         RefCountedArray needs to use vector initialisers for its backing store
2576         https://bugs.webkit.org/show_bug.cgi?id=116194
2577
2578         Reviewed by Gavin Barraclough.
2579
2580         Use an out of line function to clear the exception stack to avoid
2581         needing to include otherwise unnecessary headers all over the place.
2582
2583         Everything else is just being updated to use that.
2584
2585         * bytecompiler/BytecodeGenerator.cpp:
2586         * interpreter/CallFrame.h:
2587         (JSC::ExecState::clearSupplementaryExceptionInfo):
2588         * interpreter/Interpreter.cpp:
2589         (JSC::Interpreter::addStackTraceIfNecessary):
2590         (JSC::Interpreter::throwException):
2591         * runtime/JSGlobalObject.cpp:
2592         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
2593         * runtime/VM.cpp:
2594         (JSC):
2595         (JSC::VM::clearExceptionStack):
2596         * runtime/VM.h:
2597         (VM):
2598         (JSC::VM::exceptionStack):
2599
2600 2013-05-15  Commit Queue  <commit-queue@webkit.org>
2601
2602         Unreviewed, rolling out r150051.
2603         http://trac.webkit.org/changeset/150051
2604         https://bugs.webkit.org/show_bug.cgi?id=116186
2605
2606         Broke all JSC tests on Mac and the author is unresponsive
2607         (Requested by rniwa on #webkit).
2608
2609         * JavaScriptCore.xcodeproj/project.pbxproj:
2610
2611 2013-05-15  Julien Brianceau  <jbrianceau@nds.com>
2612
2613         Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
2614         https://bugs.webkit.org/show_bug.cgi?id=116143
2615
2616         Reviewed by Geoffrey Garen.
2617
2618         Since r148119, timeoutCheckRegister is removed from baseline JIT.
2619         So we don't need to save r8 register in JITStackFrame anymore for sh4.
2620
2621         * jit/JITStubs.cpp:
2622         * jit/JITStubs.h:
2623         (JITStackFrame):
2624
2625 2013-05-15  Nico Weber  <thakis@chromium.org>
2626
2627         WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
2628         https://bugs.webkit.org/show_bug.cgi?id=116157
2629
2630         Reviewed by Anders Carlsson.
2631
2632         Also remove a gcc3.2 workaround.
2633
2634         Merges parts of these two commits by the talented Nico Weber:
2635         https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
2636         https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
2637
2638         * os-win32/inttypes.h:
2639
2640 2013-05-13  Alvaro Lopez Ortega  <alvaro@alobbs.com>
2641
2642         Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
2643         https://bugs.webkit.org/show_bug.cgi?id=79065
2644
2645         Reviewed by Darin Adler.
2646
2647         Fixes the build process so the depencencies of the jsc binary are
2648         modified before its copied to its target directory. In this way
2649         jsc should always use relative reference to the JavaScriptCore
2650         libraries.
2651
2652         * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
2653         the "Copy Into Framework" target.
2654
2655 2013-05-13  Mark Hahnenberg  <mhahnenberg@apple.com>
2656
2657         Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
2658         https://bugs.webkit.org/show_bug.cgi?id=116074
2659
2660         If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the 
2661         scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the 
2662         JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM. 
2663         If this happens on a GC thread other than the "main" thread, we will deadlock. The solution 
2664         is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
2665
2666         Reviewed by Darin Adler.
2667
2668         * API/JSVirtualMachine.mm:
2669         (scanExternalObjectGraph):
2670
2671 2013-05-13  Benjamin Poulain  <benjamin@webkit.org>
2672
2673         Improve stringProtoFuncLastIndexOf for the prefix case
2674         https://bugs.webkit.org/show_bug.cgi?id=115952
2675
2676         Reviewed by Geoffrey Garen.
2677
2678         * runtime/StringPrototype.cpp:
2679         (JSC::stringProtoFuncLastIndexOf):
2680         Use the optimized string search when possible.
2681
2682         On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
2683
2684 2013-05-13  Zalan Bujtas  <zalan@apple.com>
2685
2686         WebProcess consuming very high CPU on linkedin.com
2687         https://bugs.webkit.org/show_bug.cgi?id=115601
2688
2689         Reviewed by Andreas Kling.
2690
2691         Disable WEB_TIMING_MINIMAL.
2692         Turn off window.performance and performance.now(). Some JS frameworks expect
2693         additional Web Timing APIs, when performance.now() is available.
2694
2695         * Configurations/FeatureDefines.xcconfig:
2696
2697 2013-05-12  Anders Carlsson  <andersca@apple.com>
2698
2699         Stop including UnusedParam.h
2700         https://bugs.webkit.org/show_bug.cgi?id=116003
2701
2702         Reviewed by Sam Weinig.
2703
2704         UnusedParam.h is empty now so there's no need to include it anymore.
2705
2706         * API/APICast.h:
2707         * API/tests/JSNode.c:
2708         * API/tests/JSNodeList.c:
2709         * API/tests/minidom.c:
2710         * API/tests/testapi.c:
2711         * assembler/AbstractMacroAssembler.h:
2712         * assembler/MacroAssemblerCodeRef.h:
2713         * bytecode/CodeBlock.cpp:
2714         * heap/HandleStack.h:
2715         * interpreter/JSStackInlines.h:
2716         * jit/CompactJITCodeMap.h:
2717         * jit/ExecutableAllocator.h:
2718         * parser/SourceProvider.h:
2719         * runtime/DatePrototype.cpp:
2720         * runtime/JSNotAnObject.cpp:
2721         * runtime/JSSegmentedVariableObject.h:
2722         * runtime/JSVariableObject.h:
2723         * runtime/Options.cpp:
2724         * runtime/PropertyOffset.h:
2725
2726 2013-05-11  Martin Robinson  <mrobinson@igalia.com>
2727
2728         [GTK] Add a basic cmake build for WTF and JavaScriptCore
2729         https://bugs.webkit.org/show_bug.cgi?id=115967
2730
2731         Reviewed by Laszlo Gombos.
2732
2733         * PlatformGTK.cmake: Added.
2734         * shell/PlatformGTK.cmake: Added.
2735
2736 2013-05-10  Laszlo Gombos  <l.gombos@samsung.com>
2737
2738         Remove USE(OS_RANDOMNESS)
2739         https://bugs.webkit.org/show_bug.cgi?id=108095
2740
2741         Reviewed by Darin Adler.
2742
2743         Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
2744         ports.
2745
2746         * jit/JIT.cpp:
2747         (JSC::JIT::JIT):
2748
2749 2013-05-10  Mark Hahnenberg  <mhahnenberg@apple.com>
2750
2751         Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
2752         https://bugs.webkit.org/show_bug.cgi?id=115938
2753
2754         We're going to add some more types of check hoisting soon, so let's have the right name here.
2755
2756         Rubber stamped by Filip Pizlo.
2757         
2758         * CMakeLists.txt:
2759         * GNUmakefile.list.am:
2760         * JavaScriptCore.xcodeproj/project.pbxproj:
2761         * Target.pri:
2762         * dfg/DFGDriver.cpp:
2763         (JSC::DFG::compile):
2764         * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
2765         * dfg/DFGStructureCheckHoistingPhase.h: Removed.
2766         * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
2767         (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
2768         (JSC::DFG::performTypeCheckHoisting):
2769         * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
2770
2771 2013-05-09  Christophe Dumez  <ch.dumez@sisa.samsung.com>
2772
2773         Unreviewed build fix after r149836.
2774
2775         It broke at least EFL and GTK builds. Move new static members initialization
2776         outside the class. Those need to have a definition outside the class because
2777         their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
2778
2779         * runtime/CodeCache.cpp:
2780         (JSC):
2781         * runtime/CodeCache.h:
2782         (CodeCacheMap):
2783
2784 2013-05-08  Oliver Hunt  <oliver@apple.com>
2785
2786         Code cache stores bogus var references for functions in eval code
2787         https://bugs.webkit.org/show_bug.cgi?id=115747
2788
2789         Reviewed by Mark Hahnenberg.
2790
2791         Non-global eval now uses a per-CodeBlock cache, and only use it
2792         when we're at the top of a function's scope.  This means that we
2793         will no longer cache the parsing of a single string across
2794         multiple functions, and we won't cache when we're nested inside
2795         constructs like |with| and |catch| where previously we would, which
2796         is good because caching in those cases is unsound.
2797
2798         * bytecode/EvalCodeCache.h:
2799         (JSC):
2800         (JSC::EvalCodeCache::getSlow):
2801         (JSC::EvalCodeCache::get):
2802         * bytecode/UnlinkedCodeBlock.h:
2803         (JSC::UnlinkedCodeBlock::codeCacheForEval):
2804         (UnlinkedCodeBlock):
2805         (RareData):
2806         * debugger/Debugger.cpp:
2807         (JSC::evaluateInGlobalCallFrame):
2808         * debugger/DebuggerCallFrame.cpp:
2809         (JSC::DebuggerCallFrame::evaluate):
2810         * interpreter/Interpreter.cpp:
2811         (JSC::eval):
2812         * runtime/CodeCache.cpp:
2813         (JSC::CodeCache::CodeCache):
2814         (JSC::CodeCache::generateBytecode):
2815         (JSC):
2816         (JSC::CodeCache::getCodeBlock):
2817         * runtime/CodeCache.h:
2818         (JSC::CodeCacheMap::CodeCacheMap):
2819         (CodeCacheMap):
2820         (JSC::CodeCacheMap::canPruneQuickly):
2821         (JSC::CodeCacheMap::prune):
2822         (JSC::CodeCache::create):
2823         (CodeCache):
2824         * runtime/Executable.cpp:
2825         (JSC::EvalExecutable::EvalExecutable):
2826         (JSC::EvalExecutable::compileInternal):
2827         * runtime/Executable.h:
2828         (JSC::EvalExecutable::create):
2829         (EvalExecutable):
2830         * runtime/JSGlobalObject.cpp:
2831         (JSC::JSGlobalObject::createEvalCodeBlock):
2832         * runtime/JSGlobalObject.h:
2833         (JSGlobalObject):
2834         * runtime/JSGlobalObjectFunctions.cpp:
2835         (JSC::globalFuncEval):
2836         * runtime/VM.cpp:
2837         (JSC::VM::VM):
2838         * runtime/VM.h:
2839         (VM):
2840
2841 2013-05-08  Mark Hahnenberg  <mhahnenberg@apple.com>
2842
2843         DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
2844         https://bugs.webkit.org/show_bug.cgi?id=115805
2845
2846         Reviewed by Geoffrey Garen.
2847
2848         It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's 
2849         an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the 
2850         code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray) 
2851         instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
2852
2853         To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which 
2854         should then use Array::PossiblyArray, then do the checks we were already doing.
2855
2856         * bytecode/ArrayProfile.h:
2857         (JSC::hasSeenArray):
2858         (JSC::hasSeenNonArray):
2859         * dfg/DFGArrayMode.cpp:
2860         (JSC::DFG::ArrayMode::fromObserved):
2861
2862 2013-05-09  Joe Mason  <jmason@blackberry.com>
2863
2864         [BlackBerry] Set up logging buffer on start of jsc executable
2865         https://bugs.webkit.org/show_bug.cgi?id=114688
2866
2867         Reviewed by Rob Buis.
2868
2869         Internal PR: 322715
2870         Internally Reviewed By: Jeff Rogers
2871
2872         * jsc.cpp:
2873         (main): call BB::Platform::setupApplicationLogging
2874
2875 2013-05-08  Michael Saboff  <msaboff@apple.com>
2876
2877         JSC: There should be a disassembler for ARM Thumb 2
2878         https://bugs.webkit.org/show_bug.cgi?id=115827
2879
2880         Reviewed by Filip Pizlo.
2881
2882         Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
2883         and profiling code.  The opcode coverage is currently not complete.  It covers all
2884         of the integer instructions JSC currently emits, but only a limited number of
2885         floating point opcodes.  Currently that is just the 64 bit vmov and vmsr instructions.
2886
2887         The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
2888         for each instruction group.  There is a public format method that does the bulk of
2889         the disassembly work.  There are two broad sub-classes, ARMv7D16BitOpcode and
2890         ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes.  There are sub-classes under
2891         those two classes for individual and related groups of opcodes.  Instructions are
2892         "dispatched" to the right subclass via two arrays of linked lists in the inner classes
2893         OpcodeGroup.  There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
2894         Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
2895         that it matches a particular group.  OpcodeGroup uses a static method to reinterpret_cast
2896         the Opcode object to the right base class for the instruction group for formatting.
2897         The cast eliminates the need of allocating an object for each decoded instruction.
2898         Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
2899         the instruction is 16 or 32 bit.
2900
2901         * JavaScriptCore.xcodeproj/project.pbxproj:
2902         * disassembler/ARMv7: Added.
2903         * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
2904         (ARMv7Disassembler):
2905         (OpcodeGroupInitializer):
2906         (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
2907         (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
2908         (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
2909         (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
2910         (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
2911         (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
2912         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
2913         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
2914         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
2915         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
2916         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
2917         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
2918         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
2919         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
2920         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
2921         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
2922         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
2923         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
2924         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
2925         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
2926         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
2927         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
2928         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
2929         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
2930         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
2931         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
2932         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
2933         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
2934         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
2935         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
2936         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
2937         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
2938         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
2939         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
2940         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
2941         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
2942         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
2943         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
2944         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
2945         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
2946         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
2947         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
2948         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
2949         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
2950         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
2951         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
2952         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
2953         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
2954         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
2955         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
2956         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
2957         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
2958         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
2959         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
2960         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
2961         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
2962         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
2963         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
2964         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
2965         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
2966         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
2967         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
2968         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
2969         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
2970         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
2971         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
2972         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
2973         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
2974         * disassembler/ARMv7/ARMv7DOpcode.h: Added.
2975         (ARMv7Disassembler):
2976         (ARMv7DOpcode):
2977         (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
2978         (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
2979         (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
2980         (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
2981         (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
2982         (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
2983         (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
2984         (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
2985         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
2986         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
2987         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
2988         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
2989         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
2990         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
2991         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
2992         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
2993         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
2994         (ARMv7D16BitOpcode):
2995         (OpcodeGroup):
2996         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
2997         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
2998         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
2999         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
3000         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
3001         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
3002         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
3003         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
3004         (ARMv7DOpcodeAddRegisterT2):
3005         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
3006         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
3007         (ARMv7DOpcodeAddSPPlusImmediate):
3008         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
3009         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
3010         (ARMv7DOpcodeAddSubtract):
3011         (ARMv7DOpcodeAddSubtractT1):
3012         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
3013         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
3014         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
3015         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
3016         (ARMv7DOpcodeAddSubtractImmediate3):
3017         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
3018         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
3019         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
3020         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
3021         (ARMv7DOpcodeAddSubtractImmediate8):
3022         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
3023         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
3024         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
3025         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
3026         (ARMv7DOpcodeBranchConditionalT1):
3027         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
3028         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
3029         (ARMv7DOpcodeBranchExchangeT1):
3030         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
3031         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
3032         (ARMv7DOpcodeBranchT2):
3033         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
3034         (ARMv7DOpcodeCompareImmediateT1):
3035         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
3036         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
3037         (ARMv7DOpcodeCompareRegisterT1):
3038         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
3039         (ARMv7DOpcodeCompareRegisterT2):
3040         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
3041         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
3042         (ARMv7DOpcodeDataProcessingRegisterT1):
3043         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
3044         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
3045         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
3046         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
3047         (ARMv7DOpcodeGeneratePCRelativeAddress):
3048         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
3049         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
3050         (ARMv7DOpcodeLoadFromLiteralPool):
3051         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
3052         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
3053         (ARMv7DOpcodeLoadStoreRegisterImmediate):
3054         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
3055         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
3056         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
3057         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
3058         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
3059         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
3060         (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
3061         (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
3062         (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
3063         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
3064         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
3065         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
3066         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
3067         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
3068         (ARMv7DOpcodeLoadStoreRegisterSPRelative):
3069         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
3070         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
3071         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
3072         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
3073         (ARMv7DOpcodeLogicalImmediateT1):
3074         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
3075         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
3076         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
3077         (ARMv7DOpcodeMiscAddSubSP):
3078         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
3079         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
3080         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
3081         (ARMv7DOpcodeMiscByteHalfwordOps):
3082         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
3083         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
3084         (ARMv7DOpcodeMiscBreakpointT1):
3085         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
3086         (ARMv7DOpcodeMiscCompareAndBranch):
3087         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
3088         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
3089         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
3090         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
3091         (ARMv7DOpcodeMiscHint16):
3092         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
3093         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
3094         (ARMv7DOpcodeMiscIfThenT1):
3095         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
3096         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
3097         (ARMv7DOpcodeMiscPushPop):
3098         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
3099         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
3100         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
3101         (ARMv7DOpcodeMoveImmediateT1):
3102         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
3103         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
3104         (ARMv7DOpcodeMoveRegisterT1):
3105         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
3106         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
3107         (ARMv7D32BitOpcode):
3108         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
3109         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
3110         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
3111         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
3112         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
3113         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
3114         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
3115         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
3116         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
3117         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
3118         (ARMv7DOpcodeBranchRelative):
3119         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
3120         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
3121         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
3122         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
3123         (ARMv7DOpcodeConditionalBranchT3):
3124         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
3125         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
3126         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
3127         (ARMv7DOpcodeBranchOrBranchLink):
3128         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
3129         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
3130         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
3131         (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
3132         (ARMv7DOpcodeDataProcessingModifiedImmediate):
3133         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
3134         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
3135         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
3136         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
3137         (ARMv7DOpcodeDataProcessingShiftedReg):
3138         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
3139         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
3140         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
3141         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
3142         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
3143         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
3144         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
3145         (ARMv7DOpcodeDataProcessingReg):
3146         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
3147         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
3148         (ARMv7DOpcodeDataProcessingRegShift):
3149         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
3150         (ARMv7DOpcodeDataProcessingRegExtend):
3151         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
3152         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
3153         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
3154         (ARMv7DOpcodeDataProcessingRegParallel):
3155         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
3156         (ARMv7DOpcodeDataProcessingRegMisc):
3157         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
3158         (ARMv7DOpcodeHint32):
3159         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
3160         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
3161         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
3162         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
3163         (ARMv7DOpcodeFPTransfer):
3164         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
3165         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
3166         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
3167         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
3168         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
3169         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
3170         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
3171         (ARMv7DOpcodeDataLoad):
3172         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
3173         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
3174         (ARMv7DOpcodeLoadRegister):
3175         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
3176         (ARMv7DOpcodeLoadSignedImmediate):
3177         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
3178         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
3179         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
3180         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
3181         (ARMv7DOpcodeLoadUnsignedImmediate):
3182         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
3183         (ARMv7DOpcodeLongMultipleDivide):
3184         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
3185         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
3186         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
3187         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
3188         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
3189         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
3190         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
3191         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
3192         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
3193         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
3194         (ARMv7DOpcodeDataPushPopSingle):
3195         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
3196         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
3197         (ARMv7DOpcodeDataStoreSingle):
3198         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
3199         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
3200         (ARMv7DOpcodeStoreSingleImmediate12):
3201         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
3202         (ARMv7DOpcodeStoreSingleImmediate8):
3203         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
3204         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
3205         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
3206         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
3207         (ARMv7DOpcodeStoreSingleRegister):
3208         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
3209         (ARMv7DOpcodeUnmodifiedImmediate):
3210         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
3211         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
3212         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
3213         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
3214         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
3215         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
3216         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
3217         (ARMv7DOpcodeVMOVDoublePrecision):
3218         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
3219         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
3220         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
3221         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
3222         (ARMv7DOpcodeVMOVSinglePrecision):
3223         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
3224         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
3225         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
3226         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
3227         (ARMv7DOpcodeVMSR):
3228         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
3229         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
3230         * disassembler/ARMv7Disassembler.cpp: Added.
3231         (JSC::tryToDisassemble):
3232
3233 2013-05-07  Julien Brianceau  <jbrianceau@nds.com>
3234
3235         Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
3236         https://bugs.webkit.org/show_bug.cgi?id=115722
3237
3238         Reviewed by Oliver Hunt.
3239
3240         * assembler/MacroAssemblerSH4.h:
3241         (JSC::MacroAssemblerSH4::load8PostInc):
3242         (MacroAssemblerSH4):
3243         (JSC::MacroAssemblerSH4::load16Unaligned):
3244         (JSC::MacroAssemblerSH4::load16PostInc):
3245         (JSC::MacroAssemblerSH4::storeDouble):
3246         (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
3247         * assembler/SH4Assembler.h:
3248         (JSC::SH4Assembler::movwMemRegIn):
3249         (SH4Assembler):
3250         (JSC::SH4Assembler::movbMemRegIn):
3251         (JSC::SH4Assembler::printInstr):
3252
3253 2013-05-07  Anders Carlsson  <andersca@apple.com>
3254
3255         Remove AlwaysInline.h from WTF
3256         https://bugs.webkit.org/show_bug.cgi?id=115727
3257
3258         Reviewed by Brent Fulgham.
3259
3260         The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
3261         to keep AlwaysInline.h around anymore.
3262
3263         * jit/JSInterfaceJIT.h:
3264         * parser/Lexer.h:
3265         * runtime/JSCJSValue.h:
3266         * runtime/SymbolTable.h:
3267
3268 2013-05-07  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3269
3270         HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
3271         https://bugs.webkit.org/show_bug.cgi?id=115646
3272
3273         Reviewed by Darin Adler.
3274
3275         * bytecompiler/StaticPropertyAnalyzer.h:
3276         (JSC::StaticPropertyAnalyzer::putById):
3277             Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
3278
3279 2013-05-06  Julien Brianceau  <jbrianceau@nds.com>
3280
3281         Misc bugfix and cleaning in sh4 base JIT.
3282         https://bugs.webkit.org/show_bug.cgi?id=115627
3283
3284         Reviewed by Oliver Hunt.
3285
3286         Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
3287         Remove misplaced extuw() implementation from MacroAssemblerSH4.
3288         Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
3289
3290         * assembler/MacroAssemblerSH4.h:
3291         (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
3292         (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
3293         (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
3294         (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
3295         (MacroAssemblerSH4):
3296         (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
3297         (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
3298         (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
3299         (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
3300         (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
3301         (JSC::MacroAssemblerSH4::store32):
3302         * assembler/SH4Assembler.h:
3303         (JSC::SH4Assembler::movwRegMemr0):
3304         (SH4Assembler):
3305         (JSC::SH4Assembler::movbRegMemr0):
3306         (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
3307         (JSC::SH4Assembler::maxJumpReplacementSize):
3308         (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
3309         (JSC::SH4Assembler::printInstr):
3310
3311 2013-05-06  Anders Carlsson  <andersca@apple.com>
3312
3313         Stop using WTF::deleteAllValues in JavaScriptCore
3314         https://bugs.webkit.org/show_bug.cgi?id=115670
3315
3316         Reviewed by Oliver Hunt.
3317
3318         Change the Vectors used to Vectors of OwnPtrs instead.
3319
3320         * heap/DFGCodeBlocks.cpp:
3321         (JSC::DFGCodeBlocks::~DFGCodeBlocks):
3322         (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
3323
3324 2013-05-06  Andras Becsi  <andras.becsi@digia.com>
3325
3326         Build with GCC 4.8 fails because of -Wmaybe-uninitialized
3327         https://bugs.webkit.org/show_bug.cgi?id=115648
3328
3329         Reviewed by Michael Saboff.
3330
3331         Initialize values in Options::setOption since from
3332         there we end up calling OptionRange::init with
3333         uninitialized members.
3334
3335         * runtime/Options.cpp:
3336
3337 2013-05-06  Gabor Rapcsanyi  <rgabor@webkit.org>
3338
3339         JSC ARM traditional failing on Octane NavierStokes test
3340         https://bugs.webkit.org/show_bug.cgi?id=115626
3341
3342         Reviewed by Zoltan Herczeg.
3343
3344         Change the ARM traditional assembler to use double precision on value
3345         conversions.
3346
3347         * assembler/ARMAssembler.h:
3348
3349 2013-05-03  Michael Saboff  <msaboff@apple.com>
3350
3351         There should be a runtime option to constrain what functions get DFG compiled
3352         https://bugs.webkit.org/show_bug.cgi?id=115576
3353
3354         Reviewed by Mark Hahnenberg.
3355
3356         Added OptionRange to Options to allow checking that something is within an option
3357         or not.  The new OptionClass supports range strings in the form of [!]<low>[:<high>].
3358         If only one value is given, then it will be used for both low and high.  A leading
3359         '!' inverts the check.  If no range is given, then checking for a value within a range
3360         will always return true.  Added the option "bytecodeRangeToDFGCompile" that takes an
3361         OptionRange string to select the bytecode range of code blocks to DFG compile.
3362
3363         * dfg/DFGDriver.cpp:
3364         (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
3365         range.
3366         * runtime/Options.cpp:
3367         (JSC::parse): Added overloaded parse() for OptionRange.
3368         (JSC::OptionRange::init): Parse range string and then initialize the range.
3369         (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
3370         the specified range.
3371         (JSC::Options::dumpOption): Added code to dump OptionRange options.
3372         * runtime/Options.h:
3373         (OptionRange): New class.
3374         (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
3375         the Option static array initialization.
3376         (JSC::OptionRange::rangeString): This is used for debug.  It assumes that the char*
3377         passed into OptionRange::init is valid when this function is called.
3378
3379 2013-05-02  Oliver Hunt  <oliver@apple.com>
3380
3381         Fix potential bug in lookup logic
3382         https://bugs.webkit.org/show_bug.cgi?id=115522
3383
3384         Reviewed by Mark Hahnenberg.
3385
3386         Though not a problem in practise, it is technically possible
3387         to inject an un-proxied global object into the scope chain
3388         via the C API.  This change makes sure that the scope walk
3389         in BytecodeGenerator actually limits itself to scopes that
3390         are statically bindable.
3391
3392         * bytecompiler/BytecodeGenerator.cpp:
3393         (JSC::BytecodeGenerator::resolve):
3394         * runtime/JSObject.h:
3395         (JSObject):
3396         (JSC):
3397         (JSC::JSObject::isStaticScopeObject):
3398
3399 2013-05-01  Roger Fong  <roger_fong@apple.com>
3400
3401         Set Path in makefile for AppleWin.
3402
3403         * JavaScriptCore.vcxproj/JavaScriptCore.make:
3404
3405 2013-05-01  Benjamin Poulain  <benjamin@webkit.org>
3406
3407         Remove the remaining wscript
3408         https://bugs.webkit.org/show_bug.cgi?id=115459
3409
3410         Reviewed by Andreas Kling.
3411
3412         * wscript: Removed.
3413
3414 2013-04-30  Mark Lam  <mark.lam@apple.com>
3415
3416         JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
3417         VM watchdog if its client did not pass one in.
3418         https://bugs.webkit.org/show_bug.cgi?id=115461.
3419
3420         Reviewed by Geoffrey Garen.
3421
3422         * API/JSContextRef.cpp:
3423         (internalScriptTimeoutCallback):
3424         (JSContextGroupSetExecutionTimeLimit):
3425         * API/tests/testapi.c:
3426         (main):
3427         - Added test case when the time limit callback is 0.
3428         - Also updated a check to verify that a TerminatedExecutionException is
3429           thrown when the time out is cancelled.
3430         - Also fixed some cosmetic typos.
3431
3432 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
3433
3434         Removed op_ensure_property_exists
3435         https://bugs.webkit.org/show_bug.cgi?id=115460
3436
3437         Reviewed by Mark Hahnenberg.
3438
3439         It was unused, and whatever it was once used for was not optimized.
3440
3441         * JavaScriptCore.order:
3442         * bytecode/CodeBlock.cpp:
3443         (JSC::CodeBlock::dumpBytecode):
3444         * bytecode/Opcode.h:
3445         (JSC::padOpcodeName):
3446         * jit/JIT.cpp:
3447         (JSC::JIT::privateCompileMainPass):
3448         * jit/JIT.h:
3449         * jit/JITOpcodes.cpp:
3450         * jit/JITOpcodes32_64.cpp:
3451         * jit/JITStubs.cpp:
3452         * jit/JITStubs.h:
3453         * llint/LLIntSlowPaths.cpp:
3454         * llint/LLIntSlowPaths.h:
3455         * llint/LowLevelInterpreter.asm:
3456
3457 2013-04-30  Oliver Hunt  <oliver@apple.com>
3458
3459         JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
3460         https://bugs.webkit.org/show_bug.cgi?id=115449
3461
3462         Reviewed by Geoffrey Garen.
3463
3464         Rename callframeishost to something that makes sense, and fix
3465         getCallerInfo to correctly handle inline functions calling into
3466         the VM.
3467
3468         * bytecode/CodeBlock.cpp:
3469         (JSC::CodeBlock::codeOriginForReturn):
3470           Make this more robust in the face of incorrect stack walking
3471         * interpreter/CallFrame.cpp:
3472         (JSC::CallFrame::trueCallerFrame):
3473           Everyone has to perform a codeblock() check before calling this
3474           so we might as well just do it here.
3475         * interpreter/Interpreter.cpp:
3476         (JSC::getCallerInfo):
3477
3478 2013-04-30  Julien Brianceau  <jbrianceau@nds.com>
3479
3480         Bug fixing in sh4 base JIT and LLINT.
3481         https://bugs.webkit.org/show_bug.cgi?id=115420
3482
3483         Reviewed by Oliver Hunt.
3484
3485         * assembler/MacroAssemblerSH4.h:
3486         (JSC::MacroAssemblerSH4::lshift32):
3487         (JSC::MacroAssemblerSH4::rshift32):
3488         (JSC::MacroAssemblerSH4::branchMul32):
3489         (JSC::MacroAssemblerSH4::urshift32):
3490         (JSC::MacroAssemblerSH4::replaceWithJump):
3491         (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
3492         * assembler/SH4Assembler.h:
3493         (JSC::SH4Assembler::shldRegReg):
3494         (JSC::SH4Assembler::shadRegReg):
3495         (JSC::SH4Assembler::shalImm8r):
3496         (SH4Assembler):
3497         (JSC::SH4Assembler::sharImm8r):
3498         (JSC::SH4Assembler::maxJumpReplacementSize):
3499         (JSC::SH4Assembler::replaceWithJump):
3500         * offlineasm/sh4.rb:
3501
3502 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
3503
3504         Objective-C JavaScriptCore API should publicly support bridging to C
3505         https://bugs.webkit.org/show_bug.cgi?id=115447
3506
3507         Reviewed by Mark Hahnenberg.
3508
3509         For consistency, I renamed
3510
3511             +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
3512             +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
3513             -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
3514
3515         I searched svn to verify that these functions don't have clients yet,
3516         so we won't break anything.
3517
3518         I also exported as public API
3519
3520             +[JSValue valueWithJSValueRef:]
3521             +[JSContext contextWithJSGlobalContextRef:]
3522
3523         It's hard to integrate with the C API without these.
3524
3525 2013-04-30  Commit Queue  <rniwa@webkit.org>
3526
3527         Unreviewed, rolling out r149349 and r149354.
3528         http://trac.webkit.org/changeset/149349
3529         http://trac.webkit.org/changeset/149354
3530         https://bugs.webkit.org/show_bug.cgi?id=115444
3531
3532          The Thumb version of compileSoftModulo make invalid use of
3533         registers (Requested by benjaminp on #webkit).
3534
3535         * CMakeLists.txt:
3536         * GNUmakefile.list.am:
3537         * JavaScriptCore.xcodeproj/project.pbxproj:
3538         * assembler/ARMv7Assembler.h:
3539         (ARMv7Assembler):
3540         * assembler/AbstractMacroAssembler.h:
3541         (JSC::isARMv7s):
3542         (JSC):
3543         * assembler/MacroAssemblerARMv7.cpp: Removed.
3544         * assembler/MacroAssemblerARMv7.h:
3545         (MacroAssemblerARMv7):
3546         * dfg/DFGFixupPhase.cpp:
3547         (JSC::DFG::FixupPhase::fixupNode):
3548         * dfg/DFGOperations.cpp:
3549         * dfg/DFGOperations.h:
3550         * dfg/DFGSpeculativeJIT.cpp:
3551         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3552         (DFG):
3553         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
3554         * dfg/DFGSpeculativeJIT.h:
3555         (JSC::DFG::SpeculativeJIT::callOperation):
3556         (SpeculativeJIT):
3557         * dfg/DFGSpeculativeJIT32_64.cpp:
3558         (JSC::DFG::SpeculativeJIT::compile):
3559
3560 2013-04-30  Zalan Bujtas  <zalan@apple.com>
3561
3562         Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
3563         https://bugs.webkit.org/show_bug.cgi?id=111244
3564
3565         Reviewed by David Kilzer.
3566         
3567         Enable performance.now() as a minimal subset of Web Timing API. 
3568         It returns DOMHighResTimeStamp, a monotonically increasing value representing the 
3569         number of milliseconds from the start of the navigation of the current document.
3570         JS libraries use this API to check against the requestAnimationFrame() timestamp.
3571
3572         * Configurations/FeatureDefines.xcconfig:
3573
3574 2013-04-30  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
3575
3576         Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
3577
3578         * dfg/DFGSpeculativeJIT.cpp:
3579         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
3580
3581 2013-04-29  Cosmin Truta  <ctruta@blackberry.com>
3582
3583         [ARM] Expand the use of integer division
3584         https://bugs.webkit.org/show_bug.cgi?id=115138
3585
3586         Reviewed by Benjamin Poulain.
3587
3588         If availability of hardware integer division isn't known at compile
3589         time, check the CPU flags and decide at runtime whether to fall back
3590         to software. Currently, this OS-specific check is implemented on QNX.
3591
3592         Moreover, use operator % instead of fmod() in the calculation of the
3593         software modulo. Even when it's software-emulated, operator % is faster
3594         than fmod(): on ARM v7 QNX, without hardware division, we noticed
3595         >3% speedup on SunSpider.
3596
3597         * CMakeLists.txt:
3598         * GNUmakefile.list.am:
3599         * JavaScriptCore.xcodeproj/project.pbxproj:
3600         * assembler/ARMv7Assembler.h:
3601         (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
3602         (JSC::ARMv7Assembler::udiv): Ditto.
3603         * assembler/AbstractMacroAssembler.h:
3604         (JSC::isARMv7s): Removed.
3605         * assembler/MacroAssemblerARMv7.cpp: Added.
3606         (JSC::isIntegerDivSupported): Added.
3607         * assembler/MacroAssemblerARMv7.h:
3608         (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
3609         * dfg/DFGFixupPhase.cpp:
3610         (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
3611         * dfg/DFGOperations.cpp:
3612         (JSC::DFG::operationModOnInts): Added.
3613         * dfg/DFGOperations.h:
3614         (JSC::DFG::Z_DFGOperation_ZZ): Added.
3615         * dfg/DFGSpeculativeJIT.cpp:
3616         (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
3617         from the common implementation; used operationModOnInts on ARM.
3618         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
3619         (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
3620         * dfg/DFGSpeculativeJIT.h:
3621         (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
3622         * dfg/DFGSpeculativeJIT32_64.cpp:
3623         (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
3624
3625 2013-04-29  Benjamin Poulain  <benjamin@webkit.org>
3626
3627         Unify the data access of StringImpl members from JavaScriptCore
3628         https://bugs.webkit.org/show_bug.cgi?id=115320
3629
3630         Reviewed by Andreas Kling.
3631
3632         DFG accesses the member infos by directly calling the methods on StringImpl,
3633         while the baseline JIT was using helper methods on ThunkHelpers.
3634
3635         Cut the middle man, and use StringImpl directly everywhere.
3636
3637         * jit/JITInlines.h:
3638         (JSC::JIT::emitLoadCharacterString):
3639         * jit/JITPropertyAccess.cpp:
3640         (JSC::JIT::stringGetByValStubGenerator):
3641         * jit/JITPropertyAccess32_64.cpp:
3642         (JSC::JIT::stringGetByValStubGenerator):
3643         * jit/JSInterfaceJIT.h:
3644         * jit/ThunkGenerators.cpp:
3645         (JSC::stringCharLoad):
3646
3647 2013-04-29  Benjamin Poulain  <bpoulain@apple.com>
3648
3649         Use push and pop for iOS math function thunks
3650         https://bugs.webkit.org/show_bug.cgi?id=115215
3651
3652         Reviewed by Filip Pizlo.
3653
3654         The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
3655         The requirement is 4 bytes:
3656         "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
3657          grows downward, and contains local variables and a function’s parameters."
3658
3659         Subsequently, we can just use push and pop to preserve the link register.
3660
3661         * jit/ThunkGenerators.cpp:
3662
3663 2013-04-29  Brent Fulgham  <bfulgham@webkit.org>
3664
3665         [Windows, WinCairo] Get rid of last few pthread include/link references.
3666         https://bugs.webkit.org/show_bug.cgi?id=115375
3667
3668         Reviewed by Tim Horton.
3669
3670         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
3671         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
3672         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
3673         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3674         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3675         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3676
3677 2013-04-29  Roger Fong  <roger_fong@apple.com>
3678
3679         Unreviewed. AppleWin VS2010 build fix.
3680
3681         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
3682
3683 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
3684
3685         ~BlockAllocator should ASSERT that it has no more Regions left
3686         https://bugs.webkit.org/show_bug.cgi?id=115287
3687
3688         Reviewed by Andreas Kling.
3689
3690         * heap/BlockAllocator.cpp:
3691         (JSC::BlockAllocator::~BlockAllocator):
3692         (JSC::BlockAllocator::allRegionSetsAreEmpty):
3693         * heap/BlockAllocator.h:
3694         (RegionSet):
3695         (JSC::BlockAllocator::RegionSet::isEmpty):
3696         (BlockAllocator):
3697
3698 2013-04-29  Mark Hahnenberg  <mhahnenberg@apple.com>
3699
3700         IndexingTypes should use hex
3701         https://bugs.webkit.org/show_bug.cgi?id=115286
3702
3703         Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
3704
3705         Reviewed by Geoffrey Garen.
3706
3707         * runtime/IndexingType.h:
3708
3709 2013-04-29  Carlos Garcia Campos  <cgarcia@igalia.com>
3710
3711         Unreviewed. Fix make distcheck.
3712
3713         * GNUmakefile.list.am: Add missing headers files to compilation
3714         and offlineasm/sh4.rb script.
3715
3716 2013-04-28  Dean Jackson  <dino@apple.com>
3717
3718         [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
3719         https://bugs.webkit.org/show_bug.cgi?id=115310
3720
3721         Reviewed by Simon Fraser.
3722
3723         Remove ENABLE_HIGH_DPI_CANVAS_macosx.
3724
3725         * Configurations/FeatureDefines.xcconfig:
3726
3727 2013-04-27  Darin Adler  <darin@apple.com>
3728
3729         Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
3730         https://bugs.webkit.org/show_bug.cgi?id=115307
3731
3732         Reviewed by Geoffrey Garen.
3733
3734         * heap/HeapTimer.cpp:
3735         (JSC::HeapTimer::HeapTimer):
3736         * runtime/VM.cpp:
3737         (JSC::enableAssembler):
3738         Use adoptCF free function.
3739
3740 2013-04-27  Anders Carlsson  <andersca@apple.com>
3741
3742         Try to fix the Windows build.
3743
3744         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
3745
3746 2013-04-25  Geoffrey Garen  <ggaren@apple.com>
3747
3748         Cleaned up pre/post inc/dec in bytecode
3749         https://bugs.webkit.org/show_bug.cgi?id=115222
3750
3751         Reviewed by Filip Pizlo.
3752
3753         A few related changes here:
3754
3755         (*) Removed post_inc and post_dec. The two-result form was awkward to
3756         reason about. Being explicit about the intermediate mov and to_number
3757         reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
3758         fixes a const bug. Plus, we get to blow away 262 lines of code.
3759
3760         (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
3761         version now.
3762
3763         (*) Renamed to_jsnumber to to_number, to match the ECMA name.
3764
3765         (*) Tightened up the codegen and runtime support for to_number.
3766
3767
3768         * JavaScriptCore.order: Order!
3769
3770         * bytecode/CodeBlock.cpp:
3771         (JSC::CodeBlock::dumpBytecode):
3772         * bytecode/Opcode.h:
3773         (JSC::padOpcodeName):
3774         * bytecompiler/BytecodeGenerator.cpp:
3775         (JSC::BytecodeGenerator::emitInc):
3776         (JSC::BytecodeGenerator::emitDec):
3777         * bytecompiler/BytecodeGenerator.h:
3778         (JSC::BytecodeGenerator::emitToNumber):
3779         (BytecodeGenerator): Removed post_inc and post_dec.
3780
3781         * bytecompiler/NodesCodegen.cpp:
3782         (JSC::emitPreIncOrDec): Updated for rename.
3783
3784         (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
3785         These are rare, and they boil away in the DFG.
3786
3787         (JSC::PostfixNode::emitResolve):
3788         (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
3789         of any special forms. This fixes a bug where we would do string
3790         add/subtract instead of number.
3791
3792         * dfg/DFGByteCodeParser.cpp:
3793         (JSC::DFG::ByteCodeParser::parseBlock):
3794         * dfg/DFGCapabilities.h:
3795         (JSC::DFG::canCompileOpcode):
3796         * jit/JIT.cpp:
3797         (JSC::JIT::privateCompileMainPass):
3798         (JSC::JIT::privateCompileSlowCases):
3799         * jit/JIT.h:
3800         * jit/JITArithmetic.cpp:
3801         (JSC::JIT::emit_op_inc):
3802         (JSC::JIT::emitSlow_op_inc):
3803         (JSC::JIT::emit_op_dec):
3804         (JSC::JIT::emitSlow_op_dec):
3805         * jit/JITArithmetic32_64.cpp:
3806         (JSC::JIT::emit_op_inc):
3807         (JSC::JIT::emitSlow_op_inc):
3808         (JSC::JIT::emit_op_dec):
3809         (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
3810
3811         * jit/JITOpcodes.cpp:
3812         (JSC::JIT::emit_op_to_number):
3813         (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
3814         no such thing!
3815
3816         * jit/JITOpcodes32_64.cpp:
3817         (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
3818         about the lowest valued tag.
3819
3820         (JSC::JIT::emitSlow_op_to_number): Updated for renames.
3821
3822         * jit/JITStubs.cpp:
3823         (JSC::DEFINE_STUB_FUNCTION):
3824         * jit/JITStubs.h:
3825         * llint/LLIntSlowPaths.cpp:
3826         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
3827         * llint/LLIntSlowPaths.h:
3828         * llint/LowLevelInterpreter32_64.asm:
3829         * llint/LowLevelInterpreter64.asm:
3830         * parser/NodeConstructors.h:
3831         (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
3832
3833         * runtime/Operations.cpp:
3834         (JSC::jsIsObjectType): Removed a test for number cells. There's
3835         no such thing!
3836
3837 2013-04-27  Julien Brianceau  <jbrianceau@nds.com>
3838
3839         REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
3840         https://bugs.webkit.org/show_bug.cgi?id=115305
3841
3842         Reviewed by Andreas Kling.
3843
3844         * assembler/SH4Assembler.h:
3845         (JSC::SH4Assembler::cacheFlush):
3846
3847 2013-04-26  Geoffrey Garen  <ggaren@apple.com>
3848
3849         Re-landing <http://trac.webkit.org/changeset/148999>
3850
3851             Filled out more cases of branch folding in bytecode when emitting
3852             expressions into a branching context
3853             https://bugs.webkit.org/show_bug.cgi?id=115057
3854
3855             Reviewed by Phil Pizlo.
3856
3857         We can't fold the number == 1 case to boolean because all non-zero numbers
3858         down-cast to true, but only 1 is == to true.
3859
3860 2013-04-26  Filip Pizlo  <fpizlo@apple.com>
3861
3862         Correct indentation of SymbolTable.h
3863         
3864         Rubber stamped by Mark Hahnenberg.
3865
3866         * runtime/SymbolTable.h:
3867
3868 2013-04-26  Roger Fong  <roger_fong@apple.com>
3869
3870         Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
3871         Make the DebugSuffix configuration use _debug dependencies.
3872
3873         * JavaScriptCore.vcxproj/JavaScriptCore.make:
3874         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
3875         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
3876         * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
3877         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
3878         * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
3879         * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
3880         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
3881         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
3882         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
3883         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
3884         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
3885         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
3886         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
3887         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
3888         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
3889         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
3890         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
3891         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
3892         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
3893         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
3894         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
3895         * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
3896         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
3897         * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
3898         * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
3899         * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
3900         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
3901         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
3902         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
3903         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
3904         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
3905         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
3906         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
3907         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
3908         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
3909         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
3910         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
3911         * JavaScriptCore.vcxproj/build-generated-files.sh:
3912         * JavaScriptCore.vcxproj/copy-files.cmd:
3913         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
3914         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
3915         * JavaScriptCore.vcxproj/jsc/jscDebug.props:
3916         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
3917         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
3918         * JavaScriptCore.vcxproj/jsc/jscProduction.props:
3919         * JavaScriptCore.vcxproj/jsc/jscRelease.props:
3920         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
3921         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
3922         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
3923         * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
3924         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
3925         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
3926         * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
3927         * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
3928         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
3929         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
3930         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
3931         * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
3932         * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
3933         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
3934         * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
3935         * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
3936         * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
3937
3938 2013-04-26  Roger Fong  <roger_fong@apple.com>
3939
3940         Disable sub-pixel layout on mac.
3941         https://bugs.webkit.org/show_bug.cgi?id=114999.
3942
3943         Reviewed by Simon Fraser.
3944
3945         * Configurations/FeatureDefines.xcconfig:
3946
3947 2013-04-26  Oliver Hunt  <oliver@apple.com>
3948
3949         Make stack tracing more robust
3950         https://bugs.webkit.org/show_bug.cgi?id=115272
3951
3952         Reviewed by Geoffrey Garen.
3953
3954         CallFrame already handles stack walking confusion robustly,
3955         so we should make sure that the actual walk handles that as well.
3956
3957         * interpreter/Interpreter.cpp:
3958         (JSC::getCallerInfo):
3959
3960 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
3961
3962         REGRESSION(r149165): It made many tests crash on 32 bit
3963         https://bugs.webkit.org/show_bug.cgi?id=115227
3964
3965         Reviewed by Csaba Osztrogonác.
3966
3967         m_reservation is uni