<!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>[214300] 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/214300">214300</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-03-23 02:25:06 -0700 (Thu, 23 Mar 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>[jsc] Add MacroAssemblerMIPS::storeFence()
https://bugs.webkit.org/show_bug.cgi?id=169705
Patch by Guillaume Emont <guijemont@igalia.com> on 2017-03-23
Reviewed by Yusuke Suzuki.
There doesn't seem to be anything more fine grained than "sync" that
guarantees that all memory operations following it are going to happen
after all stores before it, so we just use sync.
* assembler/MIPSAssembler.h:
(JSC::MIPSAssembler::sync): Added a FIXME about SYNC_MB.
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::storeFence): Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerMIPSAssemblerh">trunk/Source/JavaScriptCore/assembler/MIPSAssembler.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerMacroAssemblerMIPSh">trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (214299 => 214300)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2017-03-23 09:10:36 UTC (rev 214299)
+++ trunk/Source/JavaScriptCore/ChangeLog        2017-03-23 09:25:06 UTC (rev 214300)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2017-03-23 Guillaume Emont <guijemont@igalia.com>
+
+ [jsc] Add MacroAssemblerMIPS::storeFence()
+ https://bugs.webkit.org/show_bug.cgi?id=169705
+
+ Reviewed by Yusuke Suzuki.
+
+ There doesn't seem to be anything more fine grained than "sync" that
+ guarantees that all memory operations following it are going to happen
+ after all stores before it, so we just use sync.
+
+ * assembler/MIPSAssembler.h:
+ (JSC::MIPSAssembler::sync): Added a FIXME about SYNC_MB.
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::storeFence): Added.
+
</ins><span class="cx"> 2017-03-22 Yusuke Suzuki <utatane.tea@gmail.com>
</span><span class="cx">
</span><span class="cx"> [JSC][DFG] Propagate AnyIntAsDouble information carefully to utilize it in fixup
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerMIPSAssemblerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/MIPSAssembler.h (214299 => 214300)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/MIPSAssembler.h        2017-03-23 09:10:36 UTC (rev 214299)
+++ trunk/Source/JavaScriptCore/assembler/MIPSAssembler.h        2017-03-23 09:25:06 UTC (rev 214300)
</span><span class="lines">@@ -207,6 +207,9 @@
</span><span class="cx">
</span><span class="cx"> void sync()
</span><span class="cx"> {
</span><ins>+ // FIXME: https://bugs.webkit.org/show_bug.cgi?id=169984
+ // We might get a performance improvements by using SYNC_MB in some or
+ // all cases.
</ins><span class="cx"> emitInst(0x0000000f);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerMacroAssemblerMIPSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h (214299 => 214300)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h        2017-03-23 09:10:36 UTC (rev 214299)
+++ trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h        2017-03-23 09:25:06 UTC (rev 214300)
</span><span class="lines">@@ -2975,6 +2975,11 @@
</span><span class="cx"> breakpoint();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ void storeFence()
+ {
+ m_assembler.sync();
+ }
+
</ins><span class="cx"> void abortWithReason(AbortReason reason, intptr_t misc)
</span><span class="cx"> {
</span><span class="cx"> move(TrustedImm32(misc), immTempRegister);
</span></span></pre>
</div>
</div>
</body>
</html>