diff --git a/iseq.c b/iseq.c index 5d294e9d3161e1..25f9dc0518f91d 100644 --- a/iseq.c +++ b/iseq.c @@ -119,10 +119,14 @@ iseq_clear_ic_references_i(VALUE *code, VALUE insn, size_t index, void *data) switch (insn) { case BIN(opt_getinlinecache): { + fprintf(stderr, "// I FOUND AN INLINE CACHE!\n"); + ic_data->ic = (IC) code[index + 2]; return true; } case BIN(getconstant): { + fprintf(stderr, "// I FOUND A GETCONSTANT!\n"); + ID id = (ID) code[index + 1]; rb_vm_t *vm = GET_VM(); st_table *ics; @@ -139,6 +143,8 @@ iseq_clear_ic_references_i(VALUE *code, VALUE insn, size_t index, void *data) return true; } case BIN(opt_setinlinecache): { + fprintf(stderr, "// I FOUND A SETINLINECACHE!\n"); + ic_data->ic = NULL; return true; } @@ -154,8 +160,13 @@ iseq_clear_ic_references_i(VALUE *code, VALUE insn, size_t index, void *data) static void iseq_clear_ic_references(const rb_iseq_t *iseq) { + fprintf(stderr, "// ====================================\n"); + fprintf(stderr, "// CLEANING UP IC REFERENCES IN ISEQ\n"); + struct iseq_clear_ic_references_data data = { .ic = NULL }; rb_iseq_each(iseq, 0, iseq_clear_ic_references_i, (void *) &data); + + fprintf(stderr, "// ====================================\n"); } void diff --git a/vm_method.c b/vm_method.c index 1f472efb91b9ca..f35b7c4de3f89e 100644 --- a/vm_method.c +++ b/vm_method.c @@ -139,6 +139,9 @@ void rb_clear_constant_cache(void) {} void rb_clear_constant_cache_for_id(ID id) { + fprintf(stderr, "// ====================================\n"); + fprintf(stderr, "// CLEARING CONSTANT CACHE FOR ID: %s\n", rb_id2name(id)); + rb_vm_t *vm = GET_VM(); st_table *ics; @@ -146,7 +149,10 @@ rb_clear_constant_cache_for_id(ID id) st_foreach(ics, rb_clear_constant_cache_for_id_i, (st_data_t) NULL); } + printf("// NOTIFYING YJIT\n"); rb_yjit_constant_state_changed(); + + fprintf(stderr, "// ====================================\n"); } static void