diff options
Diffstat (limited to 'ext/-test-/debug')
-rw-r--r-- | ext/-test-/debug/depend | 15 | ||||
-rw-r--r-- | ext/-test-/debug/inspector.c | 14 | ||||
-rw-r--r-- | ext/-test-/debug/profile_frames.c | 48 |
3 files changed, 51 insertions, 26 deletions
diff --git a/ext/-test-/debug/depend b/ext/-test-/debug/depend index 20f7be675b..67e32c6aa6 100644 --- a/ext/-test-/debug/depend +++ b/ext/-test-/debug/depend @@ -14,6 +14,7 @@ init.o: $(hdrdir)/ruby/backward/2/stdalign.h init.o: $(hdrdir)/ruby/backward/2/stdarg.h init.o: $(hdrdir)/ruby/defines.h init.o: $(hdrdir)/ruby/intern.h +init.o: $(hdrdir)/ruby/internal/abi.h init.o: $(hdrdir)/ruby/internal/anyargs.h init.o: $(hdrdir)/ruby/internal/arithmetic.h init.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -51,6 +52,7 @@ init.o: $(hdrdir)/ruby/internal/attr/noexcept.h init.o: $(hdrdir)/ruby/internal/attr/noinline.h init.o: $(hdrdir)/ruby/internal/attr/nonnull.h init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h init.o: $(hdrdir)/ruby/internal/attr/pure.h init.o: $(hdrdir)/ruby/internal/attr/restrict.h init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -110,7 +112,6 @@ init.o: $(hdrdir)/ruby/internal/intern/enumerator.h init.o: $(hdrdir)/ruby/internal/intern/error.h init.o: $(hdrdir)/ruby/internal/intern/eval.h init.o: $(hdrdir)/ruby/internal/intern/file.h -init.o: $(hdrdir)/ruby/internal/intern/gc.h init.o: $(hdrdir)/ruby/internal/intern/hash.h init.o: $(hdrdir)/ruby/internal/intern/io.h init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -141,12 +142,12 @@ init.o: $(hdrdir)/ruby/internal/memory.h init.o: $(hdrdir)/ruby/internal/method.h init.o: $(hdrdir)/ruby/internal/module.h init.o: $(hdrdir)/ruby/internal/newobj.h -init.o: $(hdrdir)/ruby/internal/rgengc.h init.o: $(hdrdir)/ruby/internal/scan_args.h init.o: $(hdrdir)/ruby/internal/special_consts.h init.o: $(hdrdir)/ruby/internal/static_assert.h init.o: $(hdrdir)/ruby/internal/stdalign.h init.o: $(hdrdir)/ruby/internal/stdbool.h +init.o: $(hdrdir)/ruby/internal/stdckdint.h init.o: $(hdrdir)/ruby/internal/symbol.h init.o: $(hdrdir)/ruby/internal/value.h init.o: $(hdrdir)/ruby/internal/value_type.h @@ -173,6 +174,7 @@ inspector.o: $(hdrdir)/ruby/backward/2/stdarg.h inspector.o: $(hdrdir)/ruby/debug.h inspector.o: $(hdrdir)/ruby/defines.h inspector.o: $(hdrdir)/ruby/intern.h +inspector.o: $(hdrdir)/ruby/internal/abi.h inspector.o: $(hdrdir)/ruby/internal/anyargs.h inspector.o: $(hdrdir)/ruby/internal/arithmetic.h inspector.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -210,6 +212,7 @@ inspector.o: $(hdrdir)/ruby/internal/attr/noexcept.h inspector.o: $(hdrdir)/ruby/internal/attr/noinline.h inspector.o: $(hdrdir)/ruby/internal/attr/nonnull.h inspector.o: $(hdrdir)/ruby/internal/attr/noreturn.h +inspector.o: $(hdrdir)/ruby/internal/attr/packed_struct.h inspector.o: $(hdrdir)/ruby/internal/attr/pure.h inspector.o: $(hdrdir)/ruby/internal/attr/restrict.h inspector.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -269,7 +272,6 @@ inspector.o: $(hdrdir)/ruby/internal/intern/enumerator.h inspector.o: $(hdrdir)/ruby/internal/intern/error.h inspector.o: $(hdrdir)/ruby/internal/intern/eval.h inspector.o: $(hdrdir)/ruby/internal/intern/file.h -inspector.o: $(hdrdir)/ruby/internal/intern/gc.h inspector.o: $(hdrdir)/ruby/internal/intern/hash.h inspector.o: $(hdrdir)/ruby/internal/intern/io.h inspector.o: $(hdrdir)/ruby/internal/intern/load.h @@ -300,12 +302,12 @@ inspector.o: $(hdrdir)/ruby/internal/memory.h inspector.o: $(hdrdir)/ruby/internal/method.h inspector.o: $(hdrdir)/ruby/internal/module.h inspector.o: $(hdrdir)/ruby/internal/newobj.h -inspector.o: $(hdrdir)/ruby/internal/rgengc.h inspector.o: $(hdrdir)/ruby/internal/scan_args.h inspector.o: $(hdrdir)/ruby/internal/special_consts.h inspector.o: $(hdrdir)/ruby/internal/static_assert.h inspector.o: $(hdrdir)/ruby/internal/stdalign.h inspector.o: $(hdrdir)/ruby/internal/stdbool.h +inspector.o: $(hdrdir)/ruby/internal/stdckdint.h inspector.o: $(hdrdir)/ruby/internal/symbol.h inspector.o: $(hdrdir)/ruby/internal/value.h inspector.o: $(hdrdir)/ruby/internal/value_type.h @@ -332,6 +334,7 @@ profile_frames.o: $(hdrdir)/ruby/backward/2/stdarg.h profile_frames.o: $(hdrdir)/ruby/debug.h profile_frames.o: $(hdrdir)/ruby/defines.h profile_frames.o: $(hdrdir)/ruby/intern.h +profile_frames.o: $(hdrdir)/ruby/internal/abi.h profile_frames.o: $(hdrdir)/ruby/internal/anyargs.h profile_frames.o: $(hdrdir)/ruby/internal/arithmetic.h profile_frames.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -369,6 +372,7 @@ profile_frames.o: $(hdrdir)/ruby/internal/attr/noexcept.h profile_frames.o: $(hdrdir)/ruby/internal/attr/noinline.h profile_frames.o: $(hdrdir)/ruby/internal/attr/nonnull.h profile_frames.o: $(hdrdir)/ruby/internal/attr/noreturn.h +profile_frames.o: $(hdrdir)/ruby/internal/attr/packed_struct.h profile_frames.o: $(hdrdir)/ruby/internal/attr/pure.h profile_frames.o: $(hdrdir)/ruby/internal/attr/restrict.h profile_frames.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -428,7 +432,6 @@ profile_frames.o: $(hdrdir)/ruby/internal/intern/enumerator.h profile_frames.o: $(hdrdir)/ruby/internal/intern/error.h profile_frames.o: $(hdrdir)/ruby/internal/intern/eval.h profile_frames.o: $(hdrdir)/ruby/internal/intern/file.h -profile_frames.o: $(hdrdir)/ruby/internal/intern/gc.h profile_frames.o: $(hdrdir)/ruby/internal/intern/hash.h profile_frames.o: $(hdrdir)/ruby/internal/intern/io.h profile_frames.o: $(hdrdir)/ruby/internal/intern/load.h @@ -459,12 +462,12 @@ profile_frames.o: $(hdrdir)/ruby/internal/memory.h profile_frames.o: $(hdrdir)/ruby/internal/method.h profile_frames.o: $(hdrdir)/ruby/internal/module.h profile_frames.o: $(hdrdir)/ruby/internal/newobj.h -profile_frames.o: $(hdrdir)/ruby/internal/rgengc.h profile_frames.o: $(hdrdir)/ruby/internal/scan_args.h profile_frames.o: $(hdrdir)/ruby/internal/special_consts.h profile_frames.o: $(hdrdir)/ruby/internal/static_assert.h profile_frames.o: $(hdrdir)/ruby/internal/stdalign.h profile_frames.o: $(hdrdir)/ruby/internal/stdbool.h +profile_frames.o: $(hdrdir)/ruby/internal/stdckdint.h profile_frames.o: $(hdrdir)/ruby/internal/symbol.h profile_frames.o: $(hdrdir)/ruby/internal/value.h profile_frames.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/-test-/debug/inspector.c b/ext/-test-/debug/inspector.c index f0c58e59f9..25f9d894d3 100644 --- a/ext/-test-/debug/inspector.c +++ b/ext/-test-/debug/inspector.c @@ -8,13 +8,13 @@ callback(const rb_debug_inspector_t *dbg_context, void *data) long i, len = RARRAY_LEN(locs); VALUE binds = rb_ary_new(); for (i = 0; i < len; ++i) { - VALUE entry = rb_ary_new(); - rb_ary_push(binds, entry); - rb_ary_push(entry, rb_debug_inspector_frame_self_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_binding_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_class_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_iseq_get(dbg_context, i)); - rb_ary_push(entry, rb_ary_entry(locs, i)); + VALUE entry = rb_ary_new(); + rb_ary_push(binds, entry); + rb_ary_push(entry, rb_debug_inspector_frame_self_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_binding_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_class_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_iseq_get(dbg_context, i)); + rb_ary_push(entry, rb_ary_entry(locs, i)); } return binds; } diff --git a/ext/-test-/debug/profile_frames.c b/ext/-test-/debug/profile_frames.c index 1656ff7d4b..f9a77a5a78 100644 --- a/ext/-test-/debug/profile_frames.c +++ b/ext/-test-/debug/profile_frames.c @@ -18,19 +18,40 @@ profile_frames(VALUE self, VALUE start_v, VALUE num_v) collected_size = rb_profile_frames(start, buff_size, buff, lines); for (i=0; i<collected_size; i++) { - VALUE ary = rb_ary_new(); - rb_ary_push(ary, rb_profile_frame_path(buff[i])); - rb_ary_push(ary, rb_profile_frame_absolute_path(buff[i])); - rb_ary_push(ary, rb_profile_frame_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_base_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_full_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_first_lineno(buff[i])); - rb_ary_push(ary, rb_profile_frame_classpath(buff[i])); - rb_ary_push(ary, rb_profile_frame_singleton_method_p(buff[i])); - rb_ary_push(ary, rb_profile_frame_method_name(buff[i])); - rb_ary_push(ary, rb_profile_frame_qualified_method_name(buff[i])); - - rb_ary_push(result, ary); + VALUE ary = rb_ary_new(); + rb_ary_push(ary, rb_profile_frame_path(buff[i])); + rb_ary_push(ary, rb_profile_frame_absolute_path(buff[i])); + rb_ary_push(ary, rb_profile_frame_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_base_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_full_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_first_lineno(buff[i])); + rb_ary_push(ary, rb_profile_frame_classpath(buff[i])); + rb_ary_push(ary, rb_profile_frame_singleton_method_p(buff[i])); + rb_ary_push(ary, rb_profile_frame_method_name(buff[i])); + rb_ary_push(ary, rb_profile_frame_qualified_method_name(buff[i])); + rb_ary_push(ary, INT2NUM(lines[i])); + + rb_ary_push(result, ary); + } + + return result; +} + +static VALUE +profile_thread_frames(VALUE self, VALUE thread, VALUE start_v, VALUE num_v) +{ + int i, collected_size; + int start = NUM2INT(start_v); + int buff_size = NUM2INT(num_v); + VALUE buff[MAX_BUF_SIZE]; + int lines[MAX_BUF_SIZE]; + VALUE result = rb_ary_new(); + + if (buff_size > MAX_BUF_SIZE) rb_raise(rb_eRuntimeError, "too long buff_size"); + + collected_size = rb_profile_thread_frames(thread, start, buff_size, buff, lines); + for (i=0; i<collected_size; i++) { + rb_ary_push(result, rb_profile_frame_full_label(buff[i])); } return result; @@ -40,4 +61,5 @@ void Init_profile_frames(VALUE klass) { rb_define_module_function(klass, "profile_frames", profile_frames, 2); + rb_define_module_function(klass, "profile_thread_frames", profile_thread_frames, 3); } |