[macruby-changes] [4487] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed Sep 1 14:48:52 PDT 2010


Revision: 4487
          http://trac.macosforge.org/projects/ruby/changeset/4487
Author:   martinlagardette at apple.com
Date:     2010-09-01 14:48:49 -0700 (Wed, 01 Sep 2010)
Log Message:
-----------
Re-cache Obj-C variadic calls when argc is different than cached

Modified Paths:
--------------
    MacRuby/trunk/dispatcher.cpp
    MacRuby/trunk/vm.h

Modified: MacRuby/trunk/dispatcher.cpp
===================================================================
--- MacRuby/trunk/dispatcher.cpp	2010-09-01 05:11:53 UTC (rev 4486)
+++ MacRuby/trunk/dispatcher.cpp	2010-09-01 21:48:49 UTC (rev 4487)
@@ -501,6 +501,7 @@
     cache->sel = sel;
     cache->klass = klass;
     cache->as.ocall.imp = imp;
+    cache->as.ocall.argc = argc;
     cache->as.ocall.bs_method = GET_CORE()->find_bs_method(klass, sel);
 
     char types[200];
@@ -829,6 +830,9 @@
 	return v;
     }
     else if (cache->flag & MCACHE_OCALL) {
+	if (cache->as.ocall.argc != argc) {
+	    goto recache;
+	}
 	if (!cache_method) {
 	    cache->flag = 0;
 	}

Modified: MacRuby/trunk/vm.h
===================================================================
--- MacRuby/trunk/vm.h	2010-09-01 05:11:53 UTC (rev 4486)
+++ MacRuby/trunk/vm.h	2010-09-01 21:48:49 UTC (rev 4487)
@@ -556,6 +556,7 @@
 	} rcall;
 	struct {
 	    IMP imp;
+	    int argc;
 	    bs_element_method_t *bs_method;	
 	    rb_vm_objc_stub_t *stub;
 	} ocall;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100901/b6a3dc4f/attachment.html>


More information about the macruby-changes mailing list