Author: Tobias Pape <[email protected]>
Branch:
Changeset: r25:d9a275c053b1
Date: 2013-02-14 15:26 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/d9a275c053b1/
Log: force size of ByteObject to be integer typey; use interpret in jit-
grapher
diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -361,6 +361,7 @@
class W_BytesObject(W_AbstractObjectWithClassReference):
def __init__(self, w_class, size):
W_AbstractObjectWithClassReference.__init__(self, w_class)
+ assert isinstance(size, int)
self.bytes = ['\x00'] * size
def at0(self, space, index0):
diff --git a/spyvm/objspace.py b/spyvm/objspace.py
--- a/spyvm/objspace.py
+++ b/spyvm/objspace.py
@@ -174,7 +174,8 @@
pass
# XXX is math allowed here?
import math
- bytes_len = max(4, int(math.log(val, 0xff)) + 1)
+ bytes_len = int(math.log(val) / math.log(0xff)) + 1
+ bytes_len = 4 if 4 > bytes_len else bytes_len
w_result =
model.W_BytesObject(self.classtable['w_LargePositiveInteger'], bytes_len)
for i in range(bytes_len):
w_result.setchar(i, chr(intmask((val >> i*8) & 255)))
diff --git a/spyvm/test/jit.py b/spyvm/test/jit.py
--- a/spyvm/test/jit.py
+++ b/spyvm/test/jit.py
@@ -75,16 +75,9 @@
interp = tinyBenchmarks()
def interp_w():
- counter = 0
- try:
- while True:
- counter += 1
- s_active_context = interp.s_active_context()
- interp.bytecode_step_translated(s_active_context)
- if counter == 100000:
- counter = 0
- except interpreter.ReturnFromTopLevel, e:
- w_result = e.object
+ interp.interpret()
- self.meta_interp(interp_w, [], listcomp=True, listops=True,
backendopt=True)
+ self.meta_interp(interp_w, [], listcomp=True, listops=True,
+ #backendopt=True
+ )
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit