Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: guard-compatible Changeset: r85128:4d70d977e2f2 Date: 2016-05-24 10:57 +0200 http://bitbucket.org/pypy/pypy/changeset/4d70d977e2f2/
Log: deal with TypeErrors in we_are_jitted() blocks correctly 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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit