Skip to content

Commit 6ab9b22

Browse files
committed
ZJIT: Add IseqVersion::is_invalidated() method
Address review feedback: use a method instead of directly comparing .status == IseqStatus::Invalidated.
1 parent 83447d5 commit 6ab9b22

3 files changed

Lines changed: 9 additions & 4 deletions

File tree

zjit/src/codegen.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ fn gen_iseq_entry_point(cb: &mut CodeBlock, iseq: IseqPtr, jit_exception: bool)
222222
/// GC) so that all compile/recompile tuning decisions live in one place.
223223
pub fn invalidate_iseq_version(cb: &mut CodeBlock, iseq: IseqPtr, version: &mut IseqVersionRef) {
224224
let payload = get_or_create_iseq_payload(iseq);
225-
if unsafe { version.as_ref() }.status != IseqStatus::Invalidated
225+
if !unsafe { version.as_ref() }.is_invalidated()
226226
&& payload.versions.len() < max_iseq_versions()
227227
{
228228
unsafe { version.as_mut() }.status = IseqStatus::Invalidated;
@@ -3055,7 +3055,7 @@ c_callable! {
30553055
let iseq: IseqPtr = iseq_raw.as_iseq();
30563056
let payload = get_or_create_iseq_payload(iseq);
30573057
let already_done = payload.versions.last()
3058-
.map_or(false, |v| unsafe { v.as_ref() }.status == IseqStatus::Invalidated)
3058+
.map_or(false, |v| unsafe { v.as_ref() }.is_invalidated())
30593059
|| payload.versions.len() >= max_iseq_versions();
30603060
if already_done {
30613061
return;

zjit/src/hir.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#![allow(clippy::match_like_matches_macro)]
88
use crate::{
99
backend::lir::C_ARG_OPNDS,
10-
cast::IntoUsize, codegen::{local_idx_to_ep_offset, max_iseq_versions}, cruby::*, invariants::{self}, payload::{get_or_create_iseq_payload, IseqPayload, IseqStatus}, options::{debug, get_option, DumpHIR}, state::ZJITState, json::Json,
10+
cast::IntoUsize, codegen::{local_idx_to_ep_offset, max_iseq_versions}, cruby::*, invariants::{self}, payload::{get_or_create_iseq_payload, IseqPayload}, options::{debug, get_option, DumpHIR}, state::ZJITState, json::Json,
1111
state,
1212
};
1313
use std::{
@@ -2446,7 +2446,7 @@ impl CompilePolicy {
24462446
} else {
24472447
let payload = get_or_create_iseq_payload(iseq);
24482448
payload.versions.iter().any(
2449-
|v| unsafe { v.as_ref() }.status == IseqStatus::Invalidated
2449+
|v| unsafe { v.as_ref() }.is_invalidated()
24502450
) && payload.versions.len() + 1 >= max_iseq_versions()
24512451
};
24522452
Self { no_side_exits }

zjit/src/payload.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ pub struct IseqVersion {
5151
pub type IseqVersionRef = NonNull<IseqVersion>;
5252

5353
impl IseqVersion {
54+
/// Check if this version was invalidated
55+
pub fn is_invalidated(&self) -> bool {
56+
self.status == IseqStatus::Invalidated
57+
}
58+
5459
/// Allocate a new IseqVersion to be compiled
5560
pub fn new(iseq: IseqPtr) -> IseqVersionRef {
5661
let version = Self {

0 commit comments

Comments
 (0)