mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
ZJIT: Support invalidating constant patch points (#13998)
This commit is contained in:
parent
23000e7123
commit
a0d0b84bad
6 changed files with 108 additions and 3 deletions
|
@ -4,7 +4,7 @@ use std::ffi::{c_int};
|
|||
|
||||
use crate::asm::Label;
|
||||
use crate::backend::current::{Reg, ALLOC_REGS};
|
||||
use crate::invariants::{track_bop_assumption, track_cme_assumption};
|
||||
use crate::invariants::{track_bop_assumption, track_cme_assumption, track_stable_constant_names_assumption};
|
||||
use crate::gc::{get_or_create_iseq_payload, append_gc_offsets};
|
||||
use crate::state::ZJITState;
|
||||
use crate::{asm::CodeBlock, cruby::*, options::debug, virtualmem::CodePtr};
|
||||
|
@ -505,6 +505,10 @@ fn gen_patch_point(jit: &mut JITState, asm: &mut Assembler, invariant: &Invarian
|
|||
let side_exit_ptr = cb.resolve_label(label);
|
||||
track_cme_assumption(cme, code_ptr, side_exit_ptr);
|
||||
}
|
||||
Invariant::StableConstantNames { idlist } => {
|
||||
let side_exit_ptr = cb.resolve_label(label);
|
||||
track_stable_constant_names_assumption(idlist, code_ptr, side_exit_ptr);
|
||||
}
|
||||
_ => {
|
||||
debug!("ZJIT: gen_patch_point: unimplemented invariant {invariant:?}");
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue