diff options
Diffstat (limited to 'zjit')
-rw-r--r-- | zjit/src/cruby.rs | 6 | ||||
-rw-r--r-- | zjit/src/cruby_bindings.inc.rs | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/zjit/src/cruby.rs b/zjit/src/cruby.rs index dff8d301d6..c0093dd284 100644 --- a/zjit/src/cruby.rs +++ b/zjit/src/cruby.rs @@ -939,8 +939,10 @@ pub mod test_utils { let mut state: c_int = 0; unsafe { super::rb_protect(Some(callback_wrapper), VALUE((&mut data) as *mut _ as usize), &mut state) }; - // TODO(alan): there should be a way to print the exception instead of swallowing it - assert_eq!(0, state, "Exceptional unwind in callback. Ruby exception?"); + if state != 0 { + unsafe { rb_zjit_print_exception(); } + assert_eq!(0, state, "Exceptional unwind in callback. Ruby exception?"); + } result.expect("Callback did not set result") } diff --git a/zjit/src/cruby_bindings.inc.rs b/zjit/src/cruby_bindings.inc.rs index 6c5a7c82bf..01da0bff47 100644 --- a/zjit/src/cruby_bindings.inc.rs +++ b/zjit/src/cruby_bindings.inc.rs @@ -1023,4 +1023,5 @@ unsafe extern "C" { pub fn rb_RCLASS_ORIGIN(c: VALUE) -> VALUE; pub fn rb_iseq_get_zjit_payload(iseq: *const rb_iseq_t) -> *mut ::std::os::raw::c_void; pub fn rb_iseq_set_zjit_payload(iseq: *const rb_iseq_t, payload: *mut ::std::os::raw::c_void); + pub fn rb_zjit_print_exception(); } |