[macruby-changes] [2249] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Thu Aug 6 21:22:40 PDT 2009
Revision: 2249
http://trac.macosforge.org/projects/ruby/changeset/2249
Author: lsansonetti at apple.com
Date: 2009-08-06 21:22:38 -0700 (Thu, 06 Aug 2009)
Log Message:
-----------
more small Array optimizations
Modified Paths:
--------------
MacRuby/trunk/array.c
MacRuby/trunk/id.c
MacRuby/trunk/id.h
Modified: MacRuby/trunk/array.c
===================================================================
--- MacRuby/trunk/array.c 2009-08-06 22:38:33 UTC (rev 2248)
+++ MacRuby/trunk/array.c 2009-08-07 04:22:38 UTC (rev 2249)
@@ -101,8 +101,9 @@
CFMutableArrayRef ary;
ary = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
- if (klass != 0 && klass != rb_cNSArray && klass != rb_cNSMutableArray)
+ if (klass != 0 && klass != rb_cNSArray && klass != rb_cNSMutableArray) {
*(Class *)ary = (Class)klass;
+ }
CFMakeCollectable(ary);
@@ -112,18 +113,20 @@
VALUE
rb_ary_new_fast(int argc, ...)
{
- va_list ar;
- VALUE ary;
- int i;
+ VALUE ary = ary_alloc(0);
- ary = ary_alloc(0);
+ if (argc > 0) {
+ rb_ary_set_capacity(ary, argc);
+ va_list ar = va_start(ar, argc);
- va_start(ar, argc);
- for (i = 0; i < argc; i++) {
- VALUE item = va_arg(ar, VALUE);
- CFArrayAppendValue((CFMutableArrayRef)ary, (const void *)RB2OC(item));
+ int i;
+ for (i = 0; i < argc; i++) {
+ VALUE item = va_arg(ar, VALUE);
+ CFArrayAppendValue((CFMutableArrayRef)ary,
+ (const void *)RB2OC(item));
+ }
+ va_end(ar);
}
- va_end(ar);
return ary;
}
@@ -1274,7 +1277,8 @@
OBJ_TAINT(dup);
}
- CFMakeCollectable((CFTypeRef)dup);
+ CFMakeCollectable((CFMutableArrayRef)dup);
+
return dup;
}
@@ -2483,7 +2487,7 @@
return Qtrue;
}
if (TYPE(ary2) != T_ARRAY) {
- if (!rb_respond_to(ary2, rb_intern("to_ary"))) {
+ if (!rb_vm_respond_to(ary2, selToAry, true)) {
return Qfalse;
}
return rb_equal(ary2, ary1);
Modified: MacRuby/trunk/id.c
===================================================================
--- MacRuby/trunk/id.c 2009-08-06 22:38:33 UTC (rev 2248)
+++ MacRuby/trunk/id.c 2009-08-07 04:22:38 UTC (rev 2249)
@@ -76,6 +76,7 @@
assert(sel_ignored == sel_registerName("release"));
sel_zone = sel_registerName("zone");
selToS = sel_registerName("to_s");
+ selToAry = sel_registerName("to_ary");
selSend = sel_registerName("send:");
sel__send__ = sel_registerName("__send__:");
selEqTilde = sel_registerName("=~:");
Modified: MacRuby/trunk/id.h
===================================================================
--- MacRuby/trunk/id.h 2009-08-06 22:38:33 UTC (rev 2248)
+++ MacRuby/trunk/id.h 2009-08-07 04:22:38 UTC (rev 2249)
@@ -83,6 +83,7 @@
extern SEL selCopy;
extern SEL selMutableCopy;
extern SEL selToS;
+extern SEL selToAry;
extern SEL sel_ignored;
extern SEL sel_zone;
extern SEL selSend;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090806/e209e3f2/attachment.html>
More information about the macruby-changes
mailing list