Modified: MacRuby/trunk/object.c (3428 => 3429)
--- MacRuby/trunk/object.c 2010-02-04 02:09:52 UTC (rev 3428)
+++ MacRuby/trunk/object.c 2010-02-04 02:10:07 UTC (rev 3429)
@@ -35,8 +35,11 @@
VALUE rb_cTrueClass;
VALUE rb_cFalseClass;
-static ID id_eq, id_eql, id_match, id_inspect, id_init_copy;
+static ID id_eq, id_match, id_inspect, id_init_copy;
+static SEL eqlSel = 0;
+static void *eqlCache = NULL;
+
static void *allocCache = NULL;
static void *initializeCache = NULL;
static void *initialize2Cache = NULL;
@@ -82,7 +85,7 @@
int
rb_eql(VALUE obj1, VALUE obj2)
{
- return RTEST(rb_funcall(obj1, id_eql, 1, obj2));
+ return RTEST(rb_vm_call_with_cache(eqlCache, obj1, eqlSel, 1, &obj2));
}
/*
@@ -2947,6 +2950,8 @@
initialize2Cache = rb_vm_get_call_cache(selInitialize2);
eqCache = rb_vm_get_call_cache(selEq);
dupCache = rb_vm_get_call_cache(selDup);
+ eqlSel = sel_registerName("eql?:");
+ eqlCache = rb_vm_get_call_cache(eqlSel);
rb_objc_define_method(*(VALUE *)rb_cModule, "alloc", rb_module_s_alloc, 0);
rb_objc_define_method(*(VALUE *)rb_cClass, "alloc", rb_class_s_alloc, 0);
@@ -3142,7 +3147,6 @@
rb_define_global_const("FALSE", Qfalse);
id_eq = rb_intern("==");
- id_eql = rb_intern("eql?");
id_match = rb_intern("=~");
id_inspect = rb_intern("inspect");
id_init_copy = rb_intern("initialize_copy");