From: nobu.nakada@... Date: 2002-11-08T11:09:33+09:00 Subject: [ruby-dev:18686] Re: ENABLE/DISABLE_TRACE (was Re: source file name at -r option) なかだです。 At Fri, 8 Nov 2002 00:04:31 +0900, NAKAMURA Hiroshi wrote: > もう一点、initializeが呼ばれません。 どちらかというと、rb_funcall()では有効にするとか。でもpp.rbでオー バーライドされたinspectの中までトレースしてしまうのはちょっと嬉 しくないかも。 Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.349 diff -u -2 -p -r1.349 eval.c --- eval.c 7 Nov 2002 01:03:08 -0000 1.349 +++ eval.c 7 Nov 2002 17:24:20 -0000 @@ -4605,5 +4605,17 @@ rb_call0(klass, recv, id, oid, argc, arg /* for re-scoped/renamed method */ case NODE_ZSUPER: - result = rb_eval(recv, body); + { + int state; + volatile int old_tracing = tracing; + + PUSH_TAG(PROT_NONE); + if ((state = EXEC_TAG()) == 0) { + ENABLE_TRACE(); + result = rb_eval(recv, body); + } + POP_TAG(); + tracing = old_tracing; + if (state) JUMP_TAG(state); + } break; @@ -4621,4 +4633,5 @@ rb_call0(klass, recv, id, oid, argc, arg VALUE *local_vars; /* OK */ NODE *saved_cref = 0; + volatile int old_tracing = tracing; PUSH_SCOPE(); @@ -4718,4 +4731,5 @@ rb_call0(klass, recv, id, oid, argc, arg } ruby_last_node = b2; + ENABLE_TRACE(); result = rb_eval(recv, body); } @@ -4724,4 +4738,5 @@ rb_call0(klass, recv, id, oid, argc, arg state = 0; } + tracing = old_tracing; POP_TAG(); POP_VARS(); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