SASADA Koichi <ko1 / atdot.net> wrote:
> (2014/05/31 4:56), Eric Wong wrote:
> > +void rb_gc_register_mark_object(VALUE val)
> > +
> > +  Tells GC to protect the object referenced by val.  This requires less
> > +  memory to track than rb_global_variable, but may only be used if the C
> > +  variable never changes.
> > +
> 
> How about that?
> 
> > Tells GC to protect the object referenced by val.
> 
> Another things are implementation details.
> 
> And I'm not sure the following sentence is needed.
> 
> > but may only be used if the C
> > variable never changes.
> 
> I think it may assume global variables. But this API is independent from
> C's global variables. I think this comment may be for
> `rb_global_variable' users, but it is different API.

I think it is important to tell users how it is different from
rb_global_variable and when it is OK or not OK to use.  So I think
the implementation details/difference from rb_global_variable is
important to prevent misuse.

May we consider this part of the supported C API?

> PS.
> For our MVM development, we can not support "rb_global_variable()". So I
> want to make it obsolete.
> This is why I introduce rb_gc_register_mark_object(). But not yet.

Is MVM still happening?  I haven't heard about it in a long time.

If so, we should move fstring and symbol table into the vm struct.