On 11/4/2015 3:50 AM, Victor Stinner wrote:
Hi,

I'm writing a new "FAT Python" project to try to implement optimizations
in CPython (inlining, constant folding, move invariants out of loops,
etc.) using a "static" optimizer (not a JIT). For the background, see
the thread on python-ideas:
https://mail.python.org/pipermail/python-ideas/2015-October/036908.html

See also the documentation:
https://hg.python.org/sandbox/fatpython/file/tip/FATPYTHON.rst
https://hg.python.org/sandbox/fatpython/file/tip/ASTOPTIMIZER.rst

I implemented the most basic optimization to test my code: replace calls
to builtin functions (with constant arguments) with the result. For
example, len("abc") is replaced with 3. I reached the second milestone:
it's now possible to run the full Python test suite with these
optimizations enabled. It confirms that the optimizations don't break
the Python semantic.

Is the test suite complete enough to say this? (see below)

Example:
---
 >>> def func():
...     return len("abc")
...
 >>> import dis
 >>> dis.dis(func)
   2           0 LOAD_GLOBAL              0 (len)
               3 LOAD_CONST               1 ('abc')
               6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
               9 RETURN_VALUE

 >>> len(func.get_specialized())
1
 >>> specialized=func.get_specialized()[0]
 >>> dis.dis(specialized['code'])
   2           0 LOAD_CONST               1 (3)
               3 RETURN_VALUE
 >>> len(specialized['guards'])
2

 >>> func()
3

 >>> len=lambda obj: "mock"
 >>> func()
'mock'

In particular, does the test suite have tests like this, to verify that over-riding builtins works?

 >>> func.get_specialized()
[]
---

--
Terry Jan Reedy

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to