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

Reply via email to