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

Unified Diff: runtime/vm/flow_graph_builder.cc

Issue 197283004: Generate smaller unoptimized code for certain expressions. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/flow_graph.cc ('k') | runtime/vm/il_printer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_builder.cc
===================================================================
--- runtime/vm/flow_graph_builder.cc (revision 33576)
+++ runtime/vm/flow_graph_builder.cc (working copy)
@@ -2106,34 +2106,19 @@
void EffectGraphVisitor::VisitLetNode(LetNode* node) {
+ BuildLetTempExpressions(node);
+
+ // Visit body.
+ for (intptr_t i = 0; i < node->nodes().length(); ++i) {
+ EffectGraphVisitor for_effect(owner());
+ node->nodes()[i]->Visit(&for_effect);
+ Append(for_effect);
+ }
+
intptr_t num_temps = node->num_temps();
if (num_temps > 0) {
- BuildLetTempExpressions(node);
- // TODO(fschneider): Generate better code for effect context by visiting the
- // body for effect. Currently, the value of the body expression is
- // materialized and then dropped. This also requires changing DropTempsInstr
- // to have zero or one inputs.
-
- // Visit body.
- for (intptr_t i = 0; i < node->nodes().length() - 1; ++i) {
- EffectGraphVisitor for_effect(owner());
- node->nodes()[i]->Visit(&for_effect);
- Append(for_effect);
- }
- // Visit the last body expression for value.
- ValueGraphVisitor for_value(owner());
- node->nodes().Last()->Visit(&for_value);
- Append(for_value);
- Value* result_value = for_value.value();
owner()->DeallocateTemps(num_temps);
- Do(new DropTempsInstr(num_temps, result_value));
- } else {
- ASSERT(num_temps == 0);
- for (intptr_t i = 0; i < node->nodes().length(); ++i) {
- EffectGraphVisitor for_effect(owner());
- node->nodes()[i]->Visit(&for_effect);
- Append(for_effect);
- }
+ Do(new DropTempsInstr(num_temps));
}
}
« no previous file with comments | « runtime/vm/flow_graph.cc ('k') | runtime/vm/il_printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698