<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[192591] trunk/Source/JavaScriptCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/192591">192591</a></dd>
<dt>Author</dt> <dd>benjamin@webkit.org</dd>
<dt>Date</dt> <dd>2015-11-18 15:14:54 -0800 (Wed, 18 Nov 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>[JSC] Make LBasicBlock into an alias for B3::BasicBlock. #ifdef anything that does not compile
https://bugs.webkit.org/show_bug.cgi?id=151381
Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-11-18
Reviewed by Filip Pizlo.
* JavaScriptCore.xcodeproj/project.pbxproj:
* ftl/FTLAbbreviatedTypes.h:
* ftl/FTLAbbreviations.h:
* ftl/FTLAbstractHeap.cpp:
(JSC::FTL::AbstractHeap::decorateInstruction):
(JSC::FTL::IndexedAbstractHeap::IndexedAbstractHeap):
* ftl/FTLAbstractHeap.h:
(JSC::FTL::AbstractHeap::AbstractHeap):
* ftl/FTLAbstractHeapRepository.cpp:
(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLB3Output.h:
(JSC::FTL::Output::newBlock):
(JSC::FTL::Output::insertNewBlocksBefore):
(JSC::FTL::Output::addIncomingToPhi):
(JSC::FTL::Output::Output): Deleted.
(JSC::FTL::Output::initialize): Deleted.
* ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
* ftl/FTLCommonValues.h:
* ftl/FTLIntrinsicRepository.cpp:
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::compileInstanceOf):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::allocateCell):
(JSC::FTL::DFG::LowerDFGToLLVM::buildSwitch):
(JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath):
(JSC::FTL::DFG::LowerDFGToLLVM::crash):
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::Output):
* ftl/FTLOutput.h:
(JSC::FTL::Output::addIncomingToPhi):
* ftl/FTLState.cpp:
(JSC::FTL::State::dumpState):
* ftl/FTLValueRange.cpp:
(JSC::FTL::ValueRange::decorateInstruction):
* ftl/FTLValueRange.h:
(JSC::FTL::ValueRange::ValueRange):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbbreviatedTypesh">trunk/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbbreviationsh">trunk/Source/JavaScriptCore/ftl/FTLAbbreviations.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbstractHeapcpp">trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbstractHeaph">trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositorycpp">trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositoryh">trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLB3Outputh">trunk/Source/JavaScriptCore/ftl/FTLB3Output.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLCommonValuescpp">trunk/Source/JavaScriptCore/ftl/FTLCommonValues.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLCommonValuesh">trunk/Source/JavaScriptCore/ftl/FTLCommonValues.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLIntrinsicRepositorycpp">trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLIntrinsicRepositoryh">trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOutputcpp">trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOutputh">trunk/Source/JavaScriptCore/ftl/FTLOutput.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLStatecpp">trunk/Source/JavaScriptCore/ftl/FTLState.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLValueRangecpp">trunk/Source/JavaScriptCore/ftl/FTLValueRange.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLValueRangeh">trunk/Source/JavaScriptCore/ftl/FTLValueRange.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreftlFTLB3Outputcpp">trunk/Source/JavaScriptCore/ftl/FTLB3Output.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2015-11-18 Benjamin Poulain <bpoulain@apple.com>
+
+ [JSC] Make LBasicBlock into an alias for B3::BasicBlock. #ifdef anything that does not compile
+ https://bugs.webkit.org/show_bug.cgi?id=151381
+
+ Reviewed by Filip Pizlo.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * ftl/FTLAbbreviatedTypes.h:
+ * ftl/FTLAbbreviations.h:
+ * ftl/FTLAbstractHeap.cpp:
+ (JSC::FTL::AbstractHeap::decorateInstruction):
+ (JSC::FTL::IndexedAbstractHeap::IndexedAbstractHeap):
+ * ftl/FTLAbstractHeap.h:
+ (JSC::FTL::AbstractHeap::AbstractHeap):
+ * ftl/FTLAbstractHeapRepository.cpp:
+ (JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
+ * ftl/FTLAbstractHeapRepository.h:
+ * ftl/FTLB3Output.h:
+ (JSC::FTL::Output::newBlock):
+ (JSC::FTL::Output::insertNewBlocksBefore):
+ (JSC::FTL::Output::addIncomingToPhi):
+ (JSC::FTL::Output::Output): Deleted.
+ (JSC::FTL::Output::initialize): Deleted.
+ * ftl/FTLCommonValues.cpp:
+ (JSC::FTL::CommonValues::CommonValues):
+ * ftl/FTLCommonValues.h:
+ * ftl/FTLIntrinsicRepository.cpp:
+ * ftl/FTLIntrinsicRepository.h:
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::DFG::LowerDFGToLLVM::LowerDFGToLLVM):
+ (JSC::FTL::DFG::LowerDFGToLLVM::lower):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileCreateDirectArguments):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileNewArrayWithSize):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstruct):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileForwardVarargs):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
+ (JSC::FTL::DFG::LowerDFGToLLVM::compileInstanceOf):
+ (JSC::FTL::DFG::LowerDFGToLLVM::getById):
+ (JSC::FTL::DFG::LowerDFGToLLVM::allocateCell):
+ (JSC::FTL::DFG::LowerDFGToLLVM::buildSwitch):
+ (JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath):
+ (JSC::FTL::DFG::LowerDFGToLLVM::crash):
+ * ftl/FTLOutput.cpp:
+ (JSC::FTL::Output::Output):
+ * ftl/FTLOutput.h:
+ (JSC::FTL::Output::addIncomingToPhi):
+ * ftl/FTLState.cpp:
+ (JSC::FTL::State::dumpState):
+ * ftl/FTLValueRange.cpp:
+ (JSC::FTL::ValueRange::decorateInstruction):
+ * ftl/FTLValueRange.h:
+ (JSC::FTL::ValueRange::ValueRange):
+
</ins><span class="cx"> 2015-11-18 Filip Pizlo <fpizlo@apple.com>
</span><span class="cx">
</span><span class="cx"> Implement the B3 equivalent of FTLCompile
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -1085,6 +1085,7 @@
</span><span class="cx">                 26718BA41BE99F780052017B /* AirIteratedRegisterCoalescing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26718BA21BE99F780052017B /* AirIteratedRegisterCoalescing.cpp */; };
</span><span class="cx">                 26718BA51BE99F780052017B /* AirIteratedRegisterCoalescing.h in Headers */ = {isa = PBXBuildFile; fileRef = 26718BA31BE99F780052017B /* AirIteratedRegisterCoalescing.h */; };
</span><span class="cx">                 269D636E1BFBE5D100101B1D /* FTLB3Output.h in Headers */ = {isa = PBXBuildFile; fileRef = 269D636D1BFBE5D000101B1D /* FTLB3Output.h */; };
</span><ins>+                26BB57601BFC4328005F12EB /* FTLB3Output.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BB575F1BFC4328005F12EB /* FTLB3Output.cpp */; };
</ins><span class="cx">                 2A05ABD51961DF2400341750 /* JSPropertyNameEnumerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A05ABD31961DF2400341750 /* JSPropertyNameEnumerator.cpp */; };
</span><span class="cx">                 2A05ABD61961DF2400341750 /* JSPropertyNameEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A05ABD41961DF2400341750 /* JSPropertyNameEnumerator.h */; };
</span><span class="cx">                 2A111245192FCE79005EE18D /* CustomGetterSetter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A111243192FCE79005EE18D /* CustomGetterSetter.cpp */; };
</span><span class="lines">@@ -3107,6 +3108,7 @@
</span><span class="cx">                 26718BA21BE99F780052017B /* AirIteratedRegisterCoalescing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AirIteratedRegisterCoalescing.cpp; path = b3/air/AirIteratedRegisterCoalescing.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 26718BA31BE99F780052017B /* AirIteratedRegisterCoalescing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AirIteratedRegisterCoalescing.h; path = b3/air/AirIteratedRegisterCoalescing.h; sourceTree = "<group>"; };
</span><span class="cx">                 269D636D1BFBE5D000101B1D /* FTLB3Output.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLB3Output.h; path = ftl/FTLB3Output.h; sourceTree = "<group>"; };
</span><ins>+                26BB575F1BFC4328005F12EB /* FTLB3Output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLB3Output.cpp; path = ftl/FTLB3Output.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 2A05ABD31961DF2400341750 /* JSPropertyNameEnumerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPropertyNameEnumerator.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 2A05ABD41961DF2400341750 /* JSPropertyNameEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPropertyNameEnumerator.h; sourceTree = "<group>"; };
</span><span class="cx">                 2A111243192FCE79005EE18D /* CustomGetterSetter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CustomGetterSetter.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -8859,6 +8861,7 @@
</span><span class="cx">                                 0F15CD221BA5F9860031FFD3 /* PutByIdFlags.cpp in Sources */,
</span><span class="cx">                                 0F9332A314CA7DD70085F3C6 /* PutByIdStatus.cpp in Sources */,
</span><span class="cx">                                 0F93B4A918B92C4D00178A3F /* PutByIdVariant.cpp in Sources */,
</span><ins>+                                26BB57601BFC4328005F12EB /* FTLB3Output.cpp in Sources */,
</ins><span class="cx">                                 0FF60AC316740F8800029779 /* ReduceWhitespace.cpp in Sources */,
</span><span class="cx">                                 E33637A51B63220200EE0840 /* ReflectObject.cpp in Sources */,
</span><span class="cx">                                 0FA7A8EB18B413C80052371D /* Reg.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbbreviatedTypesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -29,15 +29,24 @@
</span><span class="cx"> #if ENABLE(FTL_JIT)
</span><span class="cx">
</span><span class="cx"> #include "DFGCommon.h"
</span><del>-#include "B3BasicBlock.h"
-#include "B3Value.h"
-#include "B3Procedure.h"
-#include "LLVMAPI.h"
</del><ins>+#include "LLVMHeaders.h"
</ins><span class="cx">
</span><ins>+namespace JSC { namespace B3 {
+class BasicBlock;
+enum Type : int8_t;
+} }
+
</ins><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx">
</span><ins>+#if FTL_USES_B3
+typedef B3::BasicBlock* LBasicBlock;
+typedef B3::Type LType;
+#else
+typedef LLVMBasicBlockRef LBasicBlock;
+typedef LLVMTypeRef LType;
+#endif
+
</ins><span class="cx"> typedef LLVMAtomicOrdering LAtomicOrdering;
</span><del>-typedef LLVMBasicBlockRef LBasicBlock;
</del><span class="cx"> typedef LLVMBuilderRef LBuilder;
</span><span class="cx"> typedef LLVMCallConv LCallConv;
</span><span class="cx"> typedef LLVMContextRef LContext;
</span><span class="lines">@@ -45,10 +54,11 @@
</span><span class="cx"> typedef LLVMLinkage LLinkage;
</span><span class="cx"> typedef LLVMModuleRef LModule;
</span><span class="cx"> typedef LLVMRealPredicate LRealPredicate;
</span><del>-typedef LLVMTypeRef LType;
</del><span class="cx"> typedef LLVMValueRef LValue;
</span><span class="cx"> typedef LLVMMemoryBufferRef LMemoryBuffer;
</span><span class="cx">
</span><ins>+enum SynchronizationScope { SingleThread, CrossThread };
+
</ins><span class="cx"> } } // namespace JSC::FTL
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(FTL_JIT)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbbreviationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbbreviations.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbbreviations.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbbreviations.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -35,6 +35,8 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx">
</span><ins>+#if !FTL_USES_B3
+
</ins><span class="cx"> // This file contains short-form calls into the LLVM C API. It is meant to
</span><span class="cx"> // save typing and make the lowering code clearer. If we ever call an LLVM C API
</span><span class="cx"> // function more than once in the FTL lowering code, we should add a shortcut for
</span><span class="lines">@@ -281,7 +283,6 @@
</span><span class="cx"> static inline LValue buildFCmp(LBuilder builder, LRealPredicate cond, LValue left, LValue right) { return llvm->BuildFCmp(builder, cond, left, right, ""); }
</span><span class="cx"> static inline LValue buildInsertElement(LBuilder builder, LValue vector, LValue element, LValue index) { return llvm->BuildInsertElement(builder, vector, element, index, ""); }
</span><span class="cx">
</span><del>-enum SynchronizationScope { SingleThread, CrossThread };
</del><span class="cx"> static inline LValue buildFence(LBuilder builder, LAtomicOrdering ordering, SynchronizationScope scope = CrossThread)
</span><span class="cx"> {
</span><span class="cx"> return llvm->BuildFence(builder, ordering, scope == SingleThread, "");
</span><span class="lines">@@ -337,6 +338,8 @@
</span><span class="cx"> llvm->DisposeMessage(error);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#endif // !FTL_USES_B3
+
</ins><span class="cx"> } } // namespace JSC::FTL
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(FTL_JIT)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbstractHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx">
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> LValue AbstractHeap::tbaaMetadataSlow(const AbstractHeapRepository& repository) const
</span><span class="cx"> {
</span><span class="cx"> m_tbaaMetadata = mdNode(
</span><span class="lines">@@ -48,12 +49,18 @@
</span><span class="cx"> m_parent->tbaaMetadata(repository));
</span><span class="cx"> return m_tbaaMetadata;
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> void AbstractHeap::decorateInstruction(LValue instruction, const AbstractHeapRepository& repository) const
</span><span class="cx"> {
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> if (!Options::useFTLTBAA())
</span><span class="cx"> return;
</span><span class="cx"> setMetadata(instruction, repository.m_tbaaKind, tbaaMetadata(repository));
</span><ins>+#else
+ UNUSED_PARAM(instruction);
+ UNUSED_PARAM(repository);
+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void AbstractHeap::dump(PrintStream& out) const
</span><span class="lines">@@ -78,6 +85,9 @@
</span><span class="cx"> , m_scaleTerm(0)
</span><span class="cx"> , m_canShift(false)
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(context);
+#else
</ins><span class="cx"> // See if there is a common shift amount we could use instead of multiplying. Don't
</span><span class="cx"> // try too hard. This is just a speculative optimization to reduce load on LLVM.
</span><span class="cx"> for (unsigned i = 0; i < 4; ++i) {
</span><span class="lines">@@ -91,6 +101,7 @@
</span><span class="cx">
</span><span class="cx"> if (!m_canShift)
</span><span class="cx"> m_scaleTerm = constInt(intPtrType(context), m_elementSize, ZeroExtend);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> IndexedAbstractHeap::~IndexedAbstractHeap()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbstractHeaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbstractHeap.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -53,14 +53,18 @@
</span><span class="cx"> AbstractHeap()
</span><span class="cx"> : m_parent(0)
</span><span class="cx"> , m_heapName(0)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_tbaaMetadata(0)
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> AbstractHeap(AbstractHeap* parent, const char* heapName)
</span><span class="cx"> : m_parent(parent)
</span><span class="cx"> , m_heapName(heapName)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_tbaaMetadata(0)
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -88,7 +92,8 @@
</span><span class="cx"> ASSERT(isInitialized());
</span><span class="cx"> return m_heapName;
</span><span class="cx"> }
</span><del>-
</del><ins>+
+#if !FTL_USES_B3
</ins><span class="cx"> LValue tbaaMetadata(const AbstractHeapRepository& repository) const
</span><span class="cx"> {
</span><span class="cx"> ASSERT(isInitialized());
</span><span class="lines">@@ -96,6 +101,7 @@
</span><span class="cx"> return m_tbaaMetadata;
</span><span class="cx"> return tbaaMetadataSlow(repository);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> void decorateInstruction(LValue instruction, const AbstractHeapRepository&) const;
</span><span class="cx">
</span><span class="lines">@@ -103,12 +109,16 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> friend class AbstractHeapRepository;
</span><del>-
</del><ins>+
+#if !FTL_USES_B3
</ins><span class="cx"> LValue tbaaMetadataSlow(const AbstractHeapRepository&) const;
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> AbstractHeap* m_parent;
</span><span class="cx"> const char* m_heapName;
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> mutable LValue m_tbaaMetadata;
</span><ins>+#endif
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> // Think of "AbstractField" as being an "AbstractHeapWithOffset". I would have named
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -64,7 +64,9 @@
</span><span class="cx">
</span><span class="cx"> , absolute(context, &root, "absolute")
</span><span class="cx"> , m_context(context)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_tbaaKind(mdKindID(m_context, "tbaa"))
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> // Make sure that our explicit assumptions about the StructureIDBlob match reality.
</span><span class="cx"> RELEASE_ASSERT(!(JSCell_indexingType.offset() & (sizeof(int32_t) - 1)));
</span><span class="lines">@@ -76,11 +78,13 @@
</span><span class="cx"> JSCell_typeInfoType.changeParent(&JSCell_usefulBytes);
</span><span class="cx"> JSCell_typeInfoFlags.changeParent(&JSCell_usefulBytes);
</span><span class="cx"> JSCell_cellState.changeParent(&JSCell_usefulBytes);
</span><del>-
</del><ins>+
+#if !FTL_USES_B3
</ins><span class="cx"> root.m_tbaaMetadata = mdNode(m_context, mdString(m_context, root.m_heapName));
</span><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(m_tbaaKind);
</span><span class="cx"> RELEASE_ASSERT(root.m_tbaaMetadata);
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(!JSCell_freeListNext.offset());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositoryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -194,7 +194,9 @@
</span><span class="cx"> friend class AbstractHeap;
</span><span class="cx">
</span><span class="cx"> LContext m_context;
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> unsigned m_tbaaKind;
</span><ins>+#endif
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLB3Outputcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/ftl/FTLB3Output.cpp (0 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLB3Output.cpp         (rev 0)
+++ trunk/Source/JavaScriptCore/ftl/FTLB3Output.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "FTLB3Output.h"
+
+#if ENABLE(FTL_JIT)
+#if FTL_USES_B3
+
+namespace JSC { namespace FTL {
+
+Output::Output(State& state)
+ : CommonValues(state.context)
+ , m_procedure(*state.proc)
+{
+}
+
+} } // namespace JSC::FTL
+
+#endif // FTL_USES_B3
+#endif // ENABLE(FTL_JIT)
+
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLB3Outputh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLB3Output.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLB3Output.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLB3Output.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -26,16 +26,20 @@
</span><span class="cx"> #ifndef FTLB3Output_h
</span><span class="cx"> #define FTLB3Output_h
</span><span class="cx">
</span><ins>+#include "DFGCommon.h"
+
</ins><span class="cx"> #if ENABLE(FTL_JIT)
</span><span class="cx"> #if FTL_USES_B3
</span><span class="cx">
</span><del>-#include "DFGCommon.h"
</del><ins>+#include "B3BasicBlock.h"
+#include "B3Procedure.h"
</ins><span class="cx"> #include "FTLAbbreviatedTypes.h"
</span><span class="cx"> #include "FTLAbstractHeapRepository.h"
</span><span class="cx"> #include "FTLCommonValues.h"
</span><span class="cx"> #include "FTLState.h"
</span><span class="cx"> #include "FTLSwitchCase.h"
</span><span class="cx"> #include "FTLTypedPointer.h"
</span><ins>+#include "FTLValueFromBlock.h"
</ins><span class="cx"> #include "FTLWeight.h"
</span><span class="cx"> #include "FTLWeightedTarget.h"
</span><span class="cx"> #include <wtf/StringPrintStream.h>
</span><span class="lines">@@ -53,23 +57,25 @@
</span><span class="cx">
</span><span class="cx"> class Output : public CommonValues {
</span><span class="cx"> public:
</span><del>- Output(LContext context)
- : CommonValues(context)
</del><ins>+ Output(State&);
+ ~Output() { CRASH(); }
+
+ LBasicBlock newBlock(const char* name = "")
</ins><span class="cx"> {
</span><del>- CRASH();
</del><ins>+ UNUSED_PARAM(name);
+ return m_procedure.addBlock();
</ins><span class="cx"> }
</span><del>- ~Output() { CRASH(); }
</del><span class="cx">
</span><del>- void initialize(LModule, LValue, AbstractHeapRepository&) { CRASH(); }
</del><ins>+ LBasicBlock insertNewBlocksBefore(LBasicBlock nextBlock)
+ {
+ LBasicBlock lastNextBlock = m_nextBlock;
+ m_nextBlock = nextBlock;
+ return lastNextBlock;
+ }
</ins><span class="cx">
</span><del>- LBasicBlock insertNewBlocksBefore(LBasicBlock nextBlock) { CRASH(); }
-
</del><span class="cx"> LBasicBlock appendTo(LBasicBlock, LBasicBlock nextBlock) { CRASH(); }
</span><del>-
</del><span class="cx"> void appendTo(LBasicBlock) { CRASH(); }
</span><span class="cx">
</span><del>- LBasicBlock newBlock(const char* name = "") { CRASH(); }
-
</del><span class="cx"> LValue param(unsigned index) { CRASH(); }
</span><span class="cx"> LValue constBool(bool value) { CRASH(); }
</span><span class="cx"> LValue constInt32(int32_t value) { CRASH(); }
</span><span class="lines">@@ -85,6 +91,8 @@
</span><span class="cx"> LValue phi(LType type, ValueFromBlock value, Params... theRest) { CRASH(); }
</span><span class="cx"> template<typename VectorType>
</span><span class="cx"> LValue phi(LType type, const VectorType& vector) { CRASH(); }
</span><ins>+ void addIncomingToPhi(LValue phi, ValueFromBlock value) { CRASH(); }
+
</ins><span class="cx"> LValue add(LValue left, LValue right) { CRASH(); }
</span><span class="cx"> LValue sub(LValue left, LValue right) { CRASH(); }
</span><span class="cx"> LValue mul(LValue left, LValue right) { CRASH(); }
</span><span class="lines">@@ -308,9 +316,10 @@
</span><span class="cx"> LValue patchpointVoidIntrinsic() { CRASH(); }
</span><span class="cx">
</span><span class="cx"> #pragma mark - States
</span><ins>+ B3::Procedure& m_procedure;
</ins><span class="cx">
</span><del>- LBasicBlock m_block;
- LBasicBlock m_nextBlock;
</del><ins>+ LBasicBlock m_block { nullptr };
+ LBasicBlock m_nextBlock { nullptr };
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #if COMPILER(CLANG)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLCommonValuescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLCommonValues.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLCommonValues.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLCommonValues.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "FTLCommonValues.h"
</span><span class="cx">
</span><ins>+#include "B3Type.h"
</ins><span class="cx"> #include "FTLAbbreviations.h"
</span><span class="cx">
</span><span class="cx"> #if ENABLE(FTL_JIT)
</span><span class="lines">@@ -33,15 +34,23 @@
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx">
</span><span class="cx"> CommonValues::CommonValues(LContext context)
</span><ins>+#if FTL_USES_B3
+ : voidType(B3::Void)
+ , boolean(B3::Int32)
+ , int32(B3::Int32)
+ , int64(B3::Int64)
+ , intPtr(B3::pointerType())
+ , doubleType(B3::Double)
+#else
</ins><span class="cx"> : voidType(FTL::voidType(context))
</span><span class="cx"> , boolean(int1Type(context))
</span><del>- , int8(int8Type(context))
- , int16(int16Type(context))
</del><span class="cx"> , int32(int32Type(context))
</span><span class="cx"> , int64(int64Type(context))
</span><span class="cx"> , intPtr(intPtrType(context))
</span><ins>+ , doubleType(FTL::doubleType(context))
+ , int8(int8Type(context))
+ , int16(int16Type(context))
</ins><span class="cx"> , floatType(FTL::floatType(context))
</span><del>- , doubleType(FTL::doubleType(context))
</del><span class="cx"> , ref8(pointerType(int8))
</span><span class="cx"> , ref16(pointerType(int16))
</span><span class="cx"> , ref32(pointerType(int32))
</span><span class="lines">@@ -67,9 +76,15 @@
</span><span class="cx"> , profKind(mdKindID(context, "prof"))
</span><span class="cx"> , branchWeights(mdString(context, "branch_weights"))
</span><span class="cx"> , nonNegativeInt32(constInt(int32, 0, SignExtend), constInt(int32, 1ll << 31, SignExtend))
</span><ins>+#endif // !FTL_USES_B3
</ins><span class="cx"> , m_context(context)
</span><span class="cx"> , m_module(0)
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ // Plenty of values are uninitialized. The branch is just there for NORETURN.
+ if (!m_module)
+ CRASH();
+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLCommonValuesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLCommonValues.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLCommonValues.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLCommonValues.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -44,13 +44,14 @@
</span><span class="cx">
</span><span class="cx"> const LType voidType;
</span><span class="cx"> const LType boolean;
</span><del>- const LType int8;
- const LType int16;
</del><span class="cx"> const LType int32;
</span><span class="cx"> const LType int64;
</span><span class="cx"> const LType intPtr;
</span><ins>+ const LType doubleType;
+#if !FTL_USES_B3
+ const LType int8;
+ const LType int16;
</ins><span class="cx"> const LType floatType;
</span><del>- const LType doubleType;
</del><span class="cx"> const LType ref8;
</span><span class="cx"> const LType ref16;
</span><span class="cx"> const LType ref32;
</span><span class="lines">@@ -58,24 +59,25 @@
</span><span class="cx"> const LType refPtr;
</span><span class="cx"> const LType refFloat;
</span><span class="cx"> const LType refDouble;
</span><del>- const LValue booleanTrue;
- const LValue booleanFalse;
- const LValue int8Zero;
- const LValue int32Zero;
- const LValue int32One;
- const LValue int64Zero;
- const LValue intPtrZero;
- const LValue intPtrOne;
- const LValue intPtrTwo;
- const LValue intPtrThree;
- const LValue intPtrFour;
- const LValue intPtrEight;
- const LValue intPtrPtr;
- const LValue doubleZero;
</del><ins>+#endif
+ const LValue booleanTrue { nullptr };
+ const LValue booleanFalse { nullptr };
+ const LValue int8Zero { nullptr };
+ const LValue int32Zero { nullptr };
+ const LValue int32One { nullptr };
+ const LValue int64Zero { nullptr };
+ const LValue intPtrZero { nullptr };
+ const LValue intPtrOne { nullptr };
+ const LValue intPtrTwo { nullptr };
+ const LValue intPtrThree { nullptr };
+ const LValue intPtrFour { nullptr };
+ const LValue intPtrEight { nullptr };
+ const LValue intPtrPtr { nullptr };
+ const LValue doubleZero { nullptr };
</ins><span class="cx">
</span><del>- const unsigned rangeKind;
- const unsigned profKind;
- const LValue branchWeights;
</del><ins>+ const unsigned rangeKind { 0 };
+ const unsigned profKind { 0 };
+ const LValue branchWeights { nullptr };
</ins><span class="cx">
</span><span class="cx"> const ValueRange nonNegativeInt32;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLIntrinsicRepositorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include "FTLIntrinsicRepository.h"
</span><span class="cx">
</span><span class="cx"> #if ENABLE(FTL_JIT)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx">
</span><span class="cx"> #include "FTLAbbreviations.h"
</span><span class="cx">
</span><span class="lines">@@ -63,5 +64,6 @@
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span><span class="cx">
</span><ins>+#endif // !FTL_USES_B3
</ins><span class="cx"> #endif // ENABLE(FTL_JIT)
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLIntrinsicRepositoryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -28,6 +28,10 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(FTL_JIT)
</span><span class="cx">
</span><ins>+#include "DFGCommon.h"
+
+#if !FTL_USES_B3
+
</ins><span class="cx"> #include "DFGOperations.h"
</span><span class="cx"> #include "FTLAbbreviations.h"
</span><span class="cx"> #include "FTLCommonValues.h"
</span><span class="lines">@@ -181,6 +185,7 @@
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span><span class="cx">
</span><ins>+#endif // !FTL_USES_B3
</ins><span class="cx"> #endif // ENABLE(FTL_JIT)
</span><span class="cx">
</span><span class="cx"> #endif // FTLIntrinsicRepository_h
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> {
</span><span class="cx"> CRASH();
</span><span class="cx"> }
</span><del>-#else
</del><ins>+#elif !FTL_USES_B3
</ins><span class="cx"> NO_RETURN_DUE_TO_CRASH static void ftlUnreachable(
</span><span class="cx"> CodeBlock* codeBlock, BlockIndex blockIndex, unsigned nodeIndex)
</span><span class="cx"> {
</span><span class="lines">@@ -104,12 +104,14 @@
</span><span class="cx"> : m_graph(state.graph)
</span><span class="cx"> , m_ftlState(state)
</span><span class="cx"> , m_heaps(state.context)
</span><del>- , m_out(state.context)
</del><ins>+ , m_out(state)
</ins><span class="cx"> , m_state(state.graph)
</span><span class="cx"> , m_interpreter(state.graph, m_state)
</span><span class="cx"> , m_stackmapIDs(0)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_tbaaKind(mdKindID(state.context, "tbaa"))
</span><span class="cx"> , m_tbaaStructKind(mdKindID(state.context, "tbaa.struct"))
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -124,7 +126,15 @@
</span><span class="cx"> name = "jsBody";
</span><span class="cx">
</span><span class="cx"> m_graph.ensureDominators();
</span><del>-
</del><ins>+
+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+
+ m_prologue = FTL_NEW_BLOCK(m_out, ("Prologue"));
+ LBasicBlock stackOverflow = FTL_NEW_BLOCK(m_out, ("Stack overflow"));
+ LBasicBlock checkArguments = FTL_NEW_BLOCK(m_out, ("Check arguments"));
+#else
</ins><span class="cx"> m_ftlState.module =
</span><span class="cx"> moduleCreateWithNameInContext(name.data(), m_ftlState.context);
</span><span class="cx">
</span><span class="lines">@@ -158,8 +168,6 @@
</span><span class="cx"> m_out.appendTo(m_prologue, stackOverflow);
</span><span class="cx"> createPhiVariables();
</span><span class="cx">
</span><del>- auto preOrder = m_graph.blocksInPreOrder();
-
</del><span class="cx"> LValue capturedAlloca = m_out.alloca(arrayType(m_out.int64, m_graph.m_nextMachineLocal));
</span><span class="cx">
</span><span class="cx"> m_captured = m_out.add(
</span><span class="lines">@@ -170,6 +178,9 @@
</span><span class="cx"> m_out.call(
</span><span class="cx"> m_out.stackmapIntrinsic(), m_out.constInt64(m_ftlState.capturedStackmapID),
</span><span class="cx"> m_out.int32Zero, capturedAlloca);
</span><ins>+#endif
+
+ auto preOrder = m_graph.blocksInPreOrder();
</ins><span class="cx">
</span><span class="cx"> // If we have any CallVarargs then we need to have a spill slot for it.
</span><span class="cx"> bool hasVarargs = false;
</span><span class="lines">@@ -231,6 +242,11 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><ins>+
+#if FTL_USES_B3
+ if (hasVarargs || !hasVarargs)
+ CRASH();
+#else
</ins><span class="cx"> if (hasVarargs) {
</span><span class="cx"> LValue varargsSpillSlots = m_out.alloca(
</span><span class="cx"> arrayType(m_out.int64, JSCallVarargs::numSpillSlotsNeeded()));
</span><span class="lines">@@ -251,6 +267,7 @@
</span><span class="cx"> m_out.stackmapIntrinsic(), m_out.constInt64(m_ftlState.exceptionHandlingSpillSlotStackmapID),
</span><span class="cx"> m_out.int32Zero, exceptionHandlingVolatileRegistersSpillSlots);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> // We should not create any alloca's after this point, since they will cease to
</span><span class="cx"> // be mem2reg candidates.
</span><span class="lines">@@ -326,14 +343,15 @@
</span><span class="cx">
</span><span class="cx"> for (BasicBlock* block : preOrder)
</span><span class="cx"> compileBlock(block);
</span><del>-
</del><ins>+
+#if !FTL_USES_B3
</ins><span class="cx"> if (Options::dumpLLVMIR())
</span><span class="cx"> dumpModule(m_ftlState.module);
</span><del>-
</del><span class="cx"> if (verboseCompilationEnabled())
</span><span class="cx"> m_ftlState.dumpState("after lowering");
</span><span class="cx"> if (validationEnabled())
</span><span class="cx"> verifyModule(m_ftlState.module);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="lines">@@ -1542,6 +1560,9 @@
</span><span class="cx"> if (Options::verboseCompilation())
</span><span class="cx"> dataLog(" Emitting ArithSub patchpoint with stackmap #", stackmapID, "\n");
</span><span class="cx">
</span><ins>+#if FTL_USES_B3
+ CRASH();
+#else
</ins><span class="cx"> LValue left = lowJSValue(m_node->child1());
</span><span class="cx"> LValue right = lowJSValue(m_node->child2());
</span><span class="cx">
</span><span class="lines">@@ -1564,6 +1585,7 @@
</span><span class="cx"> abstractValue(m_node->child2()).resultType()));
</span><span class="cx">
</span><span class="cx"> setJSValue(call);
</span><ins>+#endif
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2359,7 +2381,11 @@
</span><span class="cx"> {
</span><span class="cx"> // See above; CellUse is easier so we do only that for now.
</span><span class="cx"> ASSERT(m_node->child1().useKind() == CellUse);
</span><del>-
</del><ins>+
+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> LValue base = lowCell(m_node->child1());
</span><span class="cx"> LValue value = lowJSValue(m_node->child2());
</span><span class="cx"> auto uid = m_graph.identifiers()[m_node->identifierNumber()];
</span><span class="lines">@@ -2369,7 +2395,7 @@
</span><span class="cx">
</span><span class="cx"> if (verboseCompilationEnabled())
</span><span class="cx"> dataLog(" Emitting PutById patchpoint with stackmap #", stackmapID, "\n");
</span><del>-
</del><ins>+
</ins><span class="cx"> StackmapArgumentList arguments;
</span><span class="cx"> arguments.append(base);
</span><span class="cx"> arguments.append(value);
</span><span class="lines">@@ -2388,6 +2414,7 @@
</span><span class="cx"> stackmapID, m_node->origin.semantic, uid,
</span><span class="cx"> m_graph.executableFor(m_node->origin.semantic)->ecmaMode(),
</span><span class="cx"> m_node->op() == PutByIdDirect ? Direct : NotDirect));
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileGetButterfly()
</span><span class="lines">@@ -2955,6 +2982,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> default:
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(child5);
+ CRASH();
+#else
</ins><span class="cx"> TypedArrayType type = m_node->arrayMode().typedArrayType();
</span><span class="cx">
</span><span class="cx"> if (isTypedView(type)) {
</span><span class="lines">@@ -3095,6 +3126,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> DFG_CRASH(m_graph, m_node, "Bad array type");
</span><ins>+#endif // FTL_USES_B3
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -3133,6 +3165,10 @@
</span><span class="cx">
</span><span class="cx"> void compileArrayPush()
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> LValue base = lowCell(m_node->child1());
</span><span class="cx"> LValue storage = lowStorage(m_node->child3());
</span><span class="cx">
</span><span class="lines">@@ -3199,6 +3235,7 @@
</span><span class="cx"> DFG_CRASH(m_graph, m_node, "Bad array type");
</span><span class="cx"> return;
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileArrayPop()
</span><span class="lines">@@ -3476,7 +3513,7 @@
</span><span class="cx"> m_out.load64(m_out.baseIndex(m_heaps.variables, stackBase, index)),
</span><span class="cx"> m_out.baseIndex(m_heaps.DirectArguments_storage, result, index));
</span><span class="cx"> ValueFromBlock nextIndex = m_out.anchor(index);
</span><del>- addIncoming(previousIndex, nextIndex);
</del><ins>+ m_out.addIncomingToPhi(previousIndex, nextIndex);
</ins><span class="cx"> m_out.branch(m_out.isNull(index), unsure(end), unsure(loop));
</span><span class="cx">
</span><span class="cx"> m_out.appendTo(end, lastNext);
</span><span class="lines">@@ -3701,8 +3738,8 @@
</span><span class="cx"> TypedPointer(m_heaps.indexedDoubleProperties.atAnyIndex(), pointer));
</span><span class="cx">
</span><span class="cx"> LValue nextIndex = m_out.sub(index, m_out.int32One);
</span><del>- addIncoming(index, m_out.anchor(nextIndex));
- addIncoming(pointer, m_out.anchor(m_out.add(pointer, m_out.intPtrEight)));
</del><ins>+ m_out.addIncomingToPhi(index, m_out.anchor(nextIndex));
+ m_out.addIncomingToPhi(pointer, m_out.anchor(m_out.add(pointer, m_out.intPtrEight)));
</ins><span class="cx"> m_out.branch(
</span><span class="cx"> m_out.notZero32(nextIndex), unsure(initLoop), unsure(initDone));
</span><span class="cx">
</span><span class="lines">@@ -4564,6 +4601,10 @@
</span><span class="cx">
</span><span class="cx"> void compileCallOrConstruct()
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> int numArgs = m_node->numChildren() - 1;
</span><span class="cx">
</span><span class="cx"> LValue jsCallee = lowJSValue(m_graph.varArgChild(m_node, 0));
</span><span class="lines">@@ -4598,10 +4639,15 @@
</span><span class="cx"> m_ftlState.jsCalls.append(JSCall(stackmapID, m_node, codeOriginDescriptionOfCallSite()));
</span><span class="cx">
</span><span class="cx"> setJSValue(call);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileTailCall()
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> int numArgs = m_node->numChildren() - 1;
</span><span class="cx"> StackmapArgumentList exitArguments;
</span><span class="cx"> exitArguments.reserveCapacity(numArgs + 6);
</span><span class="lines">@@ -4633,10 +4679,15 @@
</span><span class="cx"> m_out.unreachable();
</span><span class="cx">
</span><span class="cx"> m_ftlState.jsTailCalls.append(tailCall);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileCallOrConstructVarargs()
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> LValue jsCallee = lowJSValue(m_node->child1());
</span><span class="cx"> LValue thisArg = lowJSValue(m_node->child3());
</span><span class="cx">
</span><span class="lines">@@ -4689,6 +4740,7 @@
</span><span class="cx"> default:
</span><span class="cx"> setJSValue(call);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileLoadVarargs()
</span><span class="lines">@@ -4760,7 +4812,7 @@
</span><span class="cx"> m_out.constInt64(JSValue::encode(jsUndefined())),
</span><span class="cx"> m_out.baseIndex(m_heaps.variables, targetStart, currentIndex));
</span><span class="cx"> ValueFromBlock nextIndex = m_out.anchor(currentIndex);
</span><del>- addIncoming(previousIndex, nextIndex);
</del><ins>+ m_out.addIncomingToPhi(previousIndex, nextIndex);
</ins><span class="cx"> m_out.branch(
</span><span class="cx"> m_out.above(currentIndex, lengthAsPtr), unsure(undefinedLoop), unsure(mainLoopEntry));
</span><span class="cx">
</span><span class="lines">@@ -4777,7 +4829,7 @@
</span><span class="cx"> m_out.add(currentIndex, m_out.constIntPtr(data->offset))));
</span><span class="cx"> m_out.store64(value, m_out.baseIndex(m_heaps.variables, targetStart, currentIndex));
</span><span class="cx"> nextIndex = m_out.anchor(currentIndex);
</span><del>- addIncoming(previousIndex, nextIndex);
</del><ins>+ m_out.addIncomingToPhi(previousIndex, nextIndex);
</ins><span class="cx"> m_out.branch(m_out.isNull(currentIndex), unsure(continuation), unsure(mainLoop));
</span><span class="cx">
</span><span class="cx"> m_out.appendTo(continuation, lastNext);
</span><span class="lines">@@ -5238,6 +5290,10 @@
</span><span class="cx">
</span><span class="cx"> void compileIn()
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> Edge base = m_node->child2();
</span><span class="cx"> LValue cell = lowCell(base);
</span><span class="cx"> speculateObject(base, cell);
</span><span class="lines">@@ -5261,6 +5317,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> setJSValue(vmCall(m_out.operation(operationGenericIn), m_callFrame, cell, lowJSValue(m_node->child1())));
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void compileCheckHasInstance()
</span><span class="lines">@@ -5315,7 +5372,7 @@
</span><span class="cx">
</span><span class="cx"> m_out.appendTo(notYetInstance, continuation);
</span><span class="cx"> ValueFromBlock notInstanceResult = m_out.anchor(m_out.booleanFalse);
</span><del>- addIncoming(value, m_out.anchor(currentPrototype));
</del><ins>+ m_out.addIncomingToPhi(value, m_out.anchor(currentPrototype));
</ins><span class="cx"> m_out.branch(isCell(currentPrototype), unsure(loop), unsure(continuation));
</span><span class="cx">
</span><span class="cx"> m_out.appendTo(continuation, lastNext);
</span><span class="lines">@@ -6222,6 +6279,13 @@
</span><span class="cx">
</span><span class="cx"> LValue getById(LValue base)
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(base);
+
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+ return nullptr;
+#else
</ins><span class="cx"> auto uid = m_graph.identifiers()[m_node->identifierNumber()];
</span><span class="cx">
</span><span class="cx"> // Arguments: id, bytes, target, numArgs, args...
</span><span class="lines">@@ -6246,6 +6310,7 @@
</span><span class="cx"> m_ftlState.getByIds.append(GetByIdDescriptor(stackmapID, m_node->origin.semantic, uid));
</span><span class="cx">
</span><span class="cx"> return call;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> LValue loadButterflyWithBarrier(LValue object)
</span><span class="lines">@@ -6480,8 +6545,12 @@
</span><span class="cx"> LValue result;
</span><span class="cx"> LValue condition;
</span><span class="cx"> if (Options::forceGCSlowPaths()) {
</span><ins>+#if FTL_USES_B3
+ CRASH();
+#else
</ins><span class="cx"> result = getUndef(m_out.int64);
</span><span class="cx"> condition = m_out.booleanFalse;
</span><ins>+#endif
</ins><span class="cx"> } else {
</span><span class="cx"> result = m_out.loadPtr(
</span><span class="cx"> allocator, m_heaps.MarkedAllocator_freeListHead);
</span><span class="lines">@@ -6982,11 +7051,22 @@
</span><span class="cx">
</span><span class="cx"> void buildSwitch(SwitchData* data, LType type, LValue switchValue)
</span><span class="cx"> {
</span><ins>+ ASSERT(type == m_out.intPtr || type == m_out.int32);
+
</ins><span class="cx"> Vector<SwitchCase> cases;
</span><span class="cx"> for (unsigned i = 0; i < data->cases.size(); ++i) {
</span><del>- cases.append(SwitchCase(
- constInt(type, data->cases[i].value.switchLookupValue(data->kind)),
- lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count)));
</del><ins>+ SwitchCase newCase;
+
+ if (type == m_out.intPtr) {
+ newCase = SwitchCase(m_out.constIntPtr(data->cases[i].value.switchLookupValue(data->kind)),
+ lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count));
+ } else if (type == m_out.int32) {
+ newCase = SwitchCase(m_out.constInt32(data->cases[i].value.switchLookupValue(data->kind)),
+ lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count));
+ } else
+ CRASH();
+
+ cases.append(newCase);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_out.switchInstruction(
</span><span class="lines">@@ -7579,6 +7659,14 @@
</span><span class="cx"> template<typename Functor>
</span><span class="cx"> LValue lazySlowPath(const Functor& functor, const Vector<LValue>& userArguments)
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(functor);
+ UNUSED_PARAM(userArguments);
+
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+ return nullptr;
+#else
</ins><span class="cx"> unsigned stackmapID = m_stackmapIDs++;
</span><span class="cx">
</span><span class="cx"> StackmapArgumentList arguments;
</span><span class="lines">@@ -7599,6 +7687,7 @@
</span><span class="cx"> m_ftlState.lazySlowPaths.append(LazySlowPathDescriptor(stackmapID, m_node->origin.semantic, linker));
</span><span class="cx">
</span><span class="cx"> return call;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void speculate(
</span><span class="lines">@@ -9401,6 +9490,12 @@
</span><span class="cx"> UNUSED_PARAM(blockIndex);
</span><span class="cx"> UNUSED_PARAM(nodeIndex);
</span><span class="cx"> #else
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(blockIndex);
+ UNUSED_PARAM(nodeIndex);
+ if (verboseCompilationEnabled() || !verboseCompilationEnabled())
+ CRASH();
+#else
</ins><span class="cx"> m_out.call(
</span><span class="cx"> m_out.intToPtr(
</span><span class="cx"> m_out.constIntPtr(ftlUnreachable),
</span><span class="lines">@@ -9410,6 +9505,7 @@
</span><span class="cx"> m_out.constIntPtr(codeBlock()), m_out.constInt32(blockIndex),
</span><span class="cx"> m_out.constInt32(nodeIndex));
</span><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> m_out.unreachable();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -9462,8 +9558,10 @@
</span><span class="cx"> Node* m_node;
</span><span class="cx">
</span><span class="cx"> uint32_t m_stackmapIDs;
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> unsigned m_tbaaKind;
</span><span class="cx"> unsigned m_tbaaStructKind;
</span><ins>+#endif
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // anonymous namespace
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOutputcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx">
</span><del>-Output::Output(LContext context)
- : IntrinsicRepository(context)
</del><ins>+Output::Output(State& state)
+ : IntrinsicRepository(state.context)
</ins><span class="cx"> , m_function(0)
</span><span class="cx"> , m_heaps(0)
</span><span class="cx"> , m_builder(llvm->CreateBuilderInContext(m_context))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOutputh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOutput.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOutput.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLOutput.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">
</span><span class="cx"> class Output : public IntrinsicRepository {
</span><span class="cx"> public:
</span><del>- Output(LContext);
</del><ins>+ Output(State&);
</ins><span class="cx"> ~Output();
</span><span class="cx">
</span><span class="cx"> void initialize(LModule, LValue, AbstractHeapRepository&);
</span><span class="lines">@@ -114,6 +114,10 @@
</span><span class="cx"> addIncoming(result, vector[i]);
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><ins>+ void addIncomingToPhi(LValue phi, ValueFromBlock value)
+ {
+ addIncoming(phi, value);
+ }
</ins><span class="cx">
</span><span class="cx"> LValue add(LValue left, LValue right) { return buildAdd(m_builder, left, right); }
</span><span class="cx"> LValue sub(LValue left, LValue right) { return buildSub(m_builder, left, right); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLState.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLState.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLState.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -87,8 +87,14 @@
</span><span class="cx">
</span><span class="cx"> void State::dumpState(LModule module, const char* when)
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(module);
+ if (!when || !!when)
+ CRASH();
+#else
</ins><span class="cx"> dataLog("LLVM IR for ", CodeBlockWithJITType(graph.m_codeBlock, FTL::JITCode::FTLJIT), " ", when, ":\n");
</span><span class="cx"> dumpModule(module);
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLValueRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLValueRange.cpp (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLValueRange.cpp        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLValueRange.cpp        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -35,9 +35,15 @@
</span><span class="cx"> void ValueRange::decorateInstruction(
</span><span class="cx"> LContext context, LValue loadInstruction, unsigned rangeKind) const
</span><span class="cx"> {
</span><ins>+#if FTL_USES_B3
+ UNUSED_PARAM(context);
+ UNUSED_PARAM(loadInstruction);
+ UNUSED_PARAM(rangeKind);
+#else
</ins><span class="cx"> if (!m_rangeMetadata)
</span><span class="cx"> m_rangeMetadata = mdNode(context, m_begin, m_end);
</span><span class="cx"> setMetadata(loadInstruction, rangeKind, m_rangeMetadata);
</span><ins>+#endif // !FTL_USES_B3
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLValueRangeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLValueRange.h (192590 => 192591)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLValueRange.h        2015-11-18 23:05:34 UTC (rev 192590)
+++ trunk/Source/JavaScriptCore/ftl/FTLValueRange.h        2015-11-18 23:14:54 UTC (rev 192591)
</span><span class="lines">@@ -37,14 +37,18 @@
</span><span class="cx"> ValueRange()
</span><span class="cx"> : m_begin(0)
</span><span class="cx"> , m_end(0)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_rangeMetadata(0)
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ValueRange(LValue begin, LValue end)
</span><span class="cx"> : m_begin(begin)
</span><span class="cx"> , m_end(end)
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> , m_rangeMetadata(0)
</span><ins>+#endif
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -56,7 +60,9 @@
</span><span class="cx"> private:
</span><span class="cx"> LValue m_begin;
</span><span class="cx"> LValue m_end;
</span><ins>+#if !FTL_USES_B3
</ins><span class="cx"> mutable LValue m_rangeMetadata;
</span><ins>+#endif
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre>
</div>
</div>
</body>
</html>