Ronan Lamy pushed to branch branch/StringIO-perf at PyPy / pypy
Commits: c4f4b1de by Carl Friedrich Bolz-Tereick at 2020-02-08T17:56:44+01:00 a branch to try refactor the way that green keys are done on all the small custom jit driver that pypy uses here and there --HG-- branch : pypy-jitdriver-greenkeys - - - - - 610d485b by Carl Friedrich Bolz-Tereick at 2020-02-09T13:20:44+01:00 - introduce space.iterator_greenkey which returns "something" that can be used as the green key for an iterator to get the right specialization. by default it's just the type of the iterator, but generators override it to use the underlying pycode. That way, space.unpackiterable of two different generators produce two different loops. - make a pass over all jitdrivers to use this new api --HG-- branch : pypy-jitdriver-greenkeys - - - - - 4703314d by Carl Friedrich Bolz-Tereick at 2020-02-09T16:36:25+01:00 various fixes --HG-- branch : pypy-jitdriver-greenkeys - - - - - 796b1706 by Carl Friedrich Bolz-Tereick at 2020-02-09T22:31:49+01:00 random finding: return early in this safety checking function in the JIT (I looked at jitcodes, it doesn't get removed) --HG-- branch : pypy-jitdriver-greenkeys - - - - - 77d87795 by Carl Friedrich Bolz-Tereick at 2020-02-09T22:51:26+01:00 test showing the effect --HG-- branch : pypy-jitdriver-greenkeys - - - - - a97fb856 by Carl Friedrich Bolz-Tereick at 2020-02-11T14:08:09+01:00 slightly simplify for the jit, for the common non-tracing case --HG-- branch : pypy-jitdriver-greenkeys - - - - - 35d83d03 by Carl Friedrich Bolz-Tereick at 2020-02-16T15:26:19+01:00 redo 8fcba04d307f: don't generate tons and tons of guard_not_invalidated while tracing one benchmark had 43% of all guards be guard_not_invalidated However, this needs an adaptation in the optimizer, to remove guard_not_invalidated less aggressively: we need one guard_not_invalidated after every call that can invalidate something. This is independent to whether the quasiimmut_field op is removed or not! The tracer will only trace one guard_not_invalidated after each call, so even if the first quasiimmut_field is removed, the second one might not be and could rely on the presence of an earlier guard_not_invalidated. This might under rare circumstances leave a extra guard_not_invalidated in the trace! But guard_not_invalidated is cheap, it emits no instructions and its only cost is the size of the resume data. Therfore that is still a better tradeoff than capturing resume data for every quasiimmut_field in the front end *all the time* --HG-- branch : warmup-improvements-various - - - - - fe90f2f7 by Carl Friedrich Bolz-Tereick at 2020-02-16T15:31:21+01:00 this didn't quite work in practice, explicitly don't check the stack depth --HG-- branch : warmup-improvements-various - - - - - 12365ef7 by Carl Friedrich Bolz-Tereick at 2020-02-16T16:01:02+01:00 avoid the "ping pong" of the return value on the stack in the most common cases --HG-- branch : warmup-improvements-various - - - - - cbbdf5d5 by Carl Friedrich Bolz-Tereick at 2020-02-16T22:58:58+01:00 fix test --HG-- branch : warmup-improvements-various - - - - - ab78084a by Carl Friedrich Bolz-Tereick at 2020-02-16T23:06:40+01:00 cache result of call_loopinvariant in the heapcache --HG-- branch : warmup-improvements-various - - - - - 7bb0b5d9 by Carl Friedrich Bolz-Tereick at 2020-02-17T07:11:39+01:00 more robust caching of quasiimmut_field when applied to *constants* (which is the common case after all!) --HG-- branch : warmup-improvements-various - - - - - 03571504 by Carl Friedrich Bolz-Tereick at 2020-02-17T07:40:17+01:00 when tracing, we know that newly allocated frames must be different from the standard frame --HG-- branch : warmup-improvements-various - - - - - 4e810466 by Carl Friedrich Bolz-Tereick at 2020-02-17T13:54:03+01:00 fix a generator corner case --HG-- branch : warmup-improvements-various - - - - - 70e14a03 by Carl Friedrich Bolz-Tereick at 2020-02-17T19:54:03+01:00 remove bogus quasi-immutable declaration on the ExecutionContext. the ec is never constant, so it doesn't help to make its fields quasi-immutable --HG-- branch : warmup-improvements-various - - - - - ac3de501 by Carl Friedrich Bolz-Tereick at 2020-02-19T21:23:55+01:00 typo --HG-- branch : pypy-jitdriver-greenkeys - - - - - e73aeb9b by Carl Friedrich Bolz-Tereick at 2020-02-19T21:28:33+01:00 annoying: the jit main loops get split at the can_enter_jit (or jit_merge_point), this means that the list iterators (and range iterator) aren't optimized away by backenopt.malloc. just replace these with an index instead --HG-- branch : pypy-jitdriver-greenkeys - - - - - a4428959 by Richard Plangger at 2020-02-20T15:16:57-03:00 byteorder related issue, check the byte order of that machine - - - - - 4f97d2c5 by Richard Plangger at 2020-02-20T16:13:10-03:00 missing properties for the reg allocation tests (zarch) - - - - - 06ef154c by Carl Friedrich Bolz-Tereick at 2020-02-21T10:01:11+01:00 count the number of ops that aren't even executed, because they are caught by the heap cache - - - - - b2460d35 by Carl Friedrich Bolz-Tereick at 2020-02-21T10:52:31+01:00 merge default --HG-- branch : pypy-jitdriver-greenkeys - - - - - 315d87d0 by Carl Friedrich Bolz-Tereick at 2020-02-21T11:42:16+01:00 fix tests due to changen in guard_not_invalidated --HG-- branch : warmup-improvements-various - - - - - 7489dbed by Carl Friedrich Bolz-Tereick at 2020-02-21T11:52:02+01:00 fix translation - - - - - 65ff1239 by Carl Friedrich Bolz-Tereick at 2020-02-21T11:52:12+01:00 merge default --HG-- branch : pypy-jitdriver-greenkeys - - - - - f3543d05 by Carl Friedrich Bolz-Tereick at 2020-02-21T12:50:59+01:00 fix test - - - - - c05c3b83 by Carl Friedrich Bolz-Tereick at 2020-02-21T13:06:04+01:00 merge default --HG-- branch : pypy-jitdriver-greenkeys - - - - - 4d5a1d76 by Carl Friedrich Bolz-Tereick at 2020-02-21T13:07:10+01:00 document branch --HG-- branch : pypy-jitdriver-greenkeys - - - - - 3ad8a8eb by kotus9 at 2020-02-21T16:40:34+03:00 Fixed link to issue tracker - - - - - 19783278 by Carl Friedrich Bolz-Tereick at 2020-02-22T19:06:18+01:00 merge default --HG-- branch : warmup-improvements-various - - - - - 1c613108 by Richard Plangger at 2020-02-22T15:09:31-03:00 __BIG_ENDIAN__ is not defined by the s390x target, use some other macros to determine the endianess of the platform - - - - - 9a44e829 by Richard Plangger at 2020-02-22T15:17:08-03:00 should have been #if not #ifdef - - - - - b0b88c83 by Matti Picus at 2020-02-22T22:58:05+02:00 delete build dependencies when finished with them - - - - - 9c4a7f8c by Carl Friedrich Bolz-Tereick at 2020-02-23T13:37:35+01:00 merge pypy-jitdriver-greenkeys: use better green keys for non-standard jitdrivers to make sure that e.g. generators are specialized based on their code object. - - - - - 22903f3d by Carl Friedrich Bolz-Tereick at 2020-02-23T13:54:45+01:00 this part is potentially wrong (_check_stack_index is called when unpickling frames) - - - - - 476abd19 by Carl Friedrich Bolz-Tereick at 2020-02-23T13:55:13+01:00 merge heads - - - - - 0147c3a3 by Matti Picus at 2020-02-23T17:40:14+02:00 older msvc does not have TCP_FASTOPEN - - - - - dc426d3f by Carl Friedrich Bolz-Tereick at 2020-02-23T17:57:58+01:00 merge heads - - - - - 927f1aa0 by Carl Friedrich Bolz-Tereick at 2020-02-23T19:15:50+01:00 merge heads --HG-- branch : warmup-improvements-various - - - - - bbf83041 by Carl Friedrich Bolz-Tereick at 2020-02-24T13:20:40+01:00 make it possible to convert classes to strs in RPython (I keep running into this problem) - - - - - 1ac92983 by Carl Friedrich Bolz-Tereick at 2020-02-24T13:37:05+01:00 ouch, it's *not* safe to promote list strategies, due to SizeListStrategy. use the type as the green key instead - - - - - 76eab9a7 by Carl Friedrich Bolz-Tereick at 2020-02-26T10:56:16+01:00 merge warmup-improvements-various: improve warmup speed of PyPy - a few minor tweaks in the interpreter - since tracing guards is super costly, work harder at not emitting too many guard_not_invalidated while tracing - optimize quasi_immut during tracing - optimize loopinvariant calls during tracing - a small optimization around non-standard virtualizables during tracing this improves warmup time by around ~5-20% - - - - - 5faa0309 by Carl Friedrich Bolz-Tereick at 2020-02-26T10:57:06+01:00 document branch - - - - - b7eac872 by Matti Picus at 2020-02-26T12:49:36+02:00 fix off-by-one, rework system calls to _get_tzname on windows, add test - - - - - 455e1f63 by Matti Picus at 2020-02-26T13:06:29+02:00 issue 3163: the constant is defined both in vmprof_common.h and vmprof_common.c - - - - - 30413115 by Matti Picus at 2020-02-27T09:42:07+02:00 change tuple to list since "can only iterate over tuples of length 1 for now" - - - - - 98db13ba by Matti Picus at 2020-02-27T11:28:08+02:00 clean up test - - - - - 82eadec1 by Matti Picus at 2020-02-27T17:55:50+02:00 not sure why I added this, it is wrong (test added), and not needed - - - - - 260af9a1 by Ronan Lamy at 2020-02-27T16:36:01+00:00 hg merge default --HG-- branch : StringIO-perf - - - - - 30 changed files: - extra_tests/ctypes_tests/test_structures.py - lib_pypy/tools/build_cffi_imports.py - pypy/doc/index.rst - pypy/doc/whatsnew-head.rst - pypy/interpreter/baseobjspace.py - pypy/interpreter/executioncontext.py - pypy/interpreter/generator.py - pypy/interpreter/pycode.py - pypy/interpreter/pyframe.py - pypy/interpreter/pyopcode.py - pypy/module/__builtin__/functional.py - pypy/module/array/interp_array.py - pypy/module/cpyext/test/test_abstract.py - pypy/module/cpyext/test/test_unicodeobject.py - pypy/module/cpyext/typeobject.py - pypy/module/itertools/interp_itertools.py - pypy/module/pypyjit/test_pypy_c/test_generators.py - pypy/module/pypyjit/test_pypy_c/test_micronumpy.py - pypy/module/time/interp_time.py - pypy/objspace/descroperation.py - pypy/objspace/std/bytearrayobject.py - pypy/objspace/std/listobject.py - pypy/objspace/std/setobject.py - pypy/objspace/std/tupleobject.py - pypy/objspace/std/typeobject.py - rpython/jit/backend/zarch/test/test_regalloc.py - rpython/jit/metainterp/heapcache.py - rpython/jit/metainterp/jitprof.py - rpython/jit/metainterp/optimizeopt/heap.py - rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py View it on GitLab: https://foss.heptapod.net/pypy/pypy/compare/b6292af25ba637d9585720885cf21fb33e3a02e6...260af9a18fc58d63f23975fc452e7a0e3a88b3b2 --- View it on GitLab: https://foss.heptapod.net/pypy/pypy/compare/b6292af25ba637d9585720885cf21fb33e3a02e6...260af9a18fc58d63f23975fc452e7a0e3a88b3b2 You're receiving this email because of your account on foss.heptapod.net.
_______________________________________________ pypy-commit mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-commit
