From 738d5736ab97a23d26ac756cccb9974ee6f27277 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Tue, 25 Nov 2014 14:48:50 +0100 Subject: [PATCH] gc: Export `ruby_memnotify` --- gc.c | 15 +++++++++++++++ include/ruby/defines.h | 1 + 2 files changed, 16 insertions(+) diff --git a/gc.c b/gc.c index 7fa70c2c7a7832..6f941a65de3683 100644 --- a/gc.c +++ b/gc.c @@ -6192,6 +6192,21 @@ objspace_xfree(rb_objspace_t *objspace, void *ptr, size_t old_size) objspace_malloc_increase(objspace, ptr, 0, old_size, MEMOP_TYPE_FREE); } +void +ruby_memnotify(void *mem, size_t new_size, size_t old_size) +{ + enum memop_type t; + + if (new_size == 0) + t = MEMOP_TYPE_FREE; + else if (old_size == 0) + t = MEMOP_TYPE_MALLOC; + else + t = MEMOP_TYPE_REALLOC; + + objspace_malloc_increase(&rb_objspace, mem, new_size, old_size, t); +} + void * ruby_xmalloc(size_t size) { diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 9659db7ef662f2..71235fca586071 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -124,6 +124,7 @@ void *xcalloc(size_t,size_t) RUBY_ATTR_ALLOC_SIZE((1,2)); void *xrealloc(void*,size_t) RUBY_ATTR_ALLOC_SIZE((2)); void *xrealloc2(void*,size_t,size_t) RUBY_ATTR_ALLOC_SIZE((2,3)); void xfree(void*); +void ruby_memnotify(void*,size_t,size_t); #define STRINGIZE(expr) STRINGIZE0(expr) #ifndef STRINGIZE0