[pypy-svn] r63005 - pypy/trunk/pypy/lang/gameboy

tverwaes at codespeak.net tverwaes at codespeak.net
Tue Mar 17 17:26:35 CET 2009


Author: tverwaes
Date: Tue Mar 17 17:26:31 2009
New Revision: 63005

Modified:
   pypy/trunk/pypy/lang/gameboy/cpu.py
   pypy/trunk/pypy/lang/gameboy/cpu_register.py
Log:
more optimizations. directly inc/dec/add fastdoubleregister and we don't use
debug vars when being translated.


Modified: pypy/trunk/pypy/lang/gameboy/cpu.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/cpu.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/cpu.py	Tue Mar 17 17:26:31 2009
@@ -1,4 +1,4 @@
-
+from pypy.rlib.objectmodel import we_are_translated
 from pypy.lang.gameboy import constants
 from pypy.lang.gameboy.interrupt import Interrupt
 from pypy.lang.gameboy.cpu_register import Register, DoubleRegister,\
@@ -66,9 +66,10 @@
         self.ime          = False
         self.halted       = False
         self.cycles       = 0
-        self.instruction_counter        = 0
-        self.last_op_code               = -1
-        self.last_fetch_execute_op_code = -1
+        if not we_are_translated():
+            self.instruction_counter        = 0
+            self.last_op_code               = -1
+            self.last_fetch_execute_op_code = -1
         
     def reset_registers(self):
         self.a.reset()
@@ -204,13 +205,15 @@
 
     def fetch_execute(self):
         op_code = self.fetch()
-        self.last_fetch_execute_op_code = op_code
+        if not we_are_translated():
+            self.last_fetch_execute_op_code = op_code
         FETCH_EXECUTE_OP_CODES[op_code](self)
         
         
     def execute(self, op_code):
-        self.instruction_counter += 1
-        self.last_op_code = op_code
+        if not we_are_translated():
+            self.instruction_counter += 1
+            self.last_op_code = op_code
         OP_CODES[op_code](self)
         
         

Modified: pypy/trunk/pypy/lang/gameboy/cpu_register.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/cpu_register.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/cpu_register.py	Tue Mar 17 17:26:31 2009
@@ -86,7 +86,6 @@
             self.cpu.cycles -= 2
 
 
-
 class DoubleRegister(AbstractDoubleRegister):
     
     def __init__(self, cpu, hi, lo, reset_value=0):
@@ -158,6 +157,23 @@
     def get_lo(self, use_cycles=True):
         return (self.value & 0xFF)
 
+    def inc(self, use_cycles=True):
+        self.value += 1
+        self.value &= 0xFFFF
+        if use_cycles:
+            self.cpu.cycles -= 2
+
+    def dec(self, use_cycles=True):
+        self.value -= 1
+        self.value &= 0xFFFF
+        if use_cycles:
+            self.cpu.cycles -= 2
+
+    def add(self, value, use_cycles=True):
+        self.value += value
+        self.value &= 0xFFFF
+        if use_cycles:
+            self.cpu.cycles -= 3
 
 # ------------------------------------------------------------------------------
 



More information about the Pypy-commit mailing list