summaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-26 22:46:16 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-26 22:46:16 +0000
commit3685aa630731f70b245cdf0eb8a759d0e7a35a12 (patch)
tree52b715db59bef14d7e9d82b0e7c38660354a84f3 /gc.c
parent9a4a8eef70e02a451e9e57479effd429959dcc9a (diff)
downloadruby-3685aa630731f70b245cdf0eb8a759d0e7a35a12.tar.gz
ruby-3685aa630731f70b245cdf0eb8a759d0e7a35a12.tar.xz
ruby-3685aa630731f70b245cdf0eb8a759d0e7a35a12.zip
* array.c (rb_ary_shift): shift/unshift performance boost patch,
based on the patch from Eric Mahurin <eric_mahurin at yahoo.com>. [ruby-core:05861] * array.c (rb_ary_unshift_m): ditto. * array.c (ary_make_shared): ditto. * array.c (RESIZE_CAPA): ditto. * array.c (rb_ary_free): new function to free memory. code moved from gc.c. * string.c (rb_str_free): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/gc.c b/gc.c
index 6c83bd43b..88de1d506 100644
--- a/gc.c
+++ b/gc.c
@@ -1174,16 +1174,10 @@ obj_free(VALUE obj)
}
break;
case T_STRING:
- if (FL_TEST(obj, RSTRING_NOEMBED) &&
- RANY(obj)->as.string.as.heap.ptr && !FL_TEST(obj, ELTS_SHARED)) {
- RUBY_CRITICAL(free(RANY(obj)->as.string.as.heap.ptr));
- }
+ rb_str_free(obj);
break;
case T_ARRAY:
- if (FL_TEST(obj, RARRAY_NOEMBED) &&
- RANY(obj)->as.array.as.heap.ptr && !FL_TEST(obj, ELTS_SHARED)) {
- RUBY_CRITICAL(free(RANY(obj)->as.array.as.heap.ptr));
- }
+ rb_ary_free(obj);
break;
case T_HASH:
if (RANY(obj)->as.hash.tbl) {
OSZAR »