changeset 10690:a0309f88306c

Added truffle option to enable detailed rewrite messages. Disabled by default.
author Christian Humer <christian.humer@gmail.com>
date Wed, 10 Jul 2013 09:42:22 +0200
parents 3ae117e62905
children 77b83e903703 8c8e47cc101d
files graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java
diffstat 3 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java	Wed Jul 10 09:23:15 2013 +0200
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java	Wed Jul 10 09:42:22 2013 +0200
@@ -34,6 +34,12 @@
     public static boolean TraceRewrites = false;
 
     /**
+     * Enables the generation of detailed rewrite reasons. Enabling this may introduce some overhead
+     * for rewriting nodes.
+     */
+    public static final boolean DetailedRewriteReasons = false;
+
+    /**
      * Filters rewrites that do not contain the given string in the qualified name of the source or
      * target class hierarchy.
      */
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java	Wed Jul 10 09:23:15 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java	Wed Jul 10 09:42:22 2013 +0200
@@ -40,6 +40,8 @@
  */
 public final class TruffleTypes {
 
+    public static final String OPTION_DETAILED_REWRITE_REASONS = "DetailedRewriteReasons";
+
     private final TypeMirror node;
     private final TypeMirror nodeArray;
     private final TypeMirror unexpectedValueException;
@@ -53,6 +55,7 @@
     private final TypeMirror compilerDirectives;
     private final TypeMirror compilerAsserts;
     private final DeclaredType slowPath;
+    private final DeclaredType truffleOptions;
 
     private final List<String> errors = new ArrayList<>();
 
@@ -70,6 +73,7 @@
         nodeInfoAnnotation = getRequired(context, NodeInfo.class);
         nodeInfoKind = getRequired(context, NodeInfo.Kind.class);
         slowPath = getRequired(context, SlowPath.class);
+        truffleOptions = getRequired(context, TruffleOptions.class);
     }
 
     public DeclaredType getNodeInfoAnnotation() {
@@ -140,6 +144,10 @@
         return compilerAsserts;
     }
 
+    public DeclaredType getTruffleOptions() {
+        return truffleOptions;
+    }
+
     public DeclaredType getSlowPath() {
         return slowPath;
     }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java	Wed Jul 10 09:23:15 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java	Wed Jul 10 09:42:22 2013 +0200
@@ -1113,12 +1113,22 @@
             }
         }
 
+        private CodeTree truffleBooleanOption(CodeTreeBuilder parent, String name) {
+            CodeTreeBuilder builder = parent.create();
+            builder.staticReference(getContext().getTruffleTypes().getTruffleOptions(), name);
+            return builder.getRoot();
+        }
+
         private Element createInfoMessage(NodeData node) {
             CodeExecutableElement method = new CodeExecutableElement(modifiers(PROTECTED, STATIC), getContext().getType(String.class), "createInfo0");
             method.addParameter(new CodeVariableElement(getContext().getType(String.class), "message"));
             addInternalValueParameters(method, node.getGenericSpecialization(), false, false);
 
             CodeTreeBuilder builder = method.createBuilder();
+
+            builder.startIf().tree(truffleBooleanOption(builder, TruffleTypes.OPTION_DETAILED_REWRITE_REASONS)).end();
+            builder.startBlock();
+
             builder.startStatement().string("StringBuilder builder = new StringBuilder(message)").end();
             builder.startStatement().startCall("builder", "append").doubleQuote(" (").end().end();
 
@@ -1159,9 +1169,13 @@
             }
 
             builder.startStatement().startCall("builder", "append").doubleQuote(")").end().end();
-
             builder.startReturn().string("builder.toString()").end();
 
+            builder.end();
+            builder.startElseBlock();
+            builder.startReturn().string("message").end();
+            builder.end();
+
             return method;
         }