summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-20 07:52:25 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-20 07:52:25 +0000
commit68aa1d81cfb21b397f0f74cf9edbb9d71f13f0ac (patch)
treec6dc747b7860b49e142599861b32d00a155df167 /gc.c
parentc9dd5918f40dc6df3a237f634b9689bfbb591662 (diff)
gc.c: rb_gc_adjust_memory_usage
* gc.c (rb_gc_adjust_memory_usage): notify memory usage to the GC engine by extension libraries, to trigger GC. [Feature #12690] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56189 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index af43b0453b..c90fc71c0d 100644
--- a/gc.c
+++ b/gc.c
@@ -8096,6 +8096,18 @@ gc_malloc_allocations(VALUE self)
}
#endif
+void
+rb_gc_adjust_memory_usage(ssize_t diff)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ if (diff > 0) {
+ objspace_malloc_increase(objspace, 0, diff, 0, MEMOP_TYPE_REALLOC);
+ }
+ else if (diff < 0) {
+ objspace_malloc_increase(objspace, 0, 0, -diff, MEMOP_TYPE_REALLOC);
+ }
+}
+
/*
------------------------------ WeakMap ------------------------------
*/