Author: Armin Rigo <ar...@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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit