author | April Chin <april.chin@oracle.com> |
Mon, 25 Apr 2011 15:05:59 -0700 | |
changeset 199 | b87534be1a76 |
child 542 | d05c60b92101 |
child 2248 | c2beb07524a9 |
permissions | -rw-r--r-- |
199
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
1 |
diff -rupN ruby-1.8.7-p334.orig/common.mk ruby-1.8.7-p334/common.mk |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
2 |
--- ruby-1.8.7-p334.orig/common.mk 2011-04-12 15:28:51.099921336 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
3 |
+++ ruby-1.8.7-p334/common.mk 2011-04-12 15:25:22.224376846 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
4 |
@@ -55,6 +55,7 @@ OBJS = array.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
5 |
string.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
6 |
struct.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
7 |
time.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
8 |
+ tracer.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
9 |
util.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
10 |
variable.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
11 |
version.$(OBJEXT) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
12 |
@@ -85,9 +86,9 @@ prog: $(PROGRAM) $(WPROGRAM) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
13 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
14 |
miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) $(MINIOBJS) $(OBJS) $(DMYEXT) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
15 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
16 |
-$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
17 |
+$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(DTRACE_OBJS) $(SETUP) $(PREP) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
18 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
19 |
-$(LIBRUBY_A): $(OBJS) $(DMYEXT) $(ARCHFILE) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
20 |
+$(LIBRUBY_A): $(OBJS) $(DMYEXT) $(ARCHFILE) $(DTRACE_OBJS) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
21 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
22 |
$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(LIBRUBY_SO_UPDATE) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
23 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
24 |
@@ -280,7 +281,7 @@ clear-installed-list: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
25 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
26 |
clean: clean-ext clean-local |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
27 |
clean-local:: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
28 |
- @$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
29 |
+ @$(RM) $(OBJS) $(DTRACE_OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
30 |
@$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE) .*.time |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
31 |
@$(RM) y.tab.c y.output |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
32 |
clean-ext: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
33 |
diff -rupN ruby-1.8.7-p334.orig/configure.in ruby-1.8.7-p334/configure.in |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
34 |
--- ruby-1.8.7-p334.orig/configure.in 2011-04-12 15:28:51.101489810 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
35 |
+++ ruby-1.8.7-p334/configure.in 2011-04-12 15:43:06.096160692 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
36 |
@@ -524,6 +524,11 @@ AC_CHECK_HEADERS(stdlib.h string.h unist |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
37 |
sys/mkdev.h sys/utime.h netinet/in_systm.h float.h ieeefp.h pthread.h \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
38 |
ucontext.h intrinsics.h time.h) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
39 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
40 |
+AC_CHECK_HEADER(sys/sdt.h) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
41 |
+if test "$ac_cv_header_sys_sdt_h" == "yes"; then |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
42 |
+ AC_DEFINE(HAVE_SDT_H) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
43 |
+fi |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
44 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
45 |
dnl Check additional types. |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
46 |
AC_CHECK_SIZEOF(rlim_t, 0, [ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
47 |
#ifdef HAVE_SYS_TYPES_H |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
48 |
@@ -698,6 +703,18 @@ if test "$use_setreuid" = yes; then |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
49 |
AC_DEFINE(USE_SETREUID) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
50 |
AC_DEFINE(USE_SETREGID) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
51 |
fi |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
52 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
53 |
+AC_ARG_ENABLE(dtrace, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
54 |
+ [ --enable-dtrace enable DTrace support.], |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
55 |
+ [enable_dtrace=$enableval]) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
56 |
+if test "$enable_dtrace" == "yes" -a "$ac_cv_header_sys_sdt_h" == "yes"; then |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
57 |
+ AC_DEFINE(ENABLE_DTRACE) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
58 |
+ DTRACE_OBJS="dtrace.o" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
59 |
+else |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
60 |
+ DTRACE_OBJS="" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
61 |
+fi |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
62 |
+AC_SUBST(DTRACE_OBJS) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
63 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
64 |
AC_STRUCT_TIMEZONE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
65 |
AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
66 |
[AC_TRY_COMPILE([#include <time.h>], |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
67 |
diff -rupN ruby-1.8.7-p334.orig/dtrace.d ruby-1.8.7-p334/dtrace.d |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
68 |
--- ruby-1.8.7-p334.orig/dtrace.d 1969-12-31 16:00:00.000000000 -0800 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
69 |
+++ ruby-1.8.7-p334/dtrace.d 2011-04-12 15:25:22.224285683 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
70 |
@@ -0,0 +1,26 @@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
71 |
+/* -*- Mode: C -*- */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
72 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
73 |
+provider ruby { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
74 |
+ probe function__entry(char*, char*, char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
75 |
+ probe function__return(char*, char*, char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
76 |
+ probe raise(char*, char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
77 |
+ probe rescue(char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
78 |
+ probe line(char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
79 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
80 |
+ /* gc probes */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
81 |
+ probe gc__begin(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
82 |
+ probe gc__end(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
83 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
84 |
+ /* Some initial memory type probes */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
85 |
+ probe object__create__start(char*, char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
86 |
+ probe object__create__done(char*, char*, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
87 |
+ probe object__free(char*); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
88 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
89 |
+ probe ruby__probe(char*, char*); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
90 |
+}; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
91 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
92 |
+#pragma D attributes Evolving/Evolving/Common provider ruby provider |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
93 |
+#pragma D attributes Private/Private/Common provider ruby module |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
94 |
+#pragma D attributes Private/Private/Common provider ruby function |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
95 |
+#pragma D attributes Evolving/Evolving/Common provider ruby name |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
96 |
+#pragma D attributes Evolving/Evolving/Common provider ruby args |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
97 |
diff -rupN ruby-1.8.7-p334.orig/dtrace.h ruby-1.8.7-p334/dtrace.h |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
98 |
--- ruby-1.8.7-p334.orig/dtrace.h 1969-12-31 16:00:00.000000000 -0800 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
99 |
+++ ruby-1.8.7-p334/dtrace.h 2011-04-12 15:25:22.224323302 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
100 |
@@ -0,0 +1,85 @@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
101 |
+/* |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
102 |
+ * Generated by dtrace(1M). |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
103 |
+ */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
104 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
105 |
+#ifndef _DTRACE_H |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
106 |
+#define _DTRACE_H |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
107 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
108 |
+#ifdef __cplusplus |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
109 |
+extern "C" { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
110 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
111 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
112 |
+#define RUBY_FUNCTION_ENTRY(arg0, arg1, arg2, arg3) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
113 |
+ __dtrace_ruby___function__entry(arg0, arg1, arg2, arg3) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
114 |
+#define RUBY_FUNCTION_ENTRY_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
115 |
+ __dtraceenabled_ruby___function__entry() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
116 |
+#define RUBY_FUNCTION_RETURN(arg0, arg1, arg2, arg3) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
117 |
+ __dtrace_ruby___function__return(arg0, arg1, arg2, arg3) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
118 |
+#define RUBY_FUNCTION_RETURN_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
119 |
+ __dtraceenabled_ruby___function__return() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
120 |
+#define RUBY_GC_BEGIN() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
121 |
+ __dtrace_ruby___gc__begin() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
122 |
+#define RUBY_GC_BEGIN_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
123 |
+ __dtraceenabled_ruby___gc__begin() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
124 |
+#define RUBY_GC_END() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
125 |
+ __dtrace_ruby___gc__end() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
126 |
+#define RUBY_GC_END_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
127 |
+ __dtraceenabled_ruby___gc__end() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
128 |
+#define RUBY_LINE(arg0, arg1) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
129 |
+ __dtrace_ruby___line(arg0, arg1) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
130 |
+#define RUBY_LINE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
131 |
+ __dtraceenabled_ruby___line() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
132 |
+#define RUBY_OBJECT_CREATE_DONE(arg0, arg1, arg2) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
133 |
+ __dtrace_ruby___object__create__done(arg0, arg1, arg2) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
134 |
+#define RUBY_OBJECT_CREATE_DONE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
135 |
+ __dtraceenabled_ruby___object__create__done() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
136 |
+#define RUBY_OBJECT_CREATE_START(arg0, arg1, arg2) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
137 |
+ __dtrace_ruby___object__create__start(arg0, arg1, arg2) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
138 |
+#define RUBY_OBJECT_CREATE_START_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
139 |
+ __dtraceenabled_ruby___object__create__start() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
140 |
+#define RUBY_OBJECT_FREE(arg0) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
141 |
+ __dtrace_ruby___object__free(arg0) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
142 |
+#define RUBY_OBJECT_FREE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
143 |
+ __dtraceenabled_ruby___object__free() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
144 |
+#define RUBY_RAISE(arg0, arg1, arg2) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
145 |
+ __dtrace_ruby___raise(arg0, arg1, arg2) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
146 |
+#define RUBY_RAISE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
147 |
+ __dtraceenabled_ruby___raise() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
148 |
+#define RUBY_RESCUE(arg0, arg1) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
149 |
+ __dtrace_ruby___rescue(arg0, arg1) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
150 |
+#define RUBY_RESCUE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
151 |
+ __dtraceenabled_ruby___rescue() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
152 |
+#define RUBY_RUBY_PROBE(arg0, arg1) \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
153 |
+ __dtrace_ruby___ruby__probe(arg0, arg1) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
154 |
+#define RUBY_RUBY_PROBE_ENABLED() \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
155 |
+ __dtraceenabled_ruby___ruby__probe() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
156 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
157 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
158 |
+extern void __dtrace_ruby___function__entry(char *, char *, char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
159 |
+extern int __dtraceenabled_ruby___function__entry(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
160 |
+extern void __dtrace_ruby___function__return(char *, char *, char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
161 |
+extern int __dtraceenabled_ruby___function__return(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
162 |
+extern void __dtrace_ruby___gc__begin(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
163 |
+extern int __dtraceenabled_ruby___gc__begin(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
164 |
+extern void __dtrace_ruby___gc__end(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
165 |
+extern int __dtraceenabled_ruby___gc__end(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
166 |
+extern void __dtrace_ruby___line(char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
167 |
+extern int __dtraceenabled_ruby___line(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
168 |
+extern void __dtrace_ruby___object__create__done(char *, char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
169 |
+extern int __dtraceenabled_ruby___object__create__done(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
170 |
+extern void __dtrace_ruby___object__create__start(char *, char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
171 |
+extern int __dtraceenabled_ruby___object__create__start(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
172 |
+extern void __dtrace_ruby___object__free(char *); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
173 |
+extern int __dtraceenabled_ruby___object__free(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
174 |
+extern void __dtrace_ruby___raise(char *, char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
175 |
+extern int __dtraceenabled_ruby___raise(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
176 |
+extern void __dtrace_ruby___rescue(char *, int); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
177 |
+extern int __dtraceenabled_ruby___rescue(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
178 |
+extern void __dtrace_ruby___ruby__probe(char *, char *); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
179 |
+extern int __dtraceenabled_ruby___ruby__probe(void); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
180 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
181 |
+#ifdef __cplusplus |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
182 |
+} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
183 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
184 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
185 |
+#endif /* _DTRACE_H */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
186 |
diff -rupN ruby-1.8.7-p334.orig/eval.c ruby-1.8.7-p334/eval.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
187 |
--- ruby-1.8.7-p334.orig/eval.c 2011-04-12 15:28:51.209420258 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
188 |
+++ ruby-1.8.7-p334/eval.c 2011-04-12 15:25:22.224969993 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
189 |
@@ -226,6 +226,10 @@ int _setjmp(), _longjmp(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
190 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
191 |
#include <sys/stat.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
192 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
193 |
+#ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
194 |
+#include "dtrace.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
195 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
196 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
197 |
VALUE rb_cProc; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
198 |
VALUE rb_cBinding; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
199 |
static VALUE proc_invoke _((VALUE,VALUE,VALUE,VALUE)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
200 |
@@ -3059,12 +3063,22 @@ rb_eval(self, n) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
201 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
202 |
case NODE_IF: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
203 |
if (RTEST(rb_eval(self, node->nd_cond))) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
204 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
205 |
+ if (RUBY_LINE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
206 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
207 |
+ RUBY_LINE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
208 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
209 |
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
210 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
211 |
ruby_frame->last_class); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
212 |
node = node->nd_body; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
213 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
214 |
else { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
215 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
216 |
+ if (RUBY_LINE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
217 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
218 |
+ RUBY_LINE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
219 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
220 |
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
221 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
222 |
ruby_frame->last_class); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
223 |
@@ -3079,6 +3093,11 @@ rb_eval(self, n) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
224 |
if (nd_type(node) != NODE_WHEN) goto again; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
225 |
tag = node->nd_head; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
226 |
while (tag) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
227 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
228 |
+ if (RUBY_LINE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
229 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
230 |
+ RUBY_LINE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
231 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
232 |
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
233 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
234 |
ruby_frame->last_class); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
235 |
@@ -3120,6 +3139,11 @@ rb_eval(self, n) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
236 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
237 |
tag = node->nd_head; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
238 |
while (tag) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
239 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
240 |
+ if (RUBY_LINE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
241 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
242 |
+ RUBY_LINE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
243 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
244 |
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
245 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
246 |
ruby_frame->last_class); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
247 |
@@ -3340,6 +3364,11 @@ rb_eval(self, n) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
248 |
rescuing = -1; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
249 |
while (resq) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
250 |
ruby_current_node = resq; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
251 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
252 |
+ if (RUBY_RESCUE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
253 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
254 |
+ RUBY_RESCUE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
255 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
256 |
if (handle_rescue(self, resq)) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
257 |
state = 0; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
258 |
rescuing = 1; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
259 |
@@ -4160,6 +4189,11 @@ rb_eval(self, n) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
260 |
break; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
261 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
262 |
case NODE_NEWLINE: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
263 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
264 |
+ if (RUBY_LINE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
265 |
+ if (ruby_current_node && ruby_current_node->nd_file) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
266 |
+ RUBY_LINE(ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
267 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
268 |
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
269 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
270 |
ruby_frame->last_class); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
271 |
@@ -4638,6 +4672,10 @@ rb_longjmp(tag, mesg) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
272 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
273 |
rb_trap_restore_mask(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
274 |
if (tag != TAG_FATAL) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
275 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
276 |
+ if (RUBY_RAISE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
277 |
+ RUBY_RAISE(rb_obj_classname(ruby_errinfo), ruby_sourcefile, ruby_sourceline); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
278 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
279 |
EXEC_EVENT_HOOK(RUBY_EVENT_RAISE, ruby_current_node, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
280 |
ruby_frame->self, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
281 |
ruby_frame->last_func, |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
282 |
@@ -5909,6 +5947,13 @@ rb_call0(klass, recv, id, oid, argc, arg |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
283 |
rb_bug("bad argc (%d) specified for `%s(%s)'", |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
284 |
len, rb_class2name(klass), rb_id2name(id)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
285 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
286 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
287 |
+ if (RUBY_FUNCTION_ENTRY_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
288 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
289 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
290 |
+ RUBY_FUNCTION_ENTRY(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
291 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
292 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
293 |
if (event_hooks) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
294 |
int state; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
295 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
296 |
@@ -5927,6 +5972,13 @@ rb_call0(klass, recv, id, oid, argc, arg |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
297 |
else { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
298 |
result = call_cfunc(body->nd_cfnc, recv, len, argc, argv); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
299 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
300 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
301 |
+ if (RUBY_FUNCTION_RETURN_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
302 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
303 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
304 |
+ RUBY_FUNCTION_RETURN(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
305 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
306 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
307 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
308 |
break; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
309 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
310 |
@@ -5954,12 +6006,26 @@ rb_call0(klass, recv, id, oid, argc, arg |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
311 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
312 |
case NODE_BMETHOD: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
313 |
ruby_frame->flags |= FRAME_DMETH; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
314 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
315 |
+ if (RUBY_FUNCTION_ENTRY_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
316 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
317 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
318 |
+ RUBY_FUNCTION_ENTRY(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
319 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
320 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
321 |
if (event_hooks) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
322 |
struct BLOCK *data; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
323 |
Data_Get_Struct(body->nd_cval, struct BLOCK, data); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
324 |
EXEC_EVENT_HOOK(RUBY_EVENT_CALL, data->body, recv, id, klass); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
325 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
326 |
result = proc_invoke(body->nd_cval, rb_ary_new4(argc, argv), recv, klass); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
327 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
328 |
+ if (RUBY_FUNCTION_RETURN_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
329 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
330 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
331 |
+ RUBY_FUNCTION_RETURN(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
332 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
333 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
334 |
if (event_hooks) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
335 |
EXEC_EVENT_HOOK(RUBY_EVENT_RETURN, ruby_current_node, recv, id, klass); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
336 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
337 |
@@ -6073,6 +6139,13 @@ rb_call0(klass, recv, id, oid, argc, arg |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
338 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
339 |
ruby_frame->argc = i; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
340 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
341 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
342 |
+ if (RUBY_FUNCTION_ENTRY_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
343 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
344 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
345 |
+ RUBY_FUNCTION_ENTRY(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
346 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
347 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
348 |
if (event_hooks) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
349 |
EXEC_EVENT_HOOK(RUBY_EVENT_CALL, b2, recv, id, klass); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
350 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
351 |
@@ -6083,6 +6156,13 @@ rb_call0(klass, recv, id, oid, argc, arg |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
352 |
state = 0; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
353 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
354 |
POP_TAG(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
355 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
356 |
+ if (RUBY_FUNCTION_RETURN_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
357 |
+ char *classname = rb_class2name(klass), *methodname = rb_id2name(id); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
358 |
+ if (ruby_current_node && ruby_current_node->nd_file && classname && methodname) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
359 |
+ RUBY_FUNCTION_RETURN(classname, methodname, ruby_current_node->nd_file, nd_line(ruby_current_node)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
360 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
361 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
362 |
if (event_hooks) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
363 |
EXEC_EVENT_HOOK(RUBY_EVENT_RETURN, ruby_current_node, recv, id, klass); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
364 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
365 |
diff -rupN ruby-1.8.7-p334.orig/gc.c ruby-1.8.7-p334/gc.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
366 |
--- ruby-1.8.7-p334.orig/gc.c 2011-04-12 15:28:51.239680123 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
367 |
+++ ruby-1.8.7-p334/gc.c 2011-04-12 15:25:22.225120360 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
368 |
@@ -30,6 +30,11 @@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
369 |
#include <sys/resource.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
370 |
#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
371 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
372 |
+#ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
373 |
+#include <sys/sdt.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
374 |
+#include "dtrace.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
375 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
376 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
377 |
#if defined _WIN32 || defined __CYGWIN__ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
378 |
#include <windows.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
379 |
#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
380 |
@@ -1264,6 +1269,11 @@ obj_free(obj) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
381 |
break; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
382 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
383 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
384 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
385 |
+ if (RUBY_OBJECT_FREE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
386 |
+ RUBY_OBJECT_FREE(rb_class2name(CLASS_OF(obj))); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
387 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
388 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
389 |
if (FL_TEST(obj, FL_EXIVAR)) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
390 |
rb_free_generic_ivar((VALUE)obj); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
391 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
392 |
@@ -1430,6 +1440,12 @@ garbage_collect() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
393 |
{ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
394 |
struct gc_list *list; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
395 |
struct FRAME * volatile frame; /* gcc 2.7.2.3 -O2 bug?? */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
396 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
397 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
398 |
+ if (RUBY_GC_BEGIN_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
399 |
+ RUBY_GC_BEGIN(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
400 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
401 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
402 |
jmp_buf save_regs_gc_mark; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
403 |
SET_STACK_END; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
404 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
405 |
@@ -1522,6 +1538,11 @@ garbage_collect() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
406 |
} while (!MARK_STACK_EMPTY); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
407 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
408 |
gc_sweep(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
409 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
410 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
411 |
+ if (RUBY_GC_END_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
412 |
+ RUBY_GC_END(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
413 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
414 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
415 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
416 |
void |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
417 |
diff -rupN ruby-1.8.7-p334.orig/inits.c ruby-1.8.7-p334/inits.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
418 |
--- ruby-1.8.7-p334.orig/inits.c 2011-04-12 15:28:51.287011653 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
419 |
+++ ruby-1.8.7-p334/inits.c 2011-04-12 14:50:21.714050708 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
420 |
@@ -46,6 +46,7 @@ void Init_Struct _((void)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
421 |
void Init_Time _((void)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
422 |
void Init_var_tables _((void)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
423 |
void Init_version _((void)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
424 |
+void Init_Tracer _((void)); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
425 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
426 |
void |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
427 |
rb_call_inits() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
428 |
@@ -83,4 +84,5 @@ rb_call_inits() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
429 |
Init_Enumerator(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
430 |
Init_marshal(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
431 |
Init_version(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
432 |
+ Init_Tracer(); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
433 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
434 |
diff -rupN ruby-1.8.7-p334.orig/Makefile.in ruby-1.8.7-p334/Makefile.in |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
435 |
--- ruby-1.8.7-p334.orig/Makefile.in 2011-04-12 15:27:29.001372251 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
436 |
+++ ruby-1.8.7-p334/Makefile.in 2011-04-12 15:33:29.186318522 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
437 |
@@ -88,6 +88,7 @@ ASFLAGS = @ASFLAGS@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
438 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
439 |
OBJEXT = @OBJEXT@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
440 |
MANTYPE = @MANTYPE@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
441 |
+DTRACE_OBJS = @DTRACE_OBJS@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
442 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
443 |
INSTALLED_LIST= .installed.list |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
444 |
#### End of variables |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
445 |
@@ -103,11 +104,11 @@ all: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
446 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
447 |
miniruby$(EXEEXT): |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
448 |
@$(RM) $@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
449 |
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
450 |
+ $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(DTRACE_OBJS) $(LIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
451 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
452 |
$(PROGRAM): |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
453 |
@$(RM) $@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
454 |
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
455 |
+ $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(DTRACE_OBJS) gc.o eval.o tracer.o $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
456 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
457 |
# We must `rm' the library each time this rule is invoked because "updating" a |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
458 |
# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
459 |
@@ -119,7 +120,7 @@ $(LIBRUBY_A): |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
460 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
461 |
$(LIBRUBY_SO): |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
462 |
@-$(PRE_LIBRUBY_UPDATE) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
463 |
- $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
464 |
+ $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(DTRACE_OBJS) $(SOLIBS) $(OUTFLAG)$@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
465 |
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
466 |
File.symlink "$(LIBRUBY_SO)", link}' \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
467 |
$(LIBRUBY_ALIASES) || true |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
468 |
@@ -194,6 +195,9 @@ distclean-local:: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
469 |
ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
470 |
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(OUTFLAG)$@ -c ext/extinit.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
471 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
472 |
+dtrace.@OBJEXT@: dtrace.d $(OBJS) $(MAINOBJ) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
473 |
+ /usr/sbin/dtrace -G -o $@ -s dtrace.d $(OBJS) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
474 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
475 |
update-rubyspec: |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
476 |
if [ -d $(srcdir)/rubyspec ]; then \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
477 |
cd $(srcdir)/rubyspec/mspec; \ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
478 |
diff -rupN ruby-1.8.7-p334.orig/object.c ruby-1.8.7-p334/object.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
479 |
--- ruby-1.8.7-p334.orig/object.c 2011-04-12 15:28:51.288940374 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
480 |
+++ ruby-1.8.7-p334/object.c 2011-04-12 15:25:22.224228022 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
481 |
@@ -20,6 +20,12 @@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
482 |
#include <ctype.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
483 |
#include <math.h> |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
484 |
|
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
485 |
+#ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
486 |
+#include "dtrace.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
487 |
+#include "node.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
488 |
+NODE* ruby_current_node; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
489 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
490 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
491 |
VALUE rb_mKernel; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
492 |
VALUE rb_cObject; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
493 |
VALUE rb_cModule; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
494 |
@@ -1603,7 +1609,25 @@ rb_obj_alloc(klass) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
495 |
if (FL_TEST(klass, FL_SINGLETON)) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
496 |
rb_raise(rb_eTypeError, "can't create instance of virtual class"); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
497 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
498 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
499 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
500 |
+ if (RUBY_OBJECT_CREATE_START_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
501 |
+ char *file = ruby_current_node == NULL ? "" : ruby_current_node->nd_file; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
502 |
+ int line = ruby_current_node == NULL ? 0 : nd_line(ruby_current_node); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
503 |
+ RUBY_OBJECT_CREATE_START(rb_class2name(klass), file, line); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
504 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
505 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
506 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
507 |
obj = rb_funcall(klass, ID_ALLOCATOR, 0, 0); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
508 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
509 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
510 |
+ if (RUBY_OBJECT_CREATE_DONE_ENABLED()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
511 |
+ char *file = ruby_current_node == NULL ? "" : ruby_current_node->nd_file; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
512 |
+ int line = ruby_current_node == NULL ? 0 : nd_line(ruby_current_node); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
513 |
+ RUBY_OBJECT_CREATE_DONE(rb_class2name(klass), file, line); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
514 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
515 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
516 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
517 |
if (rb_obj_class(obj) != rb_class_real(klass)) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
518 |
rb_raise(rb_eTypeError, "wrong instance allocation"); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
519 |
} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
520 |
diff -rupN ruby-1.8.7-p334.orig/tracer.c ruby-1.8.7-p334/tracer.c |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
521 |
--- ruby-1.8.7-p334.orig/tracer.c 1969-12-31 16:00:00.000000000 -0800 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
522 |
+++ ruby-1.8.7-p334/tracer.c 2011-04-12 14:53:16.013377766 -0700 |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
523 |
@@ -0,0 +1,64 @@ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
524 |
+#include "ruby.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
525 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
526 |
+#ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
527 |
+#include "dtrace.h" |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
528 |
+#endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
529 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
530 |
+VALUE rb_mDtrace; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
531 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
532 |
+static VALUE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
533 |
+ruby_dtrace_fire(argc, argv, klass) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
534 |
+ int argc; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
535 |
+ VALUE *argv; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
536 |
+ VALUE klass; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
537 |
+{ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
538 |
+ int args; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
539 |
+ VALUE name, data, ret; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
540 |
+ char *probe_data; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
541 |
+ char *probe_name; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
542 |
+ char *start_probe; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
543 |
+ char *end_probe; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
544 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
545 |
+ #ifdef ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
546 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
547 |
+ args = rb_scan_args(argc, argv, "11", &name, &data); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
548 |
+ probe_data = args == 2 ? StringValuePtr(data) : ""; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
549 |
+ probe_name = StringValuePtr(name); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
550 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
551 |
+ if (rb_block_given_p()) { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
552 |
+ start_probe = malloc(strlen(probe_name) + 7); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
553 |
+ end_probe = malloc(strlen(probe_name) + 5); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
554 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
555 |
+ sprintf(start_probe, "%s-start", probe_name); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
556 |
+ sprintf(end_probe, "%s-end", probe_name); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
557 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
558 |
+ /* Build -start and -end strings for probe names */ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
559 |
+ if (RUBY_RUBY_PROBE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
560 |
+ RUBY_RUBY_PROBE(start_probe, probe_data); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
561 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
562 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
563 |
+ ret = rb_yield(Qnil); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
564 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
565 |
+ #if ENABLE_DTRACE |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
566 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
567 |
+ if (RUBY_RUBY_PROBE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
568 |
+ RUBY_RUBY_PROBE(end_probe, probe_data); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
569 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
570 |
+ free(start_probe); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
571 |
+ free(end_probe); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
572 |
+ } else { |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
573 |
+ if (RUBY_RUBY_PROBE_ENABLED()) |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
574 |
+ RUBY_RUBY_PROBE(probe_name, probe_data); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
575 |
+ ret = Qnil; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
576 |
+ } |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
577 |
+ #endif |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
578 |
+ return ret; |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
579 |
+} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
580 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
581 |
+ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
582 |
+void Init_Tracer() |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
583 |
+{ |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
584 |
+ rb_mDtrace = rb_define_module("DTracer"); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
585 |
+ rb_define_module_function(rb_mDtrace, "fire", ruby_dtrace_fire, -1); |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
586 |
+} |
b87534be1a76
7023222 move ruby to userland
April Chin <april.chin@oracle.com>
parents:
diff
changeset
|
587 |
+ |