Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Issue 9601009: Change labeled statement to use visitSubGraph for its body instead of marking its "exit block" spec… (Closed)

Created:
8 years, 9 months ago by Lasse Reichstein Nielsen
Modified:
8 years, 9 months ago
Reviewers:
floitsch, ngeoffray
CC:
reviews_dartlang.org
Visibility:
Public.

Description

Change labeled statement to use visitSubGraph for its body instead of marking its "exit block" specially. Committed: https://code.google.com/p/dart/source/detail?r=5014

Patch Set 1 #

Total comments: 4

Patch Set 2 : Changed approach to avoiding bad recursion. #

Total comments: 2

Patch Set 3 : Address review comment. add more tests. #

Total comments: 8
Unified diffs Side-by-side diffs Delta from patch set Stats (+71 lines, -44 lines) Patch
M frog/leg/ssa/builder.dart View 1 2 chunks +2 lines, -7 lines 2 comments Download
M frog/leg/ssa/codegen.dart View 1 2 2 chunks +35 lines, -29 lines 4 comments Download
M frog/leg/ssa/nodes.dart View 1 chunk +3 lines, -3 lines 0 comments Download
M frog/tests/leg_only/src/BreakTest.dart View 1 2 2 chunks +31 lines, -1 line 2 comments Download
M tests/co19/co19-leg.status View 1 chunk +0 lines, -4 lines 0 comments Download

Messages

Total messages: 9 (0 generated)
Lasse Reichstein Nielsen
8 years, 9 months ago (2012-03-05 14:07:23 UTC) #1
ngeoffray
LGTM! https://chromiumcodereview.appspot.com/9601009/diff/1/frog/leg/ssa/builder.dart File frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9601009/diff/1/frog/leg/ssa/builder.dart#newcode2261 frog/leg/ssa/builder.dart:2261: handler.close(); Any reason why the close is between ...
8 years, 9 months ago (2012-03-05 14:12:48 UTC) #2
Lasse Reichstein Nielsen
https://chromiumcodereview.appspot.com/9601009/diff/1/frog/leg/ssa/builder.dart File frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9601009/diff/1/frog/leg/ssa/builder.dart#newcode2261 frog/leg/ssa/builder.dart:2261: handler.close(); No. It just needs to be after handler.labels() ...
8 years, 9 months ago (2012-03-05 14:16:49 UTC) #3
floitsch
Waiting for the corrected version, but so far looks good.
8 years, 9 months ago (2012-03-05 14:21:17 UTC) #4
Lasse Reichstein Nielsen
Updated, please take a new look.
8 years, 9 months ago (2012-03-06 08:58:08 UTC) #5
floitsch
LGTM. https://chromiumcodereview.appspot.com/9601009/diff/1005/frog/leg/ssa/codegen.dart File frog/leg/ssa/codegen.dart (right): https://chromiumcodereview.appspot.com/9601009/diff/1005/frog/leg/ssa/codegen.dart#newcode107 frog/leg/ssa/codegen.dart:107: // Restriction on the block traversal. That comment ...
8 years, 9 months ago (2012-03-06 10:12:13 UTC) #6
Lasse Reichstein Nielsen
https://chromiumcodereview.appspot.com/9601009/diff/1005/frog/leg/ssa/codegen.dart File frog/leg/ssa/codegen.dart (right): https://chromiumcodereview.appspot.com/9601009/diff/1005/frog/leg/ssa/codegen.dart#newcode107 frog/leg/ssa/codegen.dart:107: // Restriction on the block traversal. Reworded.
8 years, 9 months ago (2012-03-06 10:20:43 UTC) #7
ngeoffray
https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/builder.dart File frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/builder.dart#newcode2261 frog/leg/ssa/builder.dart:2261: handler.close(); Move the close around? https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/codegen.dart File frog/leg/ssa/codegen.dart (right): ...
8 years, 9 months ago (2012-03-06 11:17:37 UTC) #8
Lasse Reichstein Nielsen
8 years, 9 months ago (2012-03-08 09:02:02 UTC) #9
https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/builder...
File frog/leg/ssa/builder.dart (right):

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/builder...
frog/leg/ssa/builder.dart:2261: handler.close();
I did. On another computer. Bad sync!

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/codegen...
File frog/leg/ssa/codegen.dart (right):

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/codegen...
frog/leg/ssa/codegen.dart:105: // Used to break bad recursion.
Infinite recursion, recursing on the same input again. Will reword.

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/leg/ssa/codegen...
frog/leg/ssa/codegen.dart:267: // don't handle it again.
For a labeled expression, the "HLabeledBlockInformation" is put on the first
block of the body, which is also the first block of the subgraph.
Any suggestions for redesign are appreciated.

VisitBasicBlock is called by visitSubGraph, and the label/loop tests are
necessary for that (they can be branches of an if, which also uses
visitSubGraph).

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/tests/leg_only/...
File frog/tests/leg_only/src/BreakTest.dart (right):

https://chromiumcodereview.appspot.com/9601009/diff/7002/frog/tests/leg_only/...
frog/tests/leg_only/src/BreakTest.dart:122: }
That's actually deliberate, because I indent relative to the if. I should
probably indent relative to the foo: label.

Powered by Google App Engine
This is Rietveld 408576698