summaryrefslogtreecommitdiff
path: root/memory_view.c
diff options
context:
space:
mode:
Diffstat (limited to 'memory_view.c')
-rw-r--r--memory_view.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/memory_view.c b/memory_view.c
index 3fb79202f9..7bcb39972f 100644
--- a/memory_view.c
+++ b/memory_view.c
@@ -51,11 +51,11 @@ exported_object_registry_mark(void *ptr)
static void
exported_object_registry_free(void *ptr)
{
- RB_VM_LOCK_ENTER();
- st_clear(exported_object_table);
- st_free_table(exported_object_table);
- exported_object_table = NULL;
- RB_VM_LOCK_LEAVE();
+ RB_VM_LOCKING() {
+ st_clear(exported_object_table);
+ st_free_table(exported_object_table);
+ exported_object_table = NULL;
+ }
}
const rb_data_type_t rb_memory_view_exported_object_registry_data_type = {
@@ -99,18 +99,18 @@ exported_object_dec_ref(st_data_t *key, st_data_t *val, st_data_t arg, int exist
static void
register_exported_object(VALUE obj)
{
- RB_VM_LOCK_ENTER();
- st_update(exported_object_table, (st_data_t)obj, exported_object_add_ref, 0);
- RB_VM_LOCK_LEAVE();
+ RB_VM_LOCKING() {
+ st_update(exported_object_table, (st_data_t)obj, exported_object_add_ref, 0);
+ }
}
static void
unregister_exported_object(VALUE obj)
{
- RB_VM_LOCK_ENTER();
- if (exported_object_table)
- st_update(exported_object_table, (st_data_t)obj, exported_object_dec_ref, 0);
- RB_VM_LOCK_LEAVE();
+ RB_VM_LOCKING() {
+ if (exported_object_table)
+ st_update(exported_object_table, (st_data_t)obj, exported_object_dec_ref, 0);
+ }
}
// MemoryView
@@ -845,9 +845,7 @@ rb_memory_view_release(rb_memory_view_t* view)
if (rv) {
unregister_exported_object(view->obj);
view->obj = Qnil;
- if (view->item_desc.components) {
- xfree((void *)view->item_desc.components);
- }
+ xfree((void *)view->item_desc.components);
}
return rv;
}
@@ -865,7 +863,7 @@ Init_MemoryView(void)
VALUE obj = TypedData_Wrap_Struct(
0, &rb_memory_view_exported_object_registry_data_type,
exported_object_table);
- rb_gc_register_mark_object(obj);
+ rb_vm_register_global_object(obj);
rb_memory_view_exported_object_registry = obj;
id_memory_view = rb_intern_const("__memory_view__");