<!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>[150109] branches/dfgFourthTier/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/150109">150109</a></dd>
<dt>Author</dt> <dd>mark.lam@apple.com</dd>
<dt>Date</dt> <dd>2013-05-15 08:05:24 -0700 (Wed, 15 May 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refactor JITStubs.cpp to move CPU specific parts out into their own files.
https://bugs.webkit.org/show_bug.cgi?id=116135.

Reviewed by Michael Saboff.

This mod only moves the CPU specific parts out. There is no code change.
Tested on debug builds of X86, X86_64, ARM and ARMv7. The SH4 and MIPS
ports are untested. Windows port also not tested.

* GNUmakefile.list.am:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* jit/JITStubs.cpp:
(JSC::performPlatformSpecificJITAssertions):
* jit/JITStubsARM.h: Added.
(JSC::ctiTrampoline):
(JSC::ctiTrampolineEnd):
(JSC::ctiVMThrowTrampoline):
(JSC::ctiOpThrowNotCaught):
(JSC::performARMJITAssertions):
* jit/JITStubsARMv7.h: Added.
(JSC::ctiTrampoline):
(JSC::ctiVMThrowTrampoline):
(JSC::ctiOpThrowNotCaught):
(JSC::performARMv7JITAssertions):
* jit/JITStubsMIPS.h: Added.
(JSC::performMIPSJITAssertions):
* jit/JITStubsSH4.h: Added.
* jit/JITStubsX86.h: Added.
* jit/JITStubsX86_64.h: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreChangeLog">branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreGNUmakefilelistam">branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcprojJavaScriptCoreJavaScriptCorevcproj">branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubscpp">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsARMh">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARM.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsARMv7h">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARMv7.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsMIPSh">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsMIPS.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsSH4h">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsSH4.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsX86h">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubsX86_64h">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86_64.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesdfgFourthTierSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2013-05-14  Mark Lam  &lt;mark.lam@apple.com&gt;
+
+        Refactor JITStubs.cpp to move CPU specific parts out into their own files.
+        https://bugs.webkit.org/show_bug.cgi?id=116135.
+
+        Reviewed by Michael Saboff.
+
+        This mod only moves the CPU specific parts out. There is no code change.
+        Tested on debug builds of X86, X86_64, ARM and ARMv7. The SH4 and MIPS
+        ports are untested. Windows port also not tested.
+
+        * GNUmakefile.list.am:
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * jit/JITStubs.cpp:
+        (JSC::performPlatformSpecificJITAssertions):
+        * jit/JITStubsARM.h: Added.
+        (JSC::ctiTrampoline):
+        (JSC::ctiTrampolineEnd):
+        (JSC::ctiVMThrowTrampoline):
+        (JSC::ctiOpThrowNotCaught):
+        (JSC::performARMJITAssertions):
+        * jit/JITStubsARMv7.h: Added.
+        (JSC::ctiTrampoline):
+        (JSC::ctiVMThrowTrampoline):
+        (JSC::ctiOpThrowNotCaught):
+        (JSC::performARMv7JITAssertions):
+        * jit/JITStubsMIPS.h: Added.
+        (JSC::performMIPSJITAssertions):
+        * jit/JITStubsSH4.h: Added.
+        * jit/JITStubsX86.h: Added.
+        * jit/JITStubsX86_64.h: Added.
+
</ins><span class="cx"> 2013-05-14  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         fourthTier: Segfault in jsc with simple test program when running with profile dumping enabled
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -471,6 +471,12 @@
</span><span class="cx">         Source/JavaScriptCore/jit/JITStubRoutine.h \
</span><span class="cx">         Source/JavaScriptCore/jit/JITStubs.cpp \
</span><span class="cx">         Source/JavaScriptCore/jit/JITStubs.h \
</span><ins>+        Source/JavaScriptCore/jit/JITStubsARM.h \
+        Source/JavaScriptCore/jit/JITStubsARMv7.h \
+        Source/JavaScriptCore/jit/JITStubsMIPS.h \
+        Source/JavaScriptCore/jit/JITStubsSH4.h \
+        Source/JavaScriptCore/jit/JITStubsX86.h \
+        Source/JavaScriptCore/jit/JITStubsX86_64.h \
</ins><span class="cx">         Source/JavaScriptCore/jit/JITThunks.cpp \
</span><span class="cx">         Source/JavaScriptCore/jit/JITThunks.h \
</span><span class="cx">         Source/JavaScriptCore/jit/JITWriteBarrier.h \
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcprojJavaScriptCoreJavaScriptCorevcproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -2241,6 +2241,10 @@
</span><span class="cx">                                 RelativePath=&quot;..\..\jit\JITStubs.h&quot;
</span><span class="cx">                                 &gt;
</span><span class="cx">                         &lt;/File&gt;
</span><ins>+                        &lt;File
+                                RelativePath=&quot;..\..\jit\JITStubsX86.h&quot;
+                                &gt;
+                        &lt;/File&gt;
</ins><span class="cx">             &lt;File
</span><span class="cx">                                 RelativePath=&quot;..\..\jit\JITThunks.cpp&quot;
</span><span class="cx">                                 &gt;
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -568,6 +568,8 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JITStubCall.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JITStubRoutine.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JITStubs.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\jit\JITStubsX86.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\jit\JITStubsX86_64.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JITThunks.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JITWriteBarrier.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\jit\JSInterfaceJIT.h&quot; /&gt;
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -938,6 +938,10 @@
</span><span class="cx">                 FE4A331F15BD2E07006F54F3 /* VMInspector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */; };
</span><span class="cx">                 FE4A332015BD2E07006F54F3 /* VMInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4A331E15BD2E07006F54F3 /* VMInspector.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */ = {isa = PBXBuildFile; fileRef = FED287B115EC9A5700DA8161 /* LLIntOpcode.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                FEF6835E174343CC00A32E25 /* JITStubsARM.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835A174343CC00A32E25 /* JITStubsARM.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                FEF6835F174343CC00A32E25 /* JITStubsARMv7.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835B174343CC00A32E25 /* JITStubsARMv7.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                FEF68360174343CC00A32E25 /* JITStubsX86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835C174343CC00A32E25 /* JITStubsX86_64.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                FEF68361174343CC00A32E25 /* JITStubsX86.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835D174343CC00A32E25 /* JITStubsX86.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXContainerItemProxy section */
</span><span class="lines">@@ -1947,6 +1951,10 @@
</span><span class="cx">                 FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VMInspector.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FE4A331E15BD2E07006F54F3 /* VMInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMInspector.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FED287B115EC9A5700DA8161 /* LLIntOpcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntOpcode.h; path = llint/LLIntOpcode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                FEF6835A174343CC00A32E25 /* JITStubsARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsARM.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                FEF6835B174343CC00A32E25 /* JITStubsARMv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsARMv7.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                FEF6835C174343CC00A32E25 /* JITStubsX86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsX86_64.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                FEF6835D174343CC00A32E25 /* JITStubsX86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsX86.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx"> /* End PBXFileReference section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXFrameworksBuildPhase section */
</span><span class="lines">@@ -2266,6 +2274,10 @@
</span><span class="cx">                                 0F766D1C15A5028D008F363E /* JITStubRoutine.h */,
</span><span class="cx">                                 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */,
</span><span class="cx">                                 14A6581A0F4E36F4000150FD /* JITStubs.h */,
</span><ins>+                                FEF6835A174343CC00A32E25 /* JITStubsARM.h */,
+                                FEF6835B174343CC00A32E25 /* JITStubsARMv7.h */,
+                                FEF6835C174343CC00A32E25 /* JITStubsX86_64.h */,
+                                FEF6835D174343CC00A32E25 /* JITStubsX86.h */,
</ins><span class="cx">                                 0F5EF91B16878F78003E5C25 /* JITThunks.cpp */,
</span><span class="cx">                                 0F5EF91C16878F78003E5C25 /* JITThunks.h */,
</span><span class="cx">                                 A76F54A213B28AAB00EF2BCE /* JITWriteBarrier.h */,
</span><span class="lines">@@ -3181,6 +3193,10 @@
</span><span class="cx">                                 0F0D85B21723455400338210 /* CodeBlockLock.h in Headers */,
</span><span class="cx">                                 0F63945515D07057006A597C /* ArrayProfile.h in Headers */,
</span><span class="cx">                                 BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */,
</span><ins>+                                FEF6835F174343CC00A32E25 /* JITStubsARMv7.h in Headers */,
+                                FEF68360174343CC00A32E25 /* JITStubsX86_64.h in Headers */,
+                                FEF6835E174343CC00A32E25 /* JITStubsARM.h in Headers */,
+                                FEF68361174343CC00A32E25 /* JITStubsX86.h in Headers */,
</ins><span class="cx">                                 86E3C61D167BABEE006D760A /* JSVirtualMachineInternal.h in Headers */,
</span><span class="cx">                                 BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */,
</span><span class="cx">                                 86E3C617167BABEE006D760A /* JSContextInternal.h in Headers */,
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubscpp"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp (150108 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp        2013-05-15 10:54:24 UTC (rev 150108)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -75,663 +75,24 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace std;
</span><span class="cx"> 
</span><del>-namespace JSC {
-
-#if USE(JSVALUE32_64)
-
-#if COMPILER(GCC) &amp;&amp; CPU(X86)
-
-// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
-// need to change the assembly trampolines below to match.
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
-
-asm (
-&quot;.text\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;pushl %ebp&quot; &quot;\n&quot;
-    &quot;movl %esp, %ebp&quot; &quot;\n&quot;
-    &quot;pushl %esi&quot; &quot;\n&quot;
-    &quot;pushl %edi&quot; &quot;\n&quot;
-    &quot;pushl %ebx&quot; &quot;\n&quot;
-    &quot;subl $0x3c, %esp&quot; &quot;\n&quot;
-    &quot;movl 0x58(%esp), %edi&quot; &quot;\n&quot;
-    &quot;call *0x50(%esp)&quot; &quot;\n&quot;
-    &quot;addl $0x3c, %esp&quot; &quot;\n&quot;
-    &quot;popl %ebx&quot; &quot;\n&quot;
-    &quot;popl %edi&quot; &quot;\n&quot;
-    &quot;popl %esi&quot; &quot;\n&quot;
-    &quot;popl %ebp&quot; &quot;\n&quot;
-    &quot;ret&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;movl %esp, %ecx&quot; &quot;\n&quot;
-    &quot;call &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
-    &quot;int3&quot; &quot;\n&quot;
-);
-    
-asm (
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;addl $0x3c, %esp&quot; &quot;\n&quot;
-    &quot;popl %ebx&quot; &quot;\n&quot;
-    &quot;popl %edi&quot; &quot;\n&quot;
-    &quot;popl %esi&quot; &quot;\n&quot;
-    &quot;popl %ebp&quot; &quot;\n&quot;
-    &quot;ret&quot; &quot;\n&quot;
-);
-    
-#elif (COMPILER(GCC) || COMPILER(RVCT)) &amp;&amp; CPU(ARM_THUMB2)
-
-#define THUNK_RETURN_ADDRESS_OFFSET      0x38
-#define PRESERVED_RETURN_ADDRESS_OFFSET  0x3C
-#define PRESERVED_R4_OFFSET              0x40
-#define PRESERVED_R5_OFFSET              0x44
-#define PRESERVED_R6_OFFSET              0x48
-#define PRESERVED_R7_OFFSET              0x4C
-#define PRESERVED_R8_OFFSET              0x50
-#define PRESERVED_R9_OFFSET              0x54
-#define PRESERVED_R10_OFFSET             0x58
-#define PRESERVED_R11_OFFSET             0x5C
-#define REGISTER_FILE_OFFSET             0x60
-#define FIRST_STACK_ARGUMENT             0x68
-
-#elif (COMPILER(GCC) || COMPILER(MSVC) || COMPILER(RVCT)) &amp;&amp; CPU(ARM_TRADITIONAL)
-
-// Also update the MSVC section (defined at DEFINE_STUB_FUNCTION)
-// when changing one of the following values.
-#define THUNK_RETURN_ADDRESS_OFFSET 64
-#define PRESERVEDR4_OFFSET          68
-
-#elif COMPILER(MSVC) &amp;&amp; CPU(X86)
-
-// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
-// need to change the assembly trampolines below to match.
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
-
-extern &quot;C&quot; {
-
-    __declspec(naked) EncodedJSValue ctiTrampoline(void* code, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
-    {
-        __asm {
-            push ebp;
-            mov ebp, esp;
-            push esi;
-            push edi;
-            push ebx;
-            sub esp, 0x3c;
-            mov ecx, esp;
-            mov edi, [esp + 0x58];
-            call [esp + 0x50];
-            add esp, 0x3c;
-            pop ebx;
-            pop edi;
-            pop esi;
-            pop ebp;
-            ret;
-        }
-    }
-
-    __declspec(naked) void ctiVMThrowTrampoline()
-    {
-        __asm {
-            mov ecx, esp;
-            call cti_vm_throw;
-            add esp, 0x3c;
-            pop ebx;
-            pop edi;
-            pop esi;
-            pop ebp;
-            ret;
-        }
-    }
-
-    __declspec(naked) void ctiOpThrowNotCaught()
-    {
-        __asm {
-            add esp, 0x3c;
-            pop ebx;
-            pop edi;
-            pop esi;
-            pop ebp;
-            ret;
-        }
-    }
-}
-
</del><ins>+#if CPU(ARM_TRADITIONAL)
+#include &quot;JITStubsARM.h&quot;
+#elif CPU(ARM_THUMB2)
+#include &quot;JITStubsARMv7.h&quot;
</ins><span class="cx"> #elif CPU(MIPS)
</span><del>-
-#define PRESERVED_GP_OFFSET         60
-#define PRESERVED_S0_OFFSET         64
-#define PRESERVED_S1_OFFSET         68
-#define PRESERVED_S2_OFFSET         72
-#define PRESERVED_S3_OFFSET         76
-#define PRESERVED_S4_OFFSET         80
-#define PRESERVED_RETURN_ADDRESS_OFFSET 84
-#define THUNK_RETURN_ADDRESS_OFFSET 88
-#define REGISTER_FILE_OFFSET        92
-#define GLOBAL_DATA_OFFSET         108
-#define STACK_LENGTH               112
-
</del><ins>+#include &quot;JITStubsMIPS.h&quot;
</ins><span class="cx"> #elif CPU(SH4)
</span><del>-
-#define SYMBOL_STRING(name) #name
-/* code (r4), JSStack* (r5), CallFrame* (r6), void* unused1 (r7), void* unused2(sp), VM (sp)*/
-
-asm volatile (
-&quot;.text\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;mov.l r7, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r6, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r5, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r8, @-r15&quot; &quot;\n&quot;
-    &quot;mov #127, r8&quot; &quot;\n&quot;
-    &quot;mov.l r14, @-r15&quot; &quot;\n&quot;
-    &quot;sts.l pr, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r13, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r11, @-r15&quot; &quot;\n&quot;
-    &quot;mov.l r10, @-r15&quot; &quot;\n&quot;
-    &quot;add #-60, r15&quot; &quot;\n&quot;
-    &quot;mov r6, r14&quot; &quot;\n&quot;
-    &quot;jsr @r4&quot; &quot;\n&quot;
-    &quot;nop&quot; &quot;\n&quot;
-    &quot;add #60, r15&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
-    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
-    &quot;add #12, r15&quot; &quot;\n&quot;
-    &quot;rts&quot; &quot;\n&quot;
-    &quot;nop&quot; &quot;\n&quot;
-);
-
-asm volatile (
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;mov.l .L2&quot;SYMBOL_STRING(cti_vm_throw)&quot;,r0&quot; &quot;\n&quot;
-    &quot;mov r15, r4&quot; &quot;\n&quot;
-    &quot;mov.l @(r0,r12),r11&quot; &quot;\n&quot;
-    &quot;jsr @r11&quot; &quot;\n&quot;
-    &quot;nop&quot; &quot;\n&quot;
-    &quot;add #60, r15&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
-    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
-    &quot;add #12, r15&quot; &quot;\n&quot;
-    &quot;rts&quot; &quot;\n&quot;
-    &quot;nop&quot; &quot;\n&quot;
-    &quot;.align 2&quot; &quot;\n&quot;
-    &quot;.L2&quot;SYMBOL_STRING(cti_vm_throw)&quot;:.long &quot; SYMBOL_STRING(cti_vm_throw)&quot;@GOT \n&quot;
-);
-
-asm volatile (
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;add #60, r15&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
-    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
-    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
-    &quot;add #12, r15&quot; &quot;\n&quot;
-    &quot;rts&quot; &quot;\n&quot;
-    &quot;nop&quot; &quot;\n&quot;
-);
</del><ins>+#include &quot;JITStubsSH4.h&quot;
+#elif CPU(X86)
+#include &quot;JITStubsX86.h&quot;
+#elif CPU(X86_64)
+#include &quot;JITStubsX86_64.h&quot;
</ins><span class="cx"> #else
</span><del>-    #error &quot;JIT not supported on this platform.&quot;
</del><ins>+#error &quot;JIT not supported on this platform.&quot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#else // USE(JSVALUE32_64)
</del><ins>+namespace JSC {
</ins><span class="cx"> 
</span><del>-#if COMPILER(GCC) &amp;&amp; CPU(X86_64)
-
-// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
-// need to change the assembly trampolines below to match.
-COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x48, JITStackFrame_code_offset_matches_ctiTrampoline);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x78, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
-asm (
-&quot;.text\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;pushq %rbp&quot; &quot;\n&quot;
-    &quot;movq %rsp, %rbp&quot; &quot;\n&quot;
-    &quot;pushq %r12&quot; &quot;\n&quot;
-    &quot;pushq %r13&quot; &quot;\n&quot;
-    &quot;pushq %r14&quot; &quot;\n&quot;
-    &quot;pushq %r15&quot; &quot;\n&quot;
-    &quot;pushq %rbx&quot; &quot;\n&quot;
-    // Form the JIT stubs area
-    &quot;pushq %r9&quot; &quot;\n&quot;
-    &quot;pushq %r8&quot; &quot;\n&quot;
-    &quot;pushq %rcx&quot; &quot;\n&quot;
-    &quot;pushq %rdx&quot; &quot;\n&quot;
-    &quot;pushq %rsi&quot; &quot;\n&quot;
-    &quot;pushq %rdi&quot; &quot;\n&quot;
-    &quot;subq $0x48, %rsp&quot; &quot;\n&quot;
-    &quot;movq $512, %r12&quot; &quot;\n&quot;
-    &quot;movq $0xFFFF000000000000, %r14&quot; &quot;\n&quot;
-    &quot;movq $0xFFFF000000000002, %r15&quot; &quot;\n&quot;
-    &quot;movq %rdx, %r13&quot; &quot;\n&quot;
-    &quot;call *%rdi&quot; &quot;\n&quot;
-    &quot;addq $0x78, %rsp&quot; &quot;\n&quot;
-    &quot;popq %rbx&quot; &quot;\n&quot;
-    &quot;popq %r15&quot; &quot;\n&quot;
-    &quot;popq %r14&quot; &quot;\n&quot;
-    &quot;popq %r13&quot; &quot;\n&quot;
-    &quot;popq %r12&quot; &quot;\n&quot;
-    &quot;popq %rbp&quot; &quot;\n&quot;
-    &quot;ret&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;movq %rsp, %rdi&quot; &quot;\n&quot;
-    &quot;call &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
-    &quot;int3&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;addq $0x78, %rsp&quot; &quot;\n&quot;
-    &quot;popq %rbx&quot; &quot;\n&quot;
-    &quot;popq %r15&quot; &quot;\n&quot;
-    &quot;popq %r14&quot; &quot;\n&quot;
-    &quot;popq %r13&quot; &quot;\n&quot;
-    &quot;popq %r12&quot; &quot;\n&quot;
-    &quot;popq %rbp&quot; &quot;\n&quot;
-    &quot;ret&quot; &quot;\n&quot;
-);
-
-#elif COMPILER(MSVC) &amp;&amp; CPU(X86_64)
-
-// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
-// need to change the assembly trampolines in JITStubsMSVC64.asm to match.
-COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
-COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x58, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
-#else
-    #error &quot;JIT not supported on this platform.&quot;
-#endif
-
-#endif // USE(JSVALUE32_64)
-
-#if CPU(MIPS)
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.set noreorder&quot; &quot;\n&quot;
-&quot;.set nomacro&quot; &quot;\n&quot;
-&quot;.set nomips16&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-&quot;.ent &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;addiu $29,$29,-&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
-    &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;sw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;sw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;sw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;sw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;sw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-#if WTF_MIPS_PIC
-    &quot;sw    $28,&quot; STRINGIZE_VALUE_OF(PRESERVED_GP_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-#endif
-    &quot;move  $16,$6       # set callFrameRegister&quot; &quot;\n&quot;
-    &quot;li    $17,512      # set timeoutCheckRegister&quot; &quot;\n&quot;
-    &quot;move  $25,$4       # move executableAddress to t9&quot; &quot;\n&quot;
-    &quot;sw    $5,&quot; STRINGIZE_VALUE_OF(REGISTER_FILE_OFFSET) &quot;($29) # store JSStack to current stack&quot; &quot;\n&quot;
-    &quot;lw    $9,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH + 20) &quot;($29)    # load vm from previous stack&quot; &quot;\n&quot;
-    &quot;jalr  $25&quot; &quot;\n&quot;
-    &quot;sw    $9,&quot; STRINGIZE_VALUE_OF(GLOBAL_DATA_OFFSET) &quot;($29)   # store vm to current stack&quot; &quot;\n&quot;
-    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;jr    $31&quot; &quot;\n&quot;
-    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
-&quot;.set reorder&quot; &quot;\n&quot;
-&quot;.set macro&quot; &quot;\n&quot;
-&quot;.end &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.set noreorder&quot; &quot;\n&quot;
-&quot;.set nomacro&quot; &quot;\n&quot;
-&quot;.set nomips16&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-&quot;.ent &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-#if WTF_MIPS_PIC
-&quot;.set macro&quot; &quot;\n&quot;
-&quot;.cpload $31&quot; &quot;\n&quot;
-    &quot;la    $25,&quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
-&quot;.set nomacro&quot; &quot;\n&quot;
-    &quot;bal &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
-    &quot;move  $4,$29&quot; &quot;\n&quot;
-#else
-    &quot;jal &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
-    &quot;move  $4,$29&quot; &quot;\n&quot;
-#endif
-    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;jr    $31&quot; &quot;\n&quot;
-    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
-&quot;.set reorder&quot; &quot;\n&quot;
-&quot;.set macro&quot; &quot;\n&quot;
-&quot;.end &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-);
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.set noreorder&quot; &quot;\n&quot;
-&quot;.set nomacro&quot; &quot;\n&quot;
-&quot;.set nomips16&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-&quot;.ent &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
-    &quot;jr    $31&quot; &quot;\n&quot;
-    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
-&quot;.set reorder&quot; &quot;\n&quot;
-&quot;.set macro&quot; &quot;\n&quot;
-&quot;.end &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-);
-#endif
-
-#if COMPILER(GCC) &amp;&amp; CPU(ARM_THUMB2)
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
-&quot;.thumb&quot; &quot;\n&quot;
-&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;sub sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
-    &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;str r1, [sp, #&quot; STRINGIZE_VALUE_OF(REGISTER_FILE_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;mov r5, r2&quot; &quot;\n&quot;
-    &quot;mov r6, #512&quot; &quot;\n&quot;
-    &quot;blx r0&quot; &quot;\n&quot;
-    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
-    &quot;bx lr&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
-&quot;.thumb&quot; &quot;\n&quot;
-&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiTrampolineEnd) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
-&quot;.thumb&quot; &quot;\n&quot;
-&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiVMThrowTrampoline) &quot;\n&quot;
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;mov r0, sp&quot; &quot;\n&quot;
-    &quot;bl &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
-    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
-    &quot;bx lr&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.align 2&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
-&quot;.thumb&quot; &quot;\n&quot;
-&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiOpThrowNotCaught) &quot;\n&quot;
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
-    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
-    &quot;bx lr&quot; &quot;\n&quot;
-);
-
-#elif COMPILER(GCC) &amp;&amp; CPU(ARM_TRADITIONAL)
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
-INLINE_ARM_FUNCTION(ctiTrampoline)
-SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;stmdb sp!, {r1-r3}&quot; &quot;\n&quot;
-    &quot;stmdb sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
-    &quot;sub sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
-    &quot;mov r5, r2&quot; &quot;\n&quot;
-    &quot;mov r6, #512&quot; &quot;\n&quot;
-    // r0 contains the code
-    &quot;blx r0&quot; &quot;\n&quot;
-    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
-    &quot;ldmia sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
-    &quot;add sp, sp, #12&quot; &quot;\n&quot;
-    &quot;bx lr&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
-HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
-SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
-);
-
-asm (
-&quot;.text&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
-HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
-INLINE_ARM_FUNCTION(ctiVMThrowTrampoline)
-SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
-    &quot;mov r0, sp&quot; &quot;\n&quot;
-    &quot;bl &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
-
-// Both has the same return sequence
-&quot;.text&quot; &quot;\n&quot;
-&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
-HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
-INLINE_ARM_FUNCTION(ctiOpThrowNotCaught)
-SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
-    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
-    &quot;ldmia sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
-    &quot;add sp, sp, #12&quot; &quot;\n&quot;
-    &quot;bx lr&quot; &quot;\n&quot;
-);
-
-#elif COMPILER(RVCT) &amp;&amp; CPU(ARM_THUMB2)
-
-__asm EncodedJSValue ctiTrampoline(void*, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
-{
-    PRESERVE8
-    sub sp, sp, # FIRST_STACK_ARGUMENT
-    str lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
-    str r4, [sp, # PRESERVED_R4_OFFSET ]
-    str r5, [sp, # PRESERVED_R5_OFFSET ]
-    str r6, [sp, # PRESERVED_R6_OFFSET ]
-    str r7, [sp, # PRESERVED_R7_OFFSET ]
-    str r8, [sp, # PRESERVED_R8_OFFSET ]
-    str r9, [sp, # PRESERVED_R9_OFFSET ]
-    str r10, [sp, # PRESERVED_R10_OFFSET ]
-    str r11, [sp, # PRESERVED_R11_OFFSET ]
-    str r1, [sp, # REGISTER_FILE_OFFSET ]
-    mov r5, r2
-    mov r6, #512
-    blx r0
-    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
-    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
-    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
-    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
-    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
-    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
-    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
-    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
-    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
-    add sp, sp, # FIRST_STACK_ARGUMENT
-    bx lr
-}
-
-__asm void ctiVMThrowTrampoline()
-{
-    PRESERVE8
-    mov r0, sp
-    bl cti_vm_throw
-    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
-    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
-    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
-    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
-    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
-    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
-    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
-    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
-    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
-    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
-    add sp, sp, # FIRST_STACK_ARGUMENT
-    bx lr
-}
-
-__asm void ctiOpThrowNotCaught()
-{
-    PRESERVE8
-    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
-    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
-    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
-    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
-    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
-    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
-    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
-    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
-    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
-    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
-    add sp, sp, # FIRST_STACK_ARGUMENT
-    bx lr
-}
-
-#elif COMPILER(RVCT) &amp;&amp; CPU(ARM_TRADITIONAL)
-
-__asm EncodedJSValue ctiTrampoline(void*, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
-{
-    ARM
-    stmdb sp!, {r1-r3}
-    stmdb sp!, {r4-r6, r8-r11, lr}
-    sub sp, sp, # PRESERVEDR4_OFFSET
-    mov r5, r2
-    mov r6, #512
-    mov lr, pc
-    bx r0
-    add sp, sp, # PRESERVEDR4_OFFSET
-    ldmia sp!, {r4-r6, r8-r11, lr}
-    add sp, sp, #12
-    bx lr
-}
-__asm void ctiTrampolineEnd()
-{
-}
-
-__asm void ctiVMThrowTrampoline()
-{
-    ARM
-    PRESERVE8
-    mov r0, sp
-    bl cti_vm_throw
-    add sp, sp, # PRESERVEDR4_OFFSET
-    ldmia sp!, {r4-r6, r8-r11, lr}
-    add sp, sp, #12
-    bx lr
-}
-
-__asm void ctiOpThrowNotCaught()
-{
-    ARM
-    add sp, sp, # PRESERVEDR4_OFFSET
-    ldmia sp!, {r4-r8, lr}
-    add sp, sp, #12
-    bx lr
-}
-#endif
-
</del><span class="cx"> #if ENABLE(OPCODE_SAMPLING)
</span><span class="cx">     #define CTI_SAMPLER stackFrame.vm-&gt;interpreter-&gt;sampler()
</span><span class="cx"> #else
</span><span class="lines">@@ -744,41 +105,11 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx"> #if CPU(ARM_THUMB2)
</span><del>-    // Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it contains non POD types),
-    // and the OBJECT_OFFSETOF macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT
-    // macros.
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == PRESERVED_RETURN_ADDRESS_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR4) == PRESERVED_R4_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR5) == PRESERVED_R5_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR6) == PRESERVED_R6_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR7) == PRESERVED_R7_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR8) == PRESERVED_R8_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR9) == PRESERVED_R9_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR10) == PRESERVED_R10_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR11) == PRESERVED_R11_OFFSET);
-
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, stack) == REGISTER_FILE_OFFSET);
-    // The fifth argument is the first item already on the stack.
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, unused1) == FIRST_STACK_ARGUMENT);
-
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
-
</del><ins>+    performARMv7JITAssertions();
</ins><span class="cx"> #elif CPU(ARM_TRADITIONAL)
</span><del>-
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR4) == PRESERVEDR4_OFFSET);
-
-
</del><ins>+    performARMJITAssertions();
</ins><span class="cx"> #elif CPU(MIPS)
</span><del>-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedGP) == PRESERVED_GP_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS0) == PRESERVED_S0_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS1) == PRESERVED_S1_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS2) == PRESERVED_S2_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == PRESERVED_RETURN_ADDRESS_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, stack) == REGISTER_FILE_OFFSET);
-    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, vm) == GLOBAL_DATA_OFFSET);
-
</del><ins>+    performMIPSJITAssertions();
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1040,211 +371,8 @@
</span><span class="cx">     return throwExceptionFromOpCall&lt;T&gt;(jitStackFrame, newCallFrame, returnAddressSlot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if CPU(ARM_THUMB2) &amp;&amp; COMPILER(GCC)
-
-#define DEFINE_STUB_FUNCTION(rtype, op) \
-    extern &quot;C&quot; { \
-        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
-    }; \
-    asm ( \
-        &quot;.text&quot; &quot;\n&quot; \
-        &quot;.align 2&quot; &quot;\n&quot; \
-        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        HIDE_SYMBOL(cti_##op) &quot;\n&quot;             \
-        &quot;.thumb&quot; &quot;\n&quot; \
-        &quot;.thumb_func &quot; THUMB_FUNC_PARAM(cti_##op) &quot;\n&quot; \
-        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
-        &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
-        &quot;bl &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
-        &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
-        &quot;bx lr&quot; &quot;\n&quot; \
-        ); \
-    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) \
-
-#elif CPU(MIPS)
-#if WTF_MIPS_PIC
-#define DEFINE_STUB_FUNCTION(rtype, op) \
-    extern &quot;C&quot; { \
-        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
-    }; \
-    asm ( \
-        &quot;.text&quot; &quot;\n&quot; \
-        &quot;.align 2&quot; &quot;\n&quot; \
-        &quot;.set noreorder&quot; &quot;\n&quot; \
-        &quot;.set nomacro&quot; &quot;\n&quot; \
-        &quot;.set nomips16&quot; &quot;\n&quot; \
-        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        &quot;.ent &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
-        &quot;.set macro&quot; &quot;\n&quot; \
-        &quot;.cpload $25&quot; &quot;\n&quot; \
-        &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
-        &quot;la    $25,&quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
-        &quot;.set nomacro&quot; &quot;\n&quot; \
-        &quot;.reloc 1f,R_MIPS_JALR,&quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
-        &quot;1: jalr $25&quot; &quot;\n&quot; \
-        &quot;nop&quot; &quot;\n&quot; \
-        &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
-        &quot;jr    $31&quot; &quot;\n&quot; \
-        &quot;nop&quot; &quot;\n&quot; \
-        &quot;.set reorder&quot; &quot;\n&quot; \
-        &quot;.set macro&quot; &quot;\n&quot; \
-        &quot;.end &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        ); \
-    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-
-#else // WTF_MIPS_PIC
-#define DEFINE_STUB_FUNCTION(rtype, op) \
-    extern &quot;C&quot; { \
-        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
-    }; \
-    asm ( \
-        &quot;.text&quot; &quot;\n&quot; \
-        &quot;.align 2&quot; &quot;\n&quot; \
-        &quot;.set noreorder&quot; &quot;\n&quot; \
-        &quot;.set nomacro&quot; &quot;\n&quot; \
-        &quot;.set nomips16&quot; &quot;\n&quot; \
-        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        &quot;.ent &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
-        &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
-        &quot;jal &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
-        &quot;nop&quot; &quot;\n&quot; \
-        &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
-        &quot;jr    $31&quot; &quot;\n&quot; \
-        &quot;nop&quot; &quot;\n&quot; \
-        &quot;.set reorder&quot; &quot;\n&quot; \
-        &quot;.set macro&quot; &quot;\n&quot; \
-        &quot;.end &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        ); \
-    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-
-#endif
-
-#elif CPU(ARM_TRADITIONAL) &amp;&amp; COMPILER(GCC)
-
-#define DEFINE_STUB_FUNCTION(rtype, op) \
-    extern &quot;C&quot; { \
-        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
-    }; \
-    asm ( \
-        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-        INLINE_ARM_FUNCTION(cti_##op) \
-        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
-        &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
-        &quot;bl &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
-        &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
-        &quot;bx lr&quot; &quot;\n&quot; \
-        ); \
-    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-
-#elif (CPU(ARM_THUMB2) || CPU(ARM_TRADITIONAL)) &amp;&amp; COMPILER(RVCT)
-
-#define DEFINE_STUB_FUNCTION(rtype, op) rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-
-/* The following is a workaround for RVCT toolchain; precompiler macros are not expanded before the code is passed to the assembler */
-
-/* The following section is a template to generate code for GeneratedJITStubs_RVCT.h */
-/* The pattern &quot;#xxx#&quot; will be replaced with &quot;xxx&quot; */
-
-/*
-RVCT(extern &quot;C&quot; #rtype# JITStubThunked_#op#(STUB_ARGS_DECLARATION);)
-RVCT(__asm #rtype# cti_#op#(STUB_ARGS_DECLARATION))
-RVCT({)
-RVCT(    PRESERVE8)
-RVCT(    IMPORT JITStubThunked_#op#)
-RVCT(    str lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
-RVCT(    bl JITStubThunked_#op#)
-RVCT(    ldr lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
-RVCT(    bx lr)
-RVCT(})
-RVCT()
-*/
-
-/* Include the generated file */
-#include &quot;GeneratedJITStubs_RVCT.h&quot;
-
-#elif CPU(ARM_TRADITIONAL) &amp;&amp; COMPILER(MSVC)
-
-#define DEFINE_STUB_FUNCTION(rtype, op) extern &quot;C&quot; rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-
-/* The following is a workaround for MSVC toolchain; inline assembler is not supported */
-
-/* The following section is a template to generate code for GeneratedJITStubs_MSVC.asm */
-/* The pattern &quot;#xxx#&quot; will be replaced with &quot;xxx&quot; */
-
-/*
-MSVC_BEGIN(    AREA Trampoline, CODE)
-MSVC_BEGIN()
-MSVC_BEGIN(    EXPORT ctiTrampoline)
-MSVC_BEGIN(    EXPORT ctiTrampolineEnd)
-MSVC_BEGIN(    EXPORT ctiVMThrowTrampoline)
-MSVC_BEGIN(    EXPORT ctiOpThrowNotCaught)
-MSVC_BEGIN()
-MSVC_BEGIN(ctiTrampoline PROC)
-MSVC_BEGIN(    stmdb sp!, {r1-r3})
-MSVC_BEGIN(    stmdb sp!, {r4-r6, r8-r11, lr})
-MSVC_BEGIN(    sub sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
-MSVC_BEGIN(    mov r5, r2)
-MSVC_BEGIN(    mov r6, #512)
-MSVC_BEGIN(    ; r0 contains the code)
-MSVC_BEGIN(    mov lr, pc)
-MSVC_BEGIN(    bx r0)
-MSVC_BEGIN(    add sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
-MSVC_BEGIN(    ldmia sp!, {r4-r6, r8-r11, lr})
-MSVC_BEGIN(    add sp, sp, #12)
-MSVC_BEGIN(    bx lr)
-MSVC_BEGIN(ctiTrampolineEnd)
-MSVC_BEGIN(ctiTrampoline ENDP)
-MSVC_BEGIN()
-MSVC_BEGIN(ctiVMThrowTrampoline PROC)
-MSVC_BEGIN(    mov r0, sp)
-MSVC_BEGIN(    bl cti_vm_throw)
-MSVC_BEGIN(ctiOpThrowNotCaught)
-MSVC_BEGIN(    add sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
-MSVC_BEGIN(    ldmia sp!, {r4-r6, r8-r11, lr})
-MSVC_BEGIN(    add sp, sp, #12)
-MSVC_BEGIN(    bx lr)
-MSVC_BEGIN(ctiVMThrowTrampoline ENDP)
-MSVC_BEGIN()
-
-MSVC(    EXPORT cti_#op#)
-MSVC(    IMPORT JITStubThunked_#op#)
-MSVC(cti_#op# PROC)
-MSVC(    str lr, [sp, #64] ; sync with THUNK_RETURN_ADDRESS_OFFSET)
-MSVC(    bl JITStubThunked_#op#)
-MSVC(    ldr lr, [sp, #64] ; sync with THUNK_RETURN_ADDRESS_OFFSET)
-MSVC(    bx lr)
-MSVC(cti_#op# ENDP)
-MSVC()
-
-MSVC_END(    END)
-*/
-
-#elif CPU(SH4)
-#define DEFINE_STUB_FUNCTION(rtype, op) \
-    extern &quot;C&quot; { \
-        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
-    }; \
-    asm volatile( \
-    &quot;.align 2&quot; &quot;\n&quot; \
-    &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
-    SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
-    &quot;sts pr, r11&quot; &quot;\n&quot; \
-    &quot;mov.l r11, @(0x38, r15)&quot; &quot;\n&quot; \
-    &quot;mov.l .L2&quot;SYMBOL_STRING(JITStubThunked_##op)&quot;,r0&quot; &quot;\n&quot; \
-    &quot;mov.l @(r0,r12),r11&quot; &quot;\n&quot; \
-    &quot;jsr @r11&quot; &quot;\n&quot; \
-    &quot;nop&quot; &quot;\n&quot; \
-    &quot;mov.l @(0x38, r15), r11 &quot; &quot;\n&quot; \
-    &quot;lds r11, pr &quot; &quot;\n&quot; \
-    &quot;rts&quot; &quot;\n&quot; \
-    &quot;nop&quot; &quot;\n&quot; \
-    &quot;.align 2&quot; &quot;\n&quot; \
-    &quot;.L2&quot;SYMBOL_STRING(JITStubThunked_##op)&quot;:.long &quot; SYMBOL_STRING(JITStubThunked_##op)&quot;@GOT \n&quot; \
-    ); \
-    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
-#else
</del><ins>+// If the CPU specific header does not provide an implementation, use the default one here.
+#ifndef DEFINE_STUB_FUNCTION
</ins><span class="cx"> #define DEFINE_STUB_FUNCTION(rtype, op) rtype JIT_STUB cti_##op(STUB_ARGS_DECLARATION)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsARMh"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARM.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARM.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARM.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,247 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsARM_h
+#define JITStubsARM_h
+
+#if !CPU(ARM_TRADITIONAL)
+#error &quot;JITStubsARM.h should only be #included if CPU(ARM_TRADITIONAL)&quot;
+#endif
+
+#if !USE(JSVALUE32_64)
+#error &quot;JITStubsARM.h only implements USE(JSVALUE32_64)&quot;
+#endif
+
+namespace JSC {
+
+// Also update the MSVC section (defined at DEFINE_STUB_FUNCTION)
+// when changing one of the following values.
+#define THUNK_RETURN_ADDRESS_OFFSET 64
+#define PRESERVEDR4_OFFSET          68
+
+
+#if COMPILER(GCC)
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
+INLINE_ARM_FUNCTION(ctiTrampoline)
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;stmdb sp!, {r1-r3}&quot; &quot;\n&quot;
+    &quot;stmdb sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
+    &quot;sub sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
+    &quot;mov r5, r2&quot; &quot;\n&quot;
+    &quot;mov r6, #512&quot; &quot;\n&quot;
+    // r0 contains the code
+    &quot;blx r0&quot; &quot;\n&quot;
+    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
+    &quot;ldmia sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
+    &quot;add sp, sp, #12&quot; &quot;\n&quot;
+    &quot;bx lr&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
+INLINE_ARM_FUNCTION(ctiVMThrowTrampoline)
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;mov r0, sp&quot; &quot;\n&quot;
+    &quot;bl &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
+
+// Both has the same return sequence
+&quot;.text&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
+INLINE_ARM_FUNCTION(ctiOpThrowNotCaught)
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(PRESERVEDR4_OFFSET) &quot;\n&quot;
+    &quot;ldmia sp!, {r4-r6, r8-r11, lr}&quot; &quot;\n&quot;
+    &quot;add sp, sp, #12&quot; &quot;\n&quot;
+    &quot;bx lr&quot; &quot;\n&quot;
+);
+
+#define DEFINE_STUB_FUNCTION(rtype, op) \
+    extern &quot;C&quot; { \
+        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+    }; \
+    asm ( \
+        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        INLINE_ARM_FUNCTION(cti_##op) \
+        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
+        &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
+        &quot;bl &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
+        &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
+        &quot;bx lr&quot; &quot;\n&quot; \
+        ); \
+    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+#endif // COMPILER(GCC)
+
+#if COMPILER(RVCT)
+
+__asm EncodedJSValue ctiTrampoline(void*, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
+{
+    ARM
+    stmdb sp!, {r1-r3}
+    stmdb sp!, {r4-r6, r8-r11, lr}
+    sub sp, sp, # PRESERVEDR4_OFFSET
+    mov r5, r2
+    mov r6, #512
+    mov lr, pc
+    bx r0
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r6, r8-r11, lr}
+    add sp, sp, #12
+    bx lr
+}
+__asm void ctiTrampolineEnd()
+{
+}
+
+__asm void ctiVMThrowTrampoline()
+{
+    ARM
+    PRESERVE8
+    mov r0, sp
+    bl cti_vm_throw
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r6, r8-r11, lr}
+    add sp, sp, #12
+    bx lr
+}
+
+__asm void ctiOpThrowNotCaught()
+{
+    ARM
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r8, lr}
+    add sp, sp, #12
+    bx lr
+}
+
+#define DEFINE_STUB_FUNCTION(rtype, op) rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+/* The following is a workaround for RVCT toolchain; precompiler macros are not expanded before the code is passed to the assembler */
+
+/* The following section is a template to generate code for GeneratedJITStubs_RVCT.h */
+/* The pattern &quot;#xxx#&quot; will be replaced with &quot;xxx&quot; */
+
+/*
+RVCT(extern &quot;C&quot; #rtype# JITStubThunked_#op#(STUB_ARGS_DECLARATION);)
+RVCT(__asm #rtype# cti_#op#(STUB_ARGS_DECLARATION))
+RVCT({)
+RVCT(    PRESERVE8)
+RVCT(    IMPORT JITStubThunked_#op#)
+RVCT(    str lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
+RVCT(    bl JITStubThunked_#op#)
+RVCT(    ldr lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
+RVCT(    bx lr)
+RVCT(})
+RVCT()
+*/
+
+/* Include the generated file */
+#include &quot;GeneratedJITStubs_RVCT.h&quot;
+
+#endif // COMPILER(RVCT)
+
+#if COMPILER(MSVC)
+
+#define DEFINE_STUB_FUNCTION(rtype, op) extern &quot;C&quot; rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+/* The following is a workaround for MSVC toolchain; inline assembler is not supported */
+
+/* The following section is a template to generate code for GeneratedJITStubs_MSVC.asm */
+/* The pattern &quot;#xxx#&quot; will be replaced with &quot;xxx&quot; */
+
+/*
+MSVC_BEGIN(    AREA Trampoline, CODE)
+MSVC_BEGIN()
+MSVC_BEGIN(    EXPORT ctiTrampoline)
+MSVC_BEGIN(    EXPORT ctiTrampolineEnd)
+MSVC_BEGIN(    EXPORT ctiVMThrowTrampoline)
+MSVC_BEGIN(    EXPORT ctiOpThrowNotCaught)
+MSVC_BEGIN()
+MSVC_BEGIN(ctiTrampoline PROC)
+MSVC_BEGIN(    stmdb sp!, {r1-r3})
+MSVC_BEGIN(    stmdb sp!, {r4-r6, r8-r11, lr})
+MSVC_BEGIN(    sub sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
+MSVC_BEGIN(    mov r5, r2)
+MSVC_BEGIN(    mov r6, #512)
+MSVC_BEGIN(    ; r0 contains the code)
+MSVC_BEGIN(    mov lr, pc)
+MSVC_BEGIN(    bx r0)
+MSVC_BEGIN(    add sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
+MSVC_BEGIN(    ldmia sp!, {r4-r6, r8-r11, lr})
+MSVC_BEGIN(    add sp, sp, #12)
+MSVC_BEGIN(    bx lr)
+MSVC_BEGIN(ctiTrampolineEnd)
+MSVC_BEGIN(ctiTrampoline ENDP)
+MSVC_BEGIN()
+MSVC_BEGIN(ctiVMThrowTrampoline PROC)
+MSVC_BEGIN(    mov r0, sp)
+MSVC_BEGIN(    bl cti_vm_throw)
+MSVC_BEGIN(ctiOpThrowNotCaught)
+MSVC_BEGIN(    add sp, sp, #68 ; sync with PRESERVEDR4_OFFSET)
+MSVC_BEGIN(    ldmia sp!, {r4-r6, r8-r11, lr})
+MSVC_BEGIN(    add sp, sp, #12)
+MSVC_BEGIN(    bx lr)
+MSVC_BEGIN(ctiVMThrowTrampoline ENDP)
+MSVC_BEGIN()
+
+MSVC(    EXPORT cti_#op#)
+MSVC(    IMPORT JITStubThunked_#op#)
+MSVC(cti_#op# PROC)
+MSVC(    str lr, [sp, #64] ; sync with THUNK_RETURN_ADDRESS_OFFSET)
+MSVC(    bl JITStubThunked_#op#)
+MSVC(    ldr lr, [sp, #64] ; sync with THUNK_RETURN_ADDRESS_OFFSET)
+MSVC(    bx lr)
+MSVC(cti_#op# ENDP)
+MSVC()
+
+MSVC_END(    END)
+*/
+#endif // COMPILER(MSVC)
+
+
+static void performARMJITAssertions()
+{
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR4) == PRESERVEDR4_OFFSET);
+}
+
+} // namespace JSC
+
+#endif // JITStubsARM_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsARMv7h"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARMv7.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARMv7.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsARMv7.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,284 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsARMv7_h
+#define JITStubsARMv7_h
+
+#if !CPU(ARM_THUMB2)
+#error &quot;JITStubsARMv7.h should only be #included if CPU(ARM_THUMB2)&quot;
+#endif
+
+#if !USE(JSVALUE32_64)
+#error &quot;JITStubsARMv7.h only implements USE(JSVALUE32_64)&quot;
+#endif
+
+namespace JSC {
+
+#define THUNK_RETURN_ADDRESS_OFFSET      0x38
+#define PRESERVED_RETURN_ADDRESS_OFFSET  0x3C
+#define PRESERVED_R4_OFFSET              0x40
+#define PRESERVED_R5_OFFSET              0x44
+#define PRESERVED_R6_OFFSET              0x48
+#define PRESERVED_R7_OFFSET              0x4C
+#define PRESERVED_R8_OFFSET              0x50
+#define PRESERVED_R9_OFFSET              0x54
+#define PRESERVED_R10_OFFSET             0x58
+#define PRESERVED_R11_OFFSET             0x5C
+#define REGISTER_FILE_OFFSET             0x60
+#define FIRST_STACK_ARGUMENT             0x68
+
+#if COMPILER(GCC)
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
+&quot;.thumb&quot; &quot;\n&quot;
+&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;sub sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
+    &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;str r1, [sp, #&quot; STRINGIZE_VALUE_OF(REGISTER_FILE_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;mov r5, r2&quot; &quot;\n&quot;
+    &quot;mov r6, #512&quot; &quot;\n&quot;
+    &quot;blx r0&quot; &quot;\n&quot;
+    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
+    &quot;bx lr&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
+&quot;.thumb&quot; &quot;\n&quot;
+&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiTrampolineEnd) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
+&quot;.thumb&quot; &quot;\n&quot;
+&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiVMThrowTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;mov r0, sp&quot; &quot;\n&quot;
+    &quot;bl &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
+    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
+    &quot;bx lr&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
+&quot;.thumb&quot; &quot;\n&quot;
+&quot;.thumb_func &quot; THUMB_FUNC_PARAM(ctiOpThrowNotCaught) &quot;\n&quot;
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;ldr r11, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R11_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r10, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R10_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r9, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R9_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r8, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R8_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r7, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R7_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r6, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R6_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r5, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R5_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr r4, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_R4_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot;
+    &quot;add sp, sp, #&quot; STRINGIZE_VALUE_OF(FIRST_STACK_ARGUMENT) &quot;\n&quot;
+    &quot;bx lr&quot; &quot;\n&quot;
+);
+
+#define DEFINE_STUB_FUNCTION(rtype, op) \
+    extern &quot;C&quot; { \
+        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+    }; \
+    asm ( \
+        &quot;.text&quot; &quot;\n&quot; \
+        &quot;.align 2&quot; &quot;\n&quot; \
+        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        HIDE_SYMBOL(cti_##op) &quot;\n&quot;             \
+        &quot;.thumb&quot; &quot;\n&quot; \
+        &quot;.thumb_func &quot; THUMB_FUNC_PARAM(cti_##op) &quot;\n&quot; \
+        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
+        &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
+        &quot;bl &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
+        &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
+        &quot;bx lr&quot; &quot;\n&quot; \
+        ); \
+    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) \
+
+#endif // COMPILER(GCC)
+
+#if COMPILER(RVCT)
+
+__asm EncodedJSValue ctiTrampoline(void*, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
+{
+    PRESERVE8
+    sub sp, sp, # FIRST_STACK_ARGUMENT
+    str lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
+    str r4, [sp, # PRESERVED_R4_OFFSET ]
+    str r5, [sp, # PRESERVED_R5_OFFSET ]
+    str r6, [sp, # PRESERVED_R6_OFFSET ]
+    str r7, [sp, # PRESERVED_R7_OFFSET ]
+    str r8, [sp, # PRESERVED_R8_OFFSET ]
+    str r9, [sp, # PRESERVED_R9_OFFSET ]
+    str r10, [sp, # PRESERVED_R10_OFFSET ]
+    str r11, [sp, # PRESERVED_R11_OFFSET ]
+    str r1, [sp, # REGISTER_FILE_OFFSET ]
+    mov r5, r2
+    mov r6, #512
+    blx r0
+    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
+    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
+    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
+    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
+    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
+    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
+    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
+    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
+    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
+    add sp, sp, # FIRST_STACK_ARGUMENT
+    bx lr
+}
+
+__asm void ctiVMThrowTrampoline()
+{
+    PRESERVE8
+    mov r0, sp
+    bl cti_vm_throw
+    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
+    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
+    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
+    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
+    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
+    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
+    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
+    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
+    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
+    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
+    add sp, sp, # FIRST_STACK_ARGUMENT
+    bx lr
+}
+
+__asm void ctiOpThrowNotCaught()
+{
+    PRESERVE8
+    ldr r11, [sp, # PRESERVED_R11_OFFSET ]
+    ldr r10, [sp, # PRESERVED_R10_OFFSET ]
+    ldr r9, [sp, # PRESERVED_R9_OFFSET ]
+    ldr r8, [sp, # PRESERVED_R8_OFFSET ]
+    ldr r7, [sp, # PRESERVED_R7_OFFSET ]
+    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
+    ldr r6, [sp, # PRESERVED_R6_OFFSET ]
+    ldr r5, [sp, # PRESERVED_R5_OFFSET ]
+    ldr r4, [sp, # PRESERVED_R4_OFFSET ]
+    ldr lr, [sp, # PRESERVED_RETURN_ADDRESS_OFFSET ]
+    add sp, sp, # FIRST_STACK_ARGUMENT
+    bx lr
+}
+
+#define DEFINE_STUB_FUNCTION(rtype, op) rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+/* The following is a workaround for RVCT toolchain; precompiler macros are not expanded before the code is passed to the assembler */
+
+/* The following section is a template to generate code for GeneratedJITStubs_RVCT.h */
+/* The pattern &quot;#xxx#&quot; will be replaced with &quot;xxx&quot; */
+
+/*
+RVCT(extern &quot;C&quot; #rtype# JITStubThunked_#op#(STUB_ARGS_DECLARATION);)
+RVCT(__asm #rtype# cti_#op#(STUB_ARGS_DECLARATION))
+RVCT({)
+RVCT(    PRESERVE8)
+RVCT(    IMPORT JITStubThunked_#op#)
+RVCT(    str lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
+RVCT(    bl JITStubThunked_#op#)
+RVCT(    ldr lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
+RVCT(    bx lr)
+RVCT(})
+RVCT()
+*/
+
+/* Include the generated file */
+#include &quot;GeneratedJITStubs_RVCT.h&quot;
+
+#endif // COMPILER(RVCT)
+
+
+static void performARMv7JITAssertions()
+{
+    // Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it contains non POD types),
+    // and the OBJECT_OFFSETOF macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT
+    // macros.
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == PRESERVED_RETURN_ADDRESS_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR4) == PRESERVED_R4_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR5) == PRESERVED_R5_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR6) == PRESERVED_R6_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR7) == PRESERVED_R7_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR8) == PRESERVED_R8_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR9) == PRESERVED_R9_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR10) == PRESERVED_R10_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR11) == PRESERVED_R11_OFFSET);
+
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, stack) == REGISTER_FILE_OFFSET);
+    // The fifth argument is the first item already on the stack.
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, unused1) == FIRST_STACK_ARGUMENT);
+
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
+}
+
+} // namespace JSC
+
+#endif // JITStubsARMv7_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsMIPSh"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsMIPS.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsMIPS.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsMIPS.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,228 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsMIPS_h
+#define JITStubsMIPS_h
+
+#if !CPU(MIPS)
+#error &quot;JITStubsMIPS.h should only be #included if CPU(MIPS)&quot;
+#endif
+
+#if !USE(JSVALUE32_64)
+#error &quot;JITStubsMIPS.h only implements USE(JSVALUE32_64)&quot;
+#endif
+
+namespace JSC {
+
+#define PRESERVED_GP_OFFSET         60
+#define PRESERVED_S0_OFFSET         64
+#define PRESERVED_S1_OFFSET         68
+#define PRESERVED_S2_OFFSET         72
+#define PRESERVED_S3_OFFSET         76
+#define PRESERVED_S4_OFFSET         80
+#define PRESERVED_RETURN_ADDRESS_OFFSET 84
+#define THUNK_RETURN_ADDRESS_OFFSET 88
+#define REGISTER_FILE_OFFSET        92
+#define VM_OFFSET                  108
+#define STACK_LENGTH               112
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.set noreorder&quot; &quot;\n&quot;
+&quot;.set nomacro&quot; &quot;\n&quot;
+&quot;.set nomips16&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+&quot;.ent &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;addiu $29,$29,-&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
+    &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;sw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;sw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;sw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;sw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;sw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+#if WTF_MIPS_PIC
+    &quot;sw    $28,&quot; STRINGIZE_VALUE_OF(PRESERVED_GP_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+#endif
+    &quot;move  $16,$6       # set callFrameRegister&quot; &quot;\n&quot;
+    &quot;li    $17,512      # set timeoutCheckRegister&quot; &quot;\n&quot;
+    &quot;move  $25,$4       # move executableAddress to t9&quot; &quot;\n&quot;
+    &quot;sw    $5,&quot; STRINGIZE_VALUE_OF(REGISTER_FILE_OFFSET) &quot;($29) # store JSStack to current stack&quot; &quot;\n&quot;
+    &quot;lw    $9,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH + 20) &quot;($29)    # load vm from previous stack&quot; &quot;\n&quot;
+    &quot;jalr  $25&quot; &quot;\n&quot;
+    &quot;sw    $9,&quot; STRINGIZE_VALUE_OF(VM_OFFSET) &quot;($29)   # store vm to current stack&quot; &quot;\n&quot;
+    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;jr    $31&quot; &quot;\n&quot;
+    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
+&quot;.set reorder&quot; &quot;\n&quot;
+&quot;.set macro&quot; &quot;\n&quot;
+&quot;.end &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.set noreorder&quot; &quot;\n&quot;
+&quot;.set nomacro&quot; &quot;\n&quot;
+&quot;.set nomips16&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+&quot;.ent &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+#if WTF_MIPS_PIC
+&quot;.set macro&quot; &quot;\n&quot;
+&quot;.cpload $31&quot; &quot;\n&quot;
+    &quot;la    $25,&quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
+&quot;.set nomacro&quot; &quot;\n&quot;
+    &quot;bal &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
+    &quot;move  $4,$29&quot; &quot;\n&quot;
+#else
+    &quot;jal &quot; SYMBOL_STRING(cti_vm_throw) &quot;\n&quot;
+    &quot;move  $4,$29&quot; &quot;\n&quot;
+#endif
+    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;jr    $31&quot; &quot;\n&quot;
+    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
+&quot;.set reorder&quot; &quot;\n&quot;
+&quot;.set macro&quot; &quot;\n&quot;
+&quot;.end &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+);
+
+asm (
+&quot;.text&quot; &quot;\n&quot;
+&quot;.align 2&quot; &quot;\n&quot;
+&quot;.set noreorder&quot; &quot;\n&quot;
+&quot;.set nomacro&quot; &quot;\n&quot;
+&quot;.set nomips16&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+&quot;.ent &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;lw    $16,&quot; STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $17,&quot; STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $18,&quot; STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $19,&quot; STRINGIZE_VALUE_OF(PRESERVED_S3_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $20,&quot; STRINGIZE_VALUE_OF(PRESERVED_S4_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot;
+    &quot;jr    $31&quot; &quot;\n&quot;
+    &quot;addiu $29,$29,&quot; STRINGIZE_VALUE_OF(STACK_LENGTH) &quot;\n&quot;
+&quot;.set reorder&quot; &quot;\n&quot;
+&quot;.set macro&quot; &quot;\n&quot;
+&quot;.end &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+);
+
+
+#if WTF_MIPS_PIC
+#define DEFINE_STUB_FUNCTION(rtype, op) \
+    extern &quot;C&quot; { \
+        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+    }; \
+    asm ( \
+        &quot;.text&quot; &quot;\n&quot; \
+        &quot;.align 2&quot; &quot;\n&quot; \
+        &quot;.set noreorder&quot; &quot;\n&quot; \
+        &quot;.set nomacro&quot; &quot;\n&quot; \
+        &quot;.set nomips16&quot; &quot;\n&quot; \
+        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        &quot;.ent &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
+        &quot;.set macro&quot; &quot;\n&quot; \
+        &quot;.cpload $25&quot; &quot;\n&quot; \
+        &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
+        &quot;la    $25,&quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
+        &quot;.set nomacro&quot; &quot;\n&quot; \
+        &quot;.reloc 1f,R_MIPS_JALR,&quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
+        &quot;1: jalr $25&quot; &quot;\n&quot; \
+        &quot;nop&quot; &quot;\n&quot; \
+        &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
+        &quot;jr    $31&quot; &quot;\n&quot; \
+        &quot;nop&quot; &quot;\n&quot; \
+        &quot;.set reorder&quot; &quot;\n&quot; \
+        &quot;.set macro&quot; &quot;\n&quot; \
+        &quot;.end &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        ); \
+    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+#else // WTF_MIPS_PIC
+#define DEFINE_STUB_FUNCTION(rtype, op) \
+    extern &quot;C&quot; { \
+        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+    }; \
+    asm ( \
+        &quot;.text&quot; &quot;\n&quot; \
+        &quot;.align 2&quot; &quot;\n&quot; \
+        &quot;.set noreorder&quot; &quot;\n&quot; \
+        &quot;.set nomacro&quot; &quot;\n&quot; \
+        &quot;.set nomips16&quot; &quot;\n&quot; \
+        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        &quot;.ent &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
+        &quot;sw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
+        &quot;jal &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
+        &quot;nop&quot; &quot;\n&quot; \
+        &quot;lw    $31,&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;($29)&quot; &quot;\n&quot; \
+        &quot;jr    $31&quot; &quot;\n&quot; \
+        &quot;nop&quot; &quot;\n&quot; \
+        &quot;.set reorder&quot; &quot;\n&quot; \
+        &quot;.set macro&quot; &quot;\n&quot; \
+        &quot;.end &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+        ); \
+    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+#endif // WTF_MIPS_PIC
+
+
+static void performMIPSJITAssertions()
+{
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedGP) == PRESERVED_GP_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS0) == PRESERVED_S0_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS1) == PRESERVED_S1_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS2) == PRESERVED_S2_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == PRESERVED_RETURN_ADDRESS_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, stack) == REGISTER_FILE_OFFSET);
+    ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, vm) == VM_OFFSET);
+}
+
+} // namespace JSC
+
+#endif // JITStubsMIPS_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsSH4h"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsSH4.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsSH4.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsSH4.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,143 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsSH4_h
+#define JITStubsSH4_h
+
+#if !CPU(SH4)
+#error &quot;JITStubsSH4.h should only be #included if CPU(SH4)&quot;
+#endif
+
+#if !USE(JSVALUE32_64)
+#error &quot;JITStubsSH4.h only implements USE(JSVALUE32_64)&quot;
+#endif
+
+namespace JSC {
+
+#define SYMBOL_STRING(name) #name
+/* code (r4), JSStack* (r5), CallFrame* (r6), void* unused1 (r7), void* unused2(sp), VM (sp)*/
+
+asm volatile (
+&quot;.text\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;mov.l r7, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r6, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r5, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r8, @-r15&quot; &quot;\n&quot;
+    &quot;mov #127, r8&quot; &quot;\n&quot;
+    &quot;mov.l r14, @-r15&quot; &quot;\n&quot;
+    &quot;sts.l pr, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r13, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r11, @-r15&quot; &quot;\n&quot;
+    &quot;mov.l r10, @-r15&quot; &quot;\n&quot;
+    &quot;add #-60, r15&quot; &quot;\n&quot;
+    &quot;mov r6, r14&quot; &quot;\n&quot;
+    &quot;jsr @r4&quot; &quot;\n&quot;
+    &quot;nop&quot; &quot;\n&quot;
+    &quot;add #60, r15&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
+    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
+    &quot;add #12, r15&quot; &quot;\n&quot;
+    &quot;rts&quot; &quot;\n&quot;
+    &quot;nop&quot; &quot;\n&quot;
+);
+
+asm volatile (
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;mov.l .L2&quot;SYMBOL_STRING(cti_vm_throw)&quot;,r0&quot; &quot;\n&quot;
+    &quot;mov r15, r4&quot; &quot;\n&quot;
+    &quot;mov.l @(r0,r12),r11&quot; &quot;\n&quot;
+    &quot;jsr @r11&quot; &quot;\n&quot;
+    &quot;nop&quot; &quot;\n&quot;
+    &quot;add #60, r15&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
+    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
+    &quot;add #12, r15&quot; &quot;\n&quot;
+    &quot;rts&quot; &quot;\n&quot;
+    &quot;nop&quot; &quot;\n&quot;
+    &quot;.align 2&quot; &quot;\n&quot;
+    &quot;.L2&quot;SYMBOL_STRING(cti_vm_throw)&quot;:.long &quot; SYMBOL_STRING(cti_vm_throw)&quot;@GOT \n&quot;
+);
+
+asm volatile (
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;add #60, r15&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r10&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r11&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r13&quot; &quot;\n&quot;
+    &quot;lds.l @r15+,pr&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r14&quot; &quot;\n&quot;
+    &quot;mov.l @r15+,r8&quot; &quot;\n&quot;
+    &quot;add #12, r15&quot; &quot;\n&quot;
+    &quot;rts&quot; &quot;\n&quot;
+    &quot;nop&quot; &quot;\n&quot;
+);
+
+
+#define DEFINE_STUB_FUNCTION(rtype, op) \
+    extern &quot;C&quot; { \
+        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+    }; \
+    asm volatile( \
+    &quot;.align 2&quot; &quot;\n&quot; \
+    &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
+    SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
+    &quot;sts pr, r11&quot; &quot;\n&quot; \
+    &quot;mov.l r11, @(0x38, r15)&quot; &quot;\n&quot; \
+    &quot;mov.l .L2&quot;SYMBOL_STRING(JITStubThunked_##op)&quot;,r0&quot; &quot;\n&quot; \
+    &quot;mov.l @(r0,r12),r11&quot; &quot;\n&quot; \
+    &quot;jsr @r11&quot; &quot;\n&quot; \
+    &quot;nop&quot; &quot;\n&quot; \
+    &quot;mov.l @(0x38, r15), r11 &quot; &quot;\n&quot; \
+    &quot;lds r11, pr &quot; &quot;\n&quot; \
+    &quot;rts&quot; &quot;\n&quot; \
+    &quot;nop&quot; &quot;\n&quot; \
+    &quot;.align 2&quot; &quot;\n&quot; \
+    &quot;.L2&quot;SYMBOL_STRING(JITStubThunked_##op)&quot;:.long &quot; SYMBOL_STRING(JITStubThunked_##op)&quot;@GOT \n&quot; \
+    ); \
+    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION)
+
+} // namespace JSC
+
+#endif // JITStubsSH4_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsX86h"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,163 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsX86_h
+#define JITStubsX86_h
+
+#if !CPU(X86)
+#error &quot;JITStubsX86.h should only be #included if CPU(X86)&quot;
+#endif
+
+#if !USE(JSVALUE32_64)
+#error &quot;JITStubsX86.h only implements USE(JSVALUE32_64)&quot;
+#endif
+
+namespace JSC {
+
+#if COMPILER(GCC)
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
+
+asm (
+&quot;.text\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;pushl %ebp&quot; &quot;\n&quot;
+    &quot;movl %esp, %ebp&quot; &quot;\n&quot;
+    &quot;pushl %esi&quot; &quot;\n&quot;
+    &quot;pushl %edi&quot; &quot;\n&quot;
+    &quot;pushl %ebx&quot; &quot;\n&quot;
+    &quot;subl $0x3c, %esp&quot; &quot;\n&quot;
+    &quot;movl 0x58(%esp), %edi&quot; &quot;\n&quot;
+    &quot;call *0x50(%esp)&quot; &quot;\n&quot;
+    &quot;addl $0x3c, %esp&quot; &quot;\n&quot;
+    &quot;popl %ebx&quot; &quot;\n&quot;
+    &quot;popl %edi&quot; &quot;\n&quot;
+    &quot;popl %esi&quot; &quot;\n&quot;
+    &quot;popl %ebp&quot; &quot;\n&quot;
+    &quot;ret&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;movl %esp, %ecx&quot; &quot;\n&quot;
+    &quot;call &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
+    &quot;int3&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;addl $0x3c, %esp&quot; &quot;\n&quot;
+    &quot;popl %ebx&quot; &quot;\n&quot;
+    &quot;popl %edi&quot; &quot;\n&quot;
+    &quot;popl %esi&quot; &quot;\n&quot;
+    &quot;popl %ebp&quot; &quot;\n&quot;
+    &quot;ret&quot; &quot;\n&quot;
+);
+
+#endif // COMPILER(GCC)
+
+#if COMPILER(MSVC)
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
+
+extern &quot;C&quot; {
+
+    __declspec(naked) EncodedJSValue ctiTrampoline(void* code, JSStack*, CallFrame*, void* /*unused1*/, void* /*unused2*/, VM*)
+    {
+        __asm {
+            push ebp;
+            mov ebp, esp;
+            push esi;
+            push edi;
+            push ebx;
+            sub esp, 0x3c;
+            mov ecx, esp;
+            mov edi, [esp + 0x58];
+            call [esp + 0x50];
+            add esp, 0x3c;
+            pop ebx;
+            pop edi;
+            pop esi;
+            pop ebp;
+            ret;
+        }
+    }
+
+    __declspec(naked) void ctiVMThrowTrampoline()
+    {
+        __asm {
+            mov ecx, esp;
+            call cti_vm_throw;
+            add esp, 0x3c;
+            pop ebx;
+            pop edi;
+            pop esi;
+            pop ebp;
+            ret;
+        }
+    }
+
+    __declspec(naked) void ctiOpThrowNotCaught()
+    {
+        __asm {
+            add esp, 0x3c;
+            pop ebx;
+            pop edi;
+            pop esi;
+            pop ebp;
+            ret;
+        }
+    }
+}
+
+#endif // COMPILER(MSVC)
+
+} // namespace JSC
+
+#endif // JITStubsX86_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubsX86_64h"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86_64.h (0 => 150109)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86_64.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubsX86_64.h        2013-05-15 15:05:24 UTC (rev 150109)
</span><span class="lines">@@ -0,0 +1,126 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
+ * Copyright (C) Research In Motion Limited 2010, 2011. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubsX86_64_h
+#define JITStubsX86_64_h
+
+#if !CPU(X86_64)
+#error &quot;JITStubsX86_64.h should only be #included if CPU(X86_64)&quot;
+#endif
+
+#if !USE(JSVALUE64)
+#error &quot;JITStubsX86_64.h only implements USE(JSVALUE64)&quot;
+#endif
+
+namespace JSC {
+
+#if COMPILER(GCC)
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x48, JITStackFrame_code_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x78, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+asm (
+&quot;.text\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;pushq %rbp&quot; &quot;\n&quot;
+    &quot;movq %rsp, %rbp&quot; &quot;\n&quot;
+    &quot;pushq %r12&quot; &quot;\n&quot;
+    &quot;pushq %r13&quot; &quot;\n&quot;
+    &quot;pushq %r14&quot; &quot;\n&quot;
+    &quot;pushq %r15&quot; &quot;\n&quot;
+    &quot;pushq %rbx&quot; &quot;\n&quot;
+    // Form the JIT stubs area
+    &quot;pushq %r9&quot; &quot;\n&quot;
+    &quot;pushq %r8&quot; &quot;\n&quot;
+    &quot;pushq %rcx&quot; &quot;\n&quot;
+    &quot;pushq %rdx&quot; &quot;\n&quot;
+    &quot;pushq %rsi&quot; &quot;\n&quot;
+    &quot;pushq %rdi&quot; &quot;\n&quot;
+    &quot;subq $0x48, %rsp&quot; &quot;\n&quot;
+    &quot;movq $512, %r12&quot; &quot;\n&quot;
+    &quot;movq $0xFFFF000000000000, %r14&quot; &quot;\n&quot;
+    &quot;movq $0xFFFF000000000002, %r15&quot; &quot;\n&quot;
+    &quot;movq %rdx, %r13&quot; &quot;\n&quot;
+    &quot;call *%rdi&quot; &quot;\n&quot;
+    &quot;addq $0x78, %rsp&quot; &quot;\n&quot;
+    &quot;popq %rbx&quot; &quot;\n&quot;
+    &quot;popq %r15&quot; &quot;\n&quot;
+    &quot;popq %r14&quot; &quot;\n&quot;
+    &quot;popq %r13&quot; &quot;\n&quot;
+    &quot;popq %r12&quot; &quot;\n&quot;
+    &quot;popq %rbp&quot; &quot;\n&quot;
+    &quot;ret&quot; &quot;\n&quot;
+&quot;.globl &quot; SYMBOL_STRING(ctiTrampolineEnd) &quot;\n&quot;
+HIDE_SYMBOL(ctiTrampolineEnd) &quot;\n&quot;
+SYMBOL_STRING(ctiTrampolineEnd) &quot;:&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.globl &quot; SYMBOL_STRING(ctiVMThrowTrampoline) &quot;\n&quot;
+HIDE_SYMBOL(ctiVMThrowTrampoline) &quot;\n&quot;
+SYMBOL_STRING(ctiVMThrowTrampoline) &quot;:&quot; &quot;\n&quot;
+    &quot;movq %rsp, %rdi&quot; &quot;\n&quot;
+    &quot;call &quot; LOCAL_REFERENCE(cti_vm_throw) &quot;\n&quot;
+    &quot;int3&quot; &quot;\n&quot;
+);
+
+asm (
+&quot;.globl &quot; SYMBOL_STRING(ctiOpThrowNotCaught) &quot;\n&quot;
+HIDE_SYMBOL(ctiOpThrowNotCaught) &quot;\n&quot;
+SYMBOL_STRING(ctiOpThrowNotCaught) &quot;:&quot; &quot;\n&quot;
+    &quot;addq $0x78, %rsp&quot; &quot;\n&quot;
+    &quot;popq %rbx&quot; &quot;\n&quot;
+    &quot;popq %r15&quot; &quot;\n&quot;
+    &quot;popq %r14&quot; &quot;\n&quot;
+    &quot;popq %r13&quot; &quot;\n&quot;
+    &quot;popq %r12&quot; &quot;\n&quot;
+    &quot;popq %rbp&quot; &quot;\n&quot;
+    &quot;ret&quot; &quot;\n&quot;
+);
+
+#endif // COMPILER(GCC)
+
+#if COMPILER(MSVC)
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines in JITStubsMSVC64.asm to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) % 16 == 0x0, JITStackFrame_maintains_16byte_stack_alignment);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x58, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+#endif // COMPILER(MSVC)
+
+} // namespace JSC
+
+#endif // JITStubsX86_64_h
</ins></span></pre>
</div>
</div>

</body>
</html>