diff options
author | Jemma Issroff <jemmaissroff@gmail.com> | 2022-07-18 15:38:12 -0400 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2022-07-18 14:06:30 -0700 |
commit | 85ea46730deff70172a9f50172f0011a7401f371 (patch) | |
tree | 7381061939a093300fe1d49fdb7b6bcd222ce904 /vm_core.h | |
parent | 3ac9956dee1e4fbc413309d59a428e62de5cfed2 (diff) |
Separate TS_IVC and TS_ICVARC in is_entries buffers
This allows us to treat cvar caches differently than ivar caches.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6148
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -337,7 +337,7 @@ struct rb_mjit_unit; typedef uintptr_t iseq_bits_t; -#define ISEQ_IS_SIZE(body) (body->ic_size + body->ivc_size + body->ise_size) +#define ISEQ_IS_SIZE(body) (body->ic_size + body->ivc_size + body->ise_size + body->icvarc_size) struct rb_iseq_constant_body { enum iseq_type { @@ -448,7 +448,7 @@ struct rb_iseq_constant_body { const struct rb_iseq_struct *parent_iseq; struct rb_iseq_struct *local_iseq; /* local_iseq->flip_cnt can be modified */ - union iseq_inline_storage_entry *is_entries; /* [ TS_(ICVARC|IVC) ... | TS_ISE | TS_IC ] */ + union iseq_inline_storage_entry *is_entries; /* [ TS_IVC | TS_ICVARC | TS_ISE | TS_IC ] */ struct rb_call_data *call_data; //struct rb_call_data calls[ci_size]; struct { @@ -460,9 +460,10 @@ struct rb_iseq_constant_body { } variable; unsigned int local_table_size; - unsigned int ic_size; // Number of IC caches - unsigned int ise_size; // Number of ISE caches - unsigned int ivc_size; // Number of IVC and ICVARC caches + unsigned int ic_size; // Number of IC caches + unsigned int ise_size; // Number of ISE caches + unsigned int ivc_size; // Number of IVC caches + unsigned int icvarc_size; // Number of ICVARC caches unsigned int ci_size; unsigned int stack_max; /* for stack overflow check */ union { |