<!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>[203544] 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/203544">203544</a></dd>
<dt>Author</dt> <dd>sbarati@apple.com</dd>
<dt>Date</dt> <dd>2016-07-21 18:01:14 -0700 (Thu, 21 Jul 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>callOperation(.) variants in the DFG that explicitly take a tag/payload register should take a JSValueRegs instead
https://bugs.webkit.org/show_bug.cgi?id=160007
Reviewed by Filip Pizlo.
This patch is the first step in my plan to remove all callOperation(.) variants
in the various JITs and to unify them using a couple template variations.
The steps are as follows:
1. Replace all explicit tag/payload pairs with JSValueRegs in the DFG
2. Replace all explicit tag/payload pairs with JSValueRegs in the baseline
3. remove callOperation(.) variants and teach setupArgumentsWithExecState
about JSValueRegs.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileGetDynamicVar):
(JSC::DFG::SpeculativeJIT::compilePutDynamicVar):
(JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
(JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::generateInternal):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITh">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (203543 => 203544)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-07-22 00:48:02 UTC (rev 203543)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-07-22 01:01:14 UTC (rev 203544)
</span><span class="lines">@@ -1,5 +1,41 @@
</span><span class="cx"> 2016-07-21 Saam Barati <sbarati@apple.com>
</span><span class="cx">
</span><ins>+ callOperation(.) variants in the DFG that explicitly take a tag/payload register should take a JSValueRegs instead
+ https://bugs.webkit.org/show_bug.cgi?id=160007
+
+ Reviewed by Filip Pizlo.
+
+ This patch is the first step in my plan to remove all callOperation(.) variants
+ in the various JITs and to unify them using a couple template variations.
+ The steps are as follows:
+ 1. Replace all explicit tag/payload pairs with JSValueRegs in the DFG
+ 2. Replace all explicit tag/payload pairs with JSValueRegs in the baseline
+ 3. remove callOperation(.) variants and teach setupArgumentsWithExecState
+ about JSValueRegs.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
+ (JSC::DFG::SpeculativeJIT::compileValueAdd):
+ (JSC::DFG::SpeculativeJIT::compileGetDynamicVar):
+ (JSC::DFG::SpeculativeJIT::compilePutDynamicVar):
+ (JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):
+ * dfg/DFGSpeculativeJIT.h:
+ (JSC::DFG::SpeculativeJIT::callOperation):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::cachedGetById):
+ (JSC::DFG::SpeculativeJIT::cachedPutById):
+ (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
+ (JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::generateInternal):
+ (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
+ (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
+ (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
+ (JSC::DFG::SpeculativeJIT::emitCall):
+ (JSC::DFG::SpeculativeJIT::compileLogicalNot):
+ (JSC::DFG::SpeculativeJIT::emitBranch):
+ (JSC::DFG::SpeculativeJIT::compile):
+
+2016-07-21 Saam Barati <sbarati@apple.com>
+
</ins><span class="cx"> op_add/ValueAdd should be an IC in all JIT tiers
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=159649
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp (203543 => 203544)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2016-07-22 00:48:02 UTC (rev 203543)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2016-07-22 01:01:14 UTC (rev 203544)
</span><span class="lines">@@ -2021,7 +2021,7 @@
</span><span class="cx"> addSlowPathGenerator(
</span><span class="cx"> slowPathCall(
</span><span class="cx"> outOfBounds, this, operationGetByValStringInt,
</span><del>- resultTagReg, scratchReg, baseReg, propertyReg));
</del><ins>+ JSValueRegs(resultTagReg, scratchReg), baseReg, propertyReg));
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3415,7 +3415,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (addICGenerationState->shouldSlowPathRepatch)
</span><del>- addICGenerationState->slowPathCall = callOperation(operationValueAddOptimize, resultRegs, innerLeftRegs, innerRightRegs, addIC);
</del><ins>+ addICGenerationState->slowPathCall = callOperation(operationValueAddOptimize, resultRegs, innerLeftRegs, innerRightRegs, TrustedImmPtr(addIC));
</ins><span class="cx"> else
</span><span class="cx"> addICGenerationState->slowPathCall = callOperation(operationValueAdd, resultRegs, innerLeftRegs, innerRightRegs);
</span><span class="cx">
</span><span class="lines">@@ -8096,7 +8096,7 @@
</span><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><del>- callOperation(operationGetDynamicVar, resultTag.gpr(), resultPayload.gpr(), scopeGPR, identifierUID(node->identifierNumber()), node->getPutInfo());
</del><ins>+ callOperation(operationGetDynamicVar, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), scopeGPR, identifierUID(node->identifierNumber()), node->getPutInfo());
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> jsValueResult(resultTag.gpr(), resultPayload.gpr(), node);
</span><span class="cx"> #endif
</span><span class="lines">@@ -8116,7 +8116,7 @@
</span><span class="cx"> GPRReg tag = value.tagGPR();
</span><span class="cx"> GPRReg payload = value.payloadGPR();
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operationPutDynamicVar, NoResult, scopeGPR, tag, payload, identifierUID(node->identifierNumber()), node->getPutInfo());
</del><ins>+ callOperation(operationPutDynamicVar, NoResult, scopeGPR, JSValueRegs(tag, payload), identifierUID(node->identifierNumber()), node->getPutInfo());
</ins><span class="cx"> #endif
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> noResult(node);
</span><span class="lines">@@ -8142,7 +8142,7 @@
</span><span class="cx"> GPRReg accessorGPR = accessor.gpr();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operation, NoResult, baseGPR, subscriptRegs.tagGPR(), subscriptRegs.payloadGPR(), node->accessorAttributes(), accessorGPR);
</del><ins>+ callOperation(operation, NoResult, baseGPR, subscriptRegs, node->accessorAttributes(), accessorGPR);
</ins><span class="cx"> #endif
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h (203543 => 203544)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h        2016-07-22 00:48:02 UTC (rev 203543)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h        2016-07-22 01:01:14 UTC (rev 203544)
</span><span class="lines">@@ -1288,9 +1288,9 @@
</span><span class="cx">
</span><span class="cx"> #if USE(JSVALUE64)
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJJaic operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, JITAddIC* addIC)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJJaic operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, TrustedImmPtr ptr)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1.gpr(), arg2.gpr(), TrustedImmPtr(addIC));
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1.gpr(), arg2.gpr(), ptr);
</ins><span class="cx"> return appendCallSetResult(operation, result.gpr());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1711,37 +1711,37 @@
</span><span class="cx"> }
</span><span class="cx"> #else // USE(JSVALUE32_64)
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJJaic operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, JITAddIC* addIC)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJJaic operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, TrustedImmPtr ptr)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), TrustedImmPtr(addIC));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), ptr);
</ins><span class="cx"> return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJI operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJI operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag, TrustedImmPtr(uid));
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), TrustedImmPtr(uid));
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EJJJI operation, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EJJJI operation, JSValueRegs arg1, JSValueRegs arg2, JSValueRegs arg3, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag, arg3Payload, arg3Tag, TrustedImmPtr(uid));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR(), TrustedImmPtr(uid));
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EJJJJ operation, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload, GPRReg arg4Tag, GPRReg arg4Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EJJJJ operation, JSValueRegs arg1, JSValueRegs arg2, JSValueRegs arg3, JSValueRegs arg4)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag, arg3Payload, arg3Tag, arg4Payload, arg4Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR(), arg4.payloadGPR(), arg4.tagGPR());
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EOJIUi operation, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, UniquedStringImpl* impl, unsigned value)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EOJIUi operation, GPRReg arg1, JSValueRegs arg2, UniquedStringImpl* impl, unsigned value)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, TrustedImmPtr(impl), TrustedImm32(value));
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), TrustedImmPtr(impl), TrustedImm32(value));
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EOIUi operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, UniquedStringImpl* impl, unsigned value)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EOIUi operation, JSValueRegs result, GPRReg arg1, UniquedStringImpl* impl, unsigned value)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl), TrustedImm32(value));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><span class="cx"> JITCompiler::Call callOperation(D_JITOperation_G operation, FPRReg result, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="lines">@@ -1756,175 +1756,181 @@
</span><span class="cx"> m_jit.zeroExtend32ToPtr(GPRInfo::returnValueGPR, result);
</span><span class="cx"> return call;
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_E operation, GPRReg resultTag, GPRReg resultPayload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_E operation, JSValueRegs result)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsExecState();
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EP operation, GPRReg resultTag, GPRReg resultPayload, void* pointer)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EP operation, JSValueRegs result, void* pointer)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(pointer));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EPP operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, void* pointer)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EPP operation, JSValueRegs result, GPRReg arg1, void* pointer)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(pointer));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EP operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EP operation, JSValueRegs result, GPRReg arg1)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EI operation, GPRReg resultTag, GPRReg resultPayload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EI operation, JSValueRegs result, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(uid));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EA operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EA operation, JSValueRegs result, GPRReg arg1)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EAZ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EAZ operation, JSValueRegs result, GPRReg arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJ operation, JSValueRegs result, JSValueRegs arg1)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJ operation, JSValueRegs result, GPRReg arg1)
</ins><span class="cx"> {
</span><del>- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1.tagGPR(), arg1.payloadGPR());
- }
- JITCompiler::Call callOperation(J_JITOperation_EJ operation, GPRReg resultPayload, GPRReg resultTag, GPRReg arg1)
- {
</del><span class="cx"> m_jit.setupArgumentsWithExecState(arg1);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJC operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJC operation, JSValueRegs result, JSValueRegs arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2);
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJssZ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJssZ operation, JSValueRegs result, GPRReg arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJssReo operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJssReo operation, JSValueRegs result, GPRReg arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJssReoJss operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2, GPRReg arg3)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJssReoJss operation, JSValueRegs result, GPRReg arg1, GPRReg arg2, GPRReg arg3)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2, arg3);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EPS operation, GPRReg resultTag, GPRReg resultPayload, void* pointer, size_t size)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EPS operation, JSValueRegs result, void* pointer, size_t size)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(pointer), TrustedImmPtr(size));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ESS operation, GPRReg resultTag, GPRReg resultPayload, int startConstant, int numConstants)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ESS operation, JSValueRegs result, int startConstant, int numConstants)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImm32(startConstant), TrustedImm32(numConstants));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJP operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, void* pointer)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJP operation, JSValueRegs result, JSValueRegs arg1, void* pointer)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, TrustedImmPtr(pointer));
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), TrustedImmPtr(pointer));
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJP operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJP operation, JSValueRegs result, JSValueRegs arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2);
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EC operation, GPRReg resultTag, GPRReg resultPayload, JSCell* cell)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EC operation, JSValueRegs result, JSCell* cell)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(cell));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ECZ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ECZ operation, JSValueRegs result, GPRReg arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJscC operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, JSCell* cell)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJscC operation, JSValueRegs result, GPRReg arg1, JSCell* cell)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(cell));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJscCJ operation, GPRReg result, GPRReg arg1, JSCell* cell, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJscCJ operation, GPRReg result, GPRReg arg1, JSCell* cell, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(cell), EABI_32BIT_DUMMY_ARG arg2Payload, arg2Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(cell), EABI_32BIT_DUMMY_ARG arg2.payloadGPR(), arg2.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EGReoJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EGReoJ operation, JSValueRegs result, GPRReg arg1, GPRReg arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EGReoJss operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2, GPRReg arg3)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EGReoJss operation, JSValueRegs result, GPRReg arg1, GPRReg arg2, GPRReg arg3)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2, arg3);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ESsiCI operation, GPRReg resultTag, GPRReg resultPayload, StructureStubInfo* stubInfo, GPRReg arg1, const UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ESsiCI operation, JSValueRegs result, StructureStubInfo* stubInfo, GPRReg arg1, const UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1, TrustedImmPtr(uid));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ESsiJI operation, GPRReg resultTag, GPRReg resultPayload, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ESsiJI operation, JSValueRegs result, StructureStubInfo* stubInfo, JSValueRegs arg1, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, TrustedImmPtr(uid));
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1.payloadGPR(), arg1.tagGPR(), TrustedImmPtr(uid));
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ESsiJI operation, GPRReg resultTag, GPRReg resultPayload, StructureStubInfo* stubInfo, int32_t arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ESsiJI operation, JSValueRegs result, StructureStubInfo* stubInfo, int32_t arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, TrustedImm32(arg1Tag), TrustedImmPtr(uid));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EDA operation, GPRReg resultTag, GPRReg resultPayload, FPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ESsiJI operation, JSValueRegs result, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><ins>+ m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, TrustedImmPtr(uid));
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
+ }
+ JITCompiler::Call callOperation(J_JITOperation_EDA operation, JSValueRegs result, FPRReg arg1, GPRReg arg2)
+ {
</ins><span class="cx"> m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJA operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJA operation, JSValueRegs result, JSValueRegs arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2);
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
+ }
+ JITCompiler::Call callOperation(J_JITOperation_EJA operation, JSValueRegs result, TrustedImm32 arg1Tag, GPRReg arg1Payload, GPRReg arg2)
+ {
</ins><span class="cx"> m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJA operation, GPRReg resultTag, GPRReg resultPayload, TrustedImm32 arg1Tag, GPRReg arg1Payload, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJA operation, JSValueRegs result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJ operation, JSValueRegs result, JSValueRegs arg1)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EZ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EZ operation, JSValueRegs result, GPRReg arg1)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EZ operation, GPRReg resultTag, GPRReg resultPayload, int32_t arg1)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EZ operation, JSValueRegs result, int32_t arg1)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImm32(arg1));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EZIcfZ operation, GPRReg resultTag, GPRReg resultPayload, int32_t arg1, InlineCallFrame* inlineCallFrame, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EZIcfZ operation, JSValueRegs result, int32_t arg1, InlineCallFrame* inlineCallFrame, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImm32(arg1), TrustedImmPtr(inlineCallFrame), arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EZZ operation, GPRReg resultTag, GPRReg resultPayload, int32_t arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EZZ operation, JSValueRegs result, int32_t arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(TrustedImm32(arg1), arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JITCompiler::Call callOperation(P_JITOperation_EJS operation, GPRReg result, JSValueRegs value, size_t index)
</span><span class="lines">@@ -1933,82 +1939,62 @@
</span><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(P_JITOperation_EStJ operation, GPRReg result, Structure* structure, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(P_JITOperation_EStJ operation, GPRReg result, Structure* structure, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(TrustedImmPtr(structure), arg2Payload, arg2Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(TrustedImmPtr(structure), arg2.payloadGPR(), arg2.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(C_JITOperation_EGJ operation, GPRReg result, JSGlobalObject* globalObject, GPRReg arg1Tag, GPRReg arg1Payload)
- {
- m_jit.setupArgumentsWithExecState(TrustedImmPtr(globalObject), arg1Payload, arg1Tag);
- return appendCallSetResult(operation, result);
- }
-
</del><span class="cx"> JITCompiler::Call callOperation(C_JITOperation_EGJ operation, GPRReg result, JSGlobalObject* globalObject, JSValueRegs arg1)
</span><span class="cx"> {
</span><del>- return callOperation(operation, result, globalObject, arg1.tagGPR(), arg1.payloadGPR());
- }
-
- JITCompiler::Call callOperation(C_JITOperation_EJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
- {
- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(TrustedImmPtr(globalObject), arg1.payloadGPR(), arg1.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(C_JITOperation_EJJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(C_JITOperation_EJ operation, GPRReg result, JSValueRegs arg1)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(C_JITOperation_EJJJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(C_JITOperation_EJJ operation, GPRReg result, JSValueRegs arg1, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag, arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(S_JITOperation_EJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
</del><ins>+ JITCompiler::Call callOperation(C_JITOperation_EJJJ operation, GPRReg result, JSValueRegs arg1, JSValueRegs arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JITCompiler::Call callOperation(S_JITOperation_EJ operation, GPRReg result, JSValueRegs arg1)
</span><span class="cx"> {
</span><del>- return callOperation(operation, result, arg1.tagGPR(), arg1.payloadGPR());
- }
-
- JITCompiler::Call callOperation(S_JITOperation_EJI operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
- {
- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, TrustedImmPtr(uid));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(S_JITOperation_EJI operation, GPRReg result, JSValueRegs arg1Regs, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(S_JITOperation_EJI operation, GPRReg result, JSValueRegs arg1, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><del>- return callOperation(operation, result, arg1Regs.tagGPR(), arg1Regs.payloadGPR(), uid);
- }
-
- JITCompiler::Call callOperation(S_JITOperation_EJJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload)
- {
- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, SH4_32BIT_DUMMY_ARG arg2Payload, arg2Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), TrustedImmPtr(uid));
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JITCompiler::Call callOperation(S_JITOperation_EJJ operation, GPRReg result, JSValueRegs arg1, JSValueRegs arg2)
</span><span class="cx"> {
</span><del>- return callOperation(operation, result, arg1.tagGPR(), arg1.payloadGPR(), arg2.tagGPR(), arg2.payloadGPR());
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), SH4_32BIT_DUMMY_ARG arg2.payloadGPR(), arg2.tagGPR());
+ return appendCallSetResult(operation, result);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(S_JITOperation_EGJJ operation, GPRReg result, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(S_JITOperation_EGJJ operation, GPRReg result, GPRReg arg1, JSValueRegs arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), SH4_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(S_JITOperation_EGReoJ operation, GPRReg result, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(S_JITOperation_EGReoJ operation, GPRReg result, GPRReg arg1, GPRReg arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><span class="cx"> JITCompiler::Call callOperation(S_JITOperation_EGReoJss operation, GPRReg result, GPRReg arg1, GPRReg arg2, GPRReg arg3)
</span><span class="lines">@@ -2016,55 +2002,46 @@
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2, arg3);
</span><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJ operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, SH4_32BIT_DUMMY_ARG arg2Payload, arg2Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), SH4_32BIT_DUMMY_ARG arg2.payloadGPR(), arg2.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EGJJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EGJJ operation, JSValueRegs result, GPRReg arg1, JSValueRegs arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), SH4_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, MacroAssembler::TrustedImm32 imm)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJ operation, JSValueRegs result, JSValueRegs arg1, MacroAssembler::TrustedImm32 imm)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, SH4_32BIT_DUMMY_ARG imm, TrustedImm32(JSValue::Int32Tag));
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), SH4_32BIT_DUMMY_ARG imm, TrustedImm32(JSValue::Int32Tag));
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJ operation, GPRReg resultTag, GPRReg resultPayload, MacroAssembler::TrustedImm32 imm, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJ operation, JSValueRegs result, MacroAssembler::TrustedImm32 imm, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG imm, TrustedImm32(JSValue::Int32Tag), SH4_32BIT_DUMMY_ARG arg2Payload, arg2Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG imm, TrustedImm32(JSValue::Int32Tag), SH4_32BIT_DUMMY_ARG arg2.payloadGPR(), arg2.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJ operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_EJJJ operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1.tagGPR(), arg1.payloadGPR(), arg2.tagGPR(), arg2.payloadGPR());
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_EJJJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload)
- {
- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2Payload, arg2Tag, arg3Payload, arg3Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
- }
</del><span class="cx">
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ECJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ECJ operation, JSValueRegs result, GPRReg arg1, JSValueRegs arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag);
- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR());
+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ECJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2Payload)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ECJ operation, JSValueRegs result, GPRReg arg1, GPRReg arg2Payload)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2Payload, MacroAssembler::TrustedImm32(JSValue::CellTag));
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
- }
- JITCompiler::Call callOperation(J_JITOperation_ECJ operation, JSValueRegs result, GPRReg arg1, JSValueRegs arg2)
- {
- m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR());
</del><span class="cx"> return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(J_JITOperation_ECC operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2)
</del><ins>+ JITCompiler::Call callOperation(J_JITOperation_ECC operation, JSValueRegs result, GPRReg arg1, GPRReg arg2)
</ins><span class="cx"> {
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2);
</span><del>- return appendCallSetResult(operation, resultPayload, resultTag);
</del><ins>+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JITCompiler::Call callOperation(V_JITOperation_EOZD operation, GPRReg arg1, GPRReg arg2, FPRReg arg3)
</span><span class="lines">@@ -2073,20 +2050,20 @@
</span><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EJ operation, GPRReg arg1Tag, GPRReg arg1Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EJ operation, JSValueRegs arg1)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR());
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EJPP operation, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2, void* pointer)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EJPP operation, JSValueRegs arg1, GPRReg arg2, void* pointer)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2, TrustedImmPtr(pointer));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2, TrustedImmPtr(pointer));
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_ESsiJJI operation, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2Payload, UniquedStringImpl* uid)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_ESsiJJI operation, StructureStubInfo* stubInfo, JSValueRegs arg1, GPRReg arg2Payload, UniquedStringImpl* uid)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, arg2Payload, TrustedImm32(JSValue::CellTag), TrustedImmPtr(uid));
</del><ins>+ m_jit.setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1.payloadGPR(), arg1.tagGPR(), arg2Payload, TrustedImm32(JSValue::CellTag), TrustedImmPtr(uid));
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx"> JITCompiler::Call callOperation(V_JITOperation_ECJ operation, GPRReg arg1, JSValueRegs arg2)
</span><span class="lines">@@ -2094,21 +2071,21 @@
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR());
</span><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_ECJJ operation, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_ECJJ operation, GPRReg arg1, JSValueRegs arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EPZJ operation, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EPZJ operation, GPRReg arg1, GPRReg arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EOZJ operation, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EOZJ operation, GPRReg arg1, GPRReg arg2, JSValueRegs arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx"> JITCompiler::Call callOperation(V_JITOperation_EOZJ operation, GPRReg arg1, GPRReg arg2, TrustedImm32 arg3Tag, GPRReg arg3Payload)
</span><span class="lines">@@ -2116,40 +2093,41 @@
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
</span><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>-
- JITCompiler::Call callOperation(Z_JITOperation_EJOJ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EOZJ operation, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, arg2, EABI_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
- return appendCallSetResult(operation, result);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG SH4_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
+ return appendCall(operation);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> JITCompiler::Call callOperation(Z_JITOperation_EJOJ operation, GPRReg result, JSValueRegs arg1, GPRReg arg2, JSValueRegs arg3)
</span><span class="cx"> {
</span><del>- return callOperation(operation, result, arg1.tagGPR(), arg1.payloadGPR(), arg2, arg3.tagGPR(), arg3.payloadGPR());
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2, EABI_32BIT_DUMMY_ARG arg3.payloadGPR(), arg3.tagGPR());
+ return appendCallSetResult(operation, result);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- JITCompiler::Call callOperation(Z_JITOperation_EJZZ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, unsigned arg2, unsigned arg3)
</del><ins>+ JITCompiler::Call callOperation(Z_JITOperation_EJZZ operation, GPRReg result, JSValueRegs arg1, unsigned arg2, unsigned arg3)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, TrustedImm32(arg2), TrustedImm32(arg3));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), TrustedImm32(arg2), TrustedImm32(arg3));
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(F_JITOperation_EFJZZ operation, GPRReg result, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, unsigned arg3, GPRReg arg4)
</del><ins>+ JITCompiler::Call callOperation(F_JITOperation_EFJZZ operation, GPRReg result, GPRReg arg1, JSValueRegs arg2, unsigned arg3, GPRReg arg4)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, TrustedImm32(arg3), arg4);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), TrustedImm32(arg3), arg4);
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(Z_JITOperation_EJZ operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload, unsigned arg2)
</del><ins>+ JITCompiler::Call callOperation(Z_JITOperation_EJZ operation, GPRReg result, JSValueRegs arg1, unsigned arg2)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, TrustedImm32(arg2));
</del><ins>+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), TrustedImm32(arg2));
</ins><span class="cx"> return appendCallSetResult(operation, result);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_EZJZZZ operation, unsigned arg1, GPRReg arg2Tag, GPRReg arg2Payload, unsigned arg3, GPRReg arg4, unsigned arg5)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_EZJZZZ operation, unsigned arg1, JSValueRegs arg2, unsigned arg3, GPRReg arg4, unsigned arg5)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(TrustedImm32(arg1), arg2Payload, arg2Tag, TrustedImm32(arg3), arg4, TrustedImm32(arg5));
</del><ins>+ m_jit.setupArgumentsWithExecState(TrustedImm32(arg1), arg2.payloadGPR(), arg2.tagGPR(), TrustedImm32(arg3), arg4, TrustedImm32(arg5));
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>- JITCompiler::Call callOperation(V_JITOperation_ECJZC operation, GPRReg arg1, GPRReg arg2Tag, GPRReg arg2Payload, int32_t arg3, GPRReg arg4)
</del><ins>+ JITCompiler::Call callOperation(V_JITOperation_ECJZC operation, GPRReg arg1, JSValueRegs arg2, int32_t arg3, GPRReg arg4)
</ins><span class="cx"> {
</span><del>- m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag, TrustedImm32(arg3), arg4);
</del><ins>+ m_jit.setupArgumentsWithExecState(arg1, arg2.payloadGPR(), arg2.tagGPR(), TrustedImm32(arg3), arg4);
</ins><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><span class="cx"> JITCompiler::Call callOperation(V_JITOperation_ECIZCC operation, GPRReg arg1, UniquedStringImpl* identOp2, int32_t op3, GPRReg arg4, GPRReg arg5)
</span><span class="lines">@@ -2157,53 +2135,6 @@
</span><span class="cx"> m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(identOp2), TrustedImm32(op3), arg4, arg5);
</span><span class="cx"> return appendCall(operation);
</span><span class="cx"> }
</span><del>-
- template<typename FunctionType>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result)
- {
- return callOperation(operation, result.tagGPR(), result.payloadGPR());
- }
- template<typename FunctionType, typename ArgumentType1>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result, ArgumentType1 arg1)
- {
- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1);
- }
- template<typename FunctionType, typename ArgumentType1, typename ArgumentType2>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result, ArgumentType1 arg1, ArgumentType2 arg2)
- {
- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1, arg2);
- }
- template<
- typename FunctionType, typename ArgumentType1, typename ArgumentType2,
- typename ArgumentType3>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result, ArgumentType1 arg1, ArgumentType2 arg2,
- ArgumentType3 arg3)
- {
- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1, arg2, arg3);
- }
- template<
- typename FunctionType, typename ArgumentType1, typename ArgumentType2,
- typename ArgumentType3, typename ArgumentType4>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result, ArgumentType1 arg1, ArgumentType2 arg2,
- ArgumentType3 arg3, ArgumentType4 arg4)
- {
- return callOperation(operation, result.tagGPR(), result.payloadGPR(), arg1, arg2, arg3, arg4);
- }
- template<
- typename FunctionType, typename ArgumentType1, typename ArgumentType2,
- typename ArgumentType3, typename ArgumentType4, typename ArgumentType5>
- JITCompiler::Call callOperation(
- FunctionType operation, JSValueRegs result, ArgumentType1 arg1, ArgumentType2 arg2,
- ArgumentType3 arg3, ArgumentType4 arg4, ArgumentType5 arg5)
- {
- return callOperation(
- operation, result.tagGPR(), result.payloadGPR(), arg1, arg2, arg3, arg4, arg5);
- }
</del><span class="cx"> #endif // USE(JSVALUE32_64)
</span><span class="cx">
</span><span class="cx"> #if !defined(NDEBUG) && !CPU(ARM) && !CPU(MIPS) && !CPU(SH4)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (203543 => 203544)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2016-07-22 00:48:02 UTC (rev 203543)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2016-07-22 01:01:14 UTC (rev 203544)
</span><span class="lines">@@ -223,8 +223,7 @@
</span><span class="cx"> } else {
</span><span class="cx"> slowPath = slowPathCall(
</span><span class="cx"> slowCases, this, getByIdFunction,
</span><del>- JSValueRegs(resultTagGPR, resultPayloadGPR), gen.stubInfo(), baseTagGPROrNone,
- basePayloadGPR, identifierUID(identifierNumber));
</del><ins>+ JSValueRegs(resultTagGPR, resultPayloadGPR), gen.stubInfo(), JSValueRegs(baseTagGPROrNone, basePayloadGPR), identifierUID(identifierNumber));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_jit.addGetById(gen, slowPath.get());
</span><span class="lines">@@ -253,8 +252,8 @@
</span><span class="cx"> slowCases.append(gen.slowPathJump());
</span><span class="cx">
</span><span class="cx"> auto slowPath = slowPathCall(
</span><del>- slowCases, this, gen.slowPathFunction(), NoResult, gen.stubInfo(), valueTagGPR,
- valuePayloadGPR, basePayloadGPR, identifierUID(identifierNumber));
</del><ins>+ slowCases, this, gen.slowPathFunction(), NoResult, gen.stubInfo(), JSValueRegs(valueTagGPR, valuePayloadGPR),
+ basePayloadGPR, identifierUID(identifierNumber));
</ins><span class="cx">
</span><span class="cx"> m_jit.addPutById(gen, slowPath.get());
</span><span class="cx"> addSlowPathGenerator(WTFMove(slowPath));
</span><span class="lines">@@ -397,6 +396,8 @@
</span><span class="cx">
</span><span class="cx"> JSValueOperand arg1(this, node->child1());
</span><span class="cx"> JSValueOperand arg2(this, node->child2());
</span><ins>+ JSValueRegs arg1Regs = arg1.jsValueRegs();
+ JSValueRegs arg2Regs = arg2.jsValueRegs();
</ins><span class="cx"> GPRReg arg1TagGPR = arg1.tagGPR();
</span><span class="cx"> GPRReg arg1PayloadGPR = arg1.payloadGPR();
</span><span class="cx"> GPRReg arg2TagGPR = arg2.tagGPR();
</span><span class="lines">@@ -412,7 +413,7 @@
</span><span class="cx"> arg2.use();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(helperFunction, resultGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(helperFunction, resultGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> branchTest32(callResultCondition, resultGPR, taken);
</span><span class="lines">@@ -436,7 +437,7 @@
</span><span class="cx"> slowPath.link(&m_jit);
</span><span class="cx">
</span><span class="cx"> silentSpillAllRegisters(resultGPR);
</span><del>- callOperation(helperFunction, resultGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(helperFunction, resultGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> silentFillAllRegisters(resultGPR);
</span><span class="cx">
</span><span class="lines">@@ -473,8 +474,7 @@
</span><span class="cx"> this->setUp(jit);
</span><span class="cx"> this->recordCall(
</span><span class="cx"> jit->callOperation(
</span><del>- this->m_function, this->m_result, m_arg1Tag, m_arg1Payload, m_arg2Tag,
- m_arg2Payload));
</del><ins>+ this->m_function, this->m_result, JSValueRegs(m_arg1Tag, m_arg1Payload), JSValueRegs(m_arg2Tag, m_arg2Payload)));
</ins><span class="cx"> jit->m_jit.and32(JITCompiler::TrustedImm32(1), this->m_result);
</span><span class="cx"> this->tearDown(jit);
</span><span class="cx"> }
</span><span class="lines">@@ -505,7 +505,7 @@
</span><span class="cx"> arg2.use();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(helperFunction, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(helperFunction, resultPayloadGPR, arg1.jsValueRegs(), arg2.jsValueRegs());
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> booleanResult(resultPayloadGPR, node, UseChildrenCalledExplicitly);
</span><span class="lines">@@ -549,10 +549,10 @@
</span><span class="cx">
</span><span class="cx"> JSValueOperand arg1(this, node->child1());
</span><span class="cx"> JSValueOperand arg2(this, node->child2());
</span><del>- GPRReg arg1TagGPR = arg1.tagGPR();
</del><span class="cx"> GPRReg arg1PayloadGPR = arg1.payloadGPR();
</span><del>- GPRReg arg2TagGPR = arg2.tagGPR();
</del><span class="cx"> GPRReg arg2PayloadGPR = arg2.payloadGPR();
</span><ins>+ JSValueRegs arg1Regs = arg1.jsValueRegs();
+ JSValueRegs arg2Regs = arg2.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> GPRTemporary resultPayload(this, Reuse, arg1, PayloadWord);
</span><span class="cx"> GPRReg resultPayloadGPR = resultPayload.gpr();
</span><span class="lines">@@ -566,7 +566,7 @@
</span><span class="cx"> branchPtr(JITCompiler::Equal, arg1PayloadGPR, arg2PayloadGPR, invert ? notTaken : taken);
</span><span class="cx">
</span><span class="cx"> silentSpillAllRegisters(resultPayloadGPR);
</span><del>- callOperation(operationCompareStrictEqCell, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(operationCompareStrictEqCell, resultPayloadGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> silentFillAllRegisters(resultPayloadGPR);
</span><span class="cx">
</span><span class="lines">@@ -575,7 +575,7 @@
</span><span class="cx"> // FIXME: Add fast paths for twoCells, number etc.
</span><span class="cx">
</span><span class="cx"> silentSpillAllRegisters(resultPayloadGPR);
</span><del>- callOperation(operationCompareStrictEq, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(operationCompareStrictEq, resultPayloadGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> silentFillAllRegisters(resultPayloadGPR);
</span><span class="cx">
</span><span class="lines">@@ -589,10 +589,10 @@
</span><span class="cx"> {
</span><span class="cx"> JSValueOperand arg1(this, node->child1());
</span><span class="cx"> JSValueOperand arg2(this, node->child2());
</span><del>- GPRReg arg1TagGPR = arg1.tagGPR();
</del><span class="cx"> GPRReg arg1PayloadGPR = arg1.payloadGPR();
</span><del>- GPRReg arg2TagGPR = arg2.tagGPR();
</del><span class="cx"> GPRReg arg2PayloadGPR = arg2.payloadGPR();
</span><ins>+ JSValueRegs arg1Regs = arg1.jsValueRegs();
+ JSValueRegs arg2Regs = arg2.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> GPRTemporary resultPayload(this, Reuse, arg1, PayloadWord);
</span><span class="cx"> GPRReg resultPayloadGPR = resultPayload.gpr();
</span><span class="lines">@@ -612,7 +612,7 @@
</span><span class="cx"> notEqualCase.link(&m_jit);
</span><span class="cx">
</span><span class="cx"> silentSpillAllRegisters(resultPayloadGPR);
</span><del>- callOperation(operationCompareStrictEqCell, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(operationCompareStrictEqCell, resultPayloadGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> silentFillAllRegisters(resultPayloadGPR);
</span><span class="cx">
</span><span class="lines">@@ -623,7 +623,7 @@
</span><span class="cx"> // FIXME: Add fast paths.
</span><span class="cx">
</span><span class="cx"> silentSpillAllRegisters(resultPayloadGPR);
</span><del>- callOperation(operationCompareStrictEq, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
</del><ins>+ callOperation(operationCompareStrictEq, resultPayloadGPR, arg1Regs, arg2Regs);
</ins><span class="cx"> silentFillAllRegisters(resultPayloadGPR);
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="lines">@@ -783,7 +783,7 @@
</span><span class="cx">
</span><span class="cx"> // Right now, arguments is in argumentsTagGPR/argumentsPayloadGPR and the register file is
</span><span class="cx"> // flushed.
</span><del>- callOperation(operationSizeFrameForVarargs, GPRInfo::returnValueGPR, argumentsTagGPR, argumentsPayloadGPR, numUsedStackSlots, data->firstVarArgOffset);
</del><ins>+ callOperation(operationSizeFrameForVarargs, GPRInfo::returnValueGPR, JSValueRegs(argumentsTagGPR, argumentsPayloadGPR), numUsedStackSlots, data->firstVarArgOffset);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> // Now we have the argument count of the callee frame, but we've lost the arguments operand.
</span><span class="lines">@@ -793,7 +793,7 @@
</span><span class="cx"> emitSetVarargsFrame(m_jit, GPRInfo::returnValueGPR, false, scratchGPR1, scratchGPR1);
</span><span class="cx"> m_jit.addPtr(TrustedImm32(-(sizeof(CallerFrameAndPC) + WTF::roundUpToMultipleOf(stackAlignmentBytes(), 6 * sizeof(void*)))), scratchGPR1, JITCompiler::stackPointerRegister);
</span><span class="cx">
</span><del>- callOperation(operationSetupVarargsFrame, GPRInfo::returnValueGPR, scratchGPR1, argumentsTagGPR, argumentsPayloadGPR, data->firstVarArgOffset, GPRInfo::returnValueGPR);
</del><ins>+ callOperation(operationSetupVarargsFrame, GPRInfo::returnValueGPR, scratchGPR1, JSValueRegs(argumentsTagGPR, argumentsPayloadGPR), data->firstVarArgOffset, GPRInfo::returnValueGPR);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> resultGPR = GPRInfo::returnValueGPR;
</span><span class="cx"> }
</span><span class="lines">@@ -1661,6 +1661,7 @@
</span><span class="cx"> GPRTemporary resultPayload(this, Reuse, arg1, PayloadWord);
</span><span class="cx"> GPRReg arg1TagGPR = arg1.tagGPR();
</span><span class="cx"> GPRReg arg1PayloadGPR = arg1.payloadGPR();
</span><ins>+ JSValueRegs arg1Regs = arg1.jsValueRegs();
</ins><span class="cx"> GPRReg resultPayloadGPR = resultPayload.gpr();
</span><span class="cx">
</span><span class="cx"> arg1.use();
</span><span class="lines">@@ -1671,8 +1672,7 @@
</span><span class="cx">
</span><span class="cx"> addSlowPathGenerator(
</span><span class="cx"> slowPathCall(
</span><del>- slowCase, this, operationConvertJSValueToBoolean, resultPayloadGPR, arg1TagGPR,
- arg1PayloadGPR, NeedToSpill, ExceptionCheckRequirement::CheckNotNeeded));
</del><ins>+ slowCase, this, operationConvertJSValueToBoolean, resultPayloadGPR, arg1Regs, NeedToSpill, ExceptionCheckRequirement::CheckNotNeeded));
</ins><span class="cx">
</span><span class="cx"> m_jit.xor32(TrustedImm32(1), resultPayloadGPR);
</span><span class="cx"> booleanResult(resultPayloadGPR, node, UseChildrenCalledExplicitly);
</span><span class="lines">@@ -1825,7 +1825,7 @@
</span><span class="cx">
</span><span class="cx"> slowPath.link(&m_jit);
</span><span class="cx"> silentSpillAllRegisters(resultGPR);
</span><del>- callOperation(operationConvertJSValueToBoolean, resultGPR, valueTagGPR, valuePayloadGPR);
</del><ins>+ callOperation(operationConvertJSValueToBoolean, resultGPR, value.jsValueRegs());
</ins><span class="cx"> silentFillAllRegisters(resultGPR);
</span><span class="cx">
</span><span class="cx"> branchTest32(JITCompiler::NonZero, resultGPR, taken);
</span><span class="lines">@@ -2166,27 +2166,20 @@
</span><span class="cx"> JSValueOperand op2(this, node->child2(), ManualOperandSpeculation);
</span><span class="cx"> JSValueOperand op3(this, node->child3(), ManualOperandSpeculation);
</span><span class="cx">
</span><del>- GPRReg op1TagGPR = op1.tagGPR();
- GPRReg op1PayloadGPR = op1.payloadGPR();
- GPRReg op2TagGPR = op2.tagGPR();
- GPRReg op2PayloadGPR = op2.payloadGPR();
- GPRReg op3TagGPR;
- GPRReg op3PayloadGPR;
- if (node->child3()) {
- op3TagGPR = op3.tagGPR();
- op3PayloadGPR = op3.payloadGPR();
- } else {
- op3TagGPR = InvalidGPRReg;
- op3PayloadGPR = InvalidGPRReg;
- }
</del><ins>+ JSValueRegs op1Regs = op1.jsValueRegs();
+ JSValueRegs op2Regs = op2.jsValueRegs();
+ JSValueRegs op3Regs;
+
+ if (node->child3())
+ op3Regs = op3.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx">
</span><span class="cx"> GPRFlushedCallResult result(this);
</span><span class="cx"> if (node->child3())
</span><del>- callOperation(operationStrCat3, result.gpr(), op1TagGPR, op1PayloadGPR, op2TagGPR, op2PayloadGPR, op3TagGPR, op3PayloadGPR);
</del><ins>+ callOperation(operationStrCat3, result.gpr(), op1Regs, op2Regs, op3Regs);
</ins><span class="cx"> else
</span><del>- callOperation(operationStrCat2, result.gpr(), op1TagGPR, op1PayloadGPR, op2TagGPR, op2PayloadGPR);
</del><ins>+ callOperation(operationStrCat2, result.gpr(), op1Regs, op2Regs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> cellResult(result.gpr(), node);
</span><span class="lines">@@ -2488,13 +2481,12 @@
</span><span class="cx"> SpeculateCellOperand base(this, node->child1()); // Save a register, speculate cell. We'll probably be right.
</span><span class="cx"> JSValueOperand property(this, node->child2());
</span><span class="cx"> GPRReg baseGPR = base.gpr();
</span><del>- GPRReg propertyTagGPR = property.tagGPR();
- GPRReg propertyPayloadGPR = property.payloadGPR();
</del><ins>+ JSValueRegs propertyRegs = property.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><del>- callOperation(operationGetByValCell, resultTag.gpr(), resultPayload.gpr(), baseGPR, propertyTagGPR, propertyPayloadGPR);
</del><ins>+ callOperation(operationGetByValCell, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), baseGPR, propertyRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTag.gpr(), resultPayload.gpr(), node);
</span><span class="lines">@@ -2728,14 +2720,11 @@
</span><span class="cx">
</span><span class="cx"> case GetByValWithThis: {
</span><span class="cx"> JSValueOperand base(this, node->child1());
</span><del>- GPRReg baseTag = base.tagGPR();
- GPRReg basePayload = base.payloadGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
</ins><span class="cx"> JSValueOperand thisValue(this, node->child2());
</span><del>- GPRReg thisValueTag = thisValue.tagGPR();
- GPRReg thisValuePayload = thisValue.payloadGPR();
</del><ins>+ JSValueRegs thisValueRegs = thisValue.jsValueRegs();
</ins><span class="cx"> JSValueOperand subscript(this, node->child3());
</span><del>- GPRReg subscriptTag = subscript.tagGPR();
- GPRReg subscriptPayload = subscript.payloadGPR();
</del><ins>+ JSValueRegs subscriptRegs = subscript.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="lines">@@ -2743,7 +2732,7 @@
</span><span class="cx"> GPRReg resultTagGPR = resultTag.gpr();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operationGetByValWithThis, resultTagGPR, resultPayloadGPR, baseTag, basePayload, thisValueTag, thisValuePayload, subscriptTag, subscriptPayload);
</del><ins>+ callOperation(operationGetByValWithThis, JSValueRegs(resultTagGPR, resultPayloadGPR), baseRegs, thisValueRegs, subscriptRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTagGPR, resultPayloadGPR, node);
</span><span class="lines">@@ -2777,16 +2766,14 @@
</span><span class="cx"> JSValueOperand property(this, child2);
</span><span class="cx"> JSValueOperand value(this, child3);
</span><span class="cx"> GPRReg baseGPR = base.gpr();
</span><del>- GPRReg propertyTagGPR = property.tagGPR();
- GPRReg propertyPayloadGPR = property.payloadGPR();
- GPRReg valueTagGPR = value.tagGPR();
- GPRReg valuePayloadGPR = value.payloadGPR();
</del><ins>+ JSValueRegs propertyRegs = property.jsValueRegs();
+ JSValueRegs valueRegs = value.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> if (node->op() == PutByValDirect)
</span><del>- callOperation(m_jit.codeBlock()->isStrictMode() ? operationPutByValDirectCellStrict : operationPutByValDirectCellNonStrict, baseGPR, propertyTagGPR, propertyPayloadGPR, valueTagGPR, valuePayloadGPR);
</del><ins>+ callOperation(m_jit.codeBlock()->isStrictMode() ? operationPutByValDirectCellStrict : operationPutByValDirectCellNonStrict, baseGPR, propertyRegs, valueRegs);
</ins><span class="cx"> else
</span><del>- callOperation(m_jit.codeBlock()->isStrictMode() ? operationPutByValCellStrict : operationPutByValCellNonStrict, baseGPR, propertyTagGPR, propertyPayloadGPR, valueTagGPR, valuePayloadGPR);
</del><ins>+ callOperation(m_jit.codeBlock()->isStrictMode() ? operationPutByValCellStrict : operationPutByValCellNonStrict, baseGPR, propertyRegs, valueRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> noResult(node);
</span><span class="lines">@@ -2905,12 +2892,12 @@
</span><span class="cx"> addSlowPathGenerator(slowPathCall(
</span><span class="cx"> slowCases, this,
</span><span class="cx"> m_jit.codeBlock()->isStrictMode() ? operationPutByValDirectBeyondArrayBoundsStrict : operationPutByValDirectBeyondArrayBoundsNonStrict,
</span><del>- NoResult, baseReg, propertyReg, valueTagReg, valuePayloadReg));
</del><ins>+ NoResult, baseReg, propertyReg, JSValueRegs(valueTagReg, valuePayloadReg)));
</ins><span class="cx"> } else {
</span><span class="cx"> addSlowPathGenerator(slowPathCall(
</span><span class="cx"> slowCases, this,
</span><span class="cx"> m_jit.codeBlock()->isStrictMode() ? operationPutByValBeyondArrayBoundsStrict : operationPutByValBeyondArrayBoundsNonStrict,
</span><del>- NoResult, baseReg, propertyReg, valueTagReg, valuePayloadReg));
</del><ins>+ NoResult, baseReg, propertyReg, JSValueRegs(valueTagReg, valuePayloadReg)));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3015,24 +3002,20 @@
</span><span class="cx"> static_assert(GPRInfo::numberOfRegisters >= 8, "We are assuming we have enough registers to make this call without incrementally setting up the arguments.");
</span><span class="cx">
</span><span class="cx"> JSValueOperand base(this, m_jit.graph().varArgChild(node, 0));
</span><del>- GPRReg baseTag = base.tagGPR();
- GPRReg basePayload = base.payloadGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> JSValueOperand thisValue(this, m_jit.graph().varArgChild(node, 1));
</span><del>- GPRReg thisValueTag = thisValue.tagGPR();
- GPRReg thisValuePayload = thisValue.payloadGPR();
</del><ins>+ JSValueRegs thisRegs = thisValue.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> JSValueOperand property(this, m_jit.graph().varArgChild(node, 2));
</span><del>- GPRReg propertyTag = property.tagGPR();
- GPRReg propertyPayload = property.payloadGPR();
</del><ins>+ JSValueRegs propertyRegs = property.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> JSValueOperand value(this, m_jit.graph().varArgChild(node, 3));
</span><del>- GPRReg valueTag = value.tagGPR();
- GPRReg valuePayload = value.payloadGPR();
</del><ins>+ JSValueRegs valueRegs = value.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> callOperation(m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis,
</span><del>- NoResult, baseTag, basePayload, thisValueTag, thisValuePayload, propertyTag, propertyPayload, valueTag, valuePayload);
</del><ins>+ NoResult, baseRegs, thisRegs, propertyRegs, valueRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> #endif // CPU(X86)
</span><span class="cx">
</span><span class="lines">@@ -3057,7 +3040,7 @@
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationRegExpExecString, resultTag.gpr(), resultPayload.gpr(),
</del><ins>+ operationRegExpExecString, JSValueRegs(resultTag.gpr(), resultPayload.gpr()),
</ins><span class="cx"> globalObjectGPR, baseGPR, argumentGPR);
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="lines">@@ -3068,8 +3051,7 @@
</span><span class="cx"> SpeculateCellOperand base(this, node->child2());
</span><span class="cx"> JSValueOperand argument(this, node->child3());
</span><span class="cx"> GPRReg baseGPR = base.gpr();
</span><del>- GPRReg argumentTagGPR = argument.tagGPR();
- GPRReg argumentPayloadGPR = argument.payloadGPR();
</del><ins>+ JSValueRegs argumentRegs = argument.jsValueRegs();
</ins><span class="cx"> speculateRegExpObject(node->child2(), baseGPR);
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="lines">@@ -3076,8 +3058,7 @@
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationRegExpExec, resultTag.gpr(), resultPayload.gpr(), globalObjectGPR, baseGPR,
- argumentTagGPR, argumentPayloadGPR);
</del><ins>+ operationRegExpExec, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), globalObjectGPR, baseGPR, argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTag.gpr(), resultPayload.gpr(), node);
</span><span class="lines">@@ -3086,17 +3067,14 @@
</span><span class="cx">
</span><span class="cx"> JSValueOperand base(this, node->child2());
</span><span class="cx"> JSValueOperand argument(this, node->child3());
</span><del>- GPRReg baseTagGPR = base.tagGPR();
- GPRReg basePayloadGPR = base.payloadGPR();
- GPRReg argumentTagGPR = argument.tagGPR();
- GPRReg argumentPayloadGPR = argument.payloadGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
+ JSValueRegs argumentRegs = argument.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationRegExpExecGeneric, resultTag.gpr(), resultPayload.gpr(), globalObjectGPR,
- baseTagGPR, basePayloadGPR, argumentTagGPR, argumentPayloadGPR);
</del><ins>+ operationRegExpExecGeneric, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), globalObjectGPR, baseRegs, argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTag.gpr(), resultPayload.gpr(), node);
</span><span class="lines">@@ -3129,15 +3107,13 @@
</span><span class="cx"> SpeculateCellOperand base(this, node->child2());
</span><span class="cx"> JSValueOperand argument(this, node->child3());
</span><span class="cx"> GPRReg baseGPR = base.gpr();
</span><del>- GPRReg argumentTagGPR = argument.tagGPR();
- GPRReg argumentPayloadGPR = argument.payloadGPR();
</del><ins>+ JSValueRegs argumentRegs = argument.jsValueRegs();
</ins><span class="cx"> speculateRegExpObject(node->child2(), baseGPR);
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult result(this);
</span><span class="cx"> callOperation(
</span><del>- operationRegExpTest, result.gpr(), globalObjectGPR, baseGPR, argumentTagGPR,
- argumentPayloadGPR);
</del><ins>+ operationRegExpTest, result.gpr(), globalObjectGPR, baseGPR, argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> booleanResult(result.gpr(), node);
</span><span class="lines">@@ -3146,16 +3122,13 @@
</span><span class="cx">
</span><span class="cx"> JSValueOperand base(this, node->child2());
</span><span class="cx"> JSValueOperand argument(this, node->child3());
</span><del>- GPRReg baseTagGPR = base.tagGPR();
- GPRReg basePayloadGPR = base.payloadGPR();
- GPRReg argumentTagGPR = argument.tagGPR();
- GPRReg argumentPayloadGPR = argument.payloadGPR();
-
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
+ JSValueRegs argumentRegs = argument.jsValueRegs();
+
</ins><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult result(this);
</span><span class="cx"> callOperation(
</span><del>- operationRegExpTestGeneric, result.gpr(), globalObjectGPR, baseTagGPR, basePayloadGPR,
- argumentTagGPR, argumentPayloadGPR);
</del><ins>+ operationRegExpTestGeneric, result.gpr(), globalObjectGPR, baseRegs, argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> booleanResult(result.gpr(), node);
</span><span class="lines">@@ -3180,8 +3153,7 @@
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationStringProtoFuncReplaceRegExpEmptyStr, resultTag.gpr(),
- resultPayload.gpr(), stringGPR, regExpGPR);
</del><ins>+ operationStringProtoFuncReplaceRegExpEmptyStr, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), stringGPR, regExpGPR);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> cellResult(resultPayload.gpr(), node);
</span><span class="cx"> break;
</span><span class="lines">@@ -3202,7 +3174,7 @@
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationStringProtoFuncReplaceRegExpString, resultTag.gpr(), resultPayload.gpr(),
</del><ins>+ operationStringProtoFuncReplaceRegExpString, JSValueRegs(resultTag.gpr(), resultPayload.gpr()),
</ins><span class="cx"> stringGPR, regExpGPR, replaceGPR);
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> cellResult(resultPayload.gpr(), node);
</span><span class="lines">@@ -3217,20 +3189,16 @@
</span><span class="cx"> JSValueOperand string(this, node->child1());
</span><span class="cx"> JSValueOperand search(this, node->child2(), child2SpeculationMode);
</span><span class="cx"> JSValueOperand replace(this, node->child3());
</span><del>- GPRReg stringTagGPR = string.tagGPR();
- GPRReg stringPayloadGPR = string.payloadGPR();
- GPRReg searchTagGPR = search.tagGPR();
- GPRReg searchPayloadGPR = search.payloadGPR();
- GPRReg replaceTagGPR = replace.tagGPR();
- GPRReg replacePayloadGPR = replace.payloadGPR();
</del><ins>+ JSValueRegs stringRegs = string.jsValueRegs();
+ JSValueRegs searchRegs = search.jsValueRegs();
+ JSValueRegs replaceRegs = replace.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> callOperation(
</span><del>- operationStringProtoFuncReplaceGeneric, resultTag.gpr(), resultPayload.gpr(),
- stringTagGPR, stringPayloadGPR, searchTagGPR, searchPayloadGPR, replaceTagGPR,
- replacePayloadGPR);
</del><ins>+ operationStringProtoFuncReplaceGeneric, JSValueRegs(resultTag.gpr(), resultPayload.gpr()),
+ stringRegs, searchRegs, replaceRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> cellResult(resultPayload.gpr(), node);
</span><span class="cx"> break;
</span><span class="lines">@@ -3303,7 +3271,7 @@
</span><span class="cx"> slowPathCall(
</span><span class="cx"> slowPath, this, operationArrayPush,
</span><span class="cx"> JSValueRegs(storageGPR, storageLengthGPR),
</span><del>- valueTagGPR, valuePayloadGPR, baseGPR));
</del><ins>+ JSValueRegs(valueTagGPR, valuePayloadGPR), baseGPR));
</ins><span class="cx">
</span><span class="cx"> jsValueResult(storageGPR, storageLengthGPR, node);
</span><span class="cx"> break;
</span><span class="lines">@@ -3354,7 +3322,8 @@
</span><span class="cx"> m_jit.add32(TrustedImm32(1), MacroAssembler::Address(storageGPR, OBJECT_OFFSETOF(ArrayStorage, m_numValuesInVector)));
</span><span class="cx"> m_jit.move(TrustedImm32(JSValue::Int32Tag), storageGPR);
</span><span class="cx">
</span><del>- addSlowPathGenerator(slowPathCall(slowPath, this, operationArrayPush, JSValueRegs(storageGPR, storageLengthGPR), valueTagGPR, valuePayloadGPR, baseGPR));
</del><ins>+ addSlowPathGenerator(slowPathCall(slowPath, this, operationArrayPush, JSValueRegs(storageGPR, storageLengthGPR),
+ JSValueRegs(valueTagGPR, valuePayloadGPR), baseGPR));
</ins><span class="cx">
</span><span class="cx"> jsValueResult(storageGPR, storageLengthGPR, node);
</span><span class="cx"> break;
</span><span class="lines">@@ -3628,7 +3597,7 @@
</span><span class="cx"> addSlowPathGenerator(
</span><span class="cx"> slowPathCall(
</span><span class="cx"> notPrimitive, this, operationToPrimitive,
</span><del>- JSValueRegs(resultTagGPR, resultPayloadGPR), argumentTagGPR, argumentPayloadGPR));
</del><ins>+ JSValueRegs(resultTagGPR, resultPayloadGPR), JSValueRegs(argumentTagGPR, argumentPayloadGPR)));
</ins><span class="cx">
</span><span class="cx"> jsValueResult(resultTagGPR, resultPayloadGPR, node, UseChildrenCalledExplicitly);
</span><span class="cx"> break;
</span><span class="lines">@@ -3641,6 +3610,7 @@
</span><span class="cx">
</span><span class="cx"> GPRReg argumentPayloadGPR = argument.payloadGPR();
</span><span class="cx"> GPRReg argumentTagGPR = argument.tagGPR();
</span><ins>+ JSValueRegs argumentRegs = argument.jsValueRegs();
</ins><span class="cx"> JSValueRegs resultRegs(resultTag.gpr(), resultPayload.gpr());
</span><span class="cx">
</span><span class="cx"> argument.use();
</span><span class="lines">@@ -3650,7 +3620,7 @@
</span><span class="cx"> // Instead of the slow path generator, we emit callOperation here.
</span><span class="cx"> if (!(m_state.forNode(node->child1()).m_type & SpecBytecodeNumber)) {
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operationToNumber, resultRegs, argumentTagGPR, argumentPayloadGPR);
</del><ins>+ callOperation(operationToNumber, resultRegs, argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> } else {
</span><span class="cx"> MacroAssembler::Jump notNumber;
</span><span class="lines">@@ -3664,7 +3634,7 @@
</span><span class="cx">
</span><span class="cx"> notNumber.link(&m_jit);
</span><span class="cx"> silentSpillAllRegisters(resultRegs);
</span><del>- callOperation(operationToNumber, resultRegs, argumentTagGPR, argumentPayloadGPR);
</del><ins>+ callOperation(operationToNumber, resultRegs, argumentRegs);
</ins><span class="cx"> silentFillAllRegisters(resultRegs);
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="lines">@@ -3680,7 +3650,7 @@
</span><span class="cx"> if (node->child1().useKind() == UntypedUse) {
</span><span class="cx"> JSValueOperand op1(this, node->child1());
</span><span class="cx"> GPRReg op1PayloadGPR = op1.payloadGPR();
</span><del>- GPRReg op1TagGPR = op1.tagGPR();
</del><ins>+ JSValueRegs op1Regs = op1.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> GPRFlushedCallResult result(this);
</span><span class="cx"> GPRReg resultGPR = result.gpr();
</span><span class="lines">@@ -3697,10 +3667,10 @@
</span><span class="cx"> slowPath2.link(&m_jit);
</span><span class="cx"> }
</span><span class="cx"> if (op == ToString)
</span><del>- callOperation(operationToString, resultGPR, op1TagGPR, op1PayloadGPR);
</del><ins>+ callOperation(operationToString, resultGPR, op1Regs);
</ins><span class="cx"> else {
</span><span class="cx"> ASSERT(op == CallStringConstructor);
</span><del>- callOperation(operationCallStringConstructor, resultGPR, op1TagGPR, op1PayloadGPR);
</del><ins>+ callOperation(operationCallStringConstructor, resultGPR, op1Regs);
</ins><span class="cx"> }
</span><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> if (done.isSet())
</span><span class="lines">@@ -4015,8 +3985,7 @@
</span><span class="cx"> break;
</span><span class="cx"> case UntypedUse: {
</span><span class="cx"> JSValueOperand argument(this, node->child1());
</span><del>- GPRReg argumentTagGPR = argument.tagGPR();
- GPRReg argumentPayloadGPR = argument.payloadGPR();
</del><ins>+ JSValueRegs argumentRegs = argument.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx">
</span><span class="lines">@@ -4026,8 +3995,7 @@
</span><span class="cx"> JSGlobalObject* globalObject = m_jit.graph().globalObjectFor(node->origin.semantic);
</span><span class="cx"> callOperation(
</span><span class="cx"> operationNewTypedArrayWithOneArgumentForType(node->typedArrayType()),
</span><del>- resultGPR, globalObject->typedArrayStructureConcurrently(node->typedArrayType()),
- argumentTagGPR, argumentPayloadGPR);
</del><ins>+ resultGPR, globalObject->typedArrayStructureConcurrently(node->typedArrayType()), argumentRegs);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> cellResult(resultGPR, node);
</span><span class="lines">@@ -4045,7 +4013,7 @@
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="cx">
</span><del>- callOperation(operationNewRegexp, resultTag.gpr(), resultPayload.gpr(), m_jit.codeBlock()->regexp(node->regexpIndex()));
</del><ins>+ callOperation(operationNewRegexp, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), m_jit.codeBlock()->regexp(node->regexpIndex()));
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> // FIXME: make the callOperation above explicitly return a cell result, or jitAssert the tag is a cell tag.
</span><span class="lines">@@ -4085,7 +4053,7 @@
</span><span class="cx"> addSlowPathGenerator(
</span><span class="cx"> slowPathCall(
</span><span class="cx"> slowCases, this, function,
</span><del>- JSValueRegs(tempTagGPR, tempGPR), thisValueTagGPR, thisValuePayloadGPR));
</del><ins>+ JSValueRegs(tempTagGPR, tempGPR), JSValueRegs(thisValueTagGPR, thisValuePayloadGPR)));
</ins><span class="cx">
</span><span class="cx"> jsValueResult(tempTagGPR, tempGPR, node);
</span><span class="cx"> break;
</span><span class="lines">@@ -4262,11 +4230,9 @@
</span><span class="cx">
</span><span class="cx"> case GetByIdWithThis: {
</span><span class="cx"> JSValueOperand base(this, node->child1());
</span><del>- GPRReg baseTag = base.tagGPR();
- GPRReg basePayload = base.payloadGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
</ins><span class="cx"> JSValueOperand thisValue(this, node->child2());
</span><del>- GPRReg thisTag = thisValue.tagGPR();
- GPRReg thisPayload = thisValue.payloadGPR();
</del><ins>+ JSValueRegs thisRegs = thisValue.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><span class="lines">@@ -4274,7 +4240,7 @@
</span><span class="cx"> GPRReg resultTagGPR = resultTag.gpr();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operationGetByIdWithThis, resultTagGPR, resultPayloadGPR, baseTag, basePayload, thisTag, thisPayload, identifierUID(node->identifierNumber()));
</del><ins>+ callOperation(operationGetByIdWithThis, JSValueRegs(resultTagGPR, resultPayloadGPR), baseRegs, thisRegs, identifierUID(node->identifierNumber()));
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTagGPR, resultPayloadGPR, node);
</span><span class="lines">@@ -4560,18 +4526,15 @@
</span><span class="cx">
</span><span class="cx"> case PutByIdWithThis: {
</span><span class="cx"> JSValueOperand base(this, node->child1());
</span><del>- GPRReg baseTag = base.tagGPR();
- GPRReg basePayload = base.payloadGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
</ins><span class="cx"> JSValueOperand thisValue(this, node->child2());
</span><del>- GPRReg thisValueTag = thisValue.tagGPR();
- GPRReg thisValuePayload = thisValue.payloadGPR();
</del><ins>+ JSValueRegs thisRegs = thisValue.jsValueRegs();
</ins><span class="cx"> JSValueOperand value(this, node->child3());
</span><del>- GPRReg valueTag = value.tagGPR();
- GPRReg valuePayload = value.payloadGPR();
</del><ins>+ JSValueRegs valueRegs = value.jsValueRegs();
</ins><span class="cx">
</span><span class="cx"> flushRegisters();
</span><span class="cx"> callOperation(m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByIdWithThisStrict : operationPutByIdWithThis,
</span><del>- NoResult, baseTag, basePayload, thisValueTag, thisValuePayload, valueTag, valuePayload, identifierUID(node->identifierNumber()));
</del><ins>+ NoResult, baseRegs, thisRegs, valueRegs, identifierUID(node->identifierNumber()));
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> noResult(node);
</span><span class="lines">@@ -4843,14 +4806,14 @@
</span><span class="cx">
</span><span class="cx"> GPRReg argumentsTagGPR;
</span><span class="cx"> GPRReg argumentsPayloadGPR;
</span><ins>+ JSValueRegs argumentsRegs;
</ins><span class="cx"> {
</span><span class="cx"> JSValueOperand arguments(this, node->child1());
</span><del>- argumentsTagGPR = arguments.tagGPR();
- argumentsPayloadGPR = arguments.payloadGPR();
</del><ins>+ argumentsRegs = arguments.jsValueRegs();
</ins><span class="cx"> flushRegisters();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- callOperation(operationSizeOfVarargs, GPRInfo::returnValueGPR, argumentsTagGPR, argumentsPayloadGPR, data->offset);
</del><ins>+ callOperation(operationSizeOfVarargs, GPRInfo::returnValueGPR, argumentsRegs, data->offset);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> lock(GPRInfo::returnValueGPR);
</span><span class="lines">@@ -4858,6 +4821,7 @@
</span><span class="cx"> JSValueOperand arguments(this, node->child1());
</span><span class="cx"> argumentsTagGPR = arguments.tagGPR();
</span><span class="cx"> argumentsPayloadGPR = arguments.payloadGPR();
</span><ins>+ argumentsRegs = arguments.jsValueRegs();
</ins><span class="cx"> flushRegisters();
</span><span class="cx"> }
</span><span class="cx"> unlock(GPRInfo::returnValueGPR);
</span><span class="lines">@@ -4880,7 +4844,7 @@
</span><span class="cx">
</span><span class="cx"> m_jit.store32(argCountIncludingThisGPR, JITCompiler::payloadFor(data->machineCount));
</span><span class="cx">
</span><del>- callOperation(operationLoadVarargs, data->machineStart.offset(), argumentsTagGPR, argumentsPayloadGPR, data->offset, GPRInfo::returnValueGPR, data->mandatoryMinimum);
</del><ins>+ callOperation(operationLoadVarargs, data->machineStart.offset(), argumentsRegs, data->offset, GPRInfo::returnValueGPR, data->mandatoryMinimum);
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx">
</span><span class="cx"> noResult(node);
</span><span class="lines">@@ -4964,13 +4928,12 @@
</span><span class="cx"> SpeculateCellOperand property(this, node->child2());
</span><span class="cx"> GPRFlushedCallResult resultPayload(this);
</span><span class="cx"> GPRFlushedCallResult2 resultTag(this);
</span><del>- GPRReg basePayloadGPR = base.payloadGPR();
- GPRReg baseTagGPR = base.tagGPR();
</del><ins>+ JSValueRegs baseRegs = base.jsValueRegs();
</ins><span class="cx"> GPRReg resultPayloadGPR = resultPayload.gpr();
</span><span class="cx"> GPRReg resultTagGPR = resultTag.gpr();
</span><span class="cx">
</span><span class="cx"> flushRegisters();
</span><del>- callOperation(operationHasGenericProperty, resultTagGPR, resultPayloadGPR, baseTagGPR, basePayloadGPR, property.gpr());
</del><ins>+ callOperation(operationHasGenericProperty, JSValueRegs(resultTagGPR, resultPayloadGPR), baseRegs, property.gpr());
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> booleanResult(resultPayloadGPR, node);
</span><span class="cx"> break;
</span><span class="lines">@@ -4998,7 +4961,8 @@
</span><span class="cx">
</span><span class="cx"> done.link(&m_jit);
</span><span class="cx">
</span><del>- addSlowPathGenerator(slowPathCall(wrongStructure, this, operationHasGenericProperty, resultTagGPR, resultPayloadGPR, baseTagGPR, basePayloadGPR, propertyGPR));
</del><ins>+ addSlowPathGenerator(slowPathCall(wrongStructure, this, operationHasGenericProperty,
+ JSValueRegs(resultTagGPR, resultPayloadGPR), JSValueRegs(baseTagGPR, basePayloadGPR), propertyGPR));
</ins><span class="cx"> booleanResult(resultPayloadGPR, node);
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -5064,7 +5028,7 @@
</span><span class="cx"> moveTrueTo(resultPayloadGPR);
</span><span class="cx"> MacroAssembler::Jump done = m_jit.jump();
</span><span class="cx">
</span><del>- addSlowPathGenerator(slowPathCall(slowCases, this, operationHasIndexedProperty, resultTagGPR, resultPayloadGPR, baseGPR, indexGPR));
</del><ins>+ addSlowPathGenerator(slowPathCall(slowCases, this, operationHasIndexedProperty, JSValueRegs(resultTagGPR, resultPayloadGPR), baseGPR, indexGPR));
</ins><span class="cx">
</span><span class="cx"> done.link(&m_jit);
</span><span class="cx"> booleanResult(resultPayloadGPR, node);
</span><span class="lines">@@ -5091,7 +5055,7 @@
</span><span class="cx"> // Not enough registers on X86 for this code, so always use the slow path.
</span><span class="cx"> flushRegisters();
</span><span class="cx"> m_jit.move(MacroAssembler::TrustedImm32(JSValue::CellTag), scratchGPR);
</span><del>- callOperation(operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, scratchGPR, propertyGPR);
</del><ins>+ callOperation(operationGetByValCell, JSValueRegs(resultTagGPR, resultPayloadGPR), baseGPR, JSValueRegs(scratchGPR, propertyGPR));
</ins><span class="cx"> m_jit.exceptionCheck();
</span><span class="cx"> #else
</span><span class="cx"> GPRTemporary resultPayload(this);
</span><span class="lines">@@ -5149,7 +5113,7 @@
</span><span class="cx">
</span><span class="cx"> done.link(&m_jit);
</span><span class="cx">
</span><del>- addSlowPathGenerator(slowPathCall(slowPath, this, operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, propertyGPR));
</del><ins>+ addSlowPathGenerator(slowPathCall(slowPath, this, operationGetByValCell, JSValueRegs(resultTagGPR, resultPayloadGPR), baseGPR, propertyGPR));
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> jsValueResult(resultTagGPR, resultPayloadGPR, node);
</span></span></pre>
</div>
</div>
</body>
</html>