[macruby-changes] [226] MacRuby/trunk/string.c

source_changes at macosforge.org source_changes at macosforge.org
Tue May 27 00:32:10 PDT 2008


Revision: 226
          http://trac.macosforge.org/projects/ruby/changeset/226
Author:   lsansonetti at apple.com
Date:     2008-05-27 00:32:07 -0700 (Tue, 27 May 2008)

Log Message:
-----------
GC hints

Modified Paths:
--------------
    MacRuby/trunk/string.c

Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c	2008-05-27 04:53:22 UTC (rev 225)
+++ MacRuby/trunk/string.c	2008-05-27 07:32:07 UTC (rev 226)
@@ -142,6 +142,7 @@
 		return NULL;
 	    mdata = CFDataCreateMutableCopy(NULL, 0, data);
 	    len = CFDataGetLength(data);
+	    rb_gc_malloc_increase(len);
 	    /* This is a hack to make sure a sentinel byte is created at the 
 	     * end of the buffer. 
 	     */
@@ -192,6 +193,7 @@
 		kCFStringEncodingUTF8,
 		false,
 		kCFAllocatorNull);
+	rb_gc_malloc_increase(datalen);
 	if (bytestr != NULL) {
 	    CFStringReplaceAll((CFMutableStringRef)str, (CFStringRef)bytestr);
 	    CFRelease(bytestr);
@@ -506,6 +508,7 @@
 
     data = CFDataCreateMutable(NULL, 0);
     CFDataAppendBytes(data, (const UInt8 *)dataptr, datalen);
+    rb_gc_malloc_increase(datalen);
     rb_str_cfdata_set(str, data);
     CFMakeCollectable(data);
 }
@@ -545,6 +548,8 @@
 
 		    substr = CFStringCreateWithBytes(NULL, (const UInt8 *)ptr, 
 			len, kCFStringEncodingUTF8, false);
+    
+		    rb_gc_malloc_increase(32 + (sizeof(UniChar) * len));
 
 		    if (substr != NULL) {
 			CFStringAppend((CFMutableStringRef)str, substr);
@@ -562,7 +567,7 @@
     }
     if (need_padding)
 	CFStringPad((CFMutableStringRef)str, CFSTR(" "), len, 0);
-    rb_gc_malloc_increase(sizeof(UniChar) * len);
+    rb_gc_malloc_increase(32 + (sizeof(UniChar) * len));
 #else
     if (len > RSTRING_EMBED_LEN_MAX) {
 	RSTRING(str)->as.heap.aux.capa = len;
@@ -4164,10 +4169,12 @@
 	CFMutableDataRef mdata;
        
 	mdata = CFDataCreateMutableCopy(NULL, 0, data);
+	rb_gc_malloc_increase(CFDataGetLength(data));
 	rb_str_cfdata_set(str, mdata);
 	CFMakeCollectable(mdata);
     }
     CFStringReplaceAll((CFMutableStringRef)str, (CFStringRef)str2);
+    rb_gc_malloc_increase(CFStringGetLength((CFStringRef)str2) * sizeof(UniChar));
     if (OBJ_TAINTED(str2))
 	OBJ_TAINT(str);
 #else

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080527/23d33eb8/attachment.htm 


More information about the macruby-changes mailing list