summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRory OConnell <[email protected]>2020-08-29 17:19:49 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 18:20:12 +0900
commitdae0de44617cf9e4584f8aa8cd34db4cd928a0c8 (patch)
tree1b642dc3dc81a9d964d750bb01b123c09c8e172b
parentcfe8b0c81ddf1d221e4e1c6bb41d7e4c50d59fad (diff)
downloadmruby-dae0de44617cf9e4584f8aa8cd34db4cd928a0c8.tar.gz
mruby-dae0de44617cf9e4584f8aa8cd34db4cd928a0c8.zip
Add call to malloc_trim on a full GC
-rw-r--r--src/gc.c6
-rw-r--r--tasks/toolchains/gcc.rake2
2 files changed, 8 insertions, 0 deletions
diff --git a/src/gc.c b/src/gc.c
index 393f7f62c..302d5cd68 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -6,6 +6,9 @@
#include <string.h>
#include <stdlib.h>
+#ifdef HAS_MALLOC_TRIM
+#include <malloc.h>
+#endif
#include <mruby.h>
#include <mruby/array.h>
#include <mruby/class.h>
@@ -1319,6 +1322,9 @@ mrb_full_gc(mrb_state *mrb)
gc->full = FALSE;
}
+#ifdef HAS_MALLOC_TRIM
+ malloc_trim(0);
+#endif
GC_TIME_STOP_AND_REPORT;
}
diff --git a/tasks/toolchains/gcc.rake b/tasks/toolchains/gcc.rake
index 810f23b7a..3d55e6171 100644
--- a/tasks/toolchains/gcc.rake
+++ b/tasks/toolchains/gcc.rake
@@ -31,6 +31,8 @@ MRuby::Toolchain.new(:gcc) do |conf, params|
end
[[conf.cc, 'c'], [conf.cxx, 'c++']].each do |cc, lang|
+ cc.defines += %w(HAS_MALLOC_TRIM) if cc.has_function? 'malloc_trim', with_header: 'malloc.h'
+
cc.instance_variable_set :@header_search_language, lang
def cc.header_search_paths
if @header_search_command != command