changeset 18798:f1e7e4f6d833

Truffle: improve invalidation messages for assumptions.
author Christian Humer <christian.humer@gmail.com>
date Wed, 07 Jan 2015 18:02:00 +0100
parents 3db8ec140f3f
children 750db34c9fe1
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedAssumption.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/AbstractAssumption.java
diffstat 3 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedAssumption.java	Wed Jan 07 18:01:24 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedAssumption.java	Wed Jan 07 18:02:00 2015 +0100
@@ -69,7 +69,7 @@
         while (e != null) {
             InstalledCode installedCode = e.installedCode.get();
             if (installedCode != null && installedCode.getVersion() == e.version) {
-                installedCode.invalidate();
+                invalidateWithReason(installedCode, "assumption invalidated");
                 invalidatedInstalledCode = true;
                 if (TraceTruffleAssumptions.getValue()) {
                     logInvalidatedInstalledCode(installedCode);
@@ -95,6 +95,18 @@
             e.next = first;
             first = e;
         } else {
+            invalidateWithReason(installedCode, "assumption already invalidated when installing code");
+            if (TraceTruffleAssumptions.getValue()) {
+                logInvalidatedInstalledCode(installedCode);
+                logStackTrace();
+            }
+        }
+    }
+
+    private void invalidateWithReason(InstalledCode installedCode, String reason) {
+        if (installedCode instanceof OptimizedCallTarget) {
+            ((OptimizedCallTarget) installedCode).invalidate(this, reason);
+        } else {
             installedCode.invalidate();
         }
     }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java	Wed Jan 07 18:01:24 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java	Wed Jan 07 18:02:00 2015 +0100
@@ -282,7 +282,7 @@
         invalidate(null, null);
     }
 
-    protected void invalidate(Node source, CharSequence reason) {
+    protected void invalidate(Object source, CharSequence reason) {
         if (isValid()) {
             this.runtime.invalidateInstalledCode(this, source, reason);
         }
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/AbstractAssumption.java	Wed Jan 07 18:01:24 2015 +0100
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/AbstractAssumption.java	Wed Jan 07 18:02:00 2015 +0100
@@ -43,6 +43,6 @@
 
     @Override
     public String toString() {
-        return "Assumption(valid=" + isValid + "): " + name;
+        return "Assumption(" + (isValid ? "valid" : "invalid") + ", name=" + name + ")";
     }
 }