[pypy-svn] r22731 - in pypy/dist/pypy/translator/llvm/externs: . test
rxe at codespeak.net
rxe at codespeak.net
Fri Jan 27 14:07:35 CET 2006
Author: rxe
Date: Fri Jan 27 14:07:33 2006
New Revision: 22731
Added:
pypy/dist/pypy/translator/llvm/externs/
pypy/dist/pypy/translator/llvm/externs/__init__.py (contents, props changed)
pypy/dist/pypy/translator/llvm/externs/ringbuffer.py (contents, props changed)
pypy/dist/pypy/translator/llvm/externs/test/
pypy/dist/pypy/translator/llvm/externs/test/test_ringbuffer.py (contents, props changed)
Log:
(ericvrp, rxe)
experimental ring malloc code ported to rpython from llvm code.
Added: pypy/dist/pypy/translator/llvm/externs/__init__.py
==============================================================================
Added: pypy/dist/pypy/translator/llvm/externs/ringbuffer.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/llvm/externs/ringbuffer.py Fri Jan 27 14:07:33 2006
@@ -0,0 +1,22 @@
+from pypy.rpython.memory.lladdress import raw_malloc
+
+class RingBufferData:
+ size = 8192
+ entry_maxsize = 16
+
+ def __init__(self):
+ self.index = 0
+ def init(self):
+ self.data = raw_malloc(self.size + self.entry_maxsize)
+
+ringbuffer = RingBufferData()
+
+def initialise():
+ ringbuffer.init()
+
+def malloc_exception(nbytes):
+ assert nbytes <= ringbuffer.entry_maxsize
+ addr = ringbuffer.data + ringbuffer.index
+ ringbuffer.index = (ringbuffer.index + nbytes) & (ringbuffer.size - 1)
+ return addr
+
Added: pypy/dist/pypy/translator/llvm/externs/test/test_ringbuffer.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/llvm/externs/test/test_ringbuffer.py Fri Jan 27 14:07:33 2006
@@ -0,0 +1,14 @@
+import py
+from pypy.translator.llvm.test.runtest import compile_function as compile
+from pypy.translator.llvm.externs import ringbuffer
+
+def test_malloc_something():
+ def f(value):
+ ringbuffer.initialise()
+ buf = ringbuffer.malloc_exception(value)
+ buf.signed[0] = 10
+ return buf.signed[0]
+
+ fc = compile(f, [int])
+ assert fc(16) == f(16)
+ assert fc(10) == f(10)
More information about the Pypy-commit
mailing list