Project

General

Profile

Actions

Feature #15413

open

unmarkable C stack (3rd stack)

Added by normalperson (Eric Wong) almost 6 years ago. Updated almost 6 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:90533]

Description

The current machine (C) stack can get pretty big for some C functions
(rb_ensure, rb_f_select/rb_thread_fd_select/...). This is harmful when we stop
a fiber/thread and all that stack becomes eligible for marking.

We should experiment a bump allocator for temporary allocations which
behaves like the stack, but does not get marked by GC. VALUEs will continue
to be allocated on normal C stack, but non-VALUE stuff can go to the
unmarkable machine stack.

Maybe we call it "UMMS" for Un-Markable Machine Stack

We cannot remove marking of the current C stack for compatibility;
but we can transition existing C code to use UMMS.

I probably won't be around to work on it for 2.7, unfortunately.

Actions

Also available in: Atom PDF

Like0
Like0Like0