1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
Commit graph

28 commits

Author SHA1 Message Date
ko1
d28e07d57b * vm_trace.c: support TracePoint. [ruby-trunk - Feature #6895]
* test/ruby/test_settracefunc.rb: add tests for above.
* proc.c (rb_binding_new_with_cfp): add an internal function.
* vm.c (rb_vm_control_frame_id_and_class): add an internal function.
* vm_trace.c: add rb_add_event_hook2() and rb_thread_add_event_hook2().
  Give us the good name for them!



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-22 05:12:31 +00:00
ko1
3dcebce523 * vm.c: add RubyVM::Backtrace object (btobj).
Backtrace information contains an array consists of location
  information for each frames by string.
  RubyVM::Backtrace object is lightweight backtrace information,
  which contains complete information to generate traditional style
  backtrace (an array of strings) with faster generation.
  If someone accesses to backtrace information via
  Exception#backtrace, then convert a RubyVM::Backtrace object to
  traditonal style backtrace.
  This change causes incompatibility on marshal dumpped binary
  of Exception.  If you have any trouble on it, please tell us
  before Ruby 2.0 release.
  Note that RubyVM::Backtrace object should not expose Ruby level.
* error.c, eval.c, vm_eval.c: ditto.
* internal.h: ditto.
* eval_error.c: fix to skip "set_backtrace" method invocation in
  creating an exception object if it call a normal set_backtrace
  method (defined by core).
* test/ruby/test_settracefunc.rb: fix for above change.
* vm_method.c (rb_method_defined_by): added.  This function
  checks that the given object responds with the given method
  by the given cfunc.
* benchmark/bm_vm2_raise1.rb, benchmark/bm_vm2_raise2.rb:
  add to measure exception creation speed. raise1 create
  exception objects from shallow stack frame.  raise2 create
  exception objects from deep stack frame.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-24 06:09:23 +00:00
usa
633cebb0ef * test/ruby/test_settracefunc.rb: ignore traces from another threads
because Kernel.set_trace_func affects other threads.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-01 01:56:25 +00:00
nobu
d62f56b041 * parse.y (primary): point method name line. [ruby-core:40936]
[Bug #5614]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-13 15:01:20 +00:00
ko1
065fe8b7a4 * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
for methods defined by define_method().
* thread.c (call_trace_proc): Fix to skip if class is not given (0).
  Note that ID and Class object are passed for call/return event
  if the called method was defined by define_method().
  If you are author of tracer/profiler/debugger, this may be an
  important change.  You should check passed class as zero or
  non-zero instead of checking the event type.
* test/ruby/test_settracefunc.rb: add a test for above.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 13:34:53 +00:00
nobu
7dea05dc6f * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
method_added hook defined in Module.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-11 23:03:21 +00:00
nobu
549b0c53a8 * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
hooks marked as removed.

* thread.c (thread_exec_event_hooks): remove hooks to be removed.

* thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
  defer removing hooks if running the hooks.  [ruby-dev:42350]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-09 02:00:21 +00:00
wanabe
c31129ffb8 * NEWS: add Thread#add_trace_func and Thread#set_trace_func.
* test/ruby/test_settracefunc.rb (test_thread_trace): add test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-26 14:55:00 +00:00
ko1
618445576f * eval.c, vm.c, vm_eval.c, vm_insnhelper.c: fix issues about
return and c-return trace.  This issue skips (c-)return event
  with global jump such as break or return.  This fix make vm invoke
  hooks at stack rewind timing.  fix [ruby-core:27606] [Bug #2610].
* test/ruby/test_settracefunc.rb: add a test for above.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-24 13:52:32 +00:00
mame
43d0c7263b * test/ruby/test_settracefunc.rb (test_return, test_return2): add two
tests for [ruby-dev:38701] and [ruby-core:24463].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-18 17:55:26 +00:00
wanabe
38a22404db * vm_insnhelper.c (vm_call_cfunc): ensure hook c-return.
[Bug #1588]

* test/ruby/test_settracefunc.rb (TestSetTraceFunc#test_raise):
  follow above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-18 02:44:10 +00:00
mame
31c561f66a * vm_core.h (struct rb_iseq_t): add a new field line_no. This field
represents line number from which the original code of the iseq
  starts.  [ruby-dev:38698]

* iseq.c, compile.c: ditto.

* parse.y: line number hack (for Proc#source_location) is no longer
  needed.

* test/ruby/test_settracefunc.rb: line number of set_trace_func is now
  compatible with 1.8's.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-22 13:37:26 +00:00
nobu
b35d1e714c * thread.c (rb_threadptr_exec_event_hooks): new function to
execute event hooks, with preserving errinfo.  [ruby-core:24118]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-05 05:04:41 +00:00
mame
a75eadef3b * test/ruby/test_settracefunc.rb (test_call, test_class): line number
was changed at r19592.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-30 15:31:06 +00:00
nobu
fa9a533d0b * test/ruby/test_settracefunc.rb (test_call, test_class):
RubyVM::FrozenCore is no longer visible.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-15 08:01:17 +00:00
mame
9e2a51ccb6 * test/ruby/test_settracefunc.rb: fix expected traces for
RubyVM::FrozenCore's event and r17744.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 18:43:25 +00:00
mame
32c8d5c411 * test/ruby/test_settracefunc.rb (test_raise): reveal an exception
hided by rescue modifier.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-30 13:58:35 +00:00
ko1
9ebf6473eb * vm.c, vm_core.h,vm_core.h, vm_dump.c, iseq.c: rename class name
VM -> RubyVM, and rename rb_cVM -> rb_cRubyVM.
  "VM" is too short name for class.
* test/ruby/test_method.rb, test/ruby/test_settracefunc.rb: ditto.
* include/ruby/ruby.h: rb_cRubyVM, rb_cEnv, rb_cISeq should not be
  exposed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-29 17:26:16 +00:00
mame
f7ef694a71 * test/ruby/test_settracefunc.rb: add a test for set_trace_func.
* test/ruby/envutil.rb: move "rubyexec" method from test_rubyoptions.rb.

* test/ruby/test_rubyoptions.rb: use rubyexec in envutil.rb.

* test/ruby/test_thread.rb: add tests to achieve over 90% test coverage
  of thread.c.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-23 15:22:13 +00:00
nobu
b4be9b0bb1 * test/ruby/test_settracefunc.rb (TestSetTraceFunc#test_raise):
raise is ignored in backtrace now.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-29 05:16:39 +00:00
shugo
862cd3cd3c * test/ruby/test_settracefunc.rb: fixed tests for set_trace_func.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-12 15:38:10 +00:00
shugo
577eaa60a7 * insnhelper.ci (vm_call_method): pass mn->nd_clss to
vm_call_cfunc() instead of klass.
* vm.c (rb_thread_method_id_and_klass): traverse parent_iseq.
* thread.c (call_trace_proc): use rb_thread_method_id_and_klass().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-11 08:42:13 +00:00
ko1
a73894337a * eval.c, node.h, thread.c, yarvcore.[ch], eval_intern.h:
support set_trace_func (incomplete.  id and klass
  don't be passed).  And support Thread#set_trace_func
  which hook only specified thread and Thread#add_trace_func
  which add new trace func instead of replace old one.
  C level API was modified.  See thread.c (logic) and
  yarvcore.h (data structures).
* vm.c, vm_macro.def: add hook points.
* compile.c, insns.def: fix "trace" instruction.
* iseq.c, vm_macro.h: add compile option "trace_instruction".
* test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-19 10:37:08 +00:00
shugo
9961c29c25 * eval.c (rb_call0): "return" event hook should be always executed
if event_hooks is set.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-04-07 08:38:05 +00:00
shugo
1429223686 * parse.y (primary): fix lineno of rescue and ensure.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-23 07:15:49 +00:00
shugo
93c746f828 * test/ruby/test_settracefunc.rb (test_event): added tests for
"class" and "end" and "raise".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-22 15:43:27 +00:00
shugo
6697b0a728 * test/ruby/test_settracefunc.rb: added test for c-return.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-16 14:47:30 +00:00
nahi
e766a04a57 Wed Nov 17 23:47:30 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
* test/ruby/test_settracefunc.rb: added.  [ruby-dev:24884]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-17 14:48:35 +00:00