[pypy-svn] r25210 - in pypy/dist/pypy/jit: . hintannotator hintannotator/test llabstractinterp llabstractinterp/test test timeshifter timeshifter/test tl tl/test

arigo at codespeak.net arigo at codespeak.net
Sat Apr 1 17:30:18 CEST 2006


Author: arigo
Date: Sat Apr  1 17:30:08 2006
New Revision: 25210

Added:
   pypy/dist/pypy/jit/hintannotator/   (props changed)
   pypy/dist/pypy/jit/hintannotator/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/hintannotator/annotator.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintannotator.py
   pypy/dist/pypy/jit/hintannotator/bookkeeper.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintbookkeeper.py
   pypy/dist/pypy/jit/hintannotator/container.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintcontainer.py
   pypy/dist/pypy/jit/hintannotator/model.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintmodel.py
   pypy/dist/pypy/jit/hintannotator/test/   (props changed)
   pypy/dist/pypy/jit/hintannotator/test/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/hintannotator/test/test_annotator.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_hint_annotation.py
   pypy/dist/pypy/jit/hintannotator/vlist.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintvlist.py
   pypy/dist/pypy/jit/llabstractinterp/   (props changed)
   pypy/dist/pypy/jit/llabstractinterp/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/llabstractinterp/llabstractinterp.py
      - copied, changed from r25203, pypy/dist/pypy/jit/llabstractinterp.py
   pypy/dist/pypy/jit/llabstractinterp/llcontainer.py
      - copied, changed from r25203, pypy/dist/pypy/jit/llcontainer.py
   pypy/dist/pypy/jit/llabstractinterp/llvalue.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/llvalue.py
   pypy/dist/pypy/jit/llabstractinterp/test/   (props changed)
   pypy/dist/pypy/jit/llabstractinterp/test/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/llabstractinterp/test/test_jit_tl.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_jit_tl.py
   pypy/dist/pypy/jit/llabstractinterp/test/test_jit_tlr.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_jit_tlr.py
   pypy/dist/pypy/jit/llabstractinterp/test/test_llabstractinterp.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_llabstractinterp.py
   pypy/dist/pypy/jit/llabstractinterp/test/test_vlist.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_vlist.py
   pypy/dist/pypy/jit/llabstractinterp/vlist.py
      - copied, changed from r25203, pypy/dist/pypy/jit/vlist.py
   pypy/dist/pypy/jit/timeshifter/   (props changed)
   pypy/dist/pypy/jit/timeshifter/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/timeshifter/rtimeshift.py
      - copied unchanged from r25207, pypy/dist/pypy/jit/rtimeshift.py
   pypy/dist/pypy/jit/timeshifter/rtyper.py
      - copied, changed from r25203, pypy/dist/pypy/jit/hintrtyper.py
   pypy/dist/pypy/jit/timeshifter/test/   (props changed)
   pypy/dist/pypy/jit/timeshifter/test/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/timeshifter/test/test_timeshift.py
      - copied, changed from r25207, pypy/dist/pypy/jit/test/test_hint_timeshift.py
   pypy/dist/pypy/jit/timeshifter/timeshift.py
      - copied, changed from r25205, pypy/dist/pypy/jit/hinttimeshift.py
   pypy/dist/pypy/jit/tl/   (props changed)
   pypy/dist/pypy/jit/tl/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/tl/opcode.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/tlopcode.py
   pypy/dist/pypy/jit/tl/test/   (props changed)
   pypy/dist/pypy/jit/tl/test/__init__.py
      - copied unchanged from r25203, pypy/dist/pypy/jit/__init__.py
   pypy/dist/pypy/jit/tl/test/test_tl.py
      - copied, changed from r25203, pypy/dist/pypy/jit/test/test_tl.py
   pypy/dist/pypy/jit/tl/test/test_tlr.py   (contents, props changed)
   pypy/dist/pypy/jit/tl/tl.py
      - copied, changed from r25203, pypy/dist/pypy/jit/tl.py
   pypy/dist/pypy/jit/tl/tlr.py   (contents, props changed)
