<!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>[196541] 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/196541">196541</a></dd>
<dt>Author</dt> <dd>msaboff@apple.com</dd>
<dt>Date</dt> <dd>2016-02-12 18:37:19 -0800 (Fri, 12 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>offlineasm: Emit Dwarf2 file and location directives to allow for debugging .asm files
https://bugs.webkit.org/show_bug.cgi?id=152703

Reviewed by Mark Lam.

Added support to output Dwarf2 .file and .loc assembler directives to provide the debugging
information needed to correlate the offline assembler generated code with the source lines 
in the .asm files.

Changed the tracking of file data to include a file index that was provided to the .file
directive.  That index is used when emitting the .loc directives.

* offlineasm/arm.rb:
* offlineasm/arm64.rb:
* offlineasm/asm.rb:
* offlineasm/backends.rb:
* offlineasm/config.rb:
* offlineasm/parser.rb:
* offlineasm/x86.rb:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmarmrb">trunk/Source/JavaScriptCore/offlineasm/arm.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmarm64rb">trunk/Source/JavaScriptCore/offlineasm/arm64.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmasmrb">trunk/Source/JavaScriptCore/offlineasm/asm.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmbackendsrb">trunk/Source/JavaScriptCore/offlineasm/backends.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmconfigrb">trunk/Source/JavaScriptCore/offlineasm/config.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmparserrb">trunk/Source/JavaScriptCore/offlineasm/parser.rb</a></li>
<li><a href="#trunkSourceJavaScriptCoreofflineasmx86rb">trunk/Source/JavaScriptCore/offlineasm/x86.rb</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-02-12  Michael Saboff  &lt;msaboff@apple.com&gt;
+
+        offlineasm: Emit Dwarf2 file and location directives to allow for debugging .asm files
+        https://bugs.webkit.org/show_bug.cgi?id=152703
+
+        Reviewed by Mark Lam.
+
+        Added support to output Dwarf2 .file and .loc assembler directives to provide the debugging
+        information needed to correlate the offline assembler generated code with the source lines 
+        in the .asm files.
+
+        Changed the tracking of file data to include a file index that was provided to the .file
+        directive.  That index is used when emitting the .loc directives.
+
+        * offlineasm/arm.rb:
+        * offlineasm/arm64.rb:
+        * offlineasm/asm.rb:
+        * offlineasm/backends.rb:
+        * offlineasm/config.rb:
+        * offlineasm/parser.rb:
+        * offlineasm/x86.rb:
+
</ins><span class="cx"> 2016-02-12  Saam barati  &lt;sbarati@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         The parser doesn't properly protect against global variable references in builtins
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmarmrb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/arm.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/arm.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/arm.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2011, 2012, 2015-2016 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2013 University of Szeged. All rights reserved.
</span><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -349,6 +349,7 @@
</span><span class="cx">     def lowerARMCommon
</span><span class="cx">         $asm.codeOrigin codeOriginString if $enableCodeOriginComments
</span><span class="cx">         $asm.annotation annotation if $enableInstrAnnotations
</span><ins>+        $asm.debugAnnotation codeOrigin.debugDirective if $enableDebugAnnotations
</ins><span class="cx"> 
</span><span class="cx">         case opcode
</span><span class="cx">         when &quot;addi&quot;, &quot;addp&quot;, &quot;addis&quot;, &quot;addps&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmarm64rb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/arm64.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/arm64.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/arm64.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2011, 2012, 2014 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2011, 2012, 2014-2016 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2014 University of Szeged. All rights reserved.
</span><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -480,6 +480,7 @@
</span><span class="cx">     def lowerARM64
</span><span class="cx">         $asm.comment codeOriginString
</span><span class="cx">         $asm.annotation annotation if $enableInstrAnnotations
</span><ins>+        $asm.debugAnnotation codeOrigin.debugDirective if $enableDebugAnnotations
</ins><span class="cx"> 
</span><span class="cx">         case opcode
</span><span class="cx">         when 'addi'
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmasmrb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/asm.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/asm.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/asm.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> #!/usr/bin/env ruby
</span><span class="cx"> 
</span><del>-# Copyright (C) 2011 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2011, 2016 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">@@ -60,6 +60,7 @@
</span><span class="cx">             putsProcEndIfNeeded
</span><span class="cx">         end
</span><span class="cx">         @state = :asm
</span><ins>+        SourceFile.outputDotFileList(@outp) if $enableDebugAnnotations
</ins><span class="cx">     end
</span><span class="cx">     
</span><span class="cx">     def leaveAsm
</span><span class="lines">@@ -284,9 +285,14 @@
</span><span class="cx">     def comment(text)
</span><span class="cx">         @comment = text
</span><span class="cx">     end
</span><ins>+
</ins><span class="cx">     def annotation(text)
</span><span class="cx">         @annotation = text
</span><span class="cx">     end
</span><ins>+
+    def debugAnnotation(text)
+        @outp.puts text
+    end
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> IncludeFile.processIncludeOptions()
</span><span class="lines">@@ -302,6 +308,11 @@
</span><span class="cx">     exit 0
</span><span class="cx"> end
</span><span class="cx"> 
</span><ins>+# The MS compiler doesn't accept DWARF2 debug annotations.
+if isMSVC
+    $enableDebugAnnotations = false
+end
+
</ins><span class="cx"> $emitWinAsm = isMSVC ? outputFlnm.index(&quot;.asm&quot;) != nil : false
</span><span class="cx"> $commentPrefix = $emitWinAsm ? &quot;;&quot; : &quot;//&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmbackendsrb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/backends.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/backends.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/backends.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2011 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2011, 2016 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">@@ -114,6 +114,7 @@
</span><span class="cx"> 
</span><span class="cx"> class Label
</span><span class="cx">     def lower(name)
</span><ins>+        $asm.debugAnnotation codeOrigin.debugDirective if $enableDebugAnnotations
</ins><span class="cx">         $asm.putsLabel(self.name[1..-1], @global)
</span><span class="cx">     end
</span><span class="cx"> end
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmconfigrb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/config.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/config.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/config.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2012 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2012, 2016 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">@@ -55,3 +55,8 @@
</span><span class="cx"> #     ...
</span><span class="cx"> #
</span><span class="cx"> $enableInstrAnnotations = false
</span><ins>+
+# Turns on generation of DWARF2 debug annotions for file and line numbers.
+# Allows for source level debuging of the original .asm files in a debugger.
+#
+$enableDebugAnnotations = false
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmparserrb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/parser.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/parser.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/parser.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2011 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2011, 2016 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,14 +28,48 @@
</span><span class="cx"> require &quot;registers&quot;
</span><span class="cx"> require &quot;self_hash&quot;
</span><span class="cx"> 
</span><ins>+class SourceFile
+    @@fileNames = []
+    
+    attr_reader :name, :fileNumber
+
+    def SourceFile.outputDotFileList(outp)
+        @@fileNames.each_index {
+            | index |
+            outp.puts &quot;\&quot;.file #{index+1} \\\&quot;#{@@fileNames[index]}\\\&quot;\\n\&quot;&quot;
+        }
+    end
+
+    def initialize(fileName)
+        @name = Pathname.new(fileName)
+        pathName = &quot;#{@name.realpath}&quot;
+        fileNumber = @@fileNames.index(pathName)
+        if not fileNumber
+            @@fileNames &lt;&lt; pathName
+            fileNumber = @@fileNames.length
+        else
+            fileNumber += 1 # File numbers are 1 based
+        end
+        @fileNumber = fileNumber
+    end
+end
+
</ins><span class="cx"> class CodeOrigin
</span><del>-    attr_reader :fileName, :lineNumber
</del><ins>+    attr_reader :lineNumber
</ins><span class="cx">     
</span><del>-    def initialize(fileName, lineNumber)
-        @fileName = fileName
</del><ins>+    def initialize(sourceFile, lineNumber)
+        @sourceFile = sourceFile
</ins><span class="cx">         @lineNumber = lineNumber
</span><span class="cx">     end
</span><del>-    
</del><ins>+
+    def fileName
+        @sourceFile.name
+    end
+
+    def debugDirective
+        $emitWinAsm ? nil : &quot;\&quot;.loc #{@sourceFile.fileNumber} #{lineNumber}\\n\&quot;&quot;
+    end
+
</ins><span class="cx">     def to_s
</span><span class="cx">         &quot;#{fileName}:#{lineNumber}&quot;
</span><span class="cx">     end
</span><span class="lines">@@ -117,8 +151,7 @@
</span><span class="cx"> # The lexer. Takes a string and returns an array of tokens.
</span><span class="cx"> #
</span><span class="cx"> 
</span><del>-def lex(str, fileName)
-    fileName = Pathname.new(fileName)
</del><ins>+def lex(str, file)
</ins><span class="cx">     result = []
</span><span class="cx">     lineNumber = 1
</span><span class="cx">     annotation = nil
</span><span class="lines">@@ -138,37 +171,37 @@
</span><span class="cx">             # use of this for its cloopDo debugging utility even if
</span><span class="cx">             # enableInstrAnnotations is not enabled.
</span><span class="cx">             if annotation
</span><del>-                result &lt;&lt; Annotation.new(CodeOrigin.new(fileName, lineNumber),
</del><ins>+                result &lt;&lt; Annotation.new(CodeOrigin.new(file, lineNumber),
</ins><span class="cx">                                          annotationType, annotation)
</span><span class="cx">                 annotation = nil
</span><span class="cx">             end
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">             lineNumber += 1
</span><span class="cx">         when /\A[a-zA-Z]([a-zA-Z0-9_.]*)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A\.([a-zA-Z0-9_]*)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A_([a-zA-Z0-9_]*)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A([ \t]+)/
</span><span class="cx">             # whitespace, ignore
</span><span class="cx">             whitespaceFound = true
</span><span class="cx">             str = $~.post_match
</span><span class="cx">             next
</span><span class="cx">         when /\A0x([0-9a-fA-F]+)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;.hex.to_s)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;.hex.to_s)
</ins><span class="cx">         when /\A0([0-7]+)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;.oct.to_s)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;.oct.to_s)
</ins><span class="cx">         when /\A([0-9]+)/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A::/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A[:,\(\)\[\]=\+\-~\|&amp;^*]/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         when /\A&quot;.*&quot;/
</span><del>-            result &lt;&lt; Token.new(CodeOrigin.new(fileName, lineNumber), $&amp;)
</del><ins>+            result &lt;&lt; Token.new(CodeOrigin.new(file, lineNumber), $&amp;)
</ins><span class="cx">         else
</span><del>-            raise &quot;Lexer error at #{CodeOrigin.new(fileName, lineNumber).to_s}, unexpected sequence #{str[0..20].inspect}&quot;
</del><ins>+            raise &quot;Lexer error at #{CodeOrigin.new(file, lineNumber).to_s}, unexpected sequence #{str[0..20].inspect}&quot;
</ins><span class="cx">         end
</span><span class="cx">         whitespaceFound = false
</span><span class="cx">         str = $~.post_match
</span><span class="lines">@@ -777,7 +810,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def parseData(data, fileName)
</span><del>-    parser = Parser.new(data, fileName)
</del><ins>+    parser = Parser.new(data, SourceFile.new(fileName))
</ins><span class="cx">     parser.parseSequence(nil, &quot;&quot;)
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="lines">@@ -786,7 +819,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def parseHash(fileName)
</span><del>-    parser = Parser.new(IO::read(fileName), fileName)
</del><ins>+    parser = Parser.new(IO::read(fileName), SourceFile.new(fileName))
</ins><span class="cx">     fileList = parser.parseIncludes(nil, &quot;&quot;)
</span><span class="cx">     fileListHash(fileList)
</span><span class="cx"> end
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreofflineasmx86rb"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/offlineasm/x86.rb (196540 => 196541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/offlineasm/x86.rb        2016-02-13 02:07:34 UTC (rev 196540)
+++ trunk/Source/JavaScriptCore/offlineasm/x86.rb        2016-02-13 02:37:19 UTC (rev 196541)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright (C) 2012, 2014 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2012, 2014-2016 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2013 Digia Plc. and/or its subsidiary(-ies)
</span><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -866,6 +866,7 @@
</span><span class="cx">     def lowerX86Common
</span><span class="cx">         $asm.codeOrigin codeOriginString if $enableCodeOriginComments
</span><span class="cx">         $asm.annotation annotation if $enableInstrAnnotations
</span><ins>+        $asm.debugAnnotation codeOrigin.debugDirective if $enableDebugAnnotations
</ins><span class="cx"> 
</span><span class="cx">         case opcode
</span><span class="cx">         when &quot;addi&quot;
</span></span></pre>
</div>
</div>

</body>
</html>