<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/</link>
    <language>en-us</language>

    <title>cpython-lru_cache-weakref: Python/opcode_targets.h history</title>
    <description>Python/opcode_targets.h revision history</description>
    <item>
    <title>rather than passing locals to the class body, just execute the class body in the proper environment</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/6db3741e59be/Python/opcode_targets.h</link>
    <description><![CDATA[rather than passing locals to the class body, just execute the class body in the proper environment]]></description>
    <author>&#66;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#32;&#80;&#101;&#116;&#101;&#114;&#115;&#111;&#110;&#32;&#60;&#98;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#64;&#112;&#121;&#116;&#104;&#111;&#110;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Thu, 16 May 2013 14:37:25 -0500</pubDate>
</item>
<item>
    <title>check local class namespace before reaching for cells (closes #17853)</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/cf65c7a75f55/Python/opcode_targets.h</link>
    <description><![CDATA[check local class namespace before reaching for cells (closes #17853)]]></description>
    <author>&#66;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#32;&#80;&#101;&#116;&#101;&#114;&#115;&#111;&#110;&#32;&#60;&#98;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#64;&#112;&#121;&#116;&#104;&#111;&#110;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Tue, 30 Apr 2013 09:41:40 -0400</pubDate>
</item>
<item>
    <title>Implement PEP 380 - 'yield from' (closes #11682)</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/d64ac9ab4cd0/Python/opcode_targets.h</link>
    <description><![CDATA[Implement PEP 380 - 'yield from' (closes #11682)]]></description>
    <author>&#78;&#105;&#99;&#107;&#32;&#67;&#111;&#103;&#104;&#108;&#97;&#110;&#32;&#60;&#110;&#99;&#111;&#103;&#104;&#108;&#97;&#110;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 13 Jan 2012 21:43:40 +1000</pubDate>
</item>
<item>
    <title>Dummy-merge 3.1 branch into 3.2 branch.</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/3c9232a684ae/Python/opcode_targets.h</link>
    <description><![CDATA[Dummy-merge 3.1 branch into 3.2 branch.]]></description>
    <author>&#71;&#101;&#111;&#114;&#103;&#32;&#66;&#114;&#97;&#110;&#100;&#108;&#32;&#60;&#103;&#101;&#111;&#114;&#103;&#64;&#112;&#121;&#116;&#104;&#111;&#110;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Sat, 05 Mar 2011 15:15:55 +0100</pubDate>
</item>
<item>
    <title>#4617: Previously it was illegal to delete a name from the local</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/25cc226dc9bd/Python/opcode_targets.h</link>
    <description><![CDATA[#4617: Previously it was illegal to delete a name from the local<br/>
namespace if it occurs as a free variable in a nested block.  This limitation<br/>
of the compiler has been lifted, and a new opcode introduced (DELETE_DEREF).<br/>
<br/>
This sample was valid in 2.6, but fails to compile in 3.x without this change::<br/>
<br/>
   &gt;&gt;&gt; def f():<br/>
   ...     def print_error():<br/>
   ...        print(e)<br/>
   ...     try:<br/>
   ...        something<br/>
   ...     except Exception as e:<br/>
   ...        print_error()<br/>
   ...        # implicit &quot;del e&quot; here<br/>
<br/>
<br/>
This sample has always been invalid in Python, and now works::<br/>
<br/>
   &gt;&gt;&gt; def outer(x):<br/>
   ...     def inner():<br/>
   ...        return x<br/>
   ...     inner()<br/>
   ...     del x<br/>
<br/>
There is no need to bump the PYC magic number: the new opcode is used<br/>
for code that did not compile before.]]></description>
    <author>&#65;&#109;&#97;&#117;&#114;&#121;&#32;&#70;&#111;&#114;&#103;&#101;&#111;&#116;&#32;&#100;&#39;&#65;&#114;&#99;&#32;&#60;&#97;&#109;&#97;&#117;&#114;&#121;&#102;&#97;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 10 Sep 2010 21:39:53 +0000</pubDate>
</item>
<item>
    <title>Issue #9225: Remove the ROT_FOUR and DUP_TOPX opcode, the latter replaced</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/725231211273/Python/opcode_targets.h</link>
    <description><![CDATA[Issue #9225: Remove the ROT_FOUR and DUP_TOPX opcode, the latter replaced<br/>
by the new (and simpler) DUP_TOP_TWO.  Performance isn't changed, but<br/>
our bytecode is a bit simplified.  Patch by Demur Rumed.]]></description>
    <author>&#65;&#110;&#116;&#111;&#105;&#110;&#101;&#32;&#80;&#105;&#116;&#114;&#111;&#117;&#32;&#60;&#115;&#111;&#108;&#105;&#112;&#115;&#105;&#115;&#64;&#112;&#105;&#116;&#114;&#111;&#117;&#46;&#110;&#101;&#116;&#62;</author>
    <pubDate>Sat, 04 Sep 2010 18:43:52 +0000</pubDate>
</item>
<item>
    <title>Recorded merge of revisions 81029 via svnmerge from</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/cab14be0ada1/Python/opcode_targets.h</link>
    <description><![CDATA[Recorded merge of revisions 81029 via svnmerge from<br/>
svn+ssh://pythondev@svn.python.org/python/trunk<br/>
<br/>
........<br/>
  r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines<br/>
<br/>
  Untabify C files. Will watch buildbots.<br/>
........]]></description>
    <author>&#65;&#110;&#116;&#111;&#105;&#110;&#101;&#32;&#80;&#105;&#116;&#114;&#111;&#117;&#32;&#60;&#115;&#111;&#108;&#105;&#112;&#115;&#105;&#115;&#64;&#112;&#105;&#116;&#114;&#111;&#117;&#46;&#110;&#101;&#116;&#62;</author>
    <pubDate>Sun, 09 May 2010 15:52:27 +0000</pubDate>
</item>
<item>
    <title>Merged revisions 72912,72920,72940 via svnmerge from</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/3aaf2e065db0/Python/opcode_targets.h</link>
    <description><![CDATA[Merged revisions 72912,72920,72940 via svnmerge from<br/>
svn+ssh://pythondev@svn.python.org/python/trunk<br/>
<br/>
........<br/>
  r72912 | benjamin.peterson | 2009-05-25 08:13:44 -0500 (Mon, 25 May 2009) | 5 lines<br/>
<br/>
  add a SETUP_WITH opcode<br/>
<br/>
  It speeds up the with statement and correctly looks up the special<br/>
  methods involved.<br/>
........<br/>
  r72920 | benjamin.peterson | 2009-05-25 15:12:57 -0500 (Mon, 25 May 2009) | 1 line<br/>
<br/>
  take into account the fact that SETUP_WITH pushes a finally block<br/>
........<br/>
  r72940 | benjamin.peterson | 2009-05-26 07:49:59 -0500 (Tue, 26 May 2009) | 1 line<br/>
<br/>
  teach the peepholer about SETUP_WITH<br/>
........]]></description>
    <author>&#66;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#32;&#80;&#101;&#116;&#101;&#114;&#115;&#111;&#110;&#32;&#60;&#98;&#101;&#110;&#106;&#97;&#109;&#105;&#110;&#64;&#112;&#121;&#116;&#104;&#111;&#110;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Sun, 28 Jun 2009 03:18:59 +0000</pubDate>
</item>
<item>
    <title>Recorded merge of revisions 81032 via svnmerge from</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/f197407bdba2/Python/opcode_targets.h</link>
    <description><![CDATA[Recorded merge of revisions 81032 via svnmerge from<br/>
svn+ssh://pythondev@svn.python.org/python/branches/py3k<br/>
<br/>
................<br/>
  r81032 | antoine.pitrou | 2010-05-09 17:52:27 +0200 (dim., 09 mai 2010) | 9 lines<br/>
<br/>
  Recorded merge of revisions 81029 via svnmerge from<br/>
  svn+ssh://pythondev@svn.python.org/python/trunk<br/>
<br/>
  ........<br/>
    r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines<br/>
<br/>
    Untabify C files. Will watch buildbots.<br/>
  ........<br/>
................]]></description>
    <author>&#65;&#110;&#116;&#111;&#105;&#110;&#101;&#32;&#80;&#105;&#116;&#114;&#111;&#117;&#32;&#60;&#115;&#111;&#108;&#105;&#112;&#115;&#105;&#115;&#64;&#112;&#105;&#116;&#114;&#111;&#117;&#46;&#110;&#101;&#116;&#62;</author>
    <pubDate>Sun, 09 May 2010 16:14:21 +0000</pubDate>
</item>
<item>
    <title>http://bugs.python.org/issue4715</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/643d8d4fc8eb/Python/opcode_targets.h</link>
    <description><![CDATA[http://bugs.python.org/issue4715<br/>
<br/>
This patch by Antoine Pitrou optimizes the bytecode for conditional branches by<br/>
merging the following &quot;POP_TOP&quot; instruction into the conditional jump.  For<br/>
example, the list comprehension &quot;[x for x in l if not x]&quot; produced the<br/>
following bytecode:<br/>
<br/>
  1           0 BUILD_LIST               0<br/>
              3 LOAD_FAST                0 (.0)<br/>
        &gt;&gt;    6 FOR_ITER                23 (to 32)<br/>
              9 STORE_FAST               1 (x)<br/>
             12 LOAD_FAST                1 (x)<br/>
             15 JUMP_IF_TRUE            10 (to 28)<br/>
             18 POP_TOP<br/>
             19 LOAD_FAST                1 (x)<br/>
             22 LIST_APPEND              2<br/>
             25 JUMP_ABSOLUTE            6<br/>
        &gt;&gt;   28 POP_TOP<br/>
             29 JUMP_ABSOLUTE            6<br/>
        &gt;&gt;   32 RETURN_VALUE<br/>
<br/>
but after the patch it produces the following bytecode:<br/>
<br/>
  1           0 BUILD_LIST               0<br/>
              3 LOAD_FAST                0 (.0)<br/>
        &gt;&gt;    6 FOR_ITER                18 (to 27)<br/>
              9 STORE_FAST               1 (x)<br/>
             12 LOAD_FAST                1 (x)<br/>
             15 POP_JUMP_IF_TRUE         6<br/>
             18 LOAD_FAST                1 (x)<br/>
             21 LIST_APPEND              2<br/>
             24 JUMP_ABSOLUTE            6<br/>
        &gt;&gt;   27 RETURN_VALUE<br/>
<br/>
Notice that not only the code is shorter, but the conditional jump<br/>
(POP_JUMP_IF_TRUE) jumps right to the start of the loop instead of going through<br/>
the JUMP_ABSOLUTE at the end. &quot;continue&quot; statements are helped<br/>
similarly.<br/>
<br/>
Furthermore, the old jump opcodes (JUMP_IF_FALSE, JUMP_IF_TRUE) have been<br/>
replaced by two new opcodes:<br/>
- JUMP_IF_TRUE_OR_POP, which jumps if true and pops otherwise<br/>
- JUMP_IF_FALSE_OR_POP, which jumps if false and pops otherwise]]></description>
    <author>&#74;&#101;&#102;&#102;&#114;&#101;&#121;&#32;&#89;&#97;&#115;&#115;&#107;&#105;&#110;&#32;&#60;&#106;&#121;&#97;&#115;&#115;&#107;&#105;&#110;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 25 Feb 2009 02:25:04 +0000</pubDate>
</item>
<item>
    <title>Issue #4753: By enabling a configure option named '--with-computed-gotos'</title>
    <link>https://hg.dopieralski.pl/cpython-lru_cache-weakref/log/d86e23318b41/Python/opcode_targets.h</link>
    <description><![CDATA[Issue #4753: By enabling a configure option named '--with-computed-gotos'<br/>
on compilers that support it (notably: gcc, SunPro, icc), the bytecode<br/>
evaluation loop is compiled with a new dispatch mechanism which gives<br/>
speedups of up to 20%, depending on the system, on various benchmarks.]]></description>
    <author>&#65;&#110;&#116;&#111;&#105;&#110;&#101;&#32;&#80;&#105;&#116;&#114;&#111;&#117;&#32;&#60;&#115;&#111;&#108;&#105;&#112;&#115;&#105;&#115;&#64;&#112;&#105;&#116;&#114;&#111;&#117;&#46;&#110;&#101;&#116;&#62;</author>
    <pubDate>Sun, 25 Jan 2009 16:34:23 +0000</pubDate>
</item>

  </channel>
</rss>
