From fcb568460760ee8eb24867651768c92707a80b9e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 17 Nov 2018 13:10:18 +0100 Subject: [PATCH] - do not use instructions from too recent instruction set extensions. andn is part of BMI1 which was introduced in 2012, which is far too recent to be used unchecked. --- src/scripting/vm/jit_load.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/scripting/vm/jit_load.cpp b/src/scripting/vm/jit_load.cpp index 89466de94..908ff144e 100644 --- a/src/scripting/vm/jit_load.cpp +++ b/src/scripting/vm/jit_load.cpp @@ -257,7 +257,8 @@ void JitCompiler::EmitReadBarrier() cc.mov(mask.r32(), asmjit::x86::dword_ptr(regA[A], offsetof(DObject, ObjectFlags))); cc.shl(mask, 63 - 5); // put OF_EuthanizeMe (1 << 5) in the highest bit cc.sar(mask, 63); // sign extend so all bits are set if OF_EuthanizeMe was set - cc.andn(regA[A], mask, regA[A]); + cc.not_(mask); + cc.and_(regA[A], mask); cc.bind(isnull); }