[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