diff options
| author | Alan Wu <XrXr@users.noreply.github.com> | 2020-09-22 18:25:29 -0400 |
|---|---|---|
| committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:23 -0400 |
| commit | 86c438d12990d94fcd6ca1853423e19026de2a7f (patch) | |
| tree | 66f2783b2aee3846a7b56886311b2360e5ae0ad3 | |
| parent | 265c5ca8b1ec599f609ea690bfd41f93f4d38cb1 (diff) | |
Revert "Add workaround for inserting into addr2insn mapping"
This reverts commit 6b765b7ca0dad82ffbdeea76c63a0cac5fdc4bfd.
It made things much slower and didn't fix the crash.
| -rw-r--r-- | ujit_compile.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/ujit_compile.c b/ujit_compile.c index 5980df59f5..bfe75d1b7b 100644 --- a/ujit_compile.c +++ b/ujit_compile.c @@ -64,14 +64,7 @@ addr2insn_bookkeeping(void *code_ptr, int insn) const void * const translated_address = table[insn]; st_data_t encoded_insn_data; if (st_lookup(rb_encoded_insn_data, (st_data_t)translated_address, &encoded_insn_data)) { - // This is a roundabout way of doing an insert. Doing a plain insert can cause GC - // while inserting. While inserting, the table is in an inconsistent state and the - // GC can do a lookup in the table. - st_table *new_table = st_copy(rb_encoded_insn_data); - st_table *old_table = rb_encoded_insn_data; - st_insert(new_table, (st_data_t)code_ptr, encoded_insn_data); - rb_encoded_insn_data = new_table; - st_free_table(old_table); + st_insert(rb_encoded_insn_data, (st_data_t)code_ptr, encoded_insn_data); } else { rb_bug("ujit: failed to find info for original instruction while dealing with addr2insn"); |
