diff options
Diffstat (limited to 'ext/-test-/tracepoint')
| -rw-r--r-- | ext/-test-/tracepoint/depend | 300 | ||||
| -rw-r--r-- | ext/-test-/tracepoint/gc_hook.c | 55 | ||||
| -rw-r--r-- | ext/-test-/tracepoint/tracepoint.c | 64 |
3 files changed, 365 insertions, 54 deletions
diff --git a/ext/-test-/tracepoint/depend b/ext/-test-/tracepoint/depend index 5b2b2f7369..014ba83b16 100644 --- a/ext/-test-/tracepoint/depend +++ b/ext/-test-/tracepoint/depend @@ -1,10 +1,160 @@ # AUTOGENERATED DEPENDENCIES START gc_hook.o: $(RUBY_EXTCONF_H) gc_hook.o: $(arch_hdrdir)/ruby/config.h +gc_hook.o: $(hdrdir)/ruby/assert.h gc_hook.o: $(hdrdir)/ruby/backward.h +gc_hook.o: $(hdrdir)/ruby/backward/2/assume.h +gc_hook.o: $(hdrdir)/ruby/backward/2/attributes.h +gc_hook.o: $(hdrdir)/ruby/backward/2/bool.h +gc_hook.o: $(hdrdir)/ruby/backward/2/inttypes.h +gc_hook.o: $(hdrdir)/ruby/backward/2/limits.h +gc_hook.o: $(hdrdir)/ruby/backward/2/long_long.h +gc_hook.o: $(hdrdir)/ruby/backward/2/stdalign.h +gc_hook.o: $(hdrdir)/ruby/backward/2/stdarg.h gc_hook.o: $(hdrdir)/ruby/debug.h gc_hook.o: $(hdrdir)/ruby/defines.h gc_hook.o: $(hdrdir)/ruby/intern.h +gc_hook.o: $(hdrdir)/ruby/internal/abi.h +gc_hook.o: $(hdrdir)/ruby/internal/anyargs.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/char.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/double.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/int.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/long.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/short.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +gc_hook.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +gc_hook.o: $(hdrdir)/ruby/internal/assume.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/artificial.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/cold.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/const.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/constexpr.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/deprecated.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/error.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/forceinline.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/format.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/noalias.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/noexcept.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/noinline.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/nonnull.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/noreturn.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/packed_struct.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/pure.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/restrict.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/warning.h +gc_hook.o: $(hdrdir)/ruby/internal/attr/weakref.h +gc_hook.o: $(hdrdir)/ruby/internal/cast.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +gc_hook.o: $(hdrdir)/ruby/internal/compiler_since.h +gc_hook.o: $(hdrdir)/ruby/internal/config.h +gc_hook.o: $(hdrdir)/ruby/internal/constant_p.h +gc_hook.o: $(hdrdir)/ruby/internal/core.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rarray.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rbasic.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rbignum.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rclass.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rdata.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rfile.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rhash.h +gc_hook.o: $(hdrdir)/ruby/internal/core/robject.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rregexp.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rstring.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rstruct.h +gc_hook.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +gc_hook.o: $(hdrdir)/ruby/internal/ctype.h +gc_hook.o: $(hdrdir)/ruby/internal/dllexport.h +gc_hook.o: $(hdrdir)/ruby/internal/dosish.h +gc_hook.o: $(hdrdir)/ruby/internal/error.h +gc_hook.o: $(hdrdir)/ruby/internal/eval.h +gc_hook.o: $(hdrdir)/ruby/internal/event.h +gc_hook.o: $(hdrdir)/ruby/internal/fl_type.h +gc_hook.o: $(hdrdir)/ruby/internal/gc.h +gc_hook.o: $(hdrdir)/ruby/internal/glob.h +gc_hook.o: $(hdrdir)/ruby/internal/globals.h +gc_hook.o: $(hdrdir)/ruby/internal/has/attribute.h +gc_hook.o: $(hdrdir)/ruby/internal/has/builtin.h +gc_hook.o: $(hdrdir)/ruby/internal/has/c_attribute.h +gc_hook.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +gc_hook.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +gc_hook.o: $(hdrdir)/ruby/internal/has/extension.h +gc_hook.o: $(hdrdir)/ruby/internal/has/feature.h +gc_hook.o: $(hdrdir)/ruby/internal/has/warning.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/array.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/bignum.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/class.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/compar.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/complex.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/cont.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/dir.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/enum.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/enumerator.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/error.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/eval.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/file.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/hash.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/io.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/load.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/marshal.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/numeric.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/object.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/parse.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/proc.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/process.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/random.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/range.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/rational.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/re.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/ruby.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/select.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/set.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/signal.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/sprintf.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/string.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/struct.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/thread.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/time.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/variable.h +gc_hook.o: $(hdrdir)/ruby/internal/intern/vm.h +gc_hook.o: $(hdrdir)/ruby/internal/interpreter.h +gc_hook.o: $(hdrdir)/ruby/internal/iterator.h +gc_hook.o: $(hdrdir)/ruby/internal/memory.h +gc_hook.o: $(hdrdir)/ruby/internal/method.h +gc_hook.o: $(hdrdir)/ruby/internal/module.h +gc_hook.o: $(hdrdir)/ruby/internal/newobj.h +gc_hook.o: $(hdrdir)/ruby/internal/scan_args.h +gc_hook.o: $(hdrdir)/ruby/internal/special_consts.h +gc_hook.o: $(hdrdir)/ruby/internal/static_assert.h +gc_hook.o: $(hdrdir)/ruby/internal/stdalign.h +gc_hook.o: $(hdrdir)/ruby/internal/stdbool.h +gc_hook.o: $(hdrdir)/ruby/internal/stdckdint.h +gc_hook.o: $(hdrdir)/ruby/internal/symbol.h +gc_hook.o: $(hdrdir)/ruby/internal/value.h +gc_hook.o: $(hdrdir)/ruby/internal/value_type.h +gc_hook.o: $(hdrdir)/ruby/internal/variable.h +gc_hook.o: $(hdrdir)/ruby/internal/warning_push.h +gc_hook.o: $(hdrdir)/ruby/internal/xmalloc.h gc_hook.o: $(hdrdir)/ruby/missing.h gc_hook.o: $(hdrdir)/ruby/ruby.h gc_hook.o: $(hdrdir)/ruby/st.h @@ -12,10 +162,160 @@ gc_hook.o: $(hdrdir)/ruby/subst.h gc_hook.o: gc_hook.c tracepoint.o: $(RUBY_EXTCONF_H) tracepoint.o: $(arch_hdrdir)/ruby/config.h +tracepoint.o: $(hdrdir)/ruby/assert.h tracepoint.o: $(hdrdir)/ruby/backward.h +tracepoint.o: $(hdrdir)/ruby/backward/2/assume.h +tracepoint.o: $(hdrdir)/ruby/backward/2/attributes.h +tracepoint.o: $(hdrdir)/ruby/backward/2/bool.h +tracepoint.o: $(hdrdir)/ruby/backward/2/inttypes.h +tracepoint.o: $(hdrdir)/ruby/backward/2/limits.h +tracepoint.o: $(hdrdir)/ruby/backward/2/long_long.h +tracepoint.o: $(hdrdir)/ruby/backward/2/stdalign.h +tracepoint.o: $(hdrdir)/ruby/backward/2/stdarg.h tracepoint.o: $(hdrdir)/ruby/debug.h tracepoint.o: $(hdrdir)/ruby/defines.h tracepoint.o: $(hdrdir)/ruby/intern.h +tracepoint.o: $(hdrdir)/ruby/internal/abi.h +tracepoint.o: $(hdrdir)/ruby/internal/anyargs.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/char.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/double.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/int.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/long.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/short.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +tracepoint.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +tracepoint.o: $(hdrdir)/ruby/internal/assume.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/artificial.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/cold.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/const.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/constexpr.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/deprecated.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/error.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/forceinline.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/format.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/noalias.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/noexcept.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/noinline.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/nonnull.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/noreturn.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/packed_struct.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/pure.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/restrict.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/warning.h +tracepoint.o: $(hdrdir)/ruby/internal/attr/weakref.h +tracepoint.o: $(hdrdir)/ruby/internal/cast.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +tracepoint.o: $(hdrdir)/ruby/internal/compiler_since.h +tracepoint.o: $(hdrdir)/ruby/internal/config.h +tracepoint.o: $(hdrdir)/ruby/internal/constant_p.h +tracepoint.o: $(hdrdir)/ruby/internal/core.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rarray.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rbasic.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rbignum.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rclass.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rdata.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rfile.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rhash.h +tracepoint.o: $(hdrdir)/ruby/internal/core/robject.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rregexp.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rstring.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rstruct.h +tracepoint.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +tracepoint.o: $(hdrdir)/ruby/internal/ctype.h +tracepoint.o: $(hdrdir)/ruby/internal/dllexport.h +tracepoint.o: $(hdrdir)/ruby/internal/dosish.h +tracepoint.o: $(hdrdir)/ruby/internal/error.h +tracepoint.o: $(hdrdir)/ruby/internal/eval.h +tracepoint.o: $(hdrdir)/ruby/internal/event.h +tracepoint.o: $(hdrdir)/ruby/internal/fl_type.h +tracepoint.o: $(hdrdir)/ruby/internal/gc.h +tracepoint.o: $(hdrdir)/ruby/internal/glob.h +tracepoint.o: $(hdrdir)/ruby/internal/globals.h +tracepoint.o: $(hdrdir)/ruby/internal/has/attribute.h +tracepoint.o: $(hdrdir)/ruby/internal/has/builtin.h +tracepoint.o: $(hdrdir)/ruby/internal/has/c_attribute.h +tracepoint.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +tracepoint.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +tracepoint.o: $(hdrdir)/ruby/internal/has/extension.h +tracepoint.o: $(hdrdir)/ruby/internal/has/feature.h +tracepoint.o: $(hdrdir)/ruby/internal/has/warning.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/array.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/bignum.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/class.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/compar.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/complex.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/cont.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/dir.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/enum.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/enumerator.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/error.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/eval.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/file.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/hash.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/io.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/load.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/marshal.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/numeric.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/object.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/parse.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/proc.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/process.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/random.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/range.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/rational.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/re.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/ruby.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/select.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/set.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/signal.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/sprintf.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/string.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/struct.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/thread.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/time.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/variable.h +tracepoint.o: $(hdrdir)/ruby/internal/intern/vm.h +tracepoint.o: $(hdrdir)/ruby/internal/interpreter.h +tracepoint.o: $(hdrdir)/ruby/internal/iterator.h +tracepoint.o: $(hdrdir)/ruby/internal/memory.h +tracepoint.o: $(hdrdir)/ruby/internal/method.h +tracepoint.o: $(hdrdir)/ruby/internal/module.h +tracepoint.o: $(hdrdir)/ruby/internal/newobj.h +tracepoint.o: $(hdrdir)/ruby/internal/scan_args.h +tracepoint.o: $(hdrdir)/ruby/internal/special_consts.h +tracepoint.o: $(hdrdir)/ruby/internal/static_assert.h +tracepoint.o: $(hdrdir)/ruby/internal/stdalign.h +tracepoint.o: $(hdrdir)/ruby/internal/stdbool.h +tracepoint.o: $(hdrdir)/ruby/internal/stdckdint.h +tracepoint.o: $(hdrdir)/ruby/internal/symbol.h +tracepoint.o: $(hdrdir)/ruby/internal/value.h +tracepoint.o: $(hdrdir)/ruby/internal/value_type.h +tracepoint.o: $(hdrdir)/ruby/internal/variable.h +tracepoint.o: $(hdrdir)/ruby/internal/warning_push.h +tracepoint.o: $(hdrdir)/ruby/internal/xmalloc.h tracepoint.o: $(hdrdir)/ruby/missing.h tracepoint.o: $(hdrdir)/ruby/ruby.h tracepoint.o: $(hdrdir)/ruby/st.h diff --git a/ext/-test-/tracepoint/gc_hook.c b/ext/-test-/tracepoint/gc_hook.c index 6d8485ecb1..525be6da63 100644 --- a/ext/-test-/tracepoint/gc_hook.c +++ b/ext/-test-/tracepoint/gc_hook.c @@ -2,9 +2,10 @@ #include "ruby/debug.h" static int invoking; /* TODO: should not be global variable */ +extern VALUE tp_mBug; static VALUE -invoke_proc_ensure(void *dmy) +invoke_proc_ensure(VALUE _) { invoking = 0; return Qnil; @@ -17,9 +18,9 @@ invoke_proc_begin(VALUE proc) } static void -invoke_proc(void *data) +invoke_proc(void *ivar_name) { - VALUE proc = (VALUE)data; + VALUE proc = rb_ivar_get(tp_mBug, rb_intern(ivar_name)); invoking += 1; rb_ensure(invoke_proc_begin, proc, invoke_proc_ensure, 0); } @@ -28,53 +29,61 @@ static void gc_start_end_i(VALUE tpval, void *data) { if (0) { - rb_trace_arg_t *tparg = rb_tracearg_from_tracepoint(tpval); - fprintf(stderr, "trace: %s\n", rb_tracearg_event_flag(tparg) == RUBY_INTERNAL_EVENT_GC_START ? "gc_start" : "gc_end"); + rb_trace_arg_t *tparg = rb_tracearg_from_tracepoint(tpval); + fprintf(stderr, "trace: %s\n", rb_tracearg_event_flag(tparg) == RUBY_INTERNAL_EVENT_GC_START ? "gc_start" : "gc_end"); } if (invoking == 0) { - rb_postponed_job_register(0, invoke_proc, data); + /* will overwrite the existing handle with new data on the second and subsequent call */ + rb_postponed_job_handle_t h = rb_postponed_job_preregister(0, invoke_proc, data); + rb_postponed_job_trigger(h); } } static VALUE -set_gc_hook(VALUE module, VALUE proc, rb_event_flag_t event, const char *tp_str, const char *proc_str) +set_gc_hook(VALUE proc, rb_event_flag_t event, const char *tp_str, const char *proc_str) { VALUE tpval; ID tp_key = rb_intern(tp_str); - ID proc_key = rb_intern(proc_str); /* disable previous keys */ - if (rb_ivar_defined(module, tp_key) != 0 && - RTEST(tpval = rb_ivar_get(module, tp_key))) { - rb_tracepoint_disable(tpval); - rb_ivar_set(module, tp_key, Qnil); - rb_ivar_set(module, proc_key, Qnil); + if (rb_ivar_defined(tp_mBug, tp_key) != 0 && + RTEST(tpval = rb_ivar_get(tp_mBug, tp_key))) { + rb_tracepoint_disable(tpval); + rb_ivar_set(tp_mBug, tp_key, Qnil); } if (RTEST(proc)) { - if (!rb_obj_is_proc(proc)) { - rb_raise(rb_eTypeError, "trace_func needs to be Proc"); - } + if (!rb_obj_is_proc(proc)) { + rb_raise(rb_eTypeError, "trace_func needs to be Proc"); + } - tpval = rb_tracepoint_new(0, event, gc_start_end_i, (void *)proc); - rb_ivar_set(module, tp_key, tpval); - rb_ivar_set(module, proc_key, proc); /* GC guard */ - rb_tracepoint_enable(tpval); + rb_ivar_set(tp_mBug, rb_intern(proc_str), proc); + tpval = rb_tracepoint_new(0, event, gc_start_end_i, (void *)proc_str); + rb_ivar_set(tp_mBug, tp_key, tpval); + rb_tracepoint_enable(tpval); } return proc; } static VALUE -set_after_gc_start(VALUE module, VALUE proc) +set_after_gc_start(VALUE _self, VALUE proc) { - return set_gc_hook(module, proc, RUBY_INTERNAL_EVENT_GC_START, - "__set_after_gc_start_tpval__", "__set_after_gc_start_proc__"); + return set_gc_hook(proc, RUBY_INTERNAL_EVENT_GC_START, + "__set_after_gc_start_tpval__", "__set_after_gc_start_proc__"); +} + +static VALUE +start_after_gc_exit(VALUE _self, VALUE proc) +{ + return set_gc_hook(proc, RUBY_INTERNAL_EVENT_GC_EXIT, + "__set_after_gc_exit_tpval__", "__set_after_gc_exit_proc__"); } void Init_gc_hook(VALUE module) { rb_define_module_function(module, "after_gc_start_hook=", set_after_gc_start, 1); + rb_define_module_function(module, "after_gc_exit_hook=", start_after_gc_exit, 1); } diff --git a/ext/-test-/tracepoint/tracepoint.c b/ext/-test-/tracepoint/tracepoint.c index aa8c212f99..001d9513b2 100644 --- a/ext/-test-/tracepoint/tracepoint.c +++ b/ext/-test-/tracepoint/tracepoint.c @@ -1,6 +1,8 @@ #include "ruby/ruby.h" #include "ruby/debug.h" +VALUE tp_mBug; + struct tracepoint_track { size_t newobj_count; size_t free_count; @@ -21,35 +23,35 @@ tracepoint_track_objspace_events_i(VALUE tpval, void *data) switch (rb_tracearg_event_flag(tparg)) { case RUBY_INTERNAL_EVENT_NEWOBJ: - { - VALUE obj = rb_tracearg_object(tparg); - if (track->objects_count < objects_max) - track->objects[track->objects_count++] = obj; - track->newobj_count++; - break; - } + { + VALUE obj = rb_tracearg_object(tparg); + if (track->objects_count < objects_max) + track->objects[track->objects_count++] = obj; + track->newobj_count++; + break; + } case RUBY_INTERNAL_EVENT_FREEOBJ: - { - track->free_count++; - break; - } + { + track->free_count++; + break; + } case RUBY_INTERNAL_EVENT_GC_START: - { - track->gc_start_count++; - break; - } + { + track->gc_start_count++; + break; + } case RUBY_INTERNAL_EVENT_GC_END_MARK: - { - track->gc_end_mark_count++; - break; - } + { + track->gc_end_mark_count++; + break; + } case RUBY_INTERNAL_EVENT_GC_END_SWEEP: - { - track->gc_end_sweep_count++; - break; - } + { + track->gc_end_sweep_count++; + break; + } default: - rb_raise(rb_eRuntimeError, "unknown event"); + rb_raise(rb_eRuntimeError, "unknown event"); } } @@ -58,9 +60,9 @@ tracepoint_track_objspace_events(VALUE self) { struct tracepoint_track track = {0, 0, 0, 0, 0,}; VALUE tpval = rb_tracepoint_new(0, RUBY_INTERNAL_EVENT_NEWOBJ | RUBY_INTERNAL_EVENT_FREEOBJ | - RUBY_INTERNAL_EVENT_GC_START | RUBY_INTERNAL_EVENT_GC_END_MARK | - RUBY_INTERNAL_EVENT_GC_END_SWEEP, - tracepoint_track_objspace_events_i, &track); + RUBY_INTERNAL_EVENT_GC_START | RUBY_INTERNAL_EVENT_GC_END_MARK | + RUBY_INTERNAL_EVENT_GC_END_SWEEP, + tracepoint_track_objspace_events_i, &track); VALUE result = rb_ary_new(); rb_tracepoint_enable(tpval); @@ -89,8 +91,8 @@ void Init_gc_hook(VALUE); void Init_tracepoint(void) { - VALUE mBug = rb_define_module("Bug"); - Init_gc_hook(mBug); - rb_define_module_function(mBug, "tracepoint_track_objspace_events", tracepoint_track_objspace_events, 0); - rb_define_module_function(mBug, "tracepoint_specify_normal_and_internal_events", tracepoint_specify_normal_and_internal_events, 0); + tp_mBug = rb_define_module("Bug"); // GC root + Init_gc_hook(tp_mBug); + rb_define_module_function(tp_mBug, "tracepoint_track_objspace_events", tracepoint_track_objspace_events, 0); + rb_define_module_function(tp_mBug, "tracepoint_specify_normal_and_internal_events", tracepoint_specify_normal_and_internal_events, 0); } |
