summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-17 07:12:40 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-17 07:12:40 +0000
commit9a82db49eb5d464d6d0adc3c7c3ebf4574d5d025 (patch)
treece8b90945b8a2ffad7160b180afa62b40f4f2e74 /vm_core.h
parent7254573c551f83a83cf3f2d6e97de8ebe72e16fa (diff)
* vm_insnhelper.c (vm_call_method_missing): make a refactoring
about method_missing process. Use `vm_call_method()' to invoke `method_missing' method instead of `rb_funcall2()'. In `vm_call_method()', set fastpath to `vm_call_method_missing()' if it can be cached. * vm_core.h (rb_call_info_t): add new field `rb_call_info_t::aux::missing_reasion' to pass the reason to `vm_call_method_missing()'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/vm_core.h b/vm_core.h
index d021a91daa..9f6f638c4d 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -165,6 +165,7 @@ typedef struct rb_call_info_struct {
union {
int opt_pc; /* used by iseq */
long index; /* used by ivar */
+ int missing_reason; /* used by method_missing */
} aux;
VALUE (*call)(struct rb_thread_struct *th, struct rb_control_frame_struct *cfp, struct rb_call_info_struct *ci);