changeset 13734:7bab96d62fa3

Ruby: improve how instrumentation proxy handles some exceptional conditions
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Wed, 22 Jan 2014 20:35:00 -0800
parents 4d47e9c0df23
children 2c1c805153e6
files graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/debug/RubyProxyNode.java
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/debug/RubyProxyNode.java	Wed Jan 22 20:28:52 2014 -0800
+++ b/graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/debug/RubyProxyNode.java	Wed Jan 22 20:35:00 2014 -0800
@@ -19,6 +19,7 @@
 import com.oracle.truffle.api.nodes.instrument.InstrumentationProbeNode.ProbeChain;
 import com.oracle.truffle.ruby.nodes.*;
 import com.oracle.truffle.ruby.runtime.*;
+import com.oracle.truffle.ruby.runtime.control.*;
 import com.oracle.truffle.ruby.runtime.core.*;
 import com.oracle.truffle.ruby.runtime.core.array.*;
 
@@ -69,6 +70,8 @@
         try {
             result = child.execute(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -86,6 +89,8 @@
         try {
             result = child.executeArray(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -103,6 +108,8 @@
         try {
             result = child.executeBignum(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -120,6 +127,8 @@
         try {
             result = child.executeBoolean(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -142,6 +151,8 @@
         try {
             result = child.executeFixnum(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -159,6 +170,8 @@
         try {
             result = child.executeFloat(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -176,6 +189,8 @@
         try {
             result = child.executeString(frame);
             probeChain.notifyLeave(child, frame, result);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);
@@ -191,6 +206,8 @@
         try {
             child.executeVoid(frame);
             probeChain.notifyLeave(child, frame);
+        } catch (BreakShellException e) {
+            throw (e);
         } catch (Exception e) {
             probeChain.notifyLeaveExceptional(child, frame, e);
             throw (e);