Project

General

Profile

« Previous | Next » 

Revision 94c9f166

Added by byroot (Jean Boussier) almost 2 years ago

Refactor rb_obj_evacuate_ivs_to_hash_table

That function is a bit too low level to called from multiple
places. It's always used in tandem with rb_shape_set_too_complex
and both have to know how the object is laid out to update the
iv_ptr.

So instead we can provide two higher level function:

  • rb_obj_copy_ivs_to_hash_table to prepare a st_table from an
    arbitrary oject.
  • rb_obj_convert_to_too_complex to assign the new st_table
    to the old object, and safely free the old iv_ptr.

Unfortunately both can't be combined into one, because rb_obj_copy_ivar
need rb_obj_copy_ivs_to_hash_table to copy from one object
to another.