From 4bcd5981e80d3e1852c8723741a0069779464128 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Tue, 10 Mar 2020 00:19:19 -0700 Subject: Capture inlined iseq's cc entries in root iseq's jit_unit to avoid marking wrong cc entries when inlined iseq is compiled multiple times, resolving the TODO added by daf7c48d88. This obviates pseudo jit_unit in inlined iseq introduced by 7ec2359374 and fixes memory leak of the adhoc unit. --- mjit.c | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'mjit.c') diff --git a/mjit.c b/mjit.c index a5461414d3..514d04f085 100644 --- a/mjit.c +++ b/mjit.c @@ -26,7 +26,6 @@ #include "internal/warnings.h" #include "mjit_worker.c" -#include "vm_callinfo.h" // Copy ISeq's states so that race condition does not happen on compilation. static void @@ -53,18 +52,6 @@ mjit_copy_job_handler(void *data) } const struct rb_iseq_constant_body *body = job->iseq->body; - const unsigned int ci_size = body->ci_size; - if (ci_size > 0) { - VM_ASSERT(body->jit_unit != NULL); - VM_ASSERT(body->jit_unit->cc_entries != NULL); - - const struct rb_callcache **cc_entries = body->jit_unit->cc_entries; - - for (unsigned int i=0; icall_data[i].cc; - } - } - if (job->is_entries) { memcpy(job->is_entries, body->is_entries, sizeof(union iseq_inline_storage_entry) * body->is_size); } @@ -293,9 +280,6 @@ create_unit(const rb_iseq_t *iseq) unit->id = current_unit_num++; unit->iseq = (rb_iseq_t *)iseq; - if (iseq->body->ci_size > 0) { - unit->cc_entries = ZALLOC_N(const struct rb_callcache *, iseq->body->ci_size); - } iseq->body->jit_unit = unit; } -- cgit v1.2.3