Author: Maciej Fijalkowski <[email protected]>
Branch: use-file-star-for-file
Changeset: r72930:311385061a9b
Date: 2014-08-20 14:38 +0200
http://bitbucket.org/pypy/pypy/changeset/311385061a9b/
Log: fix the case of llstr(char)
diff --git a/rpython/rtyper/annlowlevel.py b/rpython/rtyper/annlowlevel.py
--- a/rpython/rtyper/annlowlevel.py
+++ b/rpython/rtyper/annlowlevel.py
@@ -422,11 +422,13 @@
def specialize_call(self, hop):
hop.exception_cannot_occur()
- assert hop.args_r[0].lowleveltype == hop.r_result.lowleveltype
v_ll_str, = hop.inputargs(*hop.args_r)
- return hop.genop('same_as', [v_ll_str],
- resulttype = hop.r_result.lowleveltype)
-
+ if hop.args_r[0].lowleveltype == hop.r_result.lowleveltype:
+ return hop.genop('same_as', [v_ll_str],
+ resulttype = hop.r_result.lowleveltype)
+ else:
+ return hop.gendirectcall(hop.args_r[0].ll.ll_chr2str, v_ll_str)
+
return hlstr, llstr
hlstr, llstr = make_string_entries(str)
diff --git a/rpython/rtyper/test/test_annlowlevel.py
b/rpython/rtyper/test/test_annlowlevel.py
--- a/rpython/rtyper/test/test_annlowlevel.py
+++ b/rpython/rtyper/test/test_annlowlevel.py
@@ -34,6 +34,14 @@
res = self.interpret(f, [self.string_to_ll("abc")])
assert res == 3
+ def test_llstr_const_char(self):
+ def f(arg):
+ s = llstr(hlstr(arg)[0])
+ return len(s.chars)
+
+ res = self.interpret(f, [self.string_to_ll("abc")])
+ assert res == 1
+
def test_hlunicode(self):
s = mallocunicode(3)
s.chars[0] = u"a"
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit