summaryrefslogtreecommitdiff
path: root/variable.h
diff options
context:
space:
mode:
Diffstat (limited to 'variable.h')
-rw-r--r--variable.h25
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 */