# HG changeset patch # User Christian Humer # Date 1420650120 -3600 # Node ID f1e7e4f6d83376449a8256754de456b267799311 # Parent 3db8ec140f3fd0dabebd2d0153cb66e51526cc6f Truffle: improve invalidation messages for assumptions. diff -r 3db8ec140f3f -r f1e7e4f6d833 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedAssumption.java --- 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(); } } diff -r 3db8ec140f3f -r f1e7e4f6d833 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java --- 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); } diff -r 3db8ec140f3f -r f1e7e4f6d833 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/AbstractAssumption.java --- 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 + ")"; } }