ruby-changes:31760
From: ko1 <ko1@a...>
Date: Mon, 25 Nov 2013 10:13:38 +0900 (JST)
Subject: [ruby-changes:31760] ko1:r43839 (trunk): * internal.h: do not use ruby_sized_xrealloc() and ruby_sized_xfree()
ko1 2013-11-25 10:13:31 +0900 (Mon, 25 Nov 2013) New Revision: 43839 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43839 Log: * internal.h: do not use ruby_sized_xrealloc() and ruby_sized_xfree() if HAVE_MALLOC_USABLE_SIZE (or _WIN32) is defined. We don't need these function if malloc_usable_size() is available. * gc.c: catch up this change. * gc.c: define HAVE_MALLOC_USABLE_SIZE on _WIN32. * array.c (ary_resize_capa): do not use ruby_sized_xfree() with local variable to avoid "unused local variable" warning. This change only has few impact. * string.c (rb_str_resize): ditto. Modified files: trunk/ChangeLog trunk/array.c trunk/gc.c trunk/internal.h trunk/string.c Index: array.c =================================================================== --- array.c (revision 43838) +++ array.c (revision 43839) @@ -219,13 +219,12 @@ ary_resize_capa(VALUE ary, long capacity https://github.com/ruby/ruby/blob/trunk/array.c#L219 if (!ARY_EMBED_P(ary)) { long len = RARRAY_LEN(ary); const VALUE *ptr = RARRAY_CONST_PTR(ary); - size_t size = ARY_HEAP_SIZE(ary); if (len > capacity) len = capacity; MEMCPY((VALUE *)RARRAY(ary)->as.ary, ptr, VALUE, len); FL_SET_EMBED(ary); ARY_SET_LEN(ary, len); - ruby_sized_xfree((VALUE *)ptr, size); + ruby_xfree((VALUE *)ptr); } } } Index: ChangeLog =================================================================== --- ChangeLog (revision 43838) +++ ChangeLog (revision 43839) @@ -1,3 +1,20 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Mon Nov 25 06:53:30 2013 Koichi Sasada <ko1@a...> + + * internal.h: do not use ruby_sized_xrealloc() and ruby_sized_xfree() + if HAVE_MALLOC_USABLE_SIZE (or _WIN32) is defined. + + We don't need these function if malloc_usable_size() is available. + + * gc.c: catch up this change. + + * gc.c: define HAVE_MALLOC_USABLE_SIZE on _WIN32. + + * array.c (ary_resize_capa): do not use ruby_sized_xfree() with + local variable to avoid "unused local variable" warning. + This change only has few impact. + + * string.c (rb_str_resize): ditto. + Mon Nov 25 05:05:04 2013 Koichi Sasada <ko1@a...> * test/-ext-/tracepoint/test_tracepoint.rb: catch up GC.stat changes Index: string.c =================================================================== --- string.c (revision 43838) +++ string.c (revision 43839) @@ -1973,13 +1973,12 @@ rb_str_resize(VALUE str, long len) https://github.com/ruby/ruby/blob/trunk/string.c#L1973 } else if (len + termlen <= RSTRING_EMBED_LEN_MAX + 1) { char *ptr = STR_HEAP_PTR(str); - size_t size = STR_HEAP_SIZE(str); STR_SET_EMBED(str); if (slen > len) slen = len; if (slen > 0) MEMCPY(RSTRING(str)->as.ary, ptr, char, slen); TERM_FILL(RSTRING(str)->as.ary + len, termlen); STR_SET_EMBED_LEN(str, len); - if (independent) ruby_sized_xfree(ptr, size); + if (independent) ruby_xfree(ptr); return str; } else if (!independent) { Index: gc.c =================================================================== --- gc.c (revision 43838) +++ gc.c (revision 43839) @@ -37,6 +37,7 @@ https://github.com/ruby/ruby/blob/trunk/gc.c#L37 #ifndef HAVE_MALLOC_USABLE_SIZE # ifdef _WIN32 +# define HAVE_MALLOC_USABLE_SIZE # define malloc_usable_size(a) _msize(a) # endif #else @@ -5753,6 +5754,9 @@ ruby_xcalloc(size_t n, size_t size) https://github.com/ruby/ruby/blob/trunk/gc.c#L5754 return vm_xcalloc(&rb_objspace, n, size); } +#ifdef ruby_sized_xrealloc +#undef ruby_sized_xrealloc +#endif void * ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) { @@ -5775,6 +5779,9 @@ ruby_xrealloc2(void *ptr, size_t n, size https://github.com/ruby/ruby/blob/trunk/gc.c#L5779 return ruby_xrealloc(ptr, len); } +#ifdef ruby_sized_xfree +#undef ruby_sized_xfree +#endif void ruby_sized_xfree(void *x, size_t size) { Index: internal.h =================================================================== --- internal.h (revision 43838) +++ internal.h (revision 43839) @@ -439,9 +439,15 @@ void rb_objspace_set_event_hook(const rb https://github.com/ruby/ruby/blob/trunk/internal.h#L439 void rb_gc_writebarrier_remember_promoted(VALUE obj); void ruby_gc_set_params(void); +#if HAVE_MALLOC_USABLE_SIZE || defined(_WIN32) +#define ruby_sized_xrealloc(ptr, new_size, old_size) ruby_xrealloc(ptr, new_size) +#define ruby_sized_xfree(ptr, size) ruby_xfree(ptr) +#define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n) +#else void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_ALLOC_SIZE((2)); void ruby_sized_xfree(void *x, size_t size); #define SIZED_REALLOC_N(var,type,n,old_n) ((var)=(type*)ruby_sized_xrealloc((char*)(var), (n) * sizeof(type), (old_n) * sizeof(type))) +#endif void rb_gc_resurrect(VALUE ptr); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/