| Index: runtime/vm/intermediate_language.cc
|
| diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
|
| index 06c6088d33d717e0b1a8c2b8b460d3d45478c16d..20ac7f89f69e30d6eb714619afdcbc90e002ea18 100644
|
| --- a/runtime/vm/intermediate_language.cc
|
| +++ b/runtime/vm/intermediate_language.cc
|
| @@ -1439,6 +1439,27 @@ void PushArgumentInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
|
|
| +// Helper to either use the constant value of a defintion or the defintion.
|
| +static Value* UseDefinition(Definition* defn) {
|
| + if (defn->IsBind() && defn->AsBind()->computation()->IsConstant()) {
|
| + return defn->AsBind()->computation()->AsConstant();
|
| + } else {
|
| + return new UseVal(defn);
|
| + }
|
| +}
|
| +
|
| +
|
| +Environment::Environment(const GrowableArray<Definition*>& definitions,
|
| + intptr_t fixed_parameter_count)
|
| + : values_(definitions.length()),
|
| + locations_(NULL),
|
| + fixed_parameter_count_(fixed_parameter_count) {
|
| + for (intptr_t i = 0; i < definitions.length(); ++i) {
|
| + values_.Add(UseDefinition(definitions[i]));
|
| + }
|
| +}
|
| +
|
| +
|
| #undef __
|
|
|
| } // namespace dart
|
|
|