Update of /cvsroot/arcem/arcem/riscos-single
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26947/riscos-single

Modified Files:
      Tag: jit
        DispKbd.c 
Log Message:
WIP ARM-on-ARM JIT engine
This is the beginnings of an ARM-on-ARM JIT engine, designed to be used by 
emulators like ArcEm and RPCEmu
Main functionality issues to resolve:
* Currently it's only functional for RISC OS hosts. But it should be fairly 
striaghtforward to get it working on other host OS's
* Not all instructions are supported yet; unsupported instructions will be 
interpreted
* The simplified interpreter loop which the JIT is invoked from doesn't 
implement the instruction prefetch pipeline; this will eventually need fixing 
(e.g. make the loop smart enough to stay in interpreter mode until the 
prefetched instructions match what's in memory, i.e. the CPU has left the 
self-modifying code sequence)
* The JIT will update the cycle counter but won't actually trigger any events 
until the end of the JIT code block is reached, this may cause issues with some 
software
* However the biggest problem is likely to be that the single-pass code 
generation results in sub-optimal handling of complex instructions like 
LDR/STR. So future development is likely to focus on experimenting with more 
complex code generation techniques, e.g. compiler-style code graphs



Index: DispKbd.c
===================================================================
RCS file: /cvsroot/arcem/arcem/riscos-single/DispKbd.c,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -d -r1.14 -r1.14.2.1
--- DispKbd.c   16 Dec 2015 19:30:22 -0000      1.14
+++ DispKbd.c   27 May 2017 20:54:07 -0000      1.14.2.1
@@ -24,6 +24,9 @@
 #include "../prof.h"
 
 #include "ControlPane.h"
+#ifdef DEBUG_JIT_METRICS
+#include "jit/metrics.h"
+#endif
 
 #define ENABLE_MENU
 
@@ -1262,6 +1265,9 @@
     Prof_Dump(stderr);
   }
 #endif
+#ifdef DEBUG_JIT_METRICS
+  JITMetrics_Dump();
+#endif
   /* Switch to a known-good screen mode. Assume mode 28 available. */
   _swix(OS_ScreenMode,_INR(0,1),0,28);
   current_mode = NULL;


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
-- 
arcem-cvs mailing list
arcem-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/arcem-cvs

Reply via email to