Thank you for your confirmation, I am going to read the devguide. > On 25 oct. 2015, at 7:50 PM, Raymond Hettinger <raymond.hettinger at gmail.com> wrote: > > >>> On Oct 25, 2015, at 12:33 PM, Raymond Hettinger <raymond.hettinger at gmail.com> wrote: >>> >>> On Oct 22, 2015, at 10:02 AM, Brett Cannon <brett at python.org> wrote: >>> >>> So my question is, the byte code generator removes the unused functions, variables etc…, is it right? >>> >>> Technically the peepholer removes the dead branch, but since the peepholer is run on all bytecode you can't avoid it. >> >> IIRC, the code was never generated in the first place (before the peephole pass). This used to be true before the AST branch was added and I think it may still be true. > > I just verified this. So Brett's post was incorrect and misleading. > > > Raymond > > > ----------- Verify by turning-off the optimizations ---------- > cpython $ hg diff Python/peephole.c > diff --git a/Python/peephole.c b/Python/peephole.c > --- a/Python/peephole.c > +++ b/Python/peephole.c > @@ -383,7 +383,7 @@ > /* Avoid situations where jump retargeting could overflow */ > assert(PyBytes_Check(code)); > codelen = PyBytes_GET_SIZE(code); > - if (codelen > 32700) > + if (codelen > 0) > goto exitUnchanged; > > -------- Then run a simple disassembly ----------------------- > > from dis import dis > > def f(x): > if 0: > print('First') > print('Second') > > dis(f) > > -------- The output is --------------------------------------------------- > > $ py tmp.py > 6 0 LOAD_GLOBAL 0 (print) > 3 LOAD_CONST 1 ('Second') > 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) > 9 POP_TOP > 10 LOAD_CONST 0 (None) > 13 RETURN_VALUE >
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4