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

Issue 9599026: Generate code for some switch statements. (Closed)

Created:
8 years, 9 months ago by ahe
Modified:
8 years, 9 months ago
CC:
reviews_dartlang.org, compiler-dev_dartlang.org
Visibility:
Public.

Description

Generate code for some switch statements. Committed: https://code.google.com/p/dart/source/detail?r=5013

Patch Set 1 : changes #

Patch Set 2 : Ensure switch statements are visited by the closurizer #

Patch Set 3 : Update status files and work around a failed assertion #

Total comments: 16

Patch Set 4 : Add a few comments #

Total comments: 17
Unified diffs Side-by-side diffs Delta from patch set Stats (+113 lines, -16 lines) Patch
M dart/frog/leg/ssa/builder.dart View 3 chunks +62 lines, -3 lines 12 comments Download
M dart/frog/leg/ssa/closure.dart View 1 2 1 chunk +0 lines, -4 lines 0 comments Download
M dart/frog/leg/ssa/optimize.dart View 1 2 3 1 chunk +3 lines, -1 line 5 comments Download
M dart/frog/leg/tree/nodes.dart View 2 chunks +17 lines, -3 lines 0 comments Download
A dart/frog/tests/leg_only/src/SwitchTest.dart View 1 2 3 1 chunk +29 lines, -0 lines 0 comments Download
M dart/tests/co19/co19-leg.status View 1 2 2 chunks +0 lines, -4 lines 0 comments Download
M dart/tests/language/language-leg.status View 1 2 2 chunks +2 lines, -1 line 0 comments Download

Messages

Total messages: 11 (0 generated)
ahe
8 years, 9 months ago (2012-03-05 22:15:47 UTC) #1
ahe
https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart#newcode1960 dart/frog/leg/ssa/builder.dart:1960: if (isAborted()) { Not sure about this. https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/optimize.dart File ...
8 years, 9 months ago (2012-03-05 22:58:34 UTC) #2
Lasse Reichstein Nielsen
LGTM https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart#newcode1960 dart/frog/leg/ssa/builder.dart:1960: if (isAborted()) { Seems like a reasonable warning. ...
8 years, 9 months ago (2012-03-06 08:57:13 UTC) #3
ahe
Hi Lasse, Thank you for your comments. Cheers, Peter https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/5002/dart/frog/leg/ssa/builder.dart#newcode1960 dart/frog/leg/ssa/builder.dart:1960: ...
8 years, 9 months ago (2012-03-06 09:16:50 UTC) #4
ngeoffray
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2291 dart/frog/leg/ssa/builder.dart:2291: Link cases = node.cases.nodes; Link -> Link<Node> ? https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2302 ...
8 years, 9 months ago (2012-03-06 11:49:48 UTC) #5
ahe
Hi Nicolas, Thank you for your comments. I'll follow up with another CL. Cheers, Peter ...
8 years, 9 months ago (2012-03-06 12:24:35 UTC) #6
ngeoffray
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2327 dart/frog/leg/ssa/builder.dart:2327: compiler.unimplemented("SsaBuilder for loop with aborting body", On 2012/03/06 12:24:35, ...
8 years, 9 months ago (2012-03-06 12:32:55 UTC) #7
Lasse Reichstein Nielsen
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2327 dart/frog/leg/ssa/builder.dart:2327: compiler.unimplemented("SsaBuilder for loop with aborting body", I don't read ...
8 years, 9 months ago (2012-03-06 12:53:50 UTC) #8
ahe
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2327 dart/frog/leg/ssa/builder.dart:2327: compiler.unimplemented("SsaBuilder for loop with aborting body", On 2012/03/06 12:53:50, ...
8 years, 9 months ago (2012-03-06 13:10:51 UTC) #9
Lasse Reichstein Nielsen
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart File dart/frog/leg/ssa/builder.dart (right): https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/builder.dart#newcode2327 dart/frog/leg/ssa/builder.dart:2327: compiler.unimplemented("SsaBuilder for loop with aborting body", I think that, ...
8 years, 9 months ago (2012-03-06 13:23:36 UTC) #10
ngeoffray
8 years, 9 months ago (2012-03-07 08:55:31 UTC) #11
https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/o...
File dart/frog/leg/ssa/optimize.dart (right):

https://chromiumcodereview.appspot.com/9599026/diff/12001/dart/frog/leg/ssa/o...
dart/frog/leg/ssa/optimize.dart:330: // TODO(ahe): Not sure the following is
correct.
On 2012/03/06 13:10:51, ahe wrote:
> On 2012/03/06 12:32:55, ngeoffray wrote:
> > On 2012/03/06 12:24:35, ahe wrote:
> > > On 2012/03/06 11:49:48, ngeoffray wrote:
> > > > Why did you need to add this? Was it on one test case or all?
> > > 
> > > Just one test case, I think.
> > 
> > Worth fixing? I'd rather keep the bug and try to fix it the right way.
> 
> I wanted to get rid of the assertion error. This is one of the problematic
> assertions I ranted about a few days ago. However, I could not figure out how
to
> turn it into an internal error.
> 
> I think a compiler crash is extremely bad, and I will do whatever it takes to
> get rid of them.
> 
> As far as I understand, this change is semantically correct, but may generate
> suboptimal code.

But you're fixing a symptom, not the bug. I think we both agree that we
definitely prefer *failing* (not crashing) tests compared to adding symptom
fixes. To avoid the crash, why don't you do:

if (!current.usedBy.isEmpty()) compiler.internalError("blah", instruction: phi);

If this does not work, you could also file a bug and reference it here.

Powered by Google App Engine
This is Rietveld 408576698