|
1 | 1 | #include "ruby.h" |
| 2 | +#include "ruby/vm.h" |
2 | 3 | #include "rubyspec.h" |
3 | 4 |
|
4 | 5 | #include <errno.h> |
@@ -337,6 +338,15 @@ static VALUE kernel_spec_rb_set_end_proc(VALUE self, VALUE io) { |
337 | 338 | return Qnil; |
338 | 339 | } |
339 | 340 |
|
| 341 | +static void at_exit_hook(ruby_vm_t *vm) { |
| 342 | + puts("ruby_vm_at_exit hook ran"); |
| 343 | +} |
| 344 | + |
| 345 | +static VALUE kernel_spec_ruby_vm_at_exit(VALUE self) { |
| 346 | + ruby_vm_at_exit(at_exit_hook); |
| 347 | + return self; |
| 348 | +} |
| 349 | + |
340 | 350 | static VALUE kernel_spec_rb_f_sprintf(VALUE self, VALUE ary) { |
341 | 351 | return rb_f_sprintf((int)RARRAY_LEN(ary), RARRAY_PTR(ary)); |
342 | 352 | } |
@@ -434,6 +444,7 @@ void Init_kernel_spec(void) { |
434 | 444 | rb_define_method(cls, "rb_yield_splat", kernel_spec_rb_yield_splat, 1); |
435 | 445 | rb_define_method(cls, "rb_exec_recursive", kernel_spec_rb_exec_recursive, 1); |
436 | 446 | rb_define_method(cls, "rb_set_end_proc", kernel_spec_rb_set_end_proc, 1); |
| 447 | + rb_define_method(cls, "ruby_vm_at_exit", kernel_spec_ruby_vm_at_exit, 0); |
437 | 448 | rb_define_method(cls, "rb_f_sprintf", kernel_spec_rb_f_sprintf, 1); |
438 | 449 | rb_define_method(cls, "rb_str_format", kernel_spec_rb_str_format, 3); |
439 | 450 | rb_define_method(cls, "rb_make_backtrace", kernel_spec_rb_make_backtrace, 0); |
|
0 commit comments