vm_trace: implement postponed_jobs as st_table

st_table allows the use of st_shift to act as an order-preserving
queue while allowing fast lookups to prevent duplicate jobs.

In typical Ruby apps, this table will only have one entry
for gc_finalize_deferred_register.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-05-17 04:20:33 +00:00
parent b86daec202
commit 5a1dfb04bc
2 changed files with 17 additions and 46 deletions

View file

@ -591,8 +591,7 @@ typedef struct rb_vm_struct {
struct st_table *ensure_rollback_table;
/* postponed_job */
struct rb_postponed_job_struct *postponed_job_buffer;
int postponed_job_index;
struct st_table *postponed_jobs;
int src_encoding_index;