diff options
Diffstat (limited to 'ext/-test-/debug')
-rw-r--r-- | ext/-test-/debug/depend | 12 | ||||
-rw-r--r-- | ext/-test-/debug/profile_frames.c | 21 |
2 files changed, 27 insertions, 6 deletions
diff --git a/ext/-test-/debug/depend b/ext/-test-/debug/depend index c3a0c278aa..67e32c6aa6 100644 --- a/ext/-test-/debug/depend +++ b/ext/-test-/debug/depend @@ -52,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 @@ -111,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 @@ -142,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 @@ -212,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 @@ -271,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 @@ -302,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 @@ -372,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 @@ -431,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 @@ -462,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/profile_frames.c b/ext/-test-/debug/profile_frames.c index d2bba7d183..f9a77a5a78 100644 --- a/ext/-test-/debug/profile_frames.c +++ b/ext/-test-/debug/profile_frames.c @@ -37,8 +37,29 @@ profile_frames(VALUE self, VALUE start_v, VALUE num_v) 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; +} + 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); } |