<!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>[209632] trunk/Source</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/209632">209632</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2016-12-09 14:59:52 -0800 (Fri, 09 Dec 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Deploy OrdinalNumber in JSC::SourceCode
https://bugs.webkit.org/show_bug.cgi?id=165687
Reviewed by Michael Saboff.
Source/JavaScriptCore:
We have a lot of confusion between 1-based and 0-based counting in line
and column numbers. Let's use OrdinalNumber to clear up the confusion.
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::link):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitExpressionInfo):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::functionDetails):
* parser/Lexer.cpp:
(JSC::Lexer<T>::setCode):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::Parser):
* parser/Parser.h:
(JSC::Parser<LexerType>::parse):
* parser/SourceCode.h:
(JSC::SourceCode::SourceCode):
(JSC::SourceCode::firstLine):
(JSC::SourceCode::startColumn):
* runtime/CodeCache.cpp:
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
* runtime/ScriptExecutable.h:
(JSC::ScriptExecutable::firstLine):
(JSC::ScriptExecutable::startColumn):
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile):
Source/WebCore:
Updated for interface changes.
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::evaluateModule):
* bindings/js/ScriptSourceCode.h:
(WebCore::ScriptSourceCode::startLine):
Source/WTF:
* wtf/text/OrdinalNumber.h:
(WTF::OrdinalNumber::operator>): Added a >.</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="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp">trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserLexercpp">trunk/Source/JavaScriptCore/parser/Lexer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParsercpp">trunk/Source/JavaScriptCore/parser/Parser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParserh">trunk/Source/JavaScriptCore/parser/Parser.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSourceCodeh">trunk/Source/JavaScriptCore/parser/SourceCode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCachecpp">trunk/Source/JavaScriptCore/runtime/CodeCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutableh">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsCodeProfileh">trunk/Source/JavaScriptCore/tools/CodeProfile.h</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtftextOrdinalNumberh">trunk/Source/WTF/wtf/text/OrdinalNumber.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllercpp">trunk/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptSourceCodeh">trunk/Source/WebCore/bindings/js/ScriptSourceCode.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-12-09 Geoffrey Garen <ggaren@apple.com>
+
+ Deploy OrdinalNumber in JSC::SourceCode
+ https://bugs.webkit.org/show_bug.cgi?id=165687
+
+ Reviewed by Michael Saboff.
+
+ We have a lot of confusion between 1-based and 0-based counting in line
+ and column numbers. Let's use OrdinalNumber to clear up the confusion.
+
+ * bytecode/UnlinkedFunctionExecutable.cpp:
+ (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
+ (JSC::UnlinkedFunctionExecutable::link):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::emitExpressionInfo):
+ * inspector/JSInjectedScriptHost.cpp:
+ (Inspector::JSInjectedScriptHost::functionDetails):
+ * parser/Lexer.cpp:
+ (JSC::Lexer<T>::setCode):
+ * parser/Parser.cpp:
+ (JSC::Parser<LexerType>::Parser):
+ * parser/Parser.h:
+ (JSC::Parser<LexerType>::parse):
+ * parser/SourceCode.h:
+ (JSC::SourceCode::SourceCode):
+ (JSC::SourceCode::firstLine):
+ (JSC::SourceCode::startColumn):
+ * runtime/CodeCache.cpp:
+ (JSC::CodeCache::getUnlinkedGlobalCodeBlock):
+ * runtime/ScriptExecutable.h:
+ (JSC::ScriptExecutable::firstLine):
+ (JSC::ScriptExecutable::startColumn):
+ * tools/CodeProfile.h:
+ (JSC::CodeProfile::CodeProfile):
+
</ins><span class="cx"> 2016-12-09 Saam Barati <sbarati@apple.com>
</span><span class="cx">
</span><span class="cx"> WebAssembly JS API: implement importing and defining Memory
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">
</span><span class="cx"> UnlinkedFunctionExecutable::UnlinkedFunctionExecutable(VM* vm, Structure* structure, const SourceCode& parentSource, SourceCode&& parentSourceOverride, FunctionMetadataNode* node, UnlinkedFunctionKind kind, ConstructAbility constructAbility, JSParserScriptMode scriptMode, VariableEnvironment& parentScopeTDZVariables, DerivedContextType derivedContextType)
</span><span class="cx"> : Base(*vm, structure)
</span><del>- , m_firstLineOffset(node->firstLine() - parentSource.firstLine())
</del><ins>+ , m_firstLineOffset(node->firstLine() - parentSource.firstLine().oneBasedInt())
</ins><span class="cx"> , m_lineCount(node->lastLine() - node->firstLine())
</span><span class="cx"> , m_unlinkedFunctionNameStart(node->functionNameStart() - parentSource.startOffset())
</span><span class="cx"> , m_unlinkedBodyStartColumn(node->startColumn())
</span><span class="lines">@@ -134,11 +134,11 @@
</span><span class="cx"> FunctionExecutable* UnlinkedFunctionExecutable::link(VM& vm, const SourceCode& passedParentSource, std::optional<int> overrideLineNumber, Intrinsic intrinsic)
</span><span class="cx"> {
</span><span class="cx"> const SourceCode& parentSource = m_parentSourceOverride.isNull() ? passedParentSource : m_parentSourceOverride;
</span><del>- unsigned firstLine = parentSource.firstLine() + m_firstLineOffset;
</del><ins>+ unsigned firstLine = parentSource.firstLine().oneBasedInt() + m_firstLineOffset;
</ins><span class="cx"> unsigned startOffset = parentSource.startOffset() + m_startOffset;
</span><span class="cx"> unsigned lineCount = m_lineCount;
</span><span class="cx">
</span><del>- unsigned startColumn = linkedStartColumn(parentSource.startColumn());
</del><ins>+ unsigned startColumn = linkedStartColumn(parentSource.startColumn().oneBasedInt());
</ins><span class="cx"> unsigned endColumn = linkedEndColumn(startColumn);
</span><span class="cx">
</span><span class="cx"> SourceCode source(parentSource.provider(), startOffset, startOffset + m_sourceLength, firstLine, startColumn);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -445,7 +445,7 @@
</span><span class="cx"> ASSERT(divotEnd.offset >= divot.offset);
</span><span class="cx">
</span><span class="cx"> int sourceOffset = m_scopeNode->source().startOffset();
</span><del>- unsigned firstLine = m_scopeNode->source().firstLine();
</del><ins>+ unsigned firstLine = m_scopeNode->source().firstLine().oneBasedInt();
</ins><span class="cx">
</span><span class="cx"> int divotOffset = divot.offset - sourceOffset;
</span><span class="cx"> int startOffset = divot.offset - divotStart.offset;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -215,10 +215,10 @@
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="cx"> // In the inspector protocol all positions are 0-based while in SourceCode they are 1-based
</span><del>- int lineNumber = sourceCode->firstLine();
</del><ins>+ int lineNumber = sourceCode->firstLine().oneBasedInt();
</ins><span class="cx"> if (lineNumber)
</span><span class="cx"> lineNumber -= 1;
</span><del>- int columnNumber = sourceCode->startColumn();
</del><ins>+ int columnNumber = sourceCode->startColumn().oneBasedInt();
</ins><span class="cx"> if (columnNumber)
</span><span class="cx"> columnNumber -= 1;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserLexercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Lexer.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Lexer.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/parser/Lexer.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -541,7 +541,7 @@
</span><span class="cx"> {
</span><span class="cx"> m_arena = &arena->identifierArena();
</span><span class="cx">
</span><del>- m_lineNumber = source.firstLine();
</del><ins>+ m_lineNumber = source.firstLine().oneBasedInt();
</ins><span class="cx"> m_lastToken = -1;
</span><span class="cx">
</span><span class="cx"> StringView sourceString = source.provider()->source();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/parser/Parser.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx"> {
</span><span class="cx"> m_lexer = std::make_unique<LexerType>(vm, builtinMode, scriptMode);
</span><span class="cx"> m_lexer->setCode(source, &m_parserArena);
</span><del>- m_token.m_location.line = source.firstLine();
</del><ins>+ m_token.m_location.line = source.firstLine().oneBasedInt();
</ins><span class="cx"> m_token.m_location.startOffset = source.startOffset();
</span><span class="cx"> m_token.m_location.endOffset = source.startOffset();
</span><span class="cx"> m_token.m_location.lineStartOffset = source.startOffset();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/parser/Parser.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -1790,8 +1790,8 @@
</span><span class="cx"> errMsg = String();
</span><span class="cx">
</span><span class="cx"> JSTokenLocation startLocation(tokenLocation());
</span><del>- ASSERT(m_source->startColumn() > 0);
- unsigned startColumn = m_source->startColumn() - 1;
</del><ins>+ ASSERT(m_source->startColumn() > OrdinalNumber::beforeFirst());
+ unsigned startColumn = m_source->startColumn().zeroBasedInt();
</ins><span class="cx">
</span><span class="cx"> String parseError = parseInner(calleeName, parseMode);
</span><span class="cx">
</span><span class="lines">@@ -1830,7 +1830,7 @@
</span><span class="cx"> currentScope()->innerArrowFunctionFeatures(),
</span><span class="cx"> m_numConstants,
</span><span class="cx"> WTFMove(m_moduleScopeData));
</span><del>- result->setLoc(m_source->firstLine(), m_lexer->lineNumber(), m_lexer->currentOffset(), m_lexer->currentLineStartOffset());
</del><ins>+ result->setLoc(m_source->firstLine().oneBasedInt(), m_lexer->lineNumber(), m_lexer->currentOffset(), m_lexer->currentLineStartOffset());
</ins><span class="cx"> result->setEndOffset(m_lexer->currentOffset());
</span><span class="cx">
</span><span class="cx"> if (!isFunctionParseMode(parseMode)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/SourceCode.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SourceCode.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/parser/SourceCode.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -36,34 +36,32 @@
</span><span class="cx"> public:
</span><span class="cx"> SourceCode()
</span><span class="cx"> : UnlinkedSourceCode()
</span><del>- , m_firstLine(0)
- , m_startColumn(0)
</del><ins>+ , m_firstLine(OrdinalNumber::beforeFirst())
+ , m_startColumn(OrdinalNumber::beforeFirst())
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SourceCode(PassRefPtr<SourceProvider> provider)
</span><span class="cx"> : UnlinkedSourceCode(provider)
</span><del>- , m_firstLine(1)
- , m_startColumn(1)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SourceCode(PassRefPtr<SourceProvider> provider, int firstLine, int startColumn)
</span><span class="cx"> : UnlinkedSourceCode(provider)
</span><del>- , m_firstLine(std::max(firstLine, 1))
- , m_startColumn(std::max(startColumn, 1))
</del><ins>+ , m_firstLine(OrdinalNumber::fromOneBasedInt(std::max(firstLine, 1)))
+ , m_startColumn(OrdinalNumber::fromOneBasedInt(std::max(startColumn, 1)))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SourceCode(PassRefPtr<SourceProvider> provider, int startOffset, int endOffset, int firstLine, int startColumn)
</span><span class="cx"> : UnlinkedSourceCode(provider, startOffset, endOffset)
</span><del>- , m_firstLine(std::max(firstLine, 1))
- , m_startColumn(std::max(startColumn, 1))
</del><ins>+ , m_firstLine(OrdinalNumber::fromOneBasedInt(std::max(firstLine, 1)))
+ , m_startColumn(OrdinalNumber::fromOneBasedInt(std::max(startColumn, 1)))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- int firstLine() const { return m_firstLine; }
- int startColumn() const { return m_startColumn; }
</del><ins>+ OrdinalNumber firstLine() const { return m_firstLine; }
+ OrdinalNumber startColumn() const { return m_startColumn; }
</ins><span class="cx">
</span><span class="cx"> intptr_t providerID() const
</span><span class="cx"> {
</span><span class="lines">@@ -77,8 +75,8 @@
</span><span class="cx"> SourceCode subExpression(unsigned openBrace, unsigned closeBrace, int firstLine, int startColumn);
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- int m_firstLine;
- int m_startColumn;
</del><ins>+ OrdinalNumber m_firstLine;
+ OrdinalNumber m_startColumn;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> inline SourceCode makeSource(const String& source, const String& url = String(), const TextPosition& startPosition = TextPosition(), SourceProviderSourceType sourceType = SourceProviderSourceType::Program)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -62,10 +62,10 @@
</span><span class="cx"> if (cache && Options::useCodeCache()) {
</span><span class="cx"> UnlinkedCodeBlockType* unlinkedCodeBlock = jsCast<UnlinkedCodeBlockType*>(cache->cell.get());
</span><span class="cx"> unsigned lineCount = unlinkedCodeBlock->lineCount();
</span><del>- unsigned startColumn = unlinkedCodeBlock->startColumn() + source.startColumn();
</del><ins>+ unsigned startColumn = unlinkedCodeBlock->startColumn() + source.startColumn().oneBasedInt();
</ins><span class="cx"> bool endColumnIsOnStartLine = !lineCount;
</span><span class="cx"> unsigned endColumn = unlinkedCodeBlock->endColumn() + (endColumnIsOnStartLine ? startColumn : 1);
</span><del>- executable->recordParse(unlinkedCodeBlock->codeFeatures(), unlinkedCodeBlock->hasCapturedVariables(), source.firstLine() + lineCount, endColumn);
</del><ins>+ executable->recordParse(unlinkedCodeBlock->codeFeatures(), unlinkedCodeBlock->hasCapturedVariables(), source.firstLine().oneBasedInt() + lineCount, endColumn);
</ins><span class="cx"> source.provider()->setSourceURLDirective(unlinkedCodeBlock->sourceURLDirective());
</span><span class="cx"> source.provider()->setSourceMappingURLDirective(unlinkedCodeBlock->sourceMappingURLDirective());
</span><span class="cx"> return unlinkedCodeBlock;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -41,12 +41,12 @@
</span><span class="cx"> const SourceCode& source() const { return m_source; }
</span><span class="cx"> intptr_t sourceID() const { return m_source.providerID(); }
</span><span class="cx"> const String& sourceURL() const { return m_source.provider()->url(); }
</span><del>- int firstLine() const { return m_source.firstLine(); }
</del><ins>+ int firstLine() const { return m_source.firstLine().oneBasedInt(); }
</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_source.startColumn(); }
</del><ins>+ unsigned startColumn() const { return m_source.startColumn().oneBasedInt(); }
</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></pre></div>
<a id="trunkSourceJavaScriptCoretoolsCodeProfileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/CodeProfile.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/CodeProfile.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/JavaScriptCore/tools/CodeProfile.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> public:
</span><span class="cx"> CodeProfile(const SourceCode& source, CodeProfile* parent)
</span><span class="cx"> : m_file(source.provider()->url().utf8())
</span><del>- , m_lineNumber(source.firstLine())
</del><ins>+ , m_lineNumber(source.firstLine().oneBasedInt())
</ins><span class="cx"> , m_parent(parent)
</span><span class="cx"> {
</span><span class="cx"> if (parent)
</span></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/WTF/ChangeLog        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -1,5 +1,15 @@
</span><span class="cx"> 2016-12-09 Geoffrey Garen <ggaren@apple.com>
</span><span class="cx">
</span><ins>+ Deploy OrdinalNumber in JSC::SourceCode
+ https://bugs.webkit.org/show_bug.cgi?id=165687
+
+ Reviewed by Michael Saboff.
+
+ * wtf/text/OrdinalNumber.h:
+ (WTF::OrdinalNumber::operator>): Added a >.
+
+2016-12-09 Geoffrey Garen <ggaren@apple.com>
+
</ins><span class="cx"> TextPosition and OrdinalNumber should be more like idiomatic numbers
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=165678
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtftextOrdinalNumberh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/OrdinalNumber.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/OrdinalNumber.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/WTF/wtf/text/OrdinalNumber.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> // call a first element '0' or '1' which makes integer type ambiguous.
</span><span class="cx"> class OrdinalNumber {
</span><span class="cx"> public:
</span><ins>+ static OrdinalNumber beforeFirst() { return OrdinalNumber(-1); }
</ins><span class="cx"> static OrdinalNumber fromZeroBasedInt(int zeroBasedInt) { return OrdinalNumber(zeroBasedInt); }
</span><span class="cx"> static OrdinalNumber fromOneBasedInt(int oneBasedInt) { return OrdinalNumber(oneBasedInt - 1); }
</span><span class="cx">
</span><span class="lines">@@ -41,9 +42,8 @@
</span><span class="cx">
</span><span class="cx"> bool operator==(OrdinalNumber other) { return m_zeroBasedValue == other.m_zeroBasedValue; }
</span><span class="cx"> bool operator!=(OrdinalNumber other) { return !((*this) == other); }
</span><ins>+ bool operator>(OrdinalNumber other) { return m_zeroBasedValue > other.m_zeroBasedValue; }
</ins><span class="cx">
</span><del>- static OrdinalNumber beforeFirst() { return OrdinalNumber(-1); }
-
</del><span class="cx"> private:
</span><span class="cx"> OrdinalNumber(int zeroBasedInt) : m_zeroBasedValue(zeroBasedInt) { }
</span><span class="cx"> int m_zeroBasedValue;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/WebCore/ChangeLog        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-12-09 Geoffrey Garen <ggaren@apple.com>
+
+ Deploy OrdinalNumber in JSC::SourceCode
+ https://bugs.webkit.org/show_bug.cgi?id=165687
+
+ Reviewed by Michael Saboff.
+
+ Updated for interface changes.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluateModule):
+ * bindings/js/ScriptSourceCode.h:
+ (WebCore::ScriptSourceCode::startLine):
+
</ins><span class="cx"> 2016-12-09 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Some resources fetched via Fetch API do not have data
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.cpp        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx">
</span><span class="cx"> Ref<Frame> protector(m_frame);
</span><span class="cx">
</span><del>- auto cookie = InspectorInstrumentation::willEvaluateScript(m_frame, sourceURL, jsSourceCode.firstLine());
</del><ins>+ auto cookie = InspectorInstrumentation::willEvaluateScript(m_frame, sourceURL, jsSourceCode.firstLine().oneBasedInt());
</ins><span class="cx">
</span><span class="cx"> auto returnValue = moduleRecord.evaluate(&state);
</span><span class="cx"> InspectorInstrumentation::didEvaluateScript(cookie, m_frame);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptSourceCode.h (209631 => 209632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptSourceCode.h        2016-12-09 22:43:54 UTC (rev 209631)
+++ trunk/Source/WebCore/bindings/js/ScriptSourceCode.h        2016-12-09 22:59:52 UTC (rev 209632)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">
</span><span class="cx"> StringView source() const { return m_provider->source(); }
</span><span class="cx">
</span><del>- int startLine() const { return m_code.firstLine(); }
</del><ins>+ int startLine() const { return m_code.firstLine().oneBasedInt(); }
</ins><span class="cx">
</span><span class="cx"> CachedScript* cachedScript() const { return m_cachedScript.get(); }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>