ruby/internal
Peter Zhu bfb395c620 Implement weak references in the GC
[Feature #19783]

This commit adds support for weak references in the GC through the
function `rb_gc_mark_weak`. Unlike strong references, weak references
does not mark the object, but rather lets the GC know that an object
refers to another one. If the child object is freed, the pointer from
the parent object is overwritten with `Qundef`.

Co-Authored-By: Jean Boussier <byroot@ruby-lang.org>
2023-08-25 09:01:21 -04:00
..
array.h Remove RARRAY_CONST_PTR_TRANSIENT 2023-07-13 14:48:14 -04:00
basic_operators.h Emit special instruction for array literal + .(hash|min|max) 2023-04-18 17:16:22 -07:00
bignum.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
bits.h Check that __builtin_mul_overflow can handle long long 2023-08-24 20:47:23 -07:00
class.h Prefer 0 over NULL as function pointers 2023-06-23 03:15:55 +09:00
cmdlineopt.h Fix range of --backtrace-limit 2023-08-11 01:56:50 +09:00
compar.h Introduce BOP_CMP for optimized comparison 2022-12-06 12:37:23 -08:00
compile.h Move the PC regardless of the leaf flag (#8232) 2023-08-16 20:28:33 -07:00
compilers.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
complex.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
cont.h Introduce Fiber#storage for inheritable fiber-scoped variables. (#6612) 2022-12-01 23:00:33 +13:00
dir.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enc.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
encoding.h parenthesize to macro 2022-12-02 01:31:27 +09:00
enum.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enumerator.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
error.h Add rb_sys_fail_sprintf macro 2023-05-12 18:36:02 +09:00
eval.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
file.h Revert "reuse open(2) from rb_file_load_ok on POSIX-like system" 2023-02-27 09:24:45 -08:00
fixnum.h Fix rb_fix_mul_fix on OpenBSD/mips64 2022-07-03 09:42:44 -07:00
gc.h Implement weak references in the GC 2023-08-25 09:01:21 -04:00
hash.h Declare RHASH_AR_TABLE and RHASH_ST_TABLE return non-null 2023-06-23 14:54:50 +09:00
imemo.h use correct svar even if env is escaped 2023-02-10 17:55:25 +09:00
inits.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
io.h do not redefine a typedef 2023-08-25 17:27:53 +09:00
load.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
loadpath.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
math.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
missing.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
numeric.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
object.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
parse.h Move SCRIPT_LINES__ away from parse.y 2023-08-25 18:23:05 +09:00
proc.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
process.h Put rb_fork back into process.c 2023-05-21 23:00:27 +09:00
ractor.h internal/ractor.h: Added 2022-03-30 16:50:46 +09:00
random.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
range.h Implement Struct on VWA 2023-06-05 15:47:16 -04:00
rational.h Don't redefine RB_OBJ_WRITE 2023-01-18 08:49:32 -05:00
re.h Stop allocating unused backref strings at defined? 2023-06-27 23:14:10 +09:00
ruby_parser.h Move SCRIPT_LINES__ away from parse.y 2023-08-25 18:23:05 +09:00
sanitizers.h Remove obsoleted MJIT_HEADER macro 2023-03-06 22:29:35 -08:00
serial.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
signal.h Move posix_signal declaration internal with prefix ruby_ 2023-07-17 21:31:59 +09:00
static_assert.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
string.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
struct.h Remove unused references to the transient heap 2023-07-13 14:48:14 -04:00
symbol.h Ensure _id2ref finds symbols with the correct type 2022-07-20 10:38:44 -07:00
thread.h Use a real Ruby mutex in rb_io_close_wait_list (#7884) 2023-06-01 17:37:18 +09:00
time.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
transcode.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
util.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
variable.h Remove unused references to the transient heap 2023-07-13 14:48:14 -04:00
vm.h YJIT: Make ratio_in_yjit always available (#8064) 2023-07-13 18:14:43 -04:00
warnings.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00