[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