Mercurial > hg > truffle
diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java @ 21354:575032310b2c
Truffle/Instrumentation: runtime failures executing an AdvancedInstrument root are now reported automatically via a new mehtod onAdvancedInstrumentResultListener.
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Tue, 12 May 2015 14:48:33 -0700 |
parents | 876e710523c5 |
children | 442b57a7f208 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java Tue May 12 12:57:47 2015 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java Tue May 12 14:48:33 2015 -0700 @@ -436,8 +436,17 @@ } } if (instrumentRoot != null) { - // TODO (mlvdv) should report exception ; non-trivial architectural change - instrumentRoot.executeRoot(node, vFrame); + final AdvancedInstrumentResultListener resultListener = AdvancedInstrument.this.rootFactory.resultListener(); + try { + final Object result = instrumentRoot.executeRoot(node, vFrame); + if (resultListener != null) { + resultListener.notifyResult(node, vFrame, result); + } + } catch (RuntimeException ex) { + if (resultListener != null) { + resultListener.notifyFailure(node, vFrame, ex); + } + } } if (nextInstrumentNode != null) { nextInstrumentNode.enter(node, vFrame);