Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r89074:f73566c74279
Date: 2016-12-15 16:21 +0100
http://bitbucket.org/pypy/pypy/changeset/f73566c74279/
Log: Don't look up dynamically '_frozen_importlib.__import__()', it might
have been changed or removed. In CPython 3.5, they hard-coded the
logic in C for performance anyway
diff --git a/pypy/module/_frozen_importlib/interp_import.py
b/pypy/module/_frozen_importlib/interp_import.py
--- a/pypy/module/_frozen_importlib/interp_import.py
+++ b/pypy/module/_frozen_importlib/interp_import.py
@@ -1,11 +1,19 @@
from pypy.interpreter.gateway import interp2app
from pypy.interpreter.error import OperationError
+from pypy.interpreter.baseobjspace import SpaceCache
+
+
+class FrozenCache(SpaceCache):
+ def __init__(self, space):
+ mod = space.getbuiltinmodule('_frozen_importlib')
+ self.w_frozen_import = mod.get('__import__')
+ assert self.w_frozen_import is not None
+
def import_with_frames_removed(space, __args__):
try:
return space.call_args(
- space.getbuiltinmodule('_frozen_importlib').getdictvalue(
- space, '__import__'), __args__)
+ space.fromcache(FrozenCache).w_frozen_import, __args__)
except OperationError as e:
e.remove_traceback_module_frames('<frozen importlib._bootstrap>')
raise
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit