@Override public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) { assert SubstrateOptions.MultiThreaded.getValue(); SubstrateRegisterConfig threadRegister = (SubstrateRegisterConfig) crb.codeCache.getRegisterConfig(); masm.decrementl(new AMD64Address(threadRegister.getThreadRegister(), Math.toIntExact(Safepoint.getThreadLocalSafepointRequestedOffset())), 1); } }
@Override public void generate(NodeLIRBuilderTool gen) { LIRGeneratorTool tool = gen.getLIRGeneratorTool(); SubstrateRegisterConfig registerConfig = (SubstrateRegisterConfig) tool.getRegisterConfig(); gen.getLIRGeneratorTool().emitMove(registerConfig.getThreadRegister().asValue(tool.getLIRKind(FrameAccess.getWordStamp())), gen.operand(value)); }