From 6ef108653373c38540c161ca421fbf9900c42adc Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Thu, 16 Jul 2026 12:41:32 +0100 Subject: [PATCH] x86 review fixes --- src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp b/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp index de8dea7dd8a..99358c023d0 100644 --- a/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp +++ b/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp @@ -272,6 +272,13 @@ void C1_MacroAssembler::step_random(Register state, Register temp) { // One of these will be the best for a particular CPU. if (VM_Version::supports_sse4_2()) { +#ifndef PRODUCT + Label not_zero; + orl(r_profile_rng, r_profile_rng); + jcc(Assembler::notZero, not_zero); + stop("non-zero required before step"); + bind(not_zero); +#endif /* CRC used as a pseudo-random-number generator */ // In effect, the CRC instruction is being used here for its // linear feedback shift register. @@ -288,6 +295,13 @@ void C1_MacroAssembler::step_random(Register state, Register temp) { void C1_MacroAssembler::save_profile_rng() { if (ProfileCaptureRatio > 1) { +#ifndef PRODUCT + Label not_zero; + orl(r_profile_rng, r_profile_rng); + jcc(Assembler::notZero, not_zero); + stop("non-zero required before save"); + bind(not_zero); +#endif movl(Address(r15_thread, JavaThread::profile_rng_offset()), r_profile_rng); } } @@ -295,6 +309,13 @@ void C1_MacroAssembler::save_profile_rng() { void C1_MacroAssembler::restore_profile_rng() { if (ProfileCaptureRatio > 1) { movl(r_profile_rng, Address(r15_thread, JavaThread::profile_rng_offset())); +#ifndef PRODUCT + Label not_zero; + orl(r_profile_rng, r_profile_rng); + jcc(Assembler::notZero, not_zero); + stop("non-zero required after restore"); + bind(not_zero); +#endif } }