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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/scalar_replacement.dart

Issue 1458703007: dart2js cps: Refactor CallExpressions into Primitives. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Rebase Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 library dart2js.cps_ir.scalar_replacement; 4 library dart2js.cps_ir.scalar_replacement;
5 5
6 import 'optimizers.dart'; 6 import 'optimizers.dart';
7 7
8 import 'dart:collection' show Queue; 8 import 'dart:collection' show Queue;
9 9
10 import '../common.dart'; 10 import '../common.dart';
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // field's value. 135 // field's value.
136 for (Reference ref = allocation.firstRef; ref != null; ref = ref.next) { 136 for (Reference ref = allocation.firstRef; ref != null; ref = ref.next) {
137 Node use = ref.parent; 137 Node use = ref.parent;
138 if (use is GetField) { 138 if (use is GetField) {
139 GetField getField = use; 139 GetField getField = use;
140 MutableVariable variable = cells[getField.field]; 140 MutableVariable variable = cells[getField.field];
141 if (variable != null) { 141 if (variable != null) {
142 GetMutable getter = new GetMutable(variable); 142 GetMutable getter = new GetMutable(variable);
143 getter.type = getField.type; 143 getter.type = getField.type;
144 getter.variable.parent = getter; 144 getter.variable.parent = getter;
145 getter.substituteFor(getField); 145 getField.replaceUsesWith(getter);
146 replacePrimitive(getField, getter); 146 replacePrimitive(getField, getter);
147 deletePrimitive(getField); 147 deletePrimitive(getField);
148 } else { 148 } else {
149 Primitive value = fieldInitialValues[getField.field]; 149 Primitive value = fieldInitialValues[getField.field];
150 value.substituteFor(getField); 150 getField.replaceUsesWith(value);
151 deleteLetPrimOf(getField); 151 deleteLetPrimOf(getField);
152 } 152 }
153 } else if (use is SetField && use.object == ref) { 153 } else if (use is SetField && use.object == ref) {
154 SetField setField = use; 154 SetField setField = use;
155 MutableVariable variable = cells[setField.field]; 155 MutableVariable variable = cells[setField.field];
156 Primitive value = setField.value.definition; 156 Primitive value = setField.value.definition;
157 variable.type = variable.type.union(value.type, classWorld); 157 variable.type = variable.type.union(value.type, classWorld);
158 SetMutable setter = new SetMutable(variable, value); 158 SetMutable setter = new SetMutable(variable, value);
159 setter.variable.parent = setter; 159 setter.variable.parent = setter;
160 setter.value.parent = setter; 160 setter.value.parent = setter;
161 setter.substituteFor(setField); 161 setField.replaceUsesWith(setter);
162 replacePrimitive(setField, setter); 162 replacePrimitive(setField, setter);
163 deletePrimitive(setField); 163 deletePrimitive(setField);
164 } else { 164 } else {
165 assert(false); 165 assert(false);
166 } 166 }
167 } 167 }
168 168
169 // Delete [allocation] since that might 'free' another scalar replacement 169 // Delete [allocation] since that might 'free' another scalar replacement
170 // candidate by deleting the last non-field-access. 170 // candidate by deleting the last non-field-access.
171 deleteLetPrimOf(allocation); 171 deleteLetPrimOf(allocation);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 class ScalarReplacementRemovalVisitor extends TrampolineRecursiveVisitor { 220 class ScalarReplacementRemovalVisitor extends TrampolineRecursiveVisitor {
221 ScalarReplacementVisitor process; 221 ScalarReplacementVisitor process;
222 222
223 ScalarReplacementRemovalVisitor(this.process); 223 ScalarReplacementRemovalVisitor(this.process);
224 224
225 processReference(Reference reference) { 225 processReference(Reference reference) {
226 process.reconsider(reference.definition); 226 process.reconsider(reference.definition);
227 reference.unlink(); 227 reference.unlink();
228 } 228 }
229 } 229 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/remove_refinements.dart ('k') | pkg/compiler/lib/src/cps_ir/share_final_fields.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698