[pypy-commit] pypy py3.6: hg merge default
antocuni
pypy.commits at gmail.com
Tue Dec 24 08:14:08 EST 2019
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3.6
Changeset: r98382:4af6d07b98ee
Date: 2019-12-24 12:17 +0100
http://bitbucket.org/pypy/pypy/changeset/4af6d07b98ee/
Log: hg merge default
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -66,3 +66,7 @@
c124c11a5921bf12797b08a696753a12ae82595a release-pypy2.7-v7.3.0rc3
c124c11a5921bf12797b08a696753a12ae82595a release-pypy3.6-v7.2.0rc3
0000000000000000000000000000000000000000 release-pypy3.6-v7.2.0rc3
+1608da62bfc71e8ac775121dd0b21bb72e61c6ea release-pypy3.6-v7.3.0rc4
+724f1a7d62e8d8ac0fa20823f5c35497b29ad56f release-pypy2.7-v7.3.0rc4
+724f1a7d62e8d8ac0fa20823f5c35497b29ad56f release-pypy2.7-v7.3.0
+1608da62bfc71e8ac775121dd0b21bb72e61c6ea release-pypy3.6-v7.3.0
diff --git a/pypy/doc/release-v7.3.0.rst b/pypy/doc/release-v7.3.0.rst
--- a/pypy/doc/release-v7.3.0.rst
+++ b/pypy/doc/release-v7.3.0.rst
@@ -197,7 +197,8 @@
* Add ``PyObject_GenericGetDict``, ``PyObject_GenericSetDict``, ``_Py_strhex``,
``_Py_strhex_bytes``, ``PyUnicodeNew``, ``_PyFinalizing``,
- ``PySlice_Unpack``, ``PySlice_AdjustIndices``, ``PyOS_FSPath``
+ ``PySlice_Unpack``, ``PySlice_AdjustIndices``, ``PyOS_FSPath``,
+ ``PyModule_AddFunctions``
* Implement ``pystrhex.h`` (`issue 2687`_)
* Make ``PyUnicodeObject`` slightly more compact
* Fix memory leak when releasing a ``PyUnicodeObject``
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -3,5 +3,8 @@
============================
.. this is a revision shortly after release-pypy-7.3.0
-.. startrev: 994c42529580
+.. startrev: 994c42529580
+.. branch: cpyext-speedup-tests
+
+Make cpyext test faster, especially on py3.6
diff --git a/pypy/module/cpyext/moduledef.py b/pypy/module/cpyext/moduledef.py
--- a/pypy/module/cpyext/moduledef.py
+++ b/pypy/module/cpyext/moduledef.py
@@ -5,6 +5,7 @@
class Module(MixedModule):
interpleveldefs = {
'is_cpyext_function': 'interp_cpyext.is_cpyext_function',
+ 'FunctionType': 'methodobject.W_PyCFunctionObject',
}
appleveldefs = {
@@ -14,15 +15,6 @@
def startup(self, space):
space.fromcache(State).startup(space)
- method = pypy.module.cpyext.typeobject.get_new_method_def(space)
- # the w_self argument here is a dummy, the only thing done with w_obj
- # is call type() on it
- w_obj = pypy.module.cpyext.methodobject.W_PyCFunctionObject(space,
- method, space.w_None)
- space.appexec([w_obj], """(meth):
- from pickle import Pickler
- Pickler.dispatch[type(meth)] = Pickler.save_global
- """)
def register_atexit(self, function):
if len(self.atexit_funcs) >= 32:
diff --git a/pypy/module/cpyext/test/test_cpyext.py b/pypy/module/cpyext/test/test_cpyext.py
--- a/pypy/module/cpyext/test/test_cpyext.py
+++ b/pypy/module/cpyext/test/test_cpyext.py
@@ -84,23 +84,6 @@
def freeze_refcnts(self):
rawrefcount._dont_free_any_more()
-def preload(space, name):
- from pypy.module.cpyext.pyobject import make_ref
- if '.' not in name:
- w_obj = space.builtin.getdictvalue(space, name)
- else:
- module, localname = name.rsplit('.', 1)
- code = "(): import {module}; return {module}.{localname}"
- code = code.format(**locals())
- w_obj = space.appexec([], code)
- make_ref(space, w_obj)
-
-def preload_expr(space, expr):
- from pypy.module.cpyext.pyobject import make_ref
- code = "(): return {}".format(expr)
- w_obj = space.appexec([], code)
- make_ref(space, w_obj)
-
def is_interned_string(space, w_obj):
try:
u = space.utf8_w(w_obj)
@@ -151,13 +134,37 @@
Eagerly create pyobjs for various builtins so they don't look like
leaks.
"""
- for name in [
- 'buffer', 'mmap.mmap',
- 'types.FunctionType', 'types.CodeType',
- 'types.TracebackType', 'types.FrameType']:
- preload(space, name)
- for expr in ['type(str.join)']:
- preload_expr(space, expr)
+ from pypy.module.cpyext.pyobject import make_ref
+ w_to_preload = space.appexec([], """():
+ import sys
+ import mmap
+ #
+ # copied&pasted to avoid importing the whole types.py, which is
+ # expensive on py3k
+ # <types.py>
+ def _f(): pass
+ FunctionType = type(_f)
+ CodeType = type(_f.__code__)
+ try:
+ raise TypeError
+ except TypeError:
+ tb = sys.exc_info()[2]
+ TracebackType = type(tb)
+ FrameType = type(tb.tb_frame)
+ del tb
+ # </types.py>
+ return [
+ buffer,
+ mmap.mmap,
+ FunctionType,
+ CodeType,
+ TracebackType,
+ FrameType,
+ type(str.join),
+ ]
+ """)
+ for w_obj in space.unpackiterable(w_to_preload):
+ make_ref(space, w_obj)
def cleanup(self):
self.space.getexecutioncontext().cleanup_cpyext_state()
diff --git a/pypy/tool/release/repackage.sh b/pypy/tool/release/repackage.sh
--- a/pypy/tool/release/repackage.sh
+++ b/pypy/tool/release/repackage.sh
@@ -3,7 +3,7 @@
pmin=7 # python minor version
maj=7
min=3
-rev=0rc1
+rev=0
case $pmaj in
"2") exe=pypy;;
More information about the pypy-commit
mailing list