Commit 21310019 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #805 from masamitsu-murase/add_field_write_barrier_to_guard_method_from_gc

Add field_write_barrier when an method is defined.
parents f3148b69 ee0cfb21
...@@ -293,6 +293,9 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, struct RPro ...@@ -293,6 +293,9 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, struct RPro
if (!h) h = c->mt = kh_init(mt, mrb); if (!h) h = c->mt = kh_init(mt, mrb);
k = kh_put(mt, h, mid); k = kh_put(mt, h, mid);
kh_value(h, k) = p; kh_value(h, k) = p;
if (p) {
mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
}
} }
void void
...@@ -322,6 +325,9 @@ mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value b ...@@ -322,6 +325,9 @@ mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value b
k = kh_put(mt, h, name); k = kh_put(mt, h, name);
p = mrb_proc_ptr(body); p = mrb_proc_ptr(body);
kh_value(h, k) = p; kh_value(h, k) = p;
if (p) {
mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
}
} }
static mrb_value static mrb_value
......
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