[macruby-changes] [389] MacRuby/branches/lrz_unstable

source_changes at macosforge.org source_changes at macosforge.org
Wed Jul 30 18:23:15 PDT 2008


Revision: 389
          http://trac.macosforge.org/projects/ruby/changeset/389
Author:   lsansonetti at apple.com
Date:     2008-07-30 18:23:15 -0700 (Wed, 30 Jul 2008)
Log Message:
-----------
wip

Modified Paths:
--------------
    MacRuby/branches/lrz_unstable/class.c
    MacRuby/branches/lrz_unstable/include/ruby/ruby.h
    MacRuby/branches/lrz_unstable/object.c
    MacRuby/branches/lrz_unstable/variable.c
    MacRuby/branches/lrz_unstable/vm_eval.c
    MacRuby/branches/lrz_unstable/vm_insnhelper.c
    MacRuby/branches/lrz_unstable/vm_method.c

Modified: MacRuby/branches/lrz_unstable/class.c
===================================================================
--- MacRuby/branches/lrz_unstable/class.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/class.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -141,7 +141,7 @@
 	}
     }
 
-    ocsuper = super == 0 ? (Class)rb_cBasicObject : (Class)super;
+    ocsuper = super == 0 ? (Class)rb_cObject : (Class)super;
     ocklass = objc_allocateClassPair(ocsuper, ocname, sizeof(id));
     assert(ocklass != NULL);
 

Modified: MacRuby/branches/lrz_unstable/include/ruby/ruby.h
===================================================================
--- MacRuby/branches/lrz_unstable/include/ruby/ruby.h	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/include/ruby/ruby.h	2008-07-31 01:23:15 UTC (rev 389)
@@ -504,7 +504,11 @@
 #  define _RCLASS_INFO(m) (*(long *)((void *)m + (sizeof(void *) * 4)))
 #  define RCLASS_SINGLETON(m) (_RCLASS_INFO(m) & CLS_META)
 # endif
-# define NATIVE(obj) (*(Class *)obj != NULL && *(Class *)obj != (Class)rb_cBignum && (RCLASS_VERSION(*(Class *)obj) & RCLASS_IS_OBJECT_SUBCLASS) != RCLASS_IS_OBJECT_SUBCLASS)
+# define NATIVE(obj) \
+    (*(Class *)obj != NULL \
+     && *(Class *)obj != (Class)rb_cBignum \
+     && *(Class *)obj != (Class)rb_cFloat \
+     && (RCLASS_VERSION(*(Class *)obj) & RCLASS_IS_OBJECT_SUBCLASS) != RCLASS_IS_OBJECT_SUBCLASS)
 # define RCLASS_RUBY(m) ((RCLASS_VERSION(m) & RCLASS_IS_RUBY_CLASS) == RCLASS_IS_RUBY_CLASS)
 # define RCLASS_MODULE(m) ((RCLASS_VERSION(m) & RCLASS_IS_MODULE) == RCLASS_IS_MODULE)
 CFMutableDictionaryRef rb_class_ivar_dict(VALUE);

Modified: MacRuby/branches/lrz_unstable/object.c
===================================================================
--- MacRuby/branches/lrz_unstable/object.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/object.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -2569,10 +2569,17 @@
     // required because otherwise NSObject.new will be first in the method chain.
     rb_define_singleton_method(rb_cBasicObject, "new", rb_class_new_instance, -1);
 #endif
+#if WITH_OBJC
+    rb_define_method(rb_cNSObject, "==", rb_obj_equal, 1);
+    rb_define_method(rb_cNSObject, "equal?", rb_obj_equal, 1);
+    rb_define_method(rb_cNSObject, "!", rb_obj_not, 0);
+    rb_define_method(rb_cNSObject, "!=", rb_obj_not_equal, 1);
+#else
     rb_define_method(rb_cBasicObject, "==", rb_obj_equal, 1);
     rb_define_method(rb_cBasicObject, "equal?", rb_obj_equal, 1);
     rb_define_method(rb_cBasicObject, "!", rb_obj_not, 0);
     rb_define_method(rb_cBasicObject, "!=", rb_obj_not_equal, 1);
+#endif
 
     rb_define_private_method(rb_cBasicObject, "singleton_method_added", rb_obj_dummy, 1);
     rb_define_private_method(rb_cBasicObject, "singleton_method_removed", rb_obj_dummy, 1);

Modified: MacRuby/branches/lrz_unstable/variable.c
===================================================================
--- MacRuby/branches/lrz_unstable/variable.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/variable.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -2021,7 +2021,9 @@
   retry:
     while (RTEST(tmp)) {
 #if WITH_OBJC
-	while ((value = rb_attr_get(tmp, id)) != Qnil) {
+	CFDictionaryRef iv_dict = rb_class_ivar_dict(tmp);
+	while ((iv_dict = rb_class_ivar_dict(tmp)) != NULL
+	       && CFDictionaryGetValueIfPresent(iv_dict, (const void *)id, (const void **)&value)) {
 #else
 	while (RCLASS_IV_TBL(tmp) && st_lookup(RCLASS_IV_TBL(tmp),id,&value)) {
 #endif

Modified: MacRuby/branches/lrz_unstable/vm_eval.c
===================================================================
--- MacRuby/branches/lrz_unstable/vm_eval.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/vm_eval.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -1332,11 +1332,12 @@
     rb_define_method(rb_cBasicObject, "instance_exec", rb_obj_instance_exec, -1);
 #if WITH_OBJC
     rb_define_private_method(rb_cNSObject, "method_missing", rb_method_missing, -1);
+    rb_define_method(rb_cNSObject, "__send__", rb_f_send, -1);
 #else
     rb_define_private_method(rb_cBasicObject, "method_missing", rb_method_missing, -1);
+    rb_define_method(rb_cBasicObject, "__send__", rb_f_send, -1);
 #endif
 
-    rb_define_method(rb_cBasicObject, "__send__", rb_f_send, -1);
     rb_define_method(rb_mKernel, "send", rb_f_send, -1);
     rb_define_method(rb_mKernel, "public_send", rb_f_public_send, -1);
 

Modified: MacRuby/branches/lrz_unstable/vm_insnhelper.c
===================================================================
--- MacRuby/branches/lrz_unstable/vm_insnhelper.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/vm_insnhelper.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -1197,13 +1197,13 @@
 static inline VALUE
 vm_search_normal_superclass(VALUE klass, VALUE recv)
 {
-    if (BUILTIN_TYPE(klass) == T_CLASS) {
+    if (TYPE(klass) == T_CLASS) {
 	klass = RCLASS_SUPER(klass);
     }
-    else if (BUILTIN_TYPE(klass) == T_MODULE) {
+    else if (TYPE(klass) == T_MODULE) {
 	VALUE k = CLASS_OF(recv);
 	while (k) {
-	    if (BUILTIN_TYPE(k) == T_ICLASS && RBASIC(k)->klass == klass) {
+	    if (TYPE(k) == T_ICLASS && RBASIC(k)->klass == klass) {
 		klass = RCLASS_SUPER(k);
 		break;
 	    }

Modified: MacRuby/branches/lrz_unstable/vm_method.c
===================================================================
--- MacRuby/branches/lrz_unstable/vm_method.c	2008-07-31 00:14:44 UTC (rev 388)
+++ MacRuby/branches/lrz_unstable/vm_method.c	2008-07-31 01:23:15 UTC (rev 389)
@@ -1127,7 +1127,7 @@
 {
 #if WITH_OBJC
     SEL sel = sel_registerName(rb_id2name(id));
-    return class_respondsToSelector(*(Class *)obj, sel); 
+    return class_respondsToSelector((Class)CLASS_OF(obj), sel); 
 #else
     VALUE klass = CLASS_OF(obj);
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080730/abcb800d/attachment-0001.html 


More information about the macruby-changes mailing list