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

Issue 10264011: Materialize all constant operands on the stack in the non-optimizing compiler. (Closed)

Created:
8 years, 7 months ago by Kevin Millikin (Google)
Modified:
8 years, 7 months ago
Reviewers:
srdjan
CC:
reviews_dartlang.org
Visibility:
Public.

Description

Materialize all constant operands on the stack in the non-optimizing compiler. This eliminates the distinction between 'value' and 'argument value'. R=srdjan@google.com BUG= TEST= Committed: https://code.google.com/p/dart/source/detail?r=7181

Patch Set 1 #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+71 lines, -114 lines) Patch
M runtime/vm/flow_graph_builder.h View 4 chunks +6 lines, -23 lines 0 comments Download
M runtime/vm/flow_graph_builder.cc View 35 chunks +65 lines, -80 lines 2 comments Download
M runtime/vm/flow_graph_compiler_x64.cc View 1 chunk +0 lines, -11 lines 2 comments Download

Messages

Total messages: 2 (0 generated)
Kevin Millikin (Google)
http://codereview.chromium.org/10264011/diff/1/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): http://codereview.chromium.org/10264011/diff/1/runtime/vm/flow_graph_builder.cc#newcode278 runtime/vm/flow_graph_builder.cc:278: if ((value != NULL) && value->IsLiteralNode()) { We still ...
8 years, 7 months ago (2012-04-30 14:54:52 UTC) #1
srdjan
8 years, 7 months ago (2012-05-01 00:56:10 UTC) #2
LGTM

http://codereview.chromium.org/10264011/diff/1/runtime/vm/flow_graph_compiler...
File runtime/vm/flow_graph_compiler_x64.cc (left):

http://codereview.chromium.org/10264011/diff/1/runtime/vm/flow_graph_compiler...
runtime/vm/flow_graph_compiler_x64.cc:1229: #ifdef DEBUG
On 2012/04/30 14:54:53, kmillikin wrote:
> This assert doesn't work anymore because we can have un-popped expression
values
> on the stack when we return.  Example:
> 
> try {
>   return 0;
> } finally {
>   return 1;
> }
> 
> The value of 0 is sitting on the stack at the return from the finally.  (It
> didn't really work before either).
> 
> We can reintroduce it when (if) we add stack height tracking and assert the
> expected height.

This assert code is/was essential for tracking/locating bugs so far (catches
bugs that otherwise wold go unnoticed). There is difference between what we
track and what the reality is.

Is there a way that we could keep it? Maybe disable it temporarily for now?

Powered by Google App Engine
This is Rietveld 408576698