method.h: NOEX_SAFE_SHIFT_OFFSET
* method.h (rb_method_flag_t): name a magic number for NOEX_SAFE and NOEX_WITH as NOEX_SAFE_SHIFT_OFFSET. * method.h (rb_method_type_t, method_optimized_type): C89 forbids a comma after the last element in enum. * proc.c (rb_method_entry_arity), vm_eval.c (vm_call0_body), vm_insnhelper.c (vm_call_method): add VM_METHOD_TYPE__MAX case. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9354b05e5c
commit
3c4f8ce092
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
Wed Dec 12 16:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* method.h (rb_method_flag_t): name a magic number for NOEX_SAFE and
|
||||||
|
NOEX_WITH as NOEX_SAFE_SHIFT_OFFSET.
|
||||||
|
|
||||||
|
* method.h (rb_method_type_t, method_optimized_type): C89 forbids a
|
||||||
|
comma after the last element in enum.
|
||||||
|
|
||||||
|
* proc.c (rb_method_entry_arity), vm_eval.c (vm_call0_body),
|
||||||
|
vm_insnhelper.c (vm_call_method): add VM_METHOD_TYPE__MAX case.
|
||||||
|
|
||||||
Wed Dec 12 14:16:35 2012 Eric Hodel <drbrain@segment7.net>
|
Wed Dec 12 14:16:35 2012 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
* lib/rdoc/class_module.rb: Added RDoc::ClassModule#documented? which
|
* lib/rdoc/class_module.rb: Added RDoc::ClassModule#documented? which
|
||||||
|
15
method.h
15
method.h
@ -22,11 +22,14 @@ typedef enum {
|
|||||||
NOEX_MODFUNC = 0x12,
|
NOEX_MODFUNC = 0x12,
|
||||||
NOEX_SUPER = 0x20,
|
NOEX_SUPER = 0x20,
|
||||||
NOEX_VCALL = 0x40,
|
NOEX_VCALL = 0x40,
|
||||||
NOEX_RESPONDS = 0x80
|
NOEX_RESPONDS = 0x80,
|
||||||
|
|
||||||
|
NOEX_BIT_WIDTH = 8,
|
||||||
|
NOEX_SAFE_SHIFT_OFFSET = ((NOEX_BIT_WIDTH+3)/4)*4 /* round up to nibble */
|
||||||
} rb_method_flag_t;
|
} rb_method_flag_t;
|
||||||
|
|
||||||
#define NOEX_SAFE(n) ((int)((n) >> 8) & 0x0F)
|
#define NOEX_SAFE(n) ((int)((n) >> NOEX_SAFE_SHIFT_OFFSET) & 0x0F)
|
||||||
#define NOEX_WITH(n, s) (((s) << 8) | (n) | (ruby_running ? 0 : NOEX_BASIC))
|
#define NOEX_WITH(n, s) (((s) << NOEX_SAFE_SHIFT_OFFSET) | (n) | (ruby_running ? 0 : NOEX_BASIC))
|
||||||
#define NOEX_WITH_SAFE(n) NOEX_WITH((n), rb_safe_level())
|
#define NOEX_WITH_SAFE(n) NOEX_WITH((n), rb_safe_level())
|
||||||
|
|
||||||
/* method data type */
|
/* method data type */
|
||||||
@ -44,6 +47,8 @@ typedef enum {
|
|||||||
VM_METHOD_TYPE_MISSING, /* wrapper for method_missing(id) */
|
VM_METHOD_TYPE_MISSING, /* wrapper for method_missing(id) */
|
||||||
VM_METHOD_TYPE_CFUNC_FRAMELESS,
|
VM_METHOD_TYPE_CFUNC_FRAMELESS,
|
||||||
VM_METHOD_TYPE_REFINED,
|
VM_METHOD_TYPE_REFINED,
|
||||||
|
|
||||||
|
VM_METHOD_TYPE__MAX
|
||||||
} rb_method_type_t;
|
} rb_method_type_t;
|
||||||
|
|
||||||
struct rb_call_info_struct;
|
struct rb_call_info_struct;
|
||||||
@ -71,7 +76,9 @@ typedef struct rb_method_definition_struct {
|
|||||||
VALUE proc; /* should be mark */
|
VALUE proc; /* should be mark */
|
||||||
enum method_optimized_type {
|
enum method_optimized_type {
|
||||||
OPTIMIZED_METHOD_TYPE_SEND,
|
OPTIMIZED_METHOD_TYPE_SEND,
|
||||||
OPTIMIZED_METHOD_TYPE_CALL
|
OPTIMIZED_METHOD_TYPE_CALL,
|
||||||
|
|
||||||
|
OPTIMIZED_METHOD_TYPE__MAX
|
||||||
} optimize_type;
|
} optimize_type;
|
||||||
struct rb_method_entry_struct *orig_me;
|
struct rb_method_entry_struct *orig_me;
|
||||||
} body;
|
} body;
|
||||||
|
2
proc.c
2
proc.c
@ -1686,6 +1686,8 @@ rb_method_entry_arity(const rb_method_entry_t *me)
|
|||||||
}
|
}
|
||||||
case VM_METHOD_TYPE_REFINED:
|
case VM_METHOD_TYPE_REFINED:
|
||||||
return -1;
|
return -1;
|
||||||
|
case VM_METHOD_TYPE__MAX:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
rb_bug("rb_method_entry_arity: invalid method entry type (%d)", def->type);
|
rb_bug("rb_method_entry_arity: invalid method entry type (%d)", def->type);
|
||||||
|
|
||||||
|
@ -227,6 +227,8 @@ vm_call0_body(rb_thread_t* th, rb_call_info_t *ci, const VALUE *argv)
|
|||||||
}
|
}
|
||||||
case VM_METHOD_TYPE_UNDEF:
|
case VM_METHOD_TYPE_UNDEF:
|
||||||
break;
|
break;
|
||||||
|
case VM_METHOD_TYPE__MAX:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
rb_bug("vm_call0: unsupported method type (%d)", ci->me->def->type);
|
rb_bug("vm_call0: unsupported method type (%d)", ci->me->def->type);
|
||||||
return Qundef;
|
return Qundef;
|
||||||
|
@ -1786,6 +1786,8 @@ vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
|
|||||||
goto zsuper_method_dispatch;
|
goto zsuper_method_dispatch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case VM_METHOD_TYPE__MAX:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
rb_bug("vm_call_method: unsupported method type (%d)", ci->me->def->type);
|
rb_bug("vm_call_method: unsupported method type (%d)", ci->me->def->type);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user