diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-01 15:12:14 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-01 15:12:14 +0000 |
commit | 9301ef5d0eac8fda440b021445a09c17397db5d1 (patch) | |
tree | f489665dc6ef08596c2f20b3104f632bd764c38d /vm_core.h | |
parent | b9f5cab23a086e864c1f7ec420faee7f77245e53 (diff) |
make Binding object WB protected.
* proc.c (ruby_binding_data_type): set RUBY_TYPED_WB_PROTECTED.
Insert write barriers (WBs) to all of writes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -914,8 +914,8 @@ extern const rb_data_type_t ruby_binding_data_type; GetCoreDataFromValue((obj), rb_binding_t, (ptr)) typedef struct { - struct rb_block block; - VALUE pathobj; + const struct rb_block block; + const VALUE pathobj; unsigned short first_lineno; } rb_binding_t; @@ -1195,6 +1195,8 @@ VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v) const VALUE *rb_vm_ep_local_ep(const VALUE *ep); const VALUE *rb_vm_proc_local_ep(VALUE proc); +void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep); +void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src); VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp); @@ -1458,7 +1460,7 @@ VALUE rb_vm_make_proc(rb_thread_t *th, const struct rb_captured_block *captured, VALUE rb_vm_make_binding(rb_thread_t *th, const rb_control_frame_t *src_cfp); VALUE rb_vm_env_local_variables(const rb_env_t *env); const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env); -const VALUE *rb_binding_add_dynavars(rb_binding_t *bind, int dyncount, const ID *dynvars); +const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars); void rb_vm_inc_const_missing_count(void); void rb_vm_gvl_destroy(rb_vm_t *vm); VALUE rb_vm_call(rb_thread_t *th, VALUE recv, VALUE id, int argc, |