diff options
author | Adam Hess <adamhess1991@gmail.com> | 2023-10-12 11:15:53 -0700 |
---|---|---|
committer | Peter Zhu <peter@peterzhu.ca> | 2023-12-07 15:52:35 -0500 |
commit | 6816e8efcff3be75f8020cd1b0ea57d3cd664bbc (patch) | |
tree | 8f8484b955ba25e9df6a2038db0f156e7cbf71e4 /internal | |
parent | b361a800c22e0248bf126d77e96a7bd4f9c34d1b (diff) | |
download | ruby-6816e8efcff3be75f8020cd1b0ea57d3cd664bbc.tar.gz |
Free everything at shutdown
when the RUBY_FREE_ON_SHUTDOWN environment variable is set, manually free memory at shutdown.
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Peter Zhu <peter@peterzhu.ca>
Diffstat (limited to 'internal')
-rw-r--r-- | internal/cont.h | 3 | ||||
-rw-r--r-- | internal/encoding.h | 3 | ||||
-rw-r--r-- | internal/error.h | 3 | ||||
-rw-r--r-- | internal/random.h | 1 | ||||
-rw-r--r-- | internal/symbol.h | 3 | ||||
-rw-r--r-- | internal/transcode.h | 3 | ||||
-rw-r--r-- | internal/vm.h | 5 |
7 files changed, 21 insertions, 0 deletions
diff --git a/internal/cont.h b/internal/cont.h index c3b091668a..3c2528a02a 100644 --- a/internal/cont.h +++ b/internal/cont.h @@ -22,6 +22,9 @@ void rb_jit_cont_init(void); void rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data); void rb_jit_cont_finish(void); +/* vm.c */ +void rb_free_shared_fiber_pool(void); + // Copy locals from the current execution to the specified fiber. VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber); diff --git a/internal/encoding.h b/internal/encoding.h index a3b81bd388..11ffa6d83d 100644 --- a/internal/encoding.h +++ b/internal/encoding.h @@ -29,4 +29,7 @@ void rb_enc_set_base(const char *name, const char *orig); int rb_enc_set_dummy(int index); PUREFUNC(int rb_data_is_encoding(VALUE obj)); +/* vm.c */ +void rb_free_global_enc_table(void); + #endif /* INTERNAL_ENCODING_H */ diff --git a/internal/error.h b/internal/error.h index 5fee468929..7e41f134d7 100644 --- a/internal/error.h +++ b/internal/error.h @@ -169,6 +169,9 @@ VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path); #endif RUBY_SYMBOL_EXPORT_END +/* vm.c */ +void rb_free_warning(void); + static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg) { diff --git a/internal/random.h b/internal/random.h index 231e2d5d7e..127b908e16 100644 --- a/internal/random.h +++ b/internal/random.h @@ -12,5 +12,6 @@ /* random.c */ int ruby_fill_random_bytes(void *, size_t, int); +void rb_free_default_rand_key(void); #endif /* INTERNAL_RANDOM_H */ diff --git a/internal/symbol.h b/internal/symbol.h index 30c81ea004..e7730cb70f 100644 --- a/internal/symbol.h +++ b/internal/symbol.h @@ -32,6 +32,9 @@ ID rb_make_temporary_id(size_t n); void rb_gc_free_dsymbol(VALUE); int rb_static_id_valid_p(ID id); +/* vm.c */ +void rb_free_static_symid_str(void); + #if __has_builtin(__builtin_constant_p) #define rb_sym_intern_ascii_cstr(ptr) \ (__builtin_constant_p(ptr) ? \ diff --git a/internal/transcode.h b/internal/transcode.h index 9922332ea9..ce4f2341be 100644 --- a/internal/transcode.h +++ b/internal/transcode.h @@ -17,4 +17,7 @@ extern VALUE rb_cEncodingConverter; size_t rb_econv_memsize(rb_econv_t *); +/* vm.c */ +void rb_free_transcoder_table(void); + #endif /* INTERNAL_TRANSCODE_H */ diff --git a/internal/vm.h b/internal/vm.h index d10c14eb4d..f491b5e280 100644 --- a/internal/vm.h +++ b/internal/vm.h @@ -83,6 +83,11 @@ void rb_check_stack_overflow(void); extern uint64_t rb_vm_insns_count; #endif +extern bool rb_free_on_exit; + +/* miniinit.c and builtin.c */ +void rb_free_loaded_builtin_table(void); + /* vm_insnhelper.c */ VALUE rb_equal_opt(VALUE obj1, VALUE obj2); VALUE rb_eql_opt(VALUE obj1, VALUE obj2); |