mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
These places need the write barrier
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user