[pypy-svn] r38469 - pypy/dist/pypy/rlib/rsre
arigo at codespeak.net
arigo at codespeak.net
Sun Feb 11 16:02:51 CET 2007
Author: arigo
Date: Sun Feb 11 16:02:50 2007
New Revision: 38469
Modified:
pypy/dist/pypy/rlib/rsre/rsre_core.py
Log:
Reduce the amount of slicing. The first of these removed slices was
invalid in RPython because its start could occasionally be beyond the
end of the list.
Modified: pypy/dist/pypy/rlib/rsre/rsre_core.py
==============================================================================
--- pypy/dist/pypy/rlib/rsre/rsre_core.py (original)
+++ pypy/dist/pypy/rlib/rsre/rsre_core.py Sun Feb 11 16:02:50 2007
@@ -181,13 +181,9 @@
assert prefix_skip >= 0
prefix = pattern_codes[7:7 + prefix_len]
overlap_offset = 7 + prefix_len - 1
- overlap_stop = pattern_codes[1] + 1
assert overlap_offset >= 0
- assert overlap_stop >= 0
- overlap = pattern_codes[overlap_offset:overlap_stop]
pattern_offset = pattern_codes[1] + 1
assert pattern_offset >= 0
- pattern_codes = pattern_codes[pattern_offset:]
i = 0
string_position = state.string_position
while string_position < state.end:
@@ -197,7 +193,7 @@
if i == 0:
break
else:
- i = overlap[i]
+ i = pattern_codes[overlap_offset + i]
else:
i += 1
if i == prefix_len:
@@ -207,9 +203,10 @@
- prefix_len + prefix_skip
if flags & SRE_INFO_LITERAL:
return True # matched all of pure literal pattern
- if match(state, pattern_codes[2 * prefix_skip:]):
+ start = pattern_offset + 2 * prefix_skip
+ if match(state, pattern_codes[start:]):
return True
- i = overlap[i]
+ i = pattern_codes[overlap_offset + i]
break
string_position += 1
return False
More information about the Pypy-commit
mailing list