[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