Removed:
   pypy/dist/pypy/jit/hintannotator.py
   pypy/dist/pypy/jit/hintbookkeeper.py
   pypy/dist/pypy/jit/hintcontainer.py
   pypy/dist/pypy/jit/hintmodel.py
   pypy/dist/pypy/jit/hintrtyper.py
   pypy/dist/pypy/jit/hinttimeshift.py
   pypy/dist/pypy/jit/hintvlist.py
   pypy/dist/pypy/jit/llabstractinterp.py
   pypy/dist/pypy/jit/llcontainer.py
   pypy/dist/pypy/jit/llvalue.py
   pypy/dist/pypy/jit/rtimeshift.py
   pypy/dist/pypy/jit/test/
   pypy/dist/pypy/jit/tl.py
   pypy/dist/pypy/jit/tlopcode.py
   pypy/dist/pypy/jit/vlist.py
Log:
(arre, pedronis, arigo)

Split the content of the jit directory in subdirectories.


Added: pypy/dist/pypy/jit/tl/test/test_tlr.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/jit/tl/test/test_tlr.py	Sat Apr  1 17:30:08 2006
@@ -0,0 +1,7 @@
+from pypy.jit.tl import tlr
+
+
+def test_square():
+    assert tlr.interpret(tlr.SQUARE, 1) == 1
+    assert tlr.interpret(tlr.SQUARE, 7) == 49
+    assert tlr.interpret(tlr.SQUARE, 9) == 81

Added: pypy/dist/pypy/jit/tl/tlr.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/jit/tl/tlr.py	Sat Apr  1 17:30:08 2006
@@ -0,0 +1,73 @@
+from pypy.rpython.objectmodel import hint
+
+
+MOV_A_R    = 1
+MOV_R_A    = 2
+JUMP_IF_A  = 3
+SET_A      = 4
+ADD_R_TO_A = 5
+RETURN_A   = 6
+ALLOCATE   = 7
+NEG_A      = 8
+
+
+def interpret(bytecode, a):
+    """Another Toy Language interpreter, this one register-based."""
+    regs = []
+    pc = 0
+    while True:
+        opcode = hint(ord(bytecode[pc]), concrete=True)
+        pc += 1
+        if opcode == MOV_A_R:
+            n = ord(bytecode[pc])
+            pc += 1
+            regs[n] = a
+        elif opcode == MOV_R_A:
+            n = ord(bytecode[pc])
+            pc += 1
+            a = regs[n]
+        elif opcode == JUMP_IF_A:
+            target = ord(bytecode[pc])
+            pc += 1
+            if a:
+                pc = target
+        elif opcode == SET_A:
+            a = ord(bytecode[pc])
+            pc += 1
+        elif opcode == ADD_R_TO_A:
+            n = ord(bytecode[pc])
+            pc += 1
+            a += regs[n]
+        elif opcode == RETURN_A:
+            return a
+        elif opcode == ALLOCATE:
+            n = ord(bytecode[pc])
+            pc += 1
+            regs = [0] * n
+        elif opcode == NEG_A:
+            a = -a
+
+# ____________________________________________________________
+# example bytecode: compute the square of 'a' >= 1
+
+SQUARE_LIST = [
+    ALLOCATE,    3,
+    MOV_A_R,     0,   # counter
+    MOV_A_R,     1,   # copy of 'a'
+    SET_A,       0,
+    MOV_A_R,     2,   # accumulator for the result
+    # 10:
+    SET_A,       1,
+    NEG_A,
+    ADD_R_TO_A,  0,
+    MOV_A_R,     0,
+    MOV_R_A,     2,
+    ADD_R_TO_A,  1,
+    MOV_A_R,     2,
+    MOV_R_A,     0,
+    JUMP_IF_A,  10,
+
+    MOV_R_A,     2,
+    RETURN_A ]
+
+SQUARE = ''.join([chr(n) for n in SQUARE_LIST])



More information about the Pypy-commit mailing list