ZJIT: Count fallback reasons for set/get/definedivar#15324
ZJIT: Count fallback reasons for set/get/definedivar#15324tekknolagi merged 2 commits intoruby:masterfrom
Conversation
4936385 to
e429519
Compare
|
Re diff --git i/zjit/src/hir.rs w/zjit/src/hir.rs
index fbc9d80700..a2e087e44c 100644
--- i/zjit/src/hir.rs
+++ w/zjit/src/hir.rs
@@ -2818,6 +2818,7 @@ impl Function {
if !recv_type.flags().is_t_object() {
// Check if the receiver is a T_OBJECT
self.push_insn(block, Insn::IncrCounter(Counter::getivar_fallback_not_t_object));
+ println!("getivar_fallback_not_t_object {}", get_class_name(recv_type.class()));
self.push_insn_id(block, insn_id); continue;
}
if recv_type.shape().is_too_complex() {reveals on railsbench: During the benchmark: So probably we should handle T_MODULE & T_CLASS too. |
|
oh wow |
|
You are welcome to tackle if you like! |
|
|
Will give it a shot. I'm not sure if T_MODULE & T_CLASS are handled the same way as T_OBJECT layout-wise, I'll take a look and ask if I don't find out clearly in the source. |
lobsters:
railsbench:
shipit: