Commit 1a369de4 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

remove src/gc.h

parent 4c01f002
...@@ -78,6 +78,10 @@ struct RClass* mrb_class_real(struct RClass* cl); ...@@ -78,6 +78,10 @@ struct RClass* mrb_class_real(struct RClass* cl);
void mrb_obj_call_init(mrb_state *mrb, mrb_value obj, int argc, mrb_value *argv); void mrb_obj_call_init(mrb_state *mrb, mrb_value obj, int argc, mrb_value *argv);
void mrb_gc_mark_mt(mrb_state*, struct RClass*);
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
void mrb_gc_free_mt(mrb_state*, struct RClass*);
#if defined(__cplusplus) #if defined(__cplusplus)
} /* extern "C" { */ } /* extern "C" { */
#endif #endif
......
...@@ -42,6 +42,11 @@ struct kh_ht * mrb_hash_tbl(mrb_state *mrb, mrb_value hash); ...@@ -42,6 +42,11 @@ struct kh_ht * mrb_hash_tbl(mrb_state *mrb, mrb_value hash);
mrb_value mrb_obj_is_proc(mrb_value proc); mrb_value mrb_obj_is_proc(mrb_value proc);
/* GC functions */
void mrb_gc_mark_ht(mrb_state*, struct RHash*);
size_t mrb_gc_mark_ht_size(mrb_state*, struct RHash*);
void mrb_gc_free_ht(mrb_state*, struct RHash*);
#if defined(__cplusplus) #if defined(__cplusplus)
} /* extern "C" { */ } /* extern "C" { */
#endif #endif
......
...@@ -48,6 +48,13 @@ mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self); ...@@ -48,6 +48,13 @@ mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym); mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym);
void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val); void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
/* GC functions */
void mrb_gc_mark_gv(mrb_state*);
void mrb_gc_free_gv(mrb_state*);
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*);
#if defined(__cplusplus) #if defined(__cplusplus)
} /* extern "C" { */ } /* extern "C" { */
#endif #endif
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "mruby/proc.h" #include "mruby/proc.h"
#include "mruby/data.h" #include "mruby/data.h"
#include "mruby/numeric.h" #include "mruby/numeric.h"
#include "mruby/variable.h"
/* /*
= Tri-color Incremental Garbage Collection = Tri-color Incremental Garbage Collection
...@@ -74,7 +75,29 @@ ...@@ -74,7 +75,29 @@
#include "re.h" #include "re.h"
#endif #endif
#include "gc.h" struct free_obj {
MRUBY_OBJECT_HEADER;
struct RBasic *next;
};
typedef struct {
union {
struct free_obj free;
struct RBasic basic;
struct RObject object;
struct RClass klass;
struct RString string;
struct RArray array;
struct RHash hash;
struct RRange range;
struct RStruct structdata;
struct RProc procdata;
#ifdef INCLUDE_REGEXP
struct RMatch match;
struct RRegexp regexp;
#endif
} as;
} RVALUE;
#ifdef GC_PROFILE #ifdef GC_PROFILE
#include <sys/time.h> #include <sys/time.h>
......
/*
** gc.h - garbage collector for RiteVM
**
** See Copyright Notice in mruby.h
*/
#ifndef MRUBY_GC_H
#define MRUBY_GC_H
#if defined(__cplusplus)
extern "C" {
#endif
struct free_obj {
MRUBY_OBJECT_HEADER;
struct RBasic *next;
};
typedef struct {
union {
struct free_obj free;
struct RBasic basic;
struct RObject object;
struct RClass klass;
struct RString string;
struct RArray array;
struct RHash hash;
struct RRange range;
struct RStruct structdata;
struct RProc procdata;
#ifdef INCLUDE_REGEXP
struct RMatch match;
struct RRegexp regexp;
#endif
} as;
} RVALUE;
void mrb_gc_mark_gv(mrb_state*);
void mrb_gc_free_gv(mrb_state*);
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*);
void mrb_gc_mark_mt(mrb_state*, struct RClass*);
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
void mrb_gc_free_mt(mrb_state*, struct RClass*);
void mrb_gc_mark_ht(mrb_state*, struct RHash*);
size_t mrb_gc_mark_ht_size(mrb_state*, struct RHash*);
void mrb_gc_free_ht(mrb_state*, struct RHash*);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
#endif /* MRUBY_GC_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment