]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
JIT: USE_INLINING and related changes
authorFrode Solheim <frode@fs-uae.net>
Mon, 7 Sep 2015 19:18:32 +0000 (21:18 +0200)
committerFrode Solheim <frode@fs-uae.net>
Thu, 17 Sep 2015 17:18:09 +0000 (19:18 +0200)
jit/compemu.h
jit/compemu_support.cpp

index 41214ce8c517e33419b549f843ed87fe2368c2b8..faa4d19293314fe9c00619fe1d14af1e2cacbd70 100644 (file)
@@ -50,7 +50,10 @@ typedef uae_u32 uintptr;
 extern void compiler_dumpstate(void);
 #endif
 
-#define TAGMASK 0x000fffff
+/* Now that we do block chaining, and also have linked lists on each tag,
+   TAGMASK can be much smaller and still do its job. Saves several megs
+   of memory! */
+#define TAGMASK 0x0000ffff
 #define TAGSIZE (TAGMASK+1)
 #define MAXRUN 1024
 #define cacheline(x) (((uintptr)x)&TAGMASK)
@@ -76,8 +79,27 @@ union cacheline {
 #error implementation in progress
 #endif
 
+/* (gb) When on, this option can save save up to 30% compilation time
+ *  when many lazy flushes occur (e.g. apps in MacOS 8.x).
+ */
+#define USE_SEPARATE_BIA 1
+
+/* Use chain of checksum_info_t to compute the block checksum */
+#define USE_CHECKSUM_INFO 1
+
+/* Use code inlining, aka follow-up of constant jumps */
+#define USE_INLINING 1
+
+/* Inlining requires the chained checksuming information */
+#if USE_INLINING
+#undef  USE_CHECKSUM_INFO
+#define USE_CHECKSUM_INFO 1
+#endif
+
+/* Does flush_icache_range() only check for blocks falling in the requested range? */
+#define LAZY_FLUSH_ICACHE_RANGE 0
+
 #define USE_F_ALIAS 1
-#define USE_SOFT_FLUSH 1
 #define USE_OFFSET 1
 #define COMP_DEBUG 1
 
@@ -423,10 +445,6 @@ static inline void build_comp() { }
 
 #ifdef UAE
 
-#define BI_NEW 0
-#define BI_COUNTING 1
-#define BI_TARGETTED 2
-
 typedef struct {
     uae_u8 type;
     uae_u8 reg;
index 3ac2324368599db1bf6cc4cdc8d118f171c9b411..4e7fa3b72aeb17af1c6ab8c31da251ab7e2b9efe 100644 (file)
@@ -252,7 +252,12 @@ static int         optcount[10]            = {
 };
 
 #ifdef UAE
-/* FIXME: currently in compemu.h */
+/* FIXME: op_properties is currently in compemu.h */
+
+static inline bool is_const_jump(uae_u32 opcode)
+{
+       return prop[opcode].is_const_jump != 0;
+}
 #else
 struct op_properties {
        uae_u8 use_flags;