[pypy-commit] pypy use-file-star-for-file: fix get_line_getc with jit
bdkearns
noreply at buildbot.pypy.org
Wed Sep 17 17:56:15 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73577:82e7aa02b4a7
Date: 2014-09-17 00:25 -0400
http://bitbucket.org/pypy/pypy/changeset/82e7aa02b4a7/
Log: fix get_line_getc with jit
diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -502,9 +502,10 @@
s.append_charpsize(buf.raw, c)
return s.build()
- def _get_line_getc(self, raw_buf, remainsize, i):
+ def _get_line_getc(self, raw_buf, remainsize, state):
ll_file = self._ll_file
- c = ord('x')
+ i = state[0]
+ c = state[1]
self._unlocked_count += 1
before = rffi.aroundstate.before
@@ -555,7 +556,8 @@
if after: after()
self._unlocked_count -= 1
- return i, c
+ state[0] = i
+ state[1] = c
_get_line_getc._gctransformer_hint_close_stack_ = True
_get_line_getc._dont_inline_ = True
@@ -572,7 +574,9 @@
try:
i = 0
while True:
- i, c = self._get_line_getc(raw_buf, remainsize, i)
+ state = [i, ord('x')]
+ self._get_line_getc(raw_buf, remainsize, state)
+ i, c = state
if c == ord('\n'):
break
elif c == EOF:
diff --git a/rpython/translator/goal/targetrfile.py b/rpython/translator/goal/targetrfile.py
--- a/rpython/translator/goal/targetrfile.py
+++ b/rpython/translator/goal/targetrfile.py
@@ -1,8 +1,11 @@
-from rpython.rlib import rfile
+from rpython.rlib import rfile, jit
+
+driver = jit.JitDriver(greens=[], reds='auto')
def entry_point(argv):
f = rfile.create_file(argv[1], argv[2])
while True:
+ driver.jit_merge_point()
line = f.readline()
if line == '':
break
More information about the pypy-commit
mailing list