>>>>> "J" == Jan Arne Petersen <japetersen / web.de> writes:

J> What means the FL_EXIVAR flag (defined in ruby.h)?

 Why do you want to know this ? :-)

 All objects can have instance variables, but if you look at ruby.h you'll
 see that only 2 struct (ROBJECT, RCLASS) has a field "st_table *iv_tbl"
 (this is where are stored the instance variables).

 This mean that when you define an instance variable, there are 2 cases

  * the type of the object is T_OBJECT, T_CLASS or T_MODULE : the instance
    variable is stored in iv_tbl of the object

  * for the other types, ruby will create for each object a struct st_table
    in the global variable generic_iv_tbl, to store the instance
    variable. Then the object is marked with the flag FL_EXIVAR.

    It's a little more complex, because for some object (like Qnil, Qtrue,
    ...) ruby can't put this flag. In this case the variable
    special_generic_ivar is set.



Guy Decoux