Skip to content

Commit 57f8847

Browse files
committed
temporarily remove OnceLock
1 parent 56f9077 commit 57f8847

File tree

8 files changed

+19
-35
lines changed

8 files changed

+19
-35
lines changed

cranelift/codegen/src/isa/aarch64/abi.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use alloc::boxed::Box;
1717
use alloc::vec::Vec;
1818
use regalloc2::{MachineEnv, PReg, PRegSet};
1919
use smallvec::{SmallVec, smallvec};
20-
use std::sync::OnceLock;
2120

2221
// We use a generic implementation that factors out AArch64 and x64 ABI commonalities, because
2322
// these ABIs are very similar.
@@ -1087,13 +1086,11 @@ impl ABIMachineSpec for AArch64MachineDeps {
10871086
}
10881087
}
10891088

1090-
fn get_machine_env(flags: &settings::Flags, _call_conv: isa::CallConv) -> &MachineEnv {
1089+
fn get_machine_env(flags: &settings::Flags, _call_conv: isa::CallConv) -> MachineEnv {
10911090
if flags.enable_pinned_reg() {
1092-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
1093-
MACHINE_ENV.get_or_init(|| create_reg_env(true))
1091+
create_reg_env(true)
10941092
} else {
1095-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
1096-
MACHINE_ENV.get_or_init(|| create_reg_env(false))
1093+
create_reg_env(false)
10971094
}
10981095
}
10991096

cranelift/codegen/src/isa/pulley_shared/abi.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ use core::marker::PhantomData;
1515
use cranelift_bitset::ScalarBitSet;
1616
use regalloc2::{MachineEnv, PReg, PRegSet};
1717
use smallvec::{SmallVec, smallvec};
18-
use std::sync::OnceLock;
1918

2019
/// Support for the Pulley ABI from the callee side (within a function body).
2120
pub(crate) type PulleyCallee<P> = Callee<PulleyMachineDeps<P>>;
@@ -474,9 +473,8 @@ where
474473
}
475474
}
476475

477-
fn get_machine_env(_flags: &settings::Flags, _call_conv: isa::CallConv) -> &MachineEnv {
478-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
479-
MACHINE_ENV.get_or_init(create_reg_environment)
476+
fn get_machine_env(_flags: &settings::Flags, _call_conv: isa::CallConv) -> MachineEnv {
477+
create_reg_environment()
480478
}
481479

482480
fn get_regs_clobbered_by_call(

cranelift/codegen/src/isa/riscv64/abi.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ use regalloc2::{MachineEnv, PReg, PRegSet};
2121

2222
use alloc::borrow::ToOwned;
2323
use smallvec::{SmallVec, smallvec};
24-
use std::sync::OnceLock;
2524

2625
/// Support for the Riscv64 ABI from the callee side (within a function body).
2726
pub(crate) type Riscv64Callee = Callee<Riscv64MachineDeps>;
@@ -612,9 +611,8 @@ impl ABIMachineSpec for Riscv64MachineDeps {
612611
}
613612
}
614613

615-
fn get_machine_env(_flags: &settings::Flags, _call_conv: isa::CallConv) -> &MachineEnv {
616-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
617-
MACHINE_ENV.get_or_init(create_reg_environment)
614+
fn get_machine_env(_flags: &settings::Flags, _call_conv: isa::CallConv) -> MachineEnv {
615+
create_reg_environment()
618616
}
619617

620618
fn get_regs_clobbered_by_call(

cranelift/codegen/src/isa/s390x/abi.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ use alloc::borrow::ToOwned;
148148
use alloc::vec::Vec;
149149
use regalloc2::{MachineEnv, PRegSet};
150150
use smallvec::{SmallVec, smallvec};
151-
use std::sync::OnceLock;
152151

153152
// We use a generic implementation that factors out ABI commonalities.
154153

@@ -904,16 +903,10 @@ impl ABIMachineSpec for S390xMachineDeps {
904903
}
905904
}
906905

907-
fn get_machine_env(_flags: &settings::Flags, call_conv: isa::CallConv) -> &MachineEnv {
906+
fn get_machine_env(_flags: &settings::Flags, call_conv: isa::CallConv) -> MachineEnv {
908907
match call_conv {
909-
isa::CallConv::Tail => {
910-
static TAIL_MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
911-
TAIL_MACHINE_ENV.get_or_init(tail_create_machine_env)
912-
}
913-
_ => {
914-
static SYSV_MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
915-
SYSV_MACHINE_ENV.get_or_init(sysv_create_machine_env)
916-
}
908+
isa::CallConv::Tail => tail_create_machine_env(),
909+
_ => sysv_create_machine_env(),
917910
}
918911
}
919912

cranelift/codegen/src/isa/x64/abi.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use args::*;
1717
use cranelift_assembler_x64 as asm;
1818
use regalloc2::{MachineEnv, PReg, PRegSet};
1919
use smallvec::{SmallVec, smallvec};
20-
use std::sync::OnceLock;
2120

2221
/// Support for the x64 ABI from the callee side (within a function body).
2322
pub(crate) type X64Callee = Callee<X64ABIMachineSpec>;
@@ -874,13 +873,11 @@ impl ABIMachineSpec for X64ABIMachineSpec {
874873
}
875874
}
876875

877-
fn get_machine_env(flags: &settings::Flags, _call_conv: isa::CallConv) -> &MachineEnv {
876+
fn get_machine_env(flags: &settings::Flags, _call_conv: isa::CallConv) -> MachineEnv {
878877
if flags.enable_pinned_reg() {
879-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
880-
MACHINE_ENV.get_or_init(|| create_reg_env_systemv(true))
878+
create_reg_env_systemv(true)
881879
} else {
882-
static MACHINE_ENV: OnceLock<MachineEnv> = OnceLock::new();
883-
MACHINE_ENV.get_or_init(|| create_reg_env_systemv(false))
880+
create_reg_env_systemv(false)
884881
}
885882
}
886883

cranelift/codegen/src/machinst/abi.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ pub trait ABIMachineSpec {
575575
) -> u32;
576576

577577
/// Get the ABI-dependent MachineEnv for managing register allocation.
578-
fn get_machine_env(flags: &settings::Flags, call_conv: isa::CallConv) -> &MachineEnv;
578+
fn get_machine_env(flags: &settings::Flags, call_conv: isa::CallConv) -> MachineEnv;
579579

580580
/// Get all caller-save registers, that is, registers that we expect
581581
/// not to be saved across a call to a callee with the given ABI.
@@ -1540,7 +1540,7 @@ impl<M: ABIMachineSpec> Callee<M> {
15401540
}
15411541

15421542
/// Get the ABI-dependent MachineEnv for managing register allocation.
1543-
pub fn machine_env(&self) -> &MachineEnv {
1543+
pub fn machine_env(&self) -> MachineEnv {
15441544
M::get_machine_env(&self.flags, self.call_conv)
15451545
}
15461546

cranelift/codegen/src/machinst/compile.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ pub fn compile<B: LowerBackend + TargetIsa>(
6969
RegallocAlgorithm::SinglePass => Algorithm::Fastalloc,
7070
};
7171

72-
regalloc2::run(&vcode, vcode.abi.machine_env(), &options)
72+
regalloc2::run(&vcode, &vcode.abi.machine_env(), &options)
7373
.map_err(|err| {
7474
log::error!(
7575
"Register allocation error for vcode\n{vcode:?}\nError: {err:?}\nCLIF for error:\n{f:?}",
@@ -82,7 +82,8 @@ pub fn compile<B: LowerBackend + TargetIsa>(
8282
// Run the regalloc checker, if requested.
8383
if b.flags().regalloc_checker() {
8484
let _tt = timing::regalloc_checker();
85-
let mut checker = regalloc2::checker::Checker::new(&vcode, vcode.abi.machine_env());
85+
let machine_env = vcode.abi.machine_env();
86+
let mut checker = regalloc2::checker::Checker::new(&vcode, &machine_env);
8687
checker.prepare(&regalloc_result);
8788
checker
8889
.run()

cranelift/codegen/src/machinst/vcode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ impl<I: VCodeInst> VCodeBuilder<I> {
516516
}
517517

518518
fn collect_operands(&mut self, vregs: &VRegAllocator<I>) {
519-
let allocatable = PRegSet::from(self.vcode.abi.machine_env());
519+
let allocatable = PRegSet::from(&self.vcode.abi.machine_env());
520520
for (i, insn) in self.vcode.insts.iter_mut().enumerate() {
521521
// Push operands from the instruction onto the operand list.
522522
//

0 commit comments

Comments
 (0)