summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2022-07-18 15:38:12 -0400
committerAaron Patterson <aaron.patterson@gmail.com>2022-07-18 14:06:30 -0700
commit85ea46730deff70172a9f50172f0011a7401f371 (patch)
tree7381061939a093300fe1d49fdb7b6bcd222ce904 /vm_core.h
parent3ac9956dee1e4fbc413309d59a428e62de5cfed2 (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.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/vm_core.h b/vm_core.h
index f8eea13750..2a6d15bfbc 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -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 {