mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
now segmented list can be used as instance variable tables by -DMRB_USE_IV_SEGLIST; we still need to measure the performance and memory consumption
This commit is contained in:
@@ -13,7 +13,7 @@ extern "C" {
|
||||
|
||||
struct RClass {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct kh_iv *iv;
|
||||
struct iv_tbl *iv;
|
||||
struct kh_mt *mt;
|
||||
struct RClass *super;
|
||||
};
|
||||
|
||||
@@ -18,7 +18,7 @@ struct mrb_data_type {
|
||||
|
||||
struct RData {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct kh_iv *iv;
|
||||
struct iv_tbl *iv;
|
||||
struct mrb_data_type *type;
|
||||
void *data;
|
||||
};
|
||||
|
||||
@@ -13,7 +13,7 @@ extern "C" {
|
||||
|
||||
struct RHash {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct kh_iv *iv;
|
||||
struct iv_tbl *iv;
|
||||
struct kh_ht *ht;
|
||||
};
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ struct RBasic {
|
||||
|
||||
struct RObject {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct kh_iv *iv;
|
||||
struct iv_tbl *iv;
|
||||
};
|
||||
|
||||
#define mrb_obj_ptr(v) ((struct RObject*)((v).value.p))
|
||||
|
||||
@@ -38,17 +38,21 @@ mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym);
|
||||
void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value);
|
||||
int mrb_const_defined(mrb_state*, mrb_value, mrb_sym);
|
||||
|
||||
mrb_value mrb_obj_iv_get(mrb_state*, struct RObject*, mrb_sym);
|
||||
void mrb_obj_iv_set(mrb_state*, struct RObject*, mrb_sym, mrb_value);
|
||||
const char * mrb_class2name(mrb_state *mrb, struct RClass* klass);
|
||||
mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
|
||||
void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
|
||||
int mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
|
||||
mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym);
|
||||
void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v);
|
||||
int mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
|
||||
mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym);
|
||||
void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src);
|
||||
int mrb_const_defined_at(mrb_state *mrb, struct RClass *klass, mrb_sym id);
|
||||
mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
|
||||
mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym);
|
||||
void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
|
||||
mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
|
||||
mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
|
||||
mrb_sym mrb_class_sym(mrb_state *mrb, struct RClass *c, struct RClass *outer);
|
||||
|
||||
/* GC functions */
|
||||
void mrb_gc_mark_gv(mrb_state*);
|
||||
@@ -57,9 +61,6 @@ void mrb_gc_mark_iv(mrb_state*, struct RObject*);
|
||||
size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
|
||||
void mrb_gc_free_iv(mrb_state*, struct RObject*);
|
||||
|
||||
#include "mruby/khash.h"
|
||||
KHASH_DECLARE(iv, mrb_sym, mrb_value, 1)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern "C" { */
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user