# HG changeset patch # User Chris Seaton # Date 1398378750 -3600 # Node ID 85e1bf62208cad609dc9cce9644cd439b5203f85 # Parent 2cea065e419d86c7616dcdc288a5bb8df6268470# Parent 319deee167462ada5c770ed45d1d49a13a2f0f73 Merge. diff -r 319deee16746 -r 85e1bf62208c graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Source.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Source.java Thu Apr 24 12:00:54 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/Source.java Thu Apr 24 23:32:30 2014 +0100 @@ -34,12 +34,21 @@ /** * Returns the name of this resource holding a guest language program. An example would be the * name of a guest language source code file. - * + * * @return the name of the guest language program */ String getName(); /** + * Returns a short version of the name of the resource holding a guest language program (as + * described in @getName). For example, this could be just the name of the file, rather than a + * full path. + * + * @return the short name of the guest language program + */ + String getShortName(); + + /** * The normalized, canonical name of the file. */ String getPath(); diff -r 319deee16746 -r 85e1bf62208c graal/com.oracle.truffle.api/src/com/oracle/truffle/api/SourceSection.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/SourceSection.java Thu Apr 24 12:00:54 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/SourceSection.java Thu Apr 24 23:32:30 2014 +0100 @@ -31,21 +31,21 @@ /** * Returns the object representing the source program that contains this section. - * + * * @return the source object */ Source getSource(); /** * Returns 1-based line number of the first character in this source section (inclusive). - * + * * @return the starting line number */ int getStartLine(); /** * Returns the 1-based column number of the first character in this source section (inclusive). - * + * * @return the starting column number */ int getStartColumn(); @@ -55,7 +55,7 @@ *

* The complete text of the source that contains this section can be retrieved via * {@link Source#getCode()}. - * + * * @return the starting character index */ int getCharIndex(); @@ -65,7 +65,7 @@ *

* The complete text of the source that contains this section can be retrieved via * {@link Source#getCode()}. - * + * * @return the number of characters in the section */ int getCharLength(); @@ -73,42 +73,54 @@ /** * Returns the index of the text position immediately following the last character in the * section. - * + * * @return the end position of the section */ int getCharEndIndex(); /** * Returns the identifier of this source section that is used for printing the section. - * + * * @return the identifier of the section */ String getIdentifier(); /** * Returns text of the code represented by this source section. - * + * * @return the code as a String object */ String getCode(); /** + * Returns a short description of the source section, using just the file name, rather than its + * full path. + * + * @return a short description of the source section + */ + String getShortDescription(); + + /** * Singleton instance with no content. */ SourceSection NULL = new NullSourceSection() { + @Override public Source getSource() { return null; } + @Override public int getStartLine() { return 0; } + @Override public int getStartColumn() { return 0; } + @Override public int getCharIndex() { return 0; } @@ -118,18 +130,26 @@ return 0; } + @Override public int getCharEndIndex() { return 0; } + @Override public String getIdentifier() { return null; } + @Override public String getCode() { return null; } + @Override + public String getShortDescription() { + return "short"; + } + }; } diff -r 319deee16746 -r 85e1bf62208c graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultSourceSection.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultSourceSection.java Thu Apr 24 12:00:54 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultSourceSection.java Thu Apr 24 23:32:30 2014 +0100 @@ -53,7 +53,7 @@ * a character index. The (row,column) coordinates of a newline character should never appear in * a text section. *

- * + * * @param source object representing the complete source program that contains this section * @param identifier an identifier used when printing the section * @param startLine the 1-based number of the start line of the section @@ -102,6 +102,10 @@ return getSource().getCode().substring(charIndex, charIndex + charLength); } + public final String getShortDescription() { + return String.format("%s:%d", source.getShortName(), startLine); + } + @Override public String toString() { return String.format("%s:%d", source.getName(), startLine); diff -r 319deee16746 -r 85e1bf62208c graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java Thu Apr 24 12:00:54 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java Thu Apr 24 23:32:30 2014 +0100 @@ -340,7 +340,6 @@ } private void traceRewrite(Node newNode, CharSequence reason) { - if (TruffleOptions.TraceRewritesFilterFromCost != null) { if (filterByKind(this, TruffleOptions.TraceRewritesFilterFromCost)) { return; @@ -360,8 +359,11 @@ return; } + final SourceSection reportedSourceSection = getEncapsulatingSourceSection(); + PrintStream out = System.out; - out.printf("[truffle] rewrite %-50s |From %-40s |To %-40s |Reason %s.%n", this.toString(), formatNodeInfo(this), formatNodeInfo(newNode), reason); + out.printf("[truffle] rewrite %-50s |From %-40s |To %-40s |Reason %s%s%n", this.toString(), formatNodeInfo(this), formatNodeInfo(newNode), reason != null && reason.length() > 0 ? reason + : "unknown", reportedSourceSection != null ? " at " + reportedSourceSection.getShortDescription() : ""); } /** diff -r 319deee16746 -r 85e1bf62208c graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/SourceManager.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/SourceManager.java Thu Apr 24 12:00:54 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/SourceManager.java Thu Apr 24 23:32:30 2014 +0100 @@ -70,7 +70,7 @@ /** * Gets the canonical representation of a source file, whose contents will be read lazily and * then cached. - * + * * @param reset forces any existing {@link Source} cache to be cleared, forcing a re-read */ public Source get(String fileName, boolean reset) { @@ -227,6 +227,11 @@ } @Override + public String getShortName() { + return name; + } + + @Override public String getCode() { return code; } @@ -292,6 +297,11 @@ } @Override + public String getShortName() { + return file.getName(); + } + + @Override public String getCode() { if (code == null || timeStamp != file.lastModified()) { try {