[pypy-commit] pypy default: merge heads

arigo noreply at buildbot.pypy.org
Tue Jan 21 16:20:46 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r68819:7d0474323a1d
Date: 2014-01-21 16:19 +0100
http://bitbucket.org/pypy/pypy/changeset/7d0474323a1d/

Log:	merge heads

diff --git a/rpython/jit/backend/llgraph/support.py b/rpython/jit/backend/llgraph/support.py
--- a/rpython/jit/backend/llgraph/support.py
+++ b/rpython/jit/backend/llgraph/support.py
@@ -67,10 +67,11 @@
     if isinstance(TYPE, lltype.Ptr):
         if isinstance(x, (int, long, llmemory.AddressAsInt)):
             x = llmemory.cast_int_to_adr(x)
-        #if repr(x.ptr).startswith('<* <C object '):    # pom pom pom
-        #    # assume that we want a "C-style" cast, without typechecking the value
-        return rffi.cast(TYPE, x)
-        #return llmemory.cast_adr_to_ptr(x, TYPE)
+        try:   # pom pom pom
+            return llmemory.cast_adr_to_ptr(x, TYPE)
+        except (TypeError, RuntimeError, NotImplementedError, ValueError):
+            # assume that we want a "C-style" cast, without typechecking the value
+            return rffi.cast(TYPE, x)
     elif TYPE == llmemory.Address:
         if isinstance(x, (int, long, llmemory.AddressAsInt)):
             x = llmemory.cast_int_to_adr(x)
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
@@ -454,17 +454,19 @@
         unicode_ofs_length = self.unicode_descr.lendescr.offset
 
         def malloc_str(length):
+            type_id = llop.extract_ushort(llgroup.HALFWORD, str_type_id)
             return llop1.do_malloc_varsize_clear(
                 llmemory.GCREF,
-                str_type_id, length, str_basesize, str_itemsize,
+                type_id, length, str_basesize, str_itemsize,
                 str_ofs_length)
         self.generate_function('malloc_str', malloc_str,
                                [lltype.Signed])
 
         def malloc_unicode(length):
+            type_id = llop.extract_ushort(llgroup.HALFWORD, unicode_type_id)
             return llop1.do_malloc_varsize_clear(
                 llmemory.GCREF,
-                unicode_type_id, length, unicode_basesize, unicode_itemsize,
+                type_id, length, unicode_basesize, unicode_itemsize,
                 unicode_ofs_length)
         self.generate_function('malloc_unicode', malloc_unicode,
                                [lltype.Signed])
diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -73,7 +73,7 @@
     translator = interp.typer.annotator.translator
     try:
         translator.config.translation.gc = "boehm"
-    except ConfigError:
+    except (ConfigError, TypeError):
         pass
     try:
         translator.config.translation.list_comprehension_operations = True
diff --git a/rpython/jit/tl/jittest.py b/rpython/jit/tl/jittest.py
--- a/rpython/jit/tl/jittest.py
+++ b/rpython/jit/tl/jittest.py
@@ -4,20 +4,25 @@
 only after the '---> Checkpoint' fork.
 """
 
-from rpython.conftest import option
+import os
+from rpython import conftest
 from rpython.rtyper.lltypesystem import lltype
 from rpython.rtyper.llinterp import LLInterpreter
 from rpython.rtyper.annlowlevel import llstr
 from rpython.jit.metainterp import warmspot
-from rpython.rlib.jit import OPTIMIZER_FULL
+from rpython.tool import runsubprocess
 
+os.environ['PYPY_DONT_RUN_SUBPROCESS'] = '1'
+reload(runsubprocess)
 
-ARGS = ["jittest", "100"]
+
+ARGS = ["--jit", "threshold=100000,trace_eagerness=100000",
+        "-S", "/home/arigo/pypysrc/32compiled/z.py"]
 
 
 def jittest(driver):
-    graph = driver.translator.graphs[0]
-    interp = LLInterpreter(driver.translator.rtyper, malloc_check=False)
+    graph = driver.translator._graphof(driver.entry_point)
+    interp = LLInterpreter(driver.translator.rtyper)
 
     def returns_null(T, *args, **kwds):
         return lltype.nullptr(T)
@@ -32,12 +37,16 @@
 
 def apply_jit(policy, interp, graph, CPUClass):
     print 'warmspot.jittify_and_run() started...'
-    option.view = True
+    if conftest.option is None:
+        class MyOpt:
+            pass
+        conftest.option = MyOpt()
+    conftest.option.view = False
+    conftest.option.viewloops = True   # XXX doesn't seem to work
     LIST = graph.getargs()[0].concretetype
     lst = LIST.TO.ll_newlist(len(ARGS))
     for i, arg in enumerate(ARGS):
         lst.ll_setitem_fast(i, llstr(arg))
     warmspot.jittify_and_run(interp, graph, [lst], policy=policy,
                              listops=True, CPUClass=CPUClass,
-                             backendopt=True, inline=True,
-                             optimizer=OPTIMIZER_FULL)
+                             backendopt=True, inline=True)
diff --git a/rpython/rlib/ropenssl.py b/rpython/rlib/ropenssl.py
--- a/rpython/rlib/ropenssl.py
+++ b/rpython/rlib/ropenssl.py
@@ -56,9 +56,17 @@
 
 ASN1_STRING = lltype.Ptr(lltype.ForwardReference())
 ASN1_ITEM = rffi.COpaquePtr('ASN1_ITEM')
-ASN1_ITEM_EXP = lltype.Ptr(lltype.FuncType([], ASN1_ITEM))
 X509_NAME = rffi.COpaquePtr('X509_NAME')
 
+class CConfigBootstrap:
+    _compilation_info_ = eci
+    OPENSSL_EXPORT_VAR_AS_FUNCTION = rffi_platform.Defined(
+            "OPENSSL_EXPORT_VAR_AS_FUNCTION")
+if rffi_platform.configure(CConfigBootstrap)["OPENSSL_EXPORT_VAR_AS_FUNCTION"]:
+    ASN1_ITEM_EXP = lltype.Ptr(lltype.FuncType([], ASN1_ITEM))
+else:
+    ASN1_ITEM_EXP = ASN1_ITEM
+
 class CConfig:
     _compilation_info_ = eci
 
@@ -128,8 +136,6 @@
          ('block_size', rffi.INT)])
     EVP_MD_SIZE = rffi_platform.SizeOf('EVP_MD')
     EVP_MD_CTX_SIZE = rffi_platform.SizeOf('EVP_MD_CTX')
-    OPENSSL_EXPORT_VAR_AS_FUNCTION = rffi_platform.Defined(
-                                             "OPENSSL_EXPORT_VAR_AS_FUNCTION")
 
     OBJ_NAME_st = rffi_platform.Struct(
         'OBJ_NAME',
@@ -259,10 +265,7 @@
 ssl_external('i2a_ASN1_INTEGER', [BIO, ASN1_INTEGER], rffi.INT)
 ssl_external('ASN1_item_d2i',
              [rffi.VOIDP, rffi.CCHARPP, rffi.LONG, ASN1_ITEM], rffi.VOIDP)
-if OPENSSL_EXPORT_VAR_AS_FUNCTION:
-    ssl_external('ASN1_ITEM_ptr', [ASN1_ITEM_EXP], ASN1_ITEM, macro=True)
-else:
-    ssl_external('ASN1_ITEM_ptr', [rffi.VOIDP], ASN1_ITEM, macro=True)
+ssl_external('ASN1_ITEM_ptr', [ASN1_ITEM_EXP], ASN1_ITEM, macro=True)
 
 ssl_external('sk_GENERAL_NAME_num', [GENERAL_NAMES], rffi.INT,
              macro=True)
diff --git a/rpython/translator/driver.py b/rpython/translator/driver.py
--- a/rpython/translator/driver.py
+++ b/rpython/translator/driver.py
@@ -33,13 +33,6 @@
 # TODO:
 # sanity-checks using states
 
-_BACKEND_TO_TYPESYSTEM = {
-    'c': 'lltype',
-}
-
-def backend_to_typesystem(backend):
-    return _BACKEND_TO_TYPESYSTEM[backend]
-
 # set of translation steps to profile
 PROFILE = set([])
 
@@ -132,7 +125,7 @@
                         if backend == postfix:
                             expose_task(task, explicit_task)
                     elif ts:
-                        if ts == backend_to_typesystem(postfix):
+                        if ts == 'lltype':
                             expose_task(explicit_task)
                     else:
                         expose_task(explicit_task)


More information about the pypy-commit mailing list