Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created January 29, 2019 17:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Whateverable/9715620a85ff869641dcc7d350ef9502 to your computer and use it in GitHub Desktop.
Save Whateverable/9715620a85ff869641dcc7d350ef9502 to your computer and use it in GitHub Desktop.
bisectable6
old=2017.07 loop { $_ = 42; when 42 { my $a = 10 } }
Bisecting: 2092 revisions left to test after this (roughly 11 steps)
[1fff4f106adea3b3d2e69b9d629195b22c148c3a] Ignore gen/nqp-version file
»»»»» Testing 1fff4f106adea3b3d2e69b9d629195b22c148c3a
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 89787028882bf5faa4aa596a50e320cd6de16f2c
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 4c05a0b13ef5f3c53b9bd0e0c5ea8829d8fa4677
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 09c884307da444c0d1605c3bbbf21056e987cdf2
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing f2ed3db750129b44fd815ead51164095cd86b15a
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 5c14916bb0217c1897f6ac15bcbd96b05e1da198
»»»»» Script output:
«timed out after 25 seconds»
»»»»» Script exit code: 0
»»»»» Script exit signal: 1 (SIGHUP)
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 1 (SIGHUP), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing fcfd51beba36469478435c2d9103330c1e8f24fc
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 05cc8cd52721cb225d6d0b7395daf932565e86c2
»»»»» Script output:
«timed out after 25 seconds»
»»»»» Script exit code: 0
»»»»» Script exit signal: 1 (SIGHUP)
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 1 (SIGHUP), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 6b078a052a7c71c3310dfb927682440d3b65eab4
»»»»» Script output:
»»»»» Script exit code: 0
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 0 (None), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 095d216ae82bd096b1370277912b7555800b72ad
»»»»» Script output:
«timed out after 25 seconds»
»»»»» Script exit code: 0
»»»»» Script exit signal: 1 (SIGHUP)
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 1 (SIGHUP), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing d2df5b805db39e1deee23a62d4d7b1c444ca9c7c
»»»»» Script output:
«timed out after 25 seconds»
»»»»» Script exit code: 0
»»»»» Script exit signal: 1 (SIGHUP)
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 1 (SIGHUP), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 541a4f1628e4e156f6eefc547938746f7b736104
»»»»» Script output:
«timed out after 25 seconds»
»»»»» Script exit code: 0
»»»»» Script exit signal: 1 (SIGHUP)
»»»»» Bisecting by exit signal
»»»»» Current exit signal is 1 (SIGHUP), exit signal on “old” revision is 0 (None)
»»»»» If exit signal is not the same as on “old” revision, this revision will be marked as “new”
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
541a4f1628e4e156f6eefc547938746f7b736104 is the first new commit
commit 541a4f1628e4e156f6eefc547938746f7b736104
Author: Jonathan Worthington <jnthn@jnthn.net>
Date: Mon Jan 7 17:30:58 2019 +0100
More aggressive scope flattening
Previously, we would only ever flatten away lexical scopes if we saw
that there were no declarations inside of that scope, the only special
case being `$_`, which was handled specially. There was also some
special mechanism in place to try and handle topic rebinds correctly.
Recently, lexical to local lowering became more powerful, able to deal
with normal lexical variables rather than just parameters and name
bindings. This handling takes in $_ too.
This commit replaces the scope flattening mechanism with one that, at
its heart, will flatten in an immediate block if all of its variables
were lowered. This means that in a program like:
my $a = 42;
if $a > 21 {
my $b = 10;
if $b < 200 {
say $a + $b
}
}
Then both of those scopes flatten away, thanks to both `$a` and `$b`
having been lowered. Previously, only the innermost one would have been,
thanks to the declaration of `$b`.
Since the `$_` in each block is now also lowered to a local when
possible, then we can replace the `getouterlex` calls with a simple
bind, and do away with the topic preservation mechanism, which was
always rather cheaty.
:040000 040000 322a5751d03238a1cdfce7c2b73fe274dde6cde8 6707b5c3fbc65c7f86483adcab963b26c57655a1 M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment