<!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>[209353] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/209353">209353</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2016-12-05 14:46:06 -0800 (Mon, 05 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>ScriptExecutable should not contain a copy of firstLine and startColumn
https://bugs.webkit.org/show_bug.cgi?id=165415

Reviewed by Keith Miller.

We already have this data in SourceCode.

It's super confusing to have two copies of this data, where one is
allowed to mutate. In reality, your line and column number never change.

* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::link):
* runtime/CodeCache.cpp:
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
* runtime/CodeCache.h:
(JSC::generateUnlinkedCodeBlock):
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::FunctionExecutable):
* runtime/FunctionExecutable.h:
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::ScriptExecutable):
(JSC::ScriptExecutable::newCodeBlockFor):
* runtime/ScriptExecutable.h:
(JSC::ScriptExecutable::firstLine):
(JSC::ScriptExecutable::startColumn):
(JSC::ScriptExecutable::recordParse):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCachecpp">trunk/Source/JavaScriptCore/runtime/CodeCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCacheh">trunk/Source/JavaScriptCore/runtime/CodeCache.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutablecpp">trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutableh">trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutablecpp">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutableh">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2016-12-05  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        ScriptExecutable should not contain a copy of firstLine and startColumn
+        https://bugs.webkit.org/show_bug.cgi?id=165415
+
+        Reviewed by Keith Miller.
+
+        We already have this data in SourceCode.
+
+        It's super confusing to have two copies of this data, where one is
+        allowed to mutate. In reality, your line and column number never change.
+
+        * bytecode/UnlinkedFunctionExecutable.cpp:
+        (JSC::UnlinkedFunctionExecutable::link):
+        * runtime/CodeCache.cpp:
+        (JSC::CodeCache::getUnlinkedGlobalCodeBlock):
+        * runtime/CodeCache.h:
+        (JSC::generateUnlinkedCodeBlock):
+        * runtime/FunctionExecutable.cpp:
+        (JSC::FunctionExecutable::FunctionExecutable):
+        * runtime/FunctionExecutable.h:
+        * runtime/ScriptExecutable.cpp:
+        (JSC::ScriptExecutable::ScriptExecutable):
+        (JSC::ScriptExecutable::newCodeBlockFor):
+        * runtime/ScriptExecutable.h:
+        (JSC::ScriptExecutable::firstLine):
+        (JSC::ScriptExecutable::startColumn):
+        (JSC::ScriptExecutable::recordParse):
+
</ins><span class="cx"> 2016-12-05  Caitlin Potter  &lt;caitp@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] report unexpected token when &quot;async&quot; is followed by identifier 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    FunctionExecutable* result = FunctionExecutable::create(vm, code, this, firstLine, firstLine + lineCount, startColumn, endColumn, intrinsic);
</del><ins>+    FunctionExecutable* result = FunctionExecutable::create(vm, code, this, firstLine + lineCount, endColumn, intrinsic);
</ins><span class="cx">     if (overrideLineNumber)
</span><span class="cx">         result-&gt;setOverrideLineNumber(*overrideLineNumber);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.cpp (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">         unsigned startColumn = unlinkedCodeBlock-&gt;startColumn() + source.startColumn();
</span><span class="cx">         bool endColumnIsOnStartLine = !lineCount;
</span><span class="cx">         unsigned endColumn = unlinkedCodeBlock-&gt;endColumn() + (endColumnIsOnStartLine ? startColumn : 1);
</span><del>-        executable-&gt;recordParse(unlinkedCodeBlock-&gt;codeFeatures(), unlinkedCodeBlock-&gt;hasCapturedVariables(), source.firstLine(), source.firstLine() + lineCount, startColumn, endColumn);
</del><ins>+        executable-&gt;recordParse(unlinkedCodeBlock-&gt;codeFeatures(), unlinkedCodeBlock-&gt;hasCapturedVariables(), source.firstLine() + lineCount, endColumn);
</ins><span class="cx">         source.provider()-&gt;setSourceURLDirective(unlinkedCodeBlock-&gt;sourceURLDirective());
</span><span class="cx">         source.provider()-&gt;setSourceMappingURLDirective(unlinkedCodeBlock-&gt;sourceMappingURLDirective());
</span><span class="cx">         return unlinkedCodeBlock;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.h (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.h        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.h        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx">     unsigned unlinkedEndColumn = rootNode-&gt;endColumn();
</span><span class="cx">     unsigned endColumn = unlinkedEndColumn + (endColumnIsOnStartLine ? startColumn : 1);
</span><span class="cx">     unsigned arrowContextFeature = executable-&gt;isArrowFunctionContext() ? ArrowFunctionContextFeature : 0;
</span><del>-    executable-&gt;recordParse(rootNode-&gt;features() | arrowContextFeature, rootNode-&gt;hasCapturedVariables(), rootNode-&gt;firstLine(), rootNode-&gt;lastLine(), startColumn, endColumn);
</del><ins>+    executable-&gt;recordParse(rootNode-&gt;features() | arrowContextFeature, rootNode-&gt;hasCapturedVariables(), rootNode-&gt;lastLine(), endColumn);
</ins><span class="cx"> 
</span><span class="cx">     UnlinkedCodeBlockType* unlinkedCodeBlock = UnlinkedCodeBlockType::create(&amp;vm, executable-&gt;executableInfo(), debuggerMode);
</span><span class="cx">     unlinkedCodeBlock-&gt;recordParse(rootNode-&gt;features(), rootNode-&gt;hasCapturedVariables(), lineCount, unlinkedEndColumn);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -41,17 +41,14 @@
</span><span class="cx"> 
</span><span class="cx"> const ClassInfo FunctionExecutable::s_info = { &quot;FunctionExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
</span><span class="cx"> 
</span><del>-FunctionExecutable::FunctionExecutable(VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
</del><ins>+FunctionExecutable::FunctionExecutable(VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned lastLine, unsigned endColumn, Intrinsic intrinsic)
</ins><span class="cx">     : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable-&gt;isInStrictContext(), unlinkedExecutable-&gt;derivedContextType(), false, EvalContextType::None, intrinsic)
</span><span class="cx">     , m_unlinkedExecutable(vm, this, unlinkedExecutable)
</span><span class="cx"> {
</span><span class="cx">     RELEASE_ASSERT(!source.isNull());
</span><span class="cx">     ASSERT(source.length());
</span><del>-    m_firstLine = firstLine;
</del><span class="cx">     m_lastLine = lastLine;
</span><del>-    ASSERT(startColumn != UINT_MAX);
</del><span class="cx">     ASSERT(endColumn != UINT_MAX);
</span><del>-    m_startColumn = startColumn;
</del><span class="cx">     m_endColumn = endColumn;
</span><span class="cx">     m_parametersStartOffset = unlinkedExecutable-&gt;parametersStartOffset();
</span><span class="cx">     m_typeProfilingStartOffset = unlinkedExecutable-&gt;typeProfilingStartOffset();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx"> 
</span><span class="cx">     static FunctionExecutable* create(
</span><span class="cx">         VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, 
</span><del>-        unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
</del><ins>+        unsigned lastLine, unsigned endColumn, Intrinsic intrinsic)
</ins><span class="cx">     {
</span><del>-        FunctionExecutable* executable = new (NotNull, allocateCell&lt;FunctionExecutable&gt;(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine, startColumn, endColumn, intrinsic);
</del><ins>+        FunctionExecutable* executable = new (NotNull, allocateCell&lt;FunctionExecutable&gt;(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, lastLine, endColumn, intrinsic);
</ins><span class="cx">         executable-&gt;finishCreation(vm);
</span><span class="cx">         return executable;
</span><span class="cx">     }
</span><span class="lines">@@ -172,8 +172,8 @@
</span><span class="cx"> private:
</span><span class="cx">     friend class ExecutableBase;
</span><span class="cx">     FunctionExecutable(
</span><del>-        VM&amp;, const SourceCode&amp;, UnlinkedFunctionExecutable*, unsigned firstLine, 
-        unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic);
</del><ins>+        VM&amp;, const SourceCode&amp;, UnlinkedFunctionExecutable*,
+        unsigned lastLine, unsigned endColumn, Intrinsic);
</ins><span class="cx">     
</span><span class="cx">     void finishCreation(VM&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -57,9 +57,7 @@
</span><span class="cx">     , m_derivedContextType(static_cast&lt;unsigned&gt;(derivedContextType))
</span><span class="cx">     , m_evalContextType(static_cast&lt;unsigned&gt;(evalContextType))
</span><span class="cx">     , m_overrideLineNumber(-1)
</span><del>-    , m_firstLine(-1)
</del><span class="cx">     , m_lastLine(-1)
</span><del>-    , m_startColumn(UINT_MAX)
</del><span class="cx">     , m_endColumn(UINT_MAX)
</span><span class="cx">     , m_typeProfilingStartOffset(UINT_MAX)
</span><span class="cx">     , m_typeProfilingEndOffset(UINT_MAX)
</span><span class="lines">@@ -178,7 +176,6 @@
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(*vm);
</span><span class="cx"> 
</span><span class="cx">     ASSERT(vm-&gt;heap.isDeferred());
</span><del>-    ASSERT(startColumn() != UINT_MAX);
</del><span class="cx">     ASSERT(endColumn() != UINT_MAX);
</span><span class="cx"> 
</span><span class="cx">     if (classInfo() == EvalExecutable::info()) {
</span><span class="lines">@@ -198,7 +195,7 @@
</span><span class="cx">         RELEASE_ASSERT(!function);
</span><span class="cx">         return ProgramCodeBlock::create(vm,
</span><span class="cx">             executable, executable-&gt;m_unlinkedProgramCodeBlock.get(), scope,
</span><del>-            executable-&gt;source().provider(), executable-&gt;source().startColumn());
</del><ins>+            executable-&gt;source().provider(), startColumn());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (classInfo() == ModuleProgramExecutable::info()) {
</span><span class="lines">@@ -208,7 +205,7 @@
</span><span class="cx">         RELEASE_ASSERT(!function);
</span><span class="cx">         return ModuleProgramCodeBlock::create(vm,
</span><span class="cx">             executable, executable-&gt;m_unlinkedModuleProgramCodeBlock.get(), scope,
</span><del>-            executable-&gt;source().provider(), executable-&gt;source().startColumn());
</del><ins>+            executable-&gt;source().provider(), startColumn());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
</span><span class="lines">@@ -224,8 +221,8 @@
</span><span class="cx">             executable-&gt;parseMode());
</span><span class="cx">     recordParse(
</span><span class="cx">         executable-&gt;m_unlinkedExecutable-&gt;features(), 
</span><del>-        executable-&gt;m_unlinkedExecutable-&gt;hasCapturedVariables(), firstLine(), 
-        lastLine(), startColumn(), endColumn()); 
</del><ins>+        executable-&gt;m_unlinkedExecutable-&gt;hasCapturedVariables(),
+        lastLine(), endColumn()); 
</ins><span class="cx">     if (!unlinkedCodeBlock) {
</span><span class="cx">         exception = throwException(
</span><span class="cx">             globalObject-&gt;globalExec(), throwScope,
</span><span class="lines">@@ -233,12 +230,8 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SourceProvider* provider = executable-&gt;source().provider();
-    unsigned sourceOffset = executable-&gt;source().startOffset();
-    unsigned startColumn = executable-&gt;source().startColumn();
-
-    return FunctionCodeBlock::create(vm,
-        executable, unlinkedCodeBlock, scope, provider, sourceOffset, startColumn);
</del><ins>+    return FunctionCodeBlock::create(vm, executable, unlinkedCodeBlock, scope, 
+        source().provider(), source().startOffset(), startColumn());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CodeBlock* ScriptExecutable::newReplacementCodeBlockFor(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h (209352 => 209353)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h        2016-12-05 22:42:28 UTC (rev 209352)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h        2016-12-05 22:46:06 UTC (rev 209353)
</span><span class="lines">@@ -41,12 +41,12 @@
</span><span class="cx">     const SourceCode&amp; source() const { return m_source; }
</span><span class="cx">     intptr_t sourceID() const { return m_source.providerID(); }
</span><span class="cx">     const String&amp; sourceURL() const { return m_source.provider()-&gt;url(); }
</span><del>-    int firstLine() const { return m_firstLine; }
</del><ins>+    int firstLine() const { return m_source.firstLine(); }
</ins><span class="cx">     void setOverrideLineNumber(int overrideLineNumber) { m_overrideLineNumber = overrideLineNumber; }
</span><span class="cx">     bool hasOverrideLineNumber() const { return m_overrideLineNumber != -1; }
</span><span class="cx">     int overrideLineNumber() const { return m_overrideLineNumber; }
</span><span class="cx">     int lastLine() const { return m_lastLine; }
</span><del>-    unsigned startColumn() const { return m_startColumn; }
</del><ins>+    unsigned startColumn() const { return m_source.startColumn(); }
</ins><span class="cx">     unsigned endColumn() const { return m_endColumn; }
</span><span class="cx">     unsigned typeProfilingStartOffset() const { return m_typeProfilingStartOffset; }
</span><span class="cx">     unsigned typeProfilingEndOffset() const { return m_typeProfilingEndOffset; }
</span><span class="lines">@@ -79,14 +79,11 @@
</span><span class="cx">         
</span><span class="cx">     DECLARE_EXPORT_INFO;
</span><span class="cx"> 
</span><del>-    void recordParse(CodeFeatures features, bool hasCapturedVariables, int firstLine, int lastLine, unsigned startColumn, unsigned endColumn)
</del><ins>+    void recordParse(CodeFeatures features, bool hasCapturedVariables, int lastLine, unsigned endColumn)
</ins><span class="cx">     {
</span><span class="cx">         m_features = features;
</span><span class="cx">         m_hasCapturedVariables = hasCapturedVariables;
</span><del>-        m_firstLine = firstLine;
</del><span class="cx">         m_lastLine = lastLine;
</span><del>-        ASSERT(startColumn != UINT_MAX);
-        m_startColumn = startColumn;
</del><span class="cx">         ASSERT(endColumn != UINT_MAX);
</span><span class="cx">         m_endColumn = endColumn;
</span><span class="cx">     }
</span><span class="lines">@@ -135,9 +132,7 @@
</span><span class="cx">     unsigned m_evalContextType : 2; // EvalContextType
</span><span class="cx"> 
</span><span class="cx">     int m_overrideLineNumber;
</span><del>-    int m_firstLine;
</del><span class="cx">     int m_lastLine;
</span><del>-    unsigned m_startColumn;
</del><span class="cx">     unsigned m_endColumn;
</span><span class="cx">     unsigned m_typeProfilingStartOffset;
</span><span class="cx">     unsigned m_typeProfilingEndOffset;
</span></span></pre>
</div>
</div>

</body>
</html>