# HG changeset patch # User Michael Van De Vanter # Date 1390451700 28800 # Node ID 7bab96d62fa39bf68092ca37723849d499c83446 # Parent 4d47e9c0df231c7fcfeefbbc41c68225881cd918 Ruby: improve how instrumentation proxy handles some exceptional conditions diff -r 4d47e9c0df23 -r 7bab96d62fa3 graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/debug/RubyProxyNode.java --- 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);