summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--include/ruby/ruby.h30
-rw-r--r--lib/profile.rb4
-rw-r--r--vm_core.h23
4 files changed, 40 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ba062de73..a4c4b719e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Nov 16 16:26:57 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h: added some declarations for event hooks.
+
+ * lib/profile.rb: set VM::InstructionSequence.compile_option.
+
Fri Nov 16 11:16:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/yaml/rubytypes.rb (String#is_binary_data?): use Integer#fdiv.
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 6ba9ffb872..581c1957d7 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -940,6 +940,36 @@ void ruby_sysinit(int *, char ***);
#define HAVE_NATIVETHREAD
int is_ruby_native_thread(void);
+#define RUBY_EVENT_NONE 0x00
+#define RUBY_EVENT_LINE 0x01
+#define RUBY_EVENT_CLASS 0x02
+#define RUBY_EVENT_END 0x04
+#define RUBY_EVENT_CALL 0x08
+#define RUBY_EVENT_RETURN 0x10
+#define RUBY_EVENT_C_CALL 0x20
+#define RUBY_EVENT_C_RETURN 0x40
+#define RUBY_EVENT_RAISE 0x80
+#define RUBY_EVENT_ALL 0xff
+#define RUBY_EVENT_VM 0x100
+#define RUBY_EVENT_SWITCH 0x200
+
+typedef unsigned int rb_event_flag_t;
+typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
+
+typedef struct rb_event_hook_struct {
+ rb_event_flag_t flag;
+ rb_event_hook_func_t func;
+ VALUE data;
+ struct rb_event_hook_struct *next;
+} rb_event_hook_t;
+
+void rb_thread_add_event_hook(rb_thread_t *th, rb_event_hook_func_t func,
+ rb_event_flag_t events, VALUE data);
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data);
+int rb_thread_remove_event_hook(rb_thread_t *th, rb_event_hook_func_t func);
+int rb_remove_event_hook(rb_event_hook_func_t func);
+
#if defined(__cplusplus)
#if 0
{ /* satisfy cc-mode */
diff --git a/lib/profile.rb b/lib/profile.rb
index 104cb205b9..19275a3fd2 100644
--- a/lib/profile.rb
+++ b/lib/profile.rb
@@ -1,5 +1,9 @@
require 'profiler'
+VM::InstructionSequence.compile_option = {
+ :trace_instruction => true,
+ :specialized_instruction => false
+}
END {
Profiler__::print_profile(STDERR)
}
diff --git a/vm_core.h b/vm_core.h
index 56879760fc..a605cadb98 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -275,29 +275,6 @@ struct rb_iseq_struct {
typedef struct rb_iseq_struct rb_iseq_t;
-#define RUBY_EVENT_NONE 0x00
-#define RUBY_EVENT_LINE 0x01
-#define RUBY_EVENT_CLASS 0x02
-#define RUBY_EVENT_END 0x04
-#define RUBY_EVENT_CALL 0x08
-#define RUBY_EVENT_RETURN 0x10
-#define RUBY_EVENT_C_CALL 0x20
-#define RUBY_EVENT_C_RETURN 0x40
-#define RUBY_EVENT_RAISE 0x80
-#define RUBY_EVENT_ALL 0xff
-#define RUBY_EVENT_VM 0x100
-#define RUBY_EVENT_SWITCH 0x200
-
-typedef unsigned int rb_event_flag_t;
-typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
-
-typedef struct rb_event_hook_struct {
- rb_event_flag_t flag;
- rb_event_hook_func_t func;
- VALUE data;
- struct rb_event_hook_struct *next;
-} rb_event_hook_t;
-
#define GetVMPtr(obj, ptr) \
GetCoreDataFromValue(obj, rb_vm_t, ptr)