diff options
Diffstat (limited to 'variable.h')
-rw-r--r-- | variable.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/variable.h b/variable.h index bfe1be2d47..1abc89ed99 100644 --- a/variable.h +++ b/variable.h @@ -1,7 +1,6 @@ #ifndef RUBY_TOPLEVEL_VARIABLE_H /*-*-C-*-vi:se ft=c:*/ #define RUBY_TOPLEVEL_VARIABLE_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -11,12 +10,30 @@ /* per-object */ +#include "shape.h" + struct gen_ivtbl { - uint32_t numiv; - VALUE ivptr[FLEX_ARY_LEN]; +#if !SHAPE_IN_BASIC_FLAGS + uint16_t shape_id; +#endif + union { + struct { + uint32_t numiv; + VALUE ivptr[1]; + } shape; + struct { + st_table *table; + } complex; + } as; }; int rb_ivar_generic_ivtbl_lookup(VALUE obj, struct gen_ivtbl **); -VALUE rb_ivar_generic_lookup_with_index(VALUE obj, ID id, uint32_t index); + +#if !SHAPE_IN_BASIC_FLAGS +shape_id_t rb_generic_shape_id(VALUE obj); +#endif + +void rb_free_rb_global_tbl(void); +void rb_free_generic_iv_tbl_(void); #endif /* RUBY_TOPLEVEL_VARIABLE_H */ |