[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]