<!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>[184368] 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/184368">184368</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2015-05-14 21:14:39 -0700 (Thu, 14 May 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove StoreBarrierWithNullCheck, nobody ever generates this.
Rubber stamped by Benjamin Poulain and Michael Saboff.
If we did bring something like this back in the future, we would just use UntypedUse instead
of CellUse to indicate that this is what we want.
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::isStoreBarrier):
* dfg/DFGNodeType.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
(JSC::DFG::ObjectAllocationSinkingPhase::lowerNonReadingOperationsOnPhantomAllocations):
(JSC::DFG::ObjectAllocationSinkingPhase::handleNode):
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileStoreBarrier):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileStoreBarrierWithNullCheck): Deleted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh">trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGClobberizeh">trunk/Source/JavaScriptCore/dfg/DFGClobberize.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGDoesGCcpp">trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGFixupPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeh">trunk/Source/JavaScriptCore/dfg/DFGNode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeTypeh">trunk/Source/JavaScriptCore/dfg/DFGNodeType.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGObjectAllocationSinkingPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGPredictionPropagationPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSafeToExecuteh">trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLCapabilitiescpp">trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -1,5 +1,44 @@
</span><span class="cx"> 2015-05-14 Filip Pizlo <fpizlo@apple.com>
</span><span class="cx">
</span><ins>+ Remove StoreBarrierWithNullCheck, nobody ever generates this.
+
+ Rubber stamped by Benjamin Poulain and Michael Saboff.
+
+ If we did bring something like this back in the future, we would just use UntypedUse instead
+ of CellUse to indicate that this is what we want.
+
+ * dfg/DFGAbstractInterpreterInlines.h:
+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+ * dfg/DFGClobberize.h:
+ (JSC::DFG::clobberize):
+ * dfg/DFGDoesGC.cpp:
+ (JSC::DFG::doesGC):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::isStoreBarrier):
+ * dfg/DFGNodeType.h:
+ * dfg/DFGObjectAllocationSinkingPhase.cpp:
+ (JSC::DFG::ObjectAllocationSinkingPhase::lowerNonReadingOperationsOnPhantomAllocations):
+ (JSC::DFG::ObjectAllocationSinkingPhase::handleNode):
+ * dfg/DFGPredictionPropagationPhase.cpp:
+ (JSC::DFG::PredictionPropagationPhase::propagate):
+ * dfg/DFGSafeToExecute.h:
+ (JSC::DFG::safeToExecute):
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileStoreBarrier):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile):
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::LowerDFGToLLVM::compileNode):
+ (JSC::FTL::LowerDFGToLLVM::compileStoreBarrierWithNullCheck): Deleted.
+
+2015-05-14 Filip Pizlo <fpizlo@apple.com>
+
</ins><span class="cx"> PutGlobalVar should reference the global object it's storing into
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=145036
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -2270,10 +2270,6 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- case StoreBarrierWithNullCheck: {
- break;
- }
-
</del><span class="cx"> case CheckTierUpAndOSREnter:
</span><span class="cx"> case LoopHint:
</span><span class="cx"> case ZombieHint:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGClobberizeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGClobberize.h (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGClobberize.h        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGClobberize.h        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -293,7 +293,6 @@
</span><span class="cx"> case ProfileType:
</span><span class="cx"> case ProfileControlFlow:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case PutHint:
</span><span class="cx"> write(SideState);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGDoesGCcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -161,7 +161,6 @@
</span><span class="cx"> case CheckTierUpAndOSREnter:
</span><span class="cx"> case LoopHint:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case InvalidationPoint:
</span><span class="cx"> case NotifyWrite:
</span><span class="cx"> case CheckInBounds:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGFixupPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -1299,7 +1299,6 @@
</span><span class="cx"> case ExtractOSREntryLocal:
</span><span class="cx"> case LoopHint:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case MovHint:
</span><span class="cx"> case ZombieHint:
</span><span class="cx"> case BottomValue:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNode.h (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNode.h        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGNode.h        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -830,13 +830,7 @@
</span><span class="cx">
</span><span class="cx"> bool isStoreBarrier()
</span><span class="cx"> {
</span><del>- switch (op()) {
- case StoreBarrier:
- case StoreBarrierWithNullCheck:
- return true;
- default:
- return false;
- }
</del><ins>+ return op() == StoreBarrier;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool hasIdentifier()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNodeType.h (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNodeType.h        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGNodeType.h        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -323,7 +323,6 @@
</span><span class="cx"> macro(CheckWatchdogTimer, NodeMustGenerate) \
</span><span class="cx"> /* Write barriers ! */\
</span><span class="cx"> macro(StoreBarrier, NodeMustGenerate) \
</span><del>- macro(StoreBarrierWithNullCheck, NodeMustGenerate) \
</del><span class="cx"> \
</span><span class="cx"> /* For-in enumeration opcodes */\
</span><span class="cx"> macro(GetEnumerableLength, NodeMustGenerate | NodeResultJS) \
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGObjectAllocationSinkingPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -612,8 +612,7 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- case StoreBarrier:
- case StoreBarrierWithNullCheck: {
</del><ins>+ case StoreBarrier: {
</ins><span class="cx"> Node* target = node->child1().node();
</span><span class="cx"> if (m_sinkCandidates.contains(target)) {
</span><span class="cx"> ASSERT(target->isPhantomAllocation());
</span><span class="lines">@@ -856,7 +855,6 @@
</span><span class="cx"> case MovHint:
</span><span class="cx"> case PutHint:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case PutStructure:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGPredictionPropagationPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -618,7 +618,6 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> // These get ignored because they don't return anything.
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case PutByValDirect:
</span><span class="cx"> case PutByVal:
</span><span class="cx"> case PutClosureVar:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSafeToExecuteh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -248,7 +248,6 @@
</span><span class="cx"> case CheckTierUpAndOSREnter:
</span><span class="cx"> case LoopHint:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case InvalidationPoint:
</span><span class="cx"> case NotifyWrite:
</span><span class="cx"> case CheckInBounds:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -6109,37 +6109,14 @@
</span><span class="cx"> #if ENABLE(GGC)
</span><span class="cx"> void SpeculativeJIT::compileStoreBarrier(Node* node)
</span><span class="cx"> {
</span><del>- switch (node->op()) {
- case StoreBarrier: {
- SpeculateCellOperand base(this, node->child1());
- GPRTemporary scratch1(this);
- GPRTemporary scratch2(this);
</del><ins>+ ASSERT(node->op() == StoreBarrier);
</ins><span class="cx">
</span><del>- writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
- break;
- }
-
- case StoreBarrierWithNullCheck: {
- JSValueOperand base(this, node->child1());
- GPRTemporary scratch1(this);
- GPRTemporary scratch2(this);
</del><ins>+ SpeculateCellOperand base(this, node->child1());
+ GPRTemporary scratch1(this);
+ GPRTemporary scratch2(this);
</ins><span class="cx">
</span><del>-#if USE(JSVALUE64)
- JITCompiler::Jump isNull = m_jit.branchTest64(JITCompiler::Zero, base.gpr());
- writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
-#else
- JITCompiler::Jump isNull = m_jit.branch32(JITCompiler::Equal, base.tagGPR(), TrustedImm32(JSValue::EmptyValueTag));
- writeBarrier(base.payloadGPR(), scratch1.gpr(), scratch2.gpr());
-#endif
- isNull.link(&m_jit);
- break;
- }
</del><ins>+ writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
</ins><span class="cx">
</span><del>- default:
- RELEASE_ASSERT_NOT_REACHED();
- break;
- }
-
</del><span class="cx"> noResult(node);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -4251,8 +4251,7 @@
</span><span class="cx"> compileIn(node);
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- case StoreBarrier:
- case StoreBarrierWithNullCheck: {
</del><ins>+ case StoreBarrier: {
</ins><span class="cx"> compileStoreBarrier(node);
</span><span class="cx"> break;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -4316,8 +4316,7 @@
</span><span class="cx"> DFG_CRASH(m_jit.graph(), node, "Unexpected Unreachable node");
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- case StoreBarrier:
- case StoreBarrierWithNullCheck: {
</del><ins>+ case StoreBarrier: {
</ins><span class="cx"> compileStoreBarrier(node);
</span><span class="cx"> break;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLCapabilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -124,7 +124,6 @@
</span><span class="cx"> case GetTypedArrayByteOffset:
</span><span class="cx"> case NotifyWrite:
</span><span class="cx"> case StoreBarrier:
</span><del>- case StoreBarrierWithNullCheck:
</del><span class="cx"> case Call:
</span><span class="cx"> case Construct:
</span><span class="cx"> case CallVarargs:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp (184367 => 184368)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2015-05-15 04:14:39 UTC (rev 184368)
</span><span class="lines">@@ -818,9 +818,6 @@
</span><span class="cx"> case StoreBarrier:
</span><span class="cx"> compileStoreBarrier();
</span><span class="cx"> break;
</span><del>- case StoreBarrierWithNullCheck:
- compileStoreBarrierWithNullCheck();
- break;
</del><span class="cx"> case HasIndexedProperty:
</span><span class="cx"> compileHasIndexedProperty();
</span><span class="cx"> break;
</span><span class="lines">@@ -4901,22 +4898,6 @@
</span><span class="cx"> emitStoreBarrier(lowCell(m_node->child1()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- void compileStoreBarrierWithNullCheck()
- {
-#if ENABLE(GGC)
- LBasicBlock isNotNull = FTL_NEW_BLOCK(m_out, ("Store barrier with null check value not null"));
- LBasicBlock continuation = FTL_NEW_BLOCK(m_out, ("Store barrier continuation"));
-
- LValue base = lowJSValue(m_node->child1());
- m_out.branch(m_out.isZero64(base), unsure(continuation), unsure(isNotNull));
- LBasicBlock lastNext = m_out.appendTo(isNotNull, continuation);
- emitStoreBarrier(base);
- m_out.appendTo(continuation, lastNext);
-#else
- speculate(m_node->child1());
-#endif
- }
-
</del><span class="cx"> void compileHasIndexedProperty()
</span><span class="cx"> {
</span><span class="cx"> switch (m_node->arrayMode().type()) {
</span></span></pre>
</div>
</div>
</body>
</html>