diff options
Diffstat (limited to 'ext/-test-/debug')
| -rw-r--r-- | ext/-test-/debug/depend | 6 | ||||
| -rw-r--r-- | ext/-test-/debug/profile_frames.c | 21 |
2 files changed, 27 insertions, 0 deletions
diff --git a/ext/-test-/debug/depend b/ext/-test-/debug/depend index 5feeea6d98..4ae0378ef2 100644 --- a/ext/-test-/debug/depend +++ b/ext/-test-/debug/depend @@ -128,6 +128,7 @@ init.o: $(hdrdir)/ruby/internal/intern/re.h init.o: $(hdrdir)/ruby/internal/intern/ruby.h init.o: $(hdrdir)/ruby/internal/intern/select.h init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +init.o: $(hdrdir)/ruby/internal/intern/set.h init.o: $(hdrdir)/ruby/internal/intern/signal.h init.o: $(hdrdir)/ruby/internal/intern/sprintf.h init.o: $(hdrdir)/ruby/internal/intern/string.h @@ -147,6 +148,7 @@ 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 @@ -287,6 +289,7 @@ inspector.o: $(hdrdir)/ruby/internal/intern/re.h inspector.o: $(hdrdir)/ruby/internal/intern/ruby.h inspector.o: $(hdrdir)/ruby/internal/intern/select.h inspector.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +inspector.o: $(hdrdir)/ruby/internal/intern/set.h inspector.o: $(hdrdir)/ruby/internal/intern/signal.h inspector.o: $(hdrdir)/ruby/internal/intern/sprintf.h inspector.o: $(hdrdir)/ruby/internal/intern/string.h @@ -306,6 +309,7 @@ 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 @@ -446,6 +450,7 @@ profile_frames.o: $(hdrdir)/ruby/internal/intern/re.h profile_frames.o: $(hdrdir)/ruby/internal/intern/ruby.h profile_frames.o: $(hdrdir)/ruby/internal/intern/select.h profile_frames.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +profile_frames.o: $(hdrdir)/ruby/internal/intern/set.h profile_frames.o: $(hdrdir)/ruby/internal/intern/signal.h profile_frames.o: $(hdrdir)/ruby/internal/intern/sprintf.h profile_frames.o: $(hdrdir)/ruby/internal/intern/string.h @@ -465,6 +470,7 @@ 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); } |
