[macruby-changes] [2132] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Sat Aug 1 18:58:55 PDT 2009
Revision: 2132
http://trac.macosforge.org/projects/ruby/changeset/2132
Author: lsansonetti at apple.com
Date: 2009-08-01 18:58:55 -0700 (Sat, 01 Aug 2009)
Log Message:
-----------
overwrite -[NSObject description] in every new subclass + optimized other overloaded methods
Modified Paths:
--------------
MacRuby/branches/experimental/class.c
MacRuby/branches/experimental/id.c
MacRuby/branches/experimental/id.h
Modified: MacRuby/branches/experimental/class.c
===================================================================
--- MacRuby/branches/experimental/class.c 2009-08-01 21:15:15 UTC (rev 2131)
+++ MacRuby/branches/experimental/class.c 2009-08-02 01:58:55 UTC (rev 2132)
@@ -75,16 +75,23 @@
return RFIXNUM(rcv)->value == RFIXNUM(obj)->value;
}
- return rb_funcall((VALUE)rcv, idEq, 1, OC2RB(obj)) == Qtrue;
+ VALUE arg = OC2RB(obj);
+ return rb_vm_call((VALUE)rcv, selEq, 1, &arg, false) == Qtrue;
}
static void *
rb_obj_imp_init(void *rcv, SEL sel)
{
- rb_funcall((VALUE)rcv, idInitialize, 0);
+ rb_vm_call((VALUE)rcv, selInitialize, 0, NULL, false);
return rcv;
}
+static void *
+rb_obj_imp_description(void *rcv, SEL sel)
+{
+ return (void *)rb_vm_call((VALUE)rcv, selToS, 0, NULL, false);
+}
+
static VALUE
rb_objc_init(VALUE rcv, SEL sel)
{
@@ -117,6 +124,7 @@
(IMP)rb_obj_imp_allocWithZone);
rb_objc_install_method((Class)klass, selIsEqual, (IMP)rb_obj_imp_isEqual);
rb_objc_install_method((Class)klass, selInit, (IMP)rb_obj_imp_init);
+ rb_objc_install_method((Class)klass, selDescription, (IMP)rb_obj_imp_description);
}
static VALUE
Modified: MacRuby/branches/experimental/id.c
===================================================================
--- MacRuby/branches/experimental/id.c 2009-08-01 21:15:15 UTC (rev 2131)
+++ MacRuby/branches/experimental/id.c 2009-08-02 01:58:55 UTC (rev 2132)
@@ -65,6 +65,8 @@
selInit = sel_registerName("init");
selInitialize = sel_registerName("initialize");
selInitialize2 = sel_registerName("initialize:");
+ selDescription = sel_registerName("description");
+ selInspect = sel_registerName("inspect");
selNew = sel_registerName("new");
selRespondTo = sel_registerName("respond_to?:");
selMethodMissing = sel_registerName("method_missing:");
Modified: MacRuby/branches/experimental/id.h
===================================================================
--- MacRuby/branches/experimental/id.h 2009-08-01 21:15:15 UTC (rev 2131)
+++ MacRuby/branches/experimental/id.h 2009-08-02 01:58:55 UTC (rev 2132)
@@ -75,6 +75,8 @@
extern SEL selInit;
extern SEL selInitialize;
extern SEL selInitialize2;
+extern SEL selDescription;
+extern SEL selInspect;
extern SEL selNew;
extern SEL selRespondTo;
extern SEL selMethodMissing;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090801/91709a1b/attachment-0001.html>
More information about the macruby-changes
mailing list