summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-06-01 15:12:14 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-06-01 15:12:14 +0000
commit9301ef5d0eac8fda440b021445a09c17397db5d1 (patch)
treef489665dc6ef08596c2f20b3104f632bd764c38d /vm_core.h
parentb9f5cab23a086e864c1f7ec420faee7f77245e53 (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.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/vm_core.h b/vm_core.h
index 6a5f10d0bd..bb9d58e903 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -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,