[pypy-commit] pypy default: merge upstream

pjenvey noreply at buildbot.pypy.org
Tue Oct 14 21:13:20 CEST 2014


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: 
Changeset: r73957:5b2a4468b724
Date: 2014-10-14 12:11 -0700
http://bitbucket.org/pypy/pypy/changeset/5b2a4468b724/

Log:	merge upstream

diff --git a/pypy/objspace/std/bytearrayobject.py b/pypy/objspace/std/bytearrayobject.py
--- a/pypy/objspace/std/bytearrayobject.py
+++ b/pypy/objspace/std/bytearrayobject.py
@@ -4,6 +4,7 @@
     import_from_mixin, newlist_hint, resizelist_hint, specialize)
 from rpython.rlib.buffer import Buffer
 from rpython.rlib.rstring import StringBuilder, ByteListBuilder
+from rpython.rlib.debug import check_list_of_chars
 
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError, oefmt
@@ -22,6 +23,7 @@
     import_from_mixin(StringMethods)
 
     def __init__(self, data):
+        check_list_of_chars(data)
         self.data = data
 
     def __repr__(self):
diff --git a/rpython/config/translationoption.py b/rpython/config/translationoption.py
--- a/rpython/config/translationoption.py
+++ b/rpython/config/translationoption.py
@@ -53,7 +53,7 @@
                  cmdline="-b --backend"),
 
     BoolOption("shared", "Build as a shared library",
-               default=False, cmdline="--shared"),
+               default=True, cmdline="--shared"),
 
     BoolOption("log", "Include debug prints in the translation (PYPYLOG=...)",
                default=True, cmdline="--log"),
diff --git a/rpython/jit/backend/llsupport/gc.py b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -548,12 +548,6 @@
             type_id = self.layoutbuilder.get_type_id(A)
             descr.tid = llop.combine_ushort(lltype.Signed, type_id, 0)
 
-    def _set_tid(self, gcptr, tid):
-        hdr_addr = llmemory.cast_ptr_to_adr(gcptr)
-        hdr_addr -= self.gcheaderbuilder.size_gc_header
-        hdr = llmemory.cast_adr_to_ptr(hdr_addr, self.HDRPTR)
-        hdr.tid = tid
-
     def can_use_nursery_malloc(self, size):
         return size < self.max_size_of_young_obj
 
diff --git a/rpython/rlib/debug.py b/rpython/rlib/debug.py
--- a/rpython/rlib/debug.py
+++ b/rpython/rlib/debug.py
@@ -383,3 +383,35 @@
     def specialize_call(self, hop):
         hop.exception_cannot_occur()
         return hop.inputarg(hop.args_r[0], arg=0)
+
+def check_list_of_chars(l):
+    if not we_are_translated():
+        assert isinstance(l, list)
+        for x in l:
+            assert isinstance(x, (unicode, str)) and len(x) == 1
+    return l
+
+class NotAListOfChars(Exception):
+    pass
+
+class Entry(ExtRegistryEntry):
+    _about_ = check_list_of_chars
+
+    def compute_result_annotation(self, s_arg):
+        from rpython.annotator.model import SomeList, s_None
+        from rpython.annotator.model import SomeChar, SomeUnicodeCodePoint
+        from rpython.annotator.model import SomeImpossibleValue
+        if s_None.contains(s_arg):
+            return s_arg    # only None: just return
+        assert isinstance(s_arg, SomeList)
+        if not isinstance(
+                s_arg.listdef.listitem.s_value,
+                (SomeChar, SomeUnicodeCodePoint, SomeImpossibleValue)):
+            raise NotAListOfChars
+        return s_arg
+
+    def specialize_call(self, hop):
+        hop.exception_cannot_occur()
+        return hop.inputarg(hop.args_r[0], arg=0)
+
+
diff --git a/rpython/rlib/test/test_debug.py b/rpython/rlib/test/test_debug.py
--- a/rpython/rlib/test/test_debug.py
+++ b/rpython/rlib/test/test_debug.py
@@ -4,7 +4,9 @@
                              debug_print, debug_start, debug_stop,
                              have_debug_prints, debug_offset, debug_flush,
                              check_nonneg, IntegerCanBeNegative,
-                             mark_dict_non_null)
+                             mark_dict_non_null,
+                             check_list_of_chars,
+                             NotAListOfChars)
 from rpython.rlib import debug
 from rpython.rtyper.test.test_llinterp import interpret, gengraph
 
@@ -72,6 +74,26 @@
     assert sorted(graph.returnblock.inputargs[0].concretetype.TO.entries.TO.OF._flds.keys()) == ['key', 'value']
 
 
+def test_check_list_of_chars():
+    def f(x):
+        result = []
+        check_list_of_chars(result)
+        result = [chr(x), 'a']
+        check_list_of_chars(result)
+        result = [unichr(x)]
+        check_list_of_chars(result)
+        return result
+
+    interpret(f, [3])
+
+    def g(x):
+        result = ['a', 'b', 'c', '']
+        check_list_of_chars(result)
+        return x
+
+    py.test.raises(NotAListOfChars, "interpret(g, [3])")
+
+
 class DebugTests(object):
 
     def test_debug_print_start_stop(self):
diff --git a/rpython/translator/platform/posix.py b/rpython/translator/platform/posix.py
--- a/rpython/translator/platform/posix.py
+++ b/rpython/translator/platform/posix.py
@@ -182,7 +182,7 @@
                    'int main(int argc, char* argv[]) '
                    '{ return $(PYPY_MAIN_FUNCTION)(argc, argv); }" > $@')
             m.rule('$(DEFAULT_TARGET)', ['$(TARGET)', 'main.o'],
-                   '$(CC_LINK) $(LDFLAGS_LINK) main.o -L. -l$(SHARED_IMPORT_LIB) -o $@')
+                   '$(CC_LINK) $(LDFLAGS_LINK) main.o -L. -l$(SHARED_IMPORT_LIB) -o $@ -Wl,-rpath="$ORIGIN/"')
 
         return m
 


More information about the pypy-commit mailing list