diff options
| -rw-r--r-- | src/gc.c | 6 | ||||
| -rw-r--r-- | tasks/toolchains/gcc.rake | 2 |
2 files changed, 8 insertions, 0 deletions
@@ -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 |
