<!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>[151250] 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/151250">151250</a></dd>
<dt>Author</dt> <dd>mark.lam@apple.com</dd>
<dt>Date</dt> <dd>2013-06-05 19:13:34 -0700 (Wed, 05 Jun 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Disambiguate between CallFrame bytecodeOffset and codeOriginIndex.
https://bugs.webkit.org/show_bug.cgi?id=117262.

Reviewed by Geoffrey Garen.

When writing to the ArgumentCount tag in CallFrame, we will set the high
bit if the written value is a codeOriginIndex.

* GNUmakefile.list.am:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeOrigin.h:
(CodeOrigin):
(JSC::CodeOrigin::isHandle):
(JSC::CodeOrigin::encodeHandle):
(JSC::CodeOrigin::decodeHandle):
* dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::beginCall):
* dfg/DFGRepatch.cpp:
(JSC::DFG::tryBuildGetByIDList):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::locationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
(JSC::CallFrame::currentVPC):
(JSC::CallFrame::setCurrentVPC):
(JSC::CallFrame::trueCallFrame):
* interpreter/CallFrame.h:
(ExecState):
(JSC::ExecState::inlineCallFrame):
* interpreter/CallFrameInlines.h: Added.
(JSC::CallFrame::hasLocationAsBytecodeOffset):
(JSC::CallFrame::hasLocationAsCodeOriginIndex):
(JSC::CallFrame::locationAsRawBits):
(JSC::CallFrame::setLocationAsRawBits):
(JSC::CallFrame::locationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
(JSC::CallFrame::locationAsCodeOriginIndex):
* interpreter/Interpreter.cpp:
(JSC::getBytecodeOffsetForCallFrame):
(JSC::getCallerInfo):
* jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):</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="#branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorebytecodeCodeOriginh">branches/dfgFourthTier/Source/JavaScriptCore/bytecode/CodeOrigin.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoredfgDFGJITCompilerh">branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGJITCompiler.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoredfgDFGRepatchcpp">branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGRepatch.cpp</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFramecpp">branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.cpp</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFrameh">branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.h</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreinterpreterInterpretercpp">branches/dfgFourthTier/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCorejitJITStubscpp">branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFrameInlinesh">branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrameInlines.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 (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/ChangeLog        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -1,3 +1,50 @@
</span><ins>+2013-06-05  Mark Lam  &lt;mark.lam@apple.com&gt;
+
+        Disambiguate between CallFrame bytecodeOffset and codeOriginIndex.
+        https://bugs.webkit.org/show_bug.cgi?id=117262.
+
+        Reviewed by Geoffrey Garen.
+
+        When writing to the ArgumentCount tag in CallFrame, we will set the high
+        bit if the written value is a codeOriginIndex.
+
+        * GNUmakefile.list.am:
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * bytecode/CodeOrigin.h:
+        (CodeOrigin):
+        (JSC::CodeOrigin::isHandle):
+        (JSC::CodeOrigin::encodeHandle):
+        (JSC::CodeOrigin::decodeHandle):
+        * dfg/DFGJITCompiler.h:
+        (JSC::DFG::JITCompiler::beginCall):
+        * dfg/DFGRepatch.cpp:
+        (JSC::DFG::tryBuildGetByIDList):
+        * interpreter/CallFrame.cpp:
+        (JSC::CallFrame::locationAsBytecodeOffset):
+        (JSC::CallFrame::setLocationAsBytecodeOffset):
+        (JSC::CallFrame::currentVPC):
+        (JSC::CallFrame::setCurrentVPC):
+        (JSC::CallFrame::trueCallFrame):
+        * interpreter/CallFrame.h:
+        (ExecState):
+        (JSC::ExecState::inlineCallFrame):
+        * interpreter/CallFrameInlines.h: Added.
+        (JSC::CallFrame::hasLocationAsBytecodeOffset):
+        (JSC::CallFrame::hasLocationAsCodeOriginIndex):
+        (JSC::CallFrame::locationAsRawBits):
+        (JSC::CallFrame::setLocationAsRawBits):
+        (JSC::CallFrame::locationAsBytecodeOffset):
+        (JSC::CallFrame::setLocationAsBytecodeOffset):
+        (JSC::CallFrame::locationAsCodeOriginIndex):
+        * interpreter/Interpreter.cpp:
+        (JSC::getBytecodeOffsetForCallFrame):
+        (JSC::getCallerInfo):
+        * jit/JITStubs.cpp:
+        (JSC::DEFINE_STUB_FUNCTION):
+
</ins><span class="cx"> 2013-06-04  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         fourthTier: Clean up AbstractValue
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/GNUmakefile.list.am        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -429,6 +429,7 @@
</span><span class="cx">         Source/JavaScriptCore/interpreter/CallFrameClosure.h \
</span><span class="cx">         Source/JavaScriptCore/interpreter/CallFrame.cpp \
</span><span class="cx">         Source/JavaScriptCore/interpreter/CallFrame.h \
</span><ins>+        Source/JavaScriptCore/interpreter/CallFrameInlines.h \
</ins><span class="cx">         Source/JavaScriptCore/interpreter/Interpreter.cpp \
</span><span class="cx">         Source/JavaScriptCore/interpreter/Interpreter.h \
</span><span class="cx">         Source/JavaScriptCore/interpreter/JSStack.cpp \
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcprojJavaScriptCoreJavaScriptCorevcproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -2398,6 +2398,10 @@
</span><span class="cx">                                 &gt;
</span><span class="cx">                         &lt;/File&gt;
</span><span class="cx">                         &lt;File
</span><ins>+                                RelativePath=&quot;..\..\interpreter\CallFrameInlines.h&quot;
+                                &gt;
+                        &lt;/File&gt;
+                        &lt;File
</ins><span class="cx">                                 RelativePath=&quot;..\..\interpreter\CallFrameClosure.h&quot;
</span><span class="cx">                                 &gt;
</span><span class="cx">                         &lt;/File&gt;
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -549,6 +549,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\AbstractPC.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CachedCall.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CallFrame.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\interpreter\CallFrameInlines.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CallFrameClosure.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\Interpreter.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\JSStack.h&quot; /&gt;
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -1196,6 +1196,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CallFrame.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;interpreter&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\interpreter\CallFrameInlines.h&quot;&gt;
+      &lt;Filter&gt;interpreter&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\interpreter\CallFrameClosure.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;interpreter&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -951,19 +951,20 @@
</span><span class="cx">                 E49DC16D12EF295300184A1F /* SourceProviderCacheItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DC14912EF261A00184A1F /* SourceProviderCacheItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FE20CE9D15F04A9500DF3430 /* LLIntCLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */; };
</span><span class="cx">                 FE20CE9E15F04A9500DF3430 /* LLIntCLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                FE24596217601D580074FCE0 /* CallFrameInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = FE24596117601D580074FCE0 /* CallFrameInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><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">                 FE940322174442590047CF6E /* JITStubsX86Common.h in Headers */ = {isa = PBXBuildFile; fileRef = FE940321174442590047CF6E /* JITStubsX86Common.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FECE74571745456500FF9300 /* MacroAssemblerX86Common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FECE74561745456500FF9300 /* MacroAssemblerX86Common.cpp */; };
</span><span class="cx">                 FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */ = {isa = PBXBuildFile; fileRef = FED287B115EC9A5700DA8161 /* LLIntOpcode.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                FED94F2E171E3E2300BE77A4 /* Watchdog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */; };
+                FED94F2F171E3E2300BE77A4 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                FED94F30171E3E2300BE77A4 /* WatchdogMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */; };
</ins><span class="cx">                 FEE3147D174AACAF0013BCAC /* MacroAssemblerARMv7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEE3147C174AACAF0013BCAC /* MacroAssemblerARMv7.cpp */; };
</span><span class="cx">                 FEF6835E174343CC00A32E25 /* JITStubsARM.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835A174343CC00A32E25 /* JITStubsARM.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FEF6835F174343CC00A32E25 /* JITStubsARMv7.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835B174343CC00A32E25 /* JITStubsARMv7.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FEF68360174343CC00A32E25 /* JITStubsX86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835C174343CC00A32E25 /* JITStubsX86_64.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 FEF68361174343CC00A32E25 /* JITStubsX86.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF6835D174343CC00A32E25 /* JITStubsX86.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                FED94F2E171E3E2300BE77A4 /* Watchdog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */; };
-                FED94F2F171E3E2300BE77A4 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; settings = {ATTRIBUTES = (Private, ); };};
-                FED94F30171E3E2300BE77A4 /* WatchdogMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */; };
</del><span class="cx"> /* End PBXBuildFile section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXContainerItemProxy section */
</span><span class="lines">@@ -1986,19 +1987,20 @@
</span><span class="cx">                 F692A8870255597D01FF60F7 /* JSCJSValue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCJSValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; };
</span><span class="cx">                 FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntCLoop.cpp; path = llint/LLIntCLoop.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FE20CE9C15F04A9500DF3430 /* LLIntCLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCLoop.h; path = llint/LLIntCLoop.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                FE24596117601D580074FCE0 /* CallFrameInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallFrameInlines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><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">                 FE940321174442590047CF6E /* JITStubsX86Common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsX86Common.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FECE74561745456500FF9300 /* MacroAssemblerX86Common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssemblerX86Common.cpp; 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>+                FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Watchdog.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                FED94F2C171E3E2300BE77A4 /* Watchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Watchdog.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WatchdogMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 FEE3147C174AACAF0013BCAC /* MacroAssemblerARMv7.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssemblerARMv7.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEF6835A174343CC00A32E25 /* JITStubsARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsARM.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEF6835B174343CC00A32E25 /* JITStubsARMv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsARMv7.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEF6835C174343CC00A32E25 /* JITStubsX86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsX86_64.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FEF6835D174343CC00A32E25 /* JITStubsX86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITStubsX86.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                FED94F2B171E3E2300BE77A4 /* Watchdog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Watchdog.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                FED94F2C171E3E2300BE77A4 /* Watchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Watchdog.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                FED94F2D171E3E2300BE77A4 /* WatchdogMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WatchdogMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx"> /* End PBXFileReference section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXFrameworksBuildPhase section */
</span><span class="lines">@@ -2273,6 +2275,7 @@
</span><span class="cx">                                 1429D8DB0ED2205B00B89619 /* CallFrame.cpp */,
</span><span class="cx">                                 1429D8DC0ED2205B00B89619 /* CallFrame.h */,
</span><span class="cx">                                 A7F869EC0F95C2EC00558697 /* CallFrameClosure.h */,
</span><ins>+                                FE24596117601D580074FCE0 /* CallFrameInlines.h */,
</ins><span class="cx">                                 1429D7D30ED2128200B89619 /* Interpreter.cpp */,
</span><span class="cx">                                 1429D77B0ED20D7300B89619 /* Interpreter.h */,
</span><span class="cx">                                 1429D85B0ED218E900B89619 /* JSStack.cpp */,
</span><span class="lines">@@ -3259,6 +3262,7 @@
</span><span class="cx">                                 0F63945515D07057006A597C /* ArrayProfile.h in Headers */,
</span><span class="cx">                                 BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */,
</span><span class="cx">                                 FEF6835F174343CC00A32E25 /* JITStubsARMv7.h in Headers */,
</span><ins>+                                FE24596217601D580074FCE0 /* CallFrameInlines.h in Headers */,
</ins><span class="cx">                                 FEF68360174343CC00A32E25 /* JITStubsX86_64.h in Headers */,
</span><span class="cx">                                 FEF6835E174343CC00A32E25 /* JITStubsARM.h in Headers */,
</span><span class="cx">                                 FE940322174442590047CF6E /* JITStubsX86Common.h in Headers */,
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorebytecodeCodeOriginh"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/bytecode/CodeOrigin.h (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/bytecode/CodeOrigin.h        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/bytecode/CodeOrigin.h        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -88,6 +88,21 @@
</span><span class="cx">     Vector&lt;CodeOrigin&gt; inlineStack() const;
</span><span class="cx">     
</span><span class="cx">     void dump(PrintStream&amp;) const;
</span><ins>+
+    static inline bool isHandle(uint32_t bits) { return !!(bits &amp; handleFlag); }
+    static inline uint32_t encodeHandle(uint32_t bits)
+    {
+        ASSERT(!isHandle(bits));
+        return bits | handleFlag;
+    }
+    static inline uint32_t decodeHandle(uint32_t bits)
+    {
+        ASSERT(isHandle(bits));
+        return bits &amp; ~handleFlag;
+    }
+
+private:
+    static const uint32_t handleFlag = (1 &lt;&lt; 31);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> struct InlineCallFrame {
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoredfgDFGJITCompilerh"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGJITCompiler.h (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGJITCompiler.h        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGJITCompiler.h        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -313,7 +313,8 @@
</span><span class="cx">     void beginCall(CodeOrigin codeOrigin, CallBeginToken&amp; token)
</span><span class="cx">     {
</span><span class="cx">         unsigned index = m_exceptionChecks.size();
</span><del>-        store32(TrustedImm32(index), tagFor(static_cast&lt;VirtualRegister&gt;(JSStack::ArgumentCount)));
</del><ins>+        unsigned handle = CodeOrigin::encodeHandle(index);
+        store32(TrustedImm32(handle), tagFor(static_cast&lt;VirtualRegister&gt;(JSStack::ArgumentCount)));
</ins><span class="cx">         token.set(codeOrigin, index);
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoredfgDFGRepatchcpp"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGRepatch.cpp (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGRepatch.cpp        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGRepatch.cpp        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2011, 2012, 2013 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> 
</span><ins>+#include &quot;CallFrameInlines.h&quot;
</ins><span class="cx"> #include &quot;DFGCCallHelpers.h&quot;
</span><span class="cx"> #include &quot;DFGScratchRegisterAllocator.h&quot;
</span><span class="cx"> #include &quot;DFGSpeculativeJIT.h&quot;
</span><span class="lines">@@ -466,7 +467,7 @@
</span><span class="cx">             // place that we made it from. It just so happens to be the place that we are at
</span><span class="cx">             // right now!
</span><span class="cx">             stubJit.store32(
</span><del>-                MacroAssembler::TrustedImm32(exec-&gt;codeOriginIndexForDFG()),
</del><ins>+                MacroAssembler::TrustedImm32(exec-&gt;locationAsRawBits()),
</ins><span class="cx">                 CCallHelpers::tagFor(static_cast&lt;VirtualRegister&gt;(JSStack::ArgumentCount)));
</span><span class="cx">             
</span><span class="cx">             operationCall = stubJit.call();
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFramecpp"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.cpp (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.cpp        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.cpp        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;CallFrameInlines.h&quot;
</ins><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;Operations.h&quot;
</span><span class="lines">@@ -41,25 +42,28 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(JSVALUE32_64)
</span><del>-unsigned CallFrame::bytecodeOffsetForNonDFGCode() const
</del><ins>+unsigned CallFrame::locationAsBytecodeOffset() const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(codeBlock());
</span><ins>+    ASSERT(hasLocationAsBytecodeOffset());
</ins><span class="cx">     return currentVPC() - codeBlock()-&gt;instructions().begin();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CallFrame::setBytecodeOffsetForNonDFGCode(unsigned offset)
</del><ins>+void CallFrame::setLocationAsBytecodeOffset(unsigned offset)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(codeBlock());
</span><ins>+    ASSERT(!CodeOrigin::isHandle(offset));
</ins><span class="cx">     setCurrentVPC(codeBlock()-&gt;instructions().begin() + offset);
</span><ins>+    ASSERT(hasLocationAsBytecodeOffset());
</ins><span class="cx"> }
</span><span class="cx"> #else
</span><span class="cx"> Instruction* CallFrame::currentVPC() const
</span><span class="cx"> {
</span><del>-    return codeBlock()-&gt;instructions().begin() + bytecodeOffsetForNonDFGCode();
</del><ins>+    return codeBlock()-&gt;instructions().begin() + locationAsBytecodeOffset();
</ins><span class="cx"> }
</span><span class="cx"> void CallFrame::setCurrentVPC(Instruction* vpc)
</span><span class="cx"> {
</span><del>-    setBytecodeOffsetForNonDFGCode(vpc - codeBlock()-&gt;instructions().begin());
</del><ins>+    setLocationAsBytecodeOffset(vpc - codeBlock()-&gt;instructions().begin());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">     
</span><span class="lines">@@ -119,7 +123,7 @@
</span><span class="cx">             return 0;
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><del>-        unsigned index = codeOriginIndexForDFG();
</del><ins>+        unsigned index = locationAsCodeOriginIndex();
</ins><span class="cx">         ASSERT(machineCodeBlock-&gt;canGetCodeOrigin(index));
</span><span class="cx">         if (!machineCodeBlock-&gt;canGetCodeOrigin(index)) {
</span><span class="cx">             // See above. In release builds, we try to protect ourselves from crashing even
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFrameh"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.h (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.h        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrame.h        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
</span><span class="cx">  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
</span><del>- *  Copyright (C) 2003, 2007, 2008, 2011 Apple Inc. All rights reserved.
</del><ins>+ *  Copyright (C) 2003, 2007, 2008, 2011, 2013 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -113,23 +113,17 @@
</span><span class="cx">         void clearReturnPC() { registers()[JSStack::ReturnPC] = static_cast&lt;Instruction*&gt;(0); }
</span><span class="cx"> #endif
</span><span class="cx">         AbstractPC abstractReturnPC(VM&amp; vm) { return AbstractPC(vm, this); }
</span><del>-#if USE(JSVALUE32_64)
-        unsigned bytecodeOffsetForNonDFGCode() const;
-        void setBytecodeOffsetForNonDFGCode(unsigned offset);
-#else
-        unsigned bytecodeOffsetForNonDFGCode() const
-        {
-            ASSERT(codeBlock());
-            return this[JSStack::ArgumentCount].tag();
-        }
-        
-        void setBytecodeOffsetForNonDFGCode(unsigned offset)
-        {
-            ASSERT(codeBlock());
-            this[JSStack::ArgumentCount].tag() = static_cast&lt;int32_t&gt;(offset);
-        }
-#endif
</del><span class="cx"> 
</span><ins>+        bool hasLocationAsBytecodeOffset() const;
+        bool hasLocationAsCodeOriginIndex() const;
+
+        unsigned locationAsRawBits() const;
+        unsigned locationAsBytecodeOffset() const;
+        unsigned locationAsCodeOriginIndex() const;
+
+        void setLocationAsRawBits(unsigned);
+        void setLocationAsBytecodeOffset(unsigned);
+
</ins><span class="cx">         Register* frameExtent()
</span><span class="cx">         {
</span><span class="cx">             if (!codeBlock())
</span><span class="lines">@@ -141,7 +135,6 @@
</span><span class="cx">     
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">         InlineCallFrame* inlineCallFrame() const { return this[JSStack::ReturnPC].asInlineCallFrame(); }
</span><del>-        unsigned codeOriginIndexForDFG() const { return this[JSStack::ArgumentCount].tag(); }
</del><span class="cx"> #else
</span><span class="cx">         // This will never be called if !ENABLE(DFG_JIT) since all calls should be guarded by
</span><span class="cx">         // isInlineCallFrame(). But to make it easier to write code without having a bunch of
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreinterpreterCallFrameInlinesh"></a>
<div class="addfile"><h4>Added: branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrameInlines.h (0 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrameInlines.h                                (rev 0)
+++ branches/dfgFourthTier/Source/JavaScriptCore/interpreter/CallFrameInlines.h        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef CallFrameInlines_h
+#define CallFrameInlines_h
+
+#include &quot;CallFrame.h&quot;
+#include &quot;CodeOrigin.h&quot;
+
+namespace JSC  {
+
+inline bool CallFrame::hasLocationAsBytecodeOffset() const
+{
+    return !CodeOrigin::isHandle(locationAsRawBits());
+}
+
+inline bool CallFrame::hasLocationAsCodeOriginIndex() const
+{
+    return CodeOrigin::isHandle(locationAsRawBits());
+}
+
+inline unsigned CallFrame::locationAsRawBits() const
+{
+    return this[JSStack::ArgumentCount].tag();
+}
+
+inline void CallFrame::setLocationAsRawBits(unsigned bits)
+{
+    this[JSStack::ArgumentCount].tag() = static_cast&lt;int32_t&gt;(bits);
+}
+
+#if USE(JSVALUE64)
+inline unsigned CallFrame::locationAsBytecodeOffset() const
+{
+    ASSERT(hasLocationAsBytecodeOffset());
+    ASSERT(codeBlock());
+    return locationAsRawBits();
+}
+
+inline void CallFrame::setLocationAsBytecodeOffset(unsigned offset)
+{
+    ASSERT(codeBlock());
+    setLocationAsRawBits(offset);
+    ASSERT(hasLocationAsBytecodeOffset());
+}
+#endif // USE(JSVALUE64)
+
+inline unsigned CallFrame::locationAsCodeOriginIndex() const
+{
+    ASSERT(hasLocationAsCodeOriginIndex());
+    ASSERT(codeBlock());
+    return CodeOrigin::decodeHandle(locationAsRawBits());
+}
+
+} // namespace JSC
+
+#endif // CallFrameInlines_h
</ins></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/interpreter/Interpreter.cpp (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/interpreter/Interpreter.cpp        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/interpreter/Interpreter.cpp        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -573,9 +573,9 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">     if (JITCode::isOptimizingJIT(codeBlock-&gt;jitType()))
</span><del>-        return codeBlock-&gt;codeOrigin(callFrame-&gt;codeOriginIndexForDFG()).bytecodeIndex;
</del><ins>+        return codeBlock-&gt;codeOrigin(callFrame-&gt;locationAsCodeOriginIndex()).bytecodeIndex;
</ins><span class="cx"> #endif
</span><del>-    return callFrame-&gt;bytecodeOffsetForNonDFGCode();
</del><ins>+    return callFrame-&gt;locationAsBytecodeOffset();
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -601,14 +601,14 @@
</span><span class="cx">     if (wasCalledByHost) {
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">         if (callerCodeBlock &amp;&amp; JITCode::isOptimizingJIT(callerCodeBlock-&gt;jitType())) {
</span><del>-            unsigned codeOriginIndex = callFrame-&gt;callerFrame()-&gt;removeHostCallFrameFlag()-&gt;codeOriginIndexForDFG();
</del><ins>+            unsigned codeOriginIndex = callFrame-&gt;callerFrame()-&gt;removeHostCallFrameFlag()-&gt;locationAsCodeOriginIndex();
</ins><span class="cx">             CodeOrigin origin = callerCodeBlock-&gt;codeOrigin(codeOriginIndex);
</span><span class="cx">             bytecodeOffset = origin.bytecodeIndex;
</span><span class="cx">             if (InlineCallFrame* inlineCallFrame = origin.inlineCallFrame)
</span><span class="cx">                 callerCodeBlock = inlineCallFrame-&gt;baselineCodeBlock();
</span><span class="cx">         } else
</span><span class="cx"> #endif
</span><del>-            bytecodeOffset = trueCallerFrame-&gt;bytecodeOffsetForNonDFGCode();
</del><ins>+            bytecodeOffset = trueCallerFrame-&gt;locationAsBytecodeOffset();
</ins><span class="cx">     } else {
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">         if (callFrame-&gt;isInlineCallFrame()) {
</span></span></pre></div>
<a id="branchesdfgFourthTierSourceJavaScriptCorejitJITStubscpp"></a>
<div class="modfile"><h4>Modified: branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp (151249 => 151250)</h4>
<pre class="diff"><span>
<span class="info">--- branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp        2013-06-06 01:00:08 UTC (rev 151249)
+++ branches/dfgFourthTier/Source/JavaScriptCore/jit/JITStubs.cpp        2013-06-06 02:13:34 UTC (rev 151250)
</span><span class="lines">@@ -1620,7 +1620,7 @@
</span><span class="cx">         JSObject* object = asObject(baseValue);
</span><span class="cx">         bool didOptimize = false;
</span><span class="cx"> 
</span><del>-        unsigned bytecodeOffset = callFrame-&gt;bytecodeOffsetForNonDFGCode();
</del><ins>+        unsigned bytecodeOffset = callFrame-&gt;locationAsBytecodeOffset();
</ins><span class="cx">         ASSERT(bytecodeOffset);
</span><span class="cx">         ByValInfo&amp; byValInfo = callFrame-&gt;codeBlock()-&gt;getByValInfo(bytecodeOffset - 1);
</span><span class="cx">         ASSERT(!byValInfo.stubRoutine);
</span><span class="lines">@@ -1754,7 +1754,7 @@
</span><span class="cx">         JSObject* object = asObject(baseValue);
</span><span class="cx">         bool didOptimize = false;
</span><span class="cx"> 
</span><del>-        unsigned bytecodeOffset = callFrame-&gt;bytecodeOffsetForNonDFGCode();
</del><ins>+        unsigned bytecodeOffset = callFrame-&gt;locationAsBytecodeOffset();
</ins><span class="cx">         ASSERT(bytecodeOffset);
</span><span class="cx">         ByValInfo&amp; byValInfo = callFrame-&gt;codeBlock()-&gt;getByValInfo(bytecodeOffset - 1);
</span><span class="cx">         ASSERT(!byValInfo.stubRoutine);
</span></span></pre>
</div>
</div>

</body>
</html>