This data is redundant because the shape already contains both the length and capacity of the object's fields. So it both waste space and create the possibility of a desync between the two. We also do not need to initialize everything to Qundef, this seem to be a left-over from pre-shape instance variables.
33 lines
993 B
C
33 lines
993 B
C
#ifndef RUBY_TOPLEVEL_VARIABLE_H /*-*-C-*-vi:se ft=c:*/
|
|
#define RUBY_TOPLEVEL_VARIABLE_H
|
|
/**
|
|
* @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
|
|
* modify this file, provided that the conditions mentioned in the
|
|
* file COPYING are met. Consult the file for details.
|
|
*/
|
|
|
|
/* per-object */
|
|
|
|
#include "shape.h"
|
|
|
|
struct gen_fields_tbl {
|
|
union {
|
|
struct {
|
|
VALUE fields[1];
|
|
} shape;
|
|
struct {
|
|
st_table *table;
|
|
} complex;
|
|
} as;
|
|
};
|
|
|
|
int rb_ivar_generic_fields_tbl_lookup(VALUE obj, struct gen_fields_tbl **);
|
|
void rb_copy_complex_ivars(VALUE dest, VALUE obj, shape_id_t src_shape_id, st_table *fields_table);
|
|
|
|
void rb_free_rb_global_tbl(void);
|
|
void rb_free_generic_fields_tbl_(void);
|
|
|
|
#endif /* RUBY_TOPLEVEL_VARIABLE_H */
|