+ RUBY_FUNCTION_RETURN(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node));
===================================================================
--- object.c (revision 34154)
+++ object.c (working copy)
+extern NODE* ruby_current_node;
if (FL_TEST(klass, FL_SINGLETON)) {
rb_raise(rb_eTypeError, "can't create instance of virtual class");
+ if (RUBY_OBJECT_CREATE_START_ENABLED()) {
+ char *file = ruby_current_node == NULL ? "" : ruby_current_node->nd_file;
+ int line = ruby_current_node == NULL ? 0 : nd_line(ruby_current_node);
+ RUBY_OBJECT_CREATE_START(rb_class2name(klass), file, line);
obj = rb_funcall(klass, ID_ALLOCATOR, 0, 0);
+ if (RUBY_OBJECT_CREATE_DONE_ENABLED()) {
+ char *file = ruby_current_node == NULL ? "" : ruby_current_node->nd_file;
+ int line = ruby_current_node == NULL ? 0 : nd_line(ruby_current_node);
+ RUBY_OBJECT_CREATE_DONE(rb_class2name(klass), file, line);
if (rb_obj_class(obj) != rb_class_real(klass)) {
rb_raise(rb_eTypeError, "wrong instance allocation");
===================================================================
--- tracer.c (revision 0)
+++ tracer.c (working copy)
+ruby_dtrace_probe(int argc, VALUE *argv, unsigned check_only)
+ return RUBY_RUBY_PROBE_ENABLED() ? Qtrue : Qfalse;
+ rb_scan_args(argc, argv, "11", &name, &data);
+ probe_data = NIL_P(data) ? "" : StringValuePtr(data);
+ RUBY_RUBY_PROBE(StringValuePtr(name), probe_data);
+ruby_dtrace_fire(int argc, VALUE *argv, VALUE klass)
+ return ruby_dtrace_probe(argc, argv, 0);
+ruby_dtrace_enabled(VALUE klass)
+ return ruby_dtrace_probe(0, NULL, 1);
+ rb_mDtrace = rb_define_module("DTracer");