summaryrefslogtreecommitdiffhomepage
path: root/src/variable.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-01-06 09:54:30 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2013-01-06 09:54:30 -0800
commit101b617d24b3c25d0b5b36ab13ebf5336d167f50 (patch)
treef1e7371a795332cbc5113fff93950f6776a1e473 /src/variable.c
parentba9ca03e33e6b43c53da784bcc4f31b4f6ea327b (diff)
parent5dfefb95dfa2099fd748283f09506d009a32fe05 (diff)
downloadmruby-101b617d24b3c25d0b5b36ab13ebf5336d167f50.tar.gz
mruby-101b617d24b3c25d0b5b36ab13ebf5336d167f50.zip
Merge pull request #696 from authorNari/gengc
Generational Garbage Collection for mruby
Diffstat (limited to 'src/variable.c')
-rw-r--r--src/variable.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/variable.c b/src/variable.c
index 5d46ffc60..6aa6e71bd 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -710,6 +710,7 @@ mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v)
iv_tbl *t = c->iv;
if (iv_get(mrb, t, sym, NULL)) {
+ mrb_write_barrier(mrb, (struct RBasic*)c);
iv_put(mrb, t, sym, v);
return;
}
@@ -721,6 +722,7 @@ mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v)
cls->iv = iv_new(mrb);
}
+ mrb_write_barrier(mrb, (struct RBasic*)cls);
iv_put(mrb, cls->iv, sym, v);
}
@@ -771,6 +773,7 @@ mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
iv_tbl *t = c->iv;
if (iv_get(mrb, t, sym, NULL)) {
+ mrb_write_barrier(mrb, (struct RBasic*)c);
iv_put(mrb, t, sym, v);
return;
}
@@ -781,6 +784,7 @@ mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
if (!c->iv) {
c->iv = iv_new(mrb);
}
+ mrb_write_barrier(mrb, (struct RBasic*)c);
iv_put(mrb, c->iv, sym, v);
}