[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