aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--method.h2
-rw-r--r--vm_insnhelper.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d1975f1a1..77ebfe1aa7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Jun 3 11:47:15 2015 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: change fileds order to gather frequent acces fields.
+
+ * vm_insnhelper.c (vm_call_method): add LIKELY().
+
Wed Jun 03 10:35:45 2015 Koichi Sasada <ko1@atdot.net>
* method.h: split rb_method_definition_t::flag to several flags.
diff --git a/method.h b/method.h
index 2beaa08722..fbd8ce9953 100644
--- a/method.h
+++ b/method.h
@@ -80,8 +80,8 @@ typedef struct rb_method_alias_struct {
typedef struct rb_method_definition_struct {
struct {
rb_method_visibility_t visi: 3;
- unsigned int basic: 1;
unsigned int safe: 3;
+ unsigned int basic: 1;
} flags;
rb_method_type_t type; /* method type */
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 87c9e5f739..cb89bd3566 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1911,7 +1911,7 @@ vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
start_method_dispatch:
if (ci->me != 0) {
- if (ci->me->def->flags.visi == METHOD_VISI_PUBLIC && ci->me->def->flags.safe == 0) {
+ if (LIKELY(ci->me->def->flags.visi == METHOD_VISI_PUBLIC && ci->me->def->flags.safe == 0)) {
VALUE klass;
normal_method_dispatch: