From 4543aa65734c94541968229dd35fa6c2a2ac94ab Mon Sep 17 00:00:00 2001 From: Frode Solheim Date: Wed, 16 Sep 2015 21:15:11 +0200 Subject: [PATCH] JIT: For now, always distrust (=indirect memory) on 64-bit Windows --- jit/compemu.h | 4 ++++ jit/compemu_support.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/jit/compemu.h b/jit/compemu.h index acf0dfce..15335bdf 100644 --- a/jit/compemu.h +++ b/jit/compemu.h @@ -456,6 +456,10 @@ typedef struct { } regacc; #define JIT_EXCEPTION_HANDLER +#ifdef _WIN64 +/* Direct addressing currently causes crash on 64-bit Windows. */ +#define JIT_ALWAYS_DISTRUST +#endif /* ARAnyM uses fpu_register name, used in scratch_t */ /* FIXME: check that no ARAnyM code assumes different floating point type */ diff --git a/jit/compemu_support.cpp b/jit/compemu_support.cpp index e7696ac3..6b6dd17c 100644 --- a/jit/compemu_support.cpp +++ b/jit/compemu_support.cpp @@ -124,24 +124,36 @@ extern bool canbang; static inline int distrust_byte(void) { int distrust = currprefs.comptrustbyte; +#ifdef JIT_ALWAYS_DISTRUST + distrust = 1; +#endif return distrust; } static inline int distrust_word(void) { int distrust = currprefs.comptrustword; +#ifdef JIT_ALWAYS_DISTRUST + distrust = 1; +#endif return distrust; } static inline int distrust_long(void) { int distrust = currprefs.comptrustlong; +#ifdef JIT_ALWAYS_DISTRUST + distrust = 1; +#endif return distrust; } static inline int distrust_addr(void) { int distrust = currprefs.comptrustnaddr; +#ifdef JIT_ALWAYS_DISTRUST + distrust = 1; +#endif return distrust; } -- 2.47.3