Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: guard-compatible Changeset: r85130:febecdcd73b2 Date: 2016-06-13 15:50 +0200 http://bitbucket.org/pypy/pypy/changeset/febecdcd73b2/
Log: merge diff --git a/pypy/objspace/std/callmethod.py b/pypy/objspace/std/callmethod.py --- a/pypy/objspace/std/callmethod.py +++ b/pypy/objspace/std/callmethod.py @@ -48,11 +48,15 @@ name = None if jit.we_are_jitted(): # compute safeness without reading the type - map = w_obj._get_mapdict_map_no_promote() - if map is not None and map._type_safe_to_do_getattr(): - safe = True - name = space.str_w(w_name) - w_descr = map._type_lookup_safe(name) + try: + map = w_obj._get_mapdict_map_no_promote() + except TypeError: + pass + else: + if map._type_safe_to_do_getattr(): + safe = True + name = space.str_w(w_name) + w_descr = map._type_lookup_safe(name) else: w_type = space.type(w_obj) safe = w_type.has_object_getattribute() @@ -143,10 +147,14 @@ w_descr = None if jit.we_are_jitted(): # compute safeness without reading the type - map = w_obj._get_mapdict_map_no_promote() - if map is not None and map._type_safe_to_do_getattr(): - safe = True - w_descr = map._type_lookup_safe(methname) + try: + map = w_obj._get_mapdict_map_no_promote() + except TypeError: + pass + else: + if map._type_safe_to_do_getattr(): + safe = True + w_descr = map._type_lookup_safe(methname) else: w_type = space.type(w_obj) safe = w_type.has_object_getattribute() diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py --- a/pypy/objspace/std/objspace.py +++ b/pypy/objspace/std/objspace.py @@ -535,11 +535,15 @@ safe = False if jit.we_are_jitted(): # compute safeness without reading the type - map = w_obj._get_mapdict_map_no_promote() - if map is not None and map._type_safe_to_do_getattr(): - safe = True - name = self.str_w(w_name) - w_descr = map._type_lookup_safe(name) + try: + map = w_obj._get_mapdict_map_no_promote() + except TypeError: + pass + else: + if map._type_safe_to_do_getattr(): + safe = True + name = self.str_w(w_name) + w_descr = map._type_lookup_safe(name) if not safe: w_type = self.type(w_obj) diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py --- a/rpython/rlib/jit.py +++ b/rpython/rlib/jit.py @@ -1,4 +1,5 @@ import sys +import random import py @@ -381,7 +382,9 @@ def we_are_jitted(): """ Considered as true during tracing and blackholing, so its consquences are reflected into jitted code """ - return False + # during testing we return something randomly, to emulate the real + # behaviour where you can switch to tracing a arbitrary points. + return random.random() > 0.5 _we_are_jitted = CDefinedIntSymbolic('0 /* we are not jitted here */', default=0) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit