diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-30 11:50:26 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-30 11:50:26 +0000 |
commit | bb4410a2890fab69271145a09f895c91a8ee8863 (patch) | |
tree | 89952c061b86f32cf704faa72e48f5577de6f84a | |
parent | d0a4fecffcf3c74f14ba392f5785ea8f48d19683 (diff) | |
download | ruby-bb4410a2890fab69271145a09f895c91a8ee8863.tar.gz |
* thread.c: TracePoint#self returns invoking/exitting thread object
at thread_begin/end event.
* test/ruby/test_settracefunc.rb: fix test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | test/ruby/test_settracefunc.rb | 17 | ||||
-rw-r--r-- | thread.c | 4 |
3 files changed, 22 insertions, 6 deletions
@@ -1,3 +1,10 @@ +Fri Nov 30 20:47:44 2012 Koichi Sasada <ko1@atdot.net> + + * thread.c: TracePoint#self returns invoking/exitting thread object + at thread_begin/end event. + + * test/ruby/test_settracefunc.rb: fix test. + Fri Nov 30 19:55:17 2012 NAKAMURA Usaku <usa@ruby-lang.org> * test/ruby/memory_status.rb (Memory::Win32): use fiddle instead of dl, diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index 82d3dc4fae..af7f374669 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -726,15 +726,24 @@ class TestSetTraceFunc < Test::Unit::TestCase def test_tracepoint_thread events = [] + thread_self = nil created_thread = nil TracePoint.new(:thread_begin, :thread_end){|tp| - events << [Thread.current, tp.event, tp.self] + events << [Thread.current, + tp.event, + tp.lineno, #=> 0 + tp.path, #=> nil + tp.binding, #=> nil + tp.defined_class, #=> nil, + tp.self.class # tp.self return creating/ending thread + ] }.enable{ - created_thread = Thread.new{} + created_thread = Thread.new{thread_self = self} created_thread.join } - assert_equal([created_thread, :thread_begin, self], events[0]) - assert_equal([created_thread, :thread_end, self], events[1]) + assert_equal(self, thread_self) + assert_equal([created_thread, :thread_begin, 0, nil, nil, nil, Thread], events[0]) + assert_equal([created_thread, :thread_end, 0, nil, nil, nil, Thread], events[1]) assert_equal(2, events.size) end end @@ -478,9 +478,9 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s th->errinfo = Qnil; th->root_lep = rb_vm_ep_local_ep(proc->block.ep); th->root_svar = Qnil; - EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_BEGIN, proc->block.self, 0, 0, th->self); + EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_BEGIN, th->self, 0, 0, Qundef); th->value = rb_vm_invoke_proc(th, proc, (int)RARRAY_LEN(args), RARRAY_PTR(args), 0); - EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_END, proc->block.self, 0, 0, th->self); + EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_END, th->self, 0, 0, Qundef); } else { th->value = (*th->first_func)((void *)args); |