changeset 21878:79fb8b5ef185

Truffle-DSL: compute UnsupportedSpecializationException message lazily; Add a @TruffleBoundary to its constructor as it may end up on the fast path.
author Christian Humer <christian.humer@gmail.com>
date Tue, 09 Jun 2015 12:50:43 +0200
parents 23f0f181bc05
children 90fd69243227
files graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/UnsupportedSpecializationException.java
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/UnsupportedSpecializationException.java	Tue Jun 09 12:50:43 2015 +0200
+++ b/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/UnsupportedSpecializationException.java	Tue Jun 09 12:50:43 2015 +0200
@@ -26,6 +26,7 @@
 
 import java.util.*;
 
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.nodes.*;
 
 /**
@@ -40,8 +41,8 @@
     private final Node[] suppliedNodes;
     private final Object[] suppliedValues;
 
+    @TruffleBoundary
     public UnsupportedSpecializationException(Node node, Node[] suppliedNodes, Object... suppliedValues) {
-        super("Unexpected values provided for " + node + ": " + Arrays.toString(suppliedValues));
         Objects.requireNonNull(suppliedNodes, "The suppliedNodes parameter must not be null.");
         if (suppliedNodes.length != suppliedValues.length) {
             throw new IllegalArgumentException("The length of suppliedNodes must match the length of suppliedValues.");
@@ -51,6 +52,11 @@
         this.suppliedValues = suppliedValues;
     }
 
+    @Override
+    public String getMessage() {
+        return String.format("Unexpected values provided for %s: %s", node, Arrays.toString(suppliedValues));
+    }
+
     /**
      * Returns the {@link Node} that caused the this {@link UnsupportedSpecializationException}.
      */