[macruby-changes] [408] MacRuby/branches/lrz_unstable
source_changes at macosforge.org
source_changes at macosforge.org
Mon Aug 4 18:35:39 PDT 2008
Revision: 408
http://trac.macosforge.org/projects/ruby/changeset/408
Author: lsansonetti at apple.com
Date: 2008-08-04 18:35:38 -0700 (Mon, 04 Aug 2008)
Log Message:
-----------
wip
Modified Paths:
--------------
MacRuby/branches/lrz_unstable/class.c
MacRuby/branches/lrz_unstable/objc.m
MacRuby/branches/lrz_unstable/proc.c
Modified: MacRuby/branches/lrz_unstable/class.c
===================================================================
--- MacRuby/branches/lrz_unstable/class.c 2008-08-05 00:36:41 UTC (rev 407)
+++ MacRuby/branches/lrz_unstable/class.c 2008-08-05 01:35:38 UTC (rev 408)
@@ -666,6 +666,20 @@
* Outer.included_modules #=> [Mixin]
*/
+static void
+rb_mod_included_modules_nosuper(VALUE mod, VALUE ary)
+{
+ VALUE inc_mods = rb_ivar_get(mod, idIncludedModules);
+ if (inc_mods != Qnil) {
+ int i, count = RARRAY_LEN(inc_mods);
+ for (i = 0; i < count; i++) {
+ VALUE imod = RARRAY_AT(inc_mods, i);
+ rb_ary_push(ary, imod);
+ rb_ary_concat(ary, rb_mod_included_modules(imod));
+ }
+ }
+}
+
VALUE
rb_mod_included_modules(VALUE mod)
{
@@ -673,15 +687,7 @@
#if WITH_OBJC
for (p = mod; p; p = RCLASS_SUPER(p)) {
- VALUE inc_mods = rb_ivar_get(p, idIncludedModules);
- if (inc_mods != Qnil) {
- int i, count = RARRAY_LEN(inc_mods);
- for (i = 0; i < count; i++) {
- VALUE imod = RARRAY_AT(inc_mods, i);
- rb_ary_push(ary, imod);
- rb_ary_concat(ary, rb_mod_included_modules(imod));
- }
- }
+ rb_mod_included_modules_nosuper(p, ary);
if (RCLASS_MODULE(p))
break;
}
@@ -748,6 +754,8 @@
* Math.ancestors #=> [Math]
*/
+static void rb_mod_included_modules_nosuper(VALUE, VALUE);
+
VALUE
rb_mod_ancestors(VALUE mod)
{
@@ -756,7 +764,7 @@
#if WITH_OBJC
for (p = mod; p; p = RCLASS_SUPER(p)) {
rb_ary_push(ary, p);
- rb_ary_concat(ary, rb_mod_included_modules(p));
+ rb_mod_included_modules_nosuper(p, ary);
if (RCLASS_MODULE(p))
break;
}
Modified: MacRuby/branches/lrz_unstable/objc.m
===================================================================
--- MacRuby/branches/lrz_unstable/objc.m 2008-08-05 00:36:41 UTC (rev 407)
+++ MacRuby/branches/lrz_unstable/objc.m 2008-08-05 01:35:38 UTC (rev 408)
@@ -1254,7 +1254,7 @@
Method method;
char type[128];
long i, argc;
- VALUE *argv;
+ VALUE *argv, klass;
NODE *body, *node;
rcv = (*(id **)args)[0];
@@ -1278,14 +1278,15 @@
rrcv = rcv == NULL ? Qnil : (VALUE)rcv;
mid = rb_intern((const char *)sel);
+ klass = CLASS_OF(rrcv);
- DLOG("RCALL", "[%p %s] node=%p argc=%ld", (void *)rrcv, (char *)sel, body, argc);
+ DLOG("RCALL", "%c[<%s %p> %s] node=%p", class_isMetaClass((Class)klass) ? '+' : '-', class_getName((Class)klass), (void *)rrcv, (char *)sel, body);
VALUE rb_vm_call(rb_thread_t * th, VALUE klass, VALUE recv, VALUE id,
ID oid, int argc, const VALUE *argv, const NODE *body,
int nosuper);
- ret = rb_vm_call(GET_THREAD(), CLASS_OF(rrcv), rrcv, mid, Qnil,
+ ret = rb_vm_call(GET_THREAD(), klass, rrcv, mid, Qnil,
argc, argv, node, 0);
method_getReturnType(method, type, sizeof type);
Modified: MacRuby/branches/lrz_unstable/proc.c
===================================================================
--- MacRuby/branches/lrz_unstable/proc.c 2008-08-05 00:36:41 UTC (rev 407)
+++ MacRuby/branches/lrz_unstable/proc.c 2008-08-05 01:35:38 UTC (rev 408)
@@ -770,7 +770,9 @@
data->body = body;
data->rclass = rclass;
data->oid = oid;
+#if !WITH_OBJC
OBJ_INFECT(method, klass);
+#endif
return method;
}
@@ -877,7 +879,9 @@
data->body = orig->body;
data->rclass = orig->rclass;
data->oid = orig->oid;
+#if !WITH_OBJC
OBJ_INFECT(method, obj);
+#endif
return method;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080804/a719b85f/attachment.html
More information about the macruby-changes
mailing list