[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