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

Unified Diff: pkg/compiler/lib/src/ssa/optimize.dart

Issue 2294123003: Revert "Fold HTypeInfoReadVariable of instance creation." (Closed)
Patch Set: Created 4 years, 4 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 | « no previous file | tests/compiler/dart2js_extra/27198_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/ssa/optimize.dart
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 4700112b3211ec528f9b1bd3194091f8c985be00..031922228f881912a882b621935a64d4a3312644 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -1057,34 +1057,6 @@ class SsaInstructionSimplifier extends HBaseVisitor
return node;
}
- /// Read the type variable from an allocation of type [createdClass], where
- /// [selectTypeArgumentFromObjectCreation] extracts the type argument from
- /// the allocation for factory constructor call.
- HInstruction finishSubstituted(ClassElement createdClass,
- HInstruction selectTypeArgumentFromObjectCreation(int index)) {
- HInstruction instructionForTypeVariable(TypeVariableType tv) {
- return selectTypeArgumentFromObjectCreation(
- createdClass.thisType.typeArguments.indexOf(tv));
- }
-
- DartType type = createdClass.thisType
- .asInstanceOf(variable.element.enclosingClass)
- .typeArguments[variable.element.index];
- if (type is TypeVariableType) {
- return instructionForTypeVariable(type);
- }
- List<HInstruction> arguments = <HInstruction>[];
- type.forEachTypeVariable((v) {
- arguments.add(instructionForTypeVariable(v));
- });
- HInstruction replacement = new HTypeInfoExpression(
- TypeInfoExpressionKind.COMPLETE,
- type,
- arguments,
- backend.dynamicType);
- return replacement;
- }
-
// Type variable evaluated in the context of a constant can be replaced with
// a ground term type.
if (object is HConstant) {
@@ -1095,42 +1067,10 @@ class SsaInstructionSimplifier extends HBaseVisitor
return node;
}
- // Look for an allocation with type information and re-write type variable
- // as a function of the type parameters of the allocation. This effectively
- // store-forwards a type variable read through an allocation.
-
- // Match:
- //
- // setRuntimeTypeInfo(
- // HForeignNew(ClassElement),
- // HTypeInfoExpression(t_0, t_1, t_2, ...));
- //
- // The `t_i` are the values of the type parameters of ClassElement.
- if (object is HInvokeStatic) {
- if (object.element == helpers.setRuntimeTypeInfo) {
- HInstruction allocation = object.inputs[0];
- if (allocation is HForeignNew) {
- HInstruction typeInfo = object.inputs[1];
- if (typeInfo is HTypeInfoExpression) {
- return finishSubstituted(
- allocation.element, (int index) => typeInfo.inputs[index]);
- }
- }
- return node;
- }
- // TODO(sra): Factory constructors pass type arguments after the value
- // arguments. The [select] argument indexes into these type arguments.
- }
-
- // Non-generic type (which extends or mixes in a generic type, for example
- // CodeUnits extends UnmodifiableListBase<int>).
- // Also used for raw-type when the type parameters are elided.
- if (object is HForeignNew) {
- return finishSubstituted(
- object.element,
- // If there are type arguments, all type arguments are 'dynamic'.
- (int i) => graph.addConstantNull(compiler));
- }
+ // TODO(sra): HTypeInfoReadVariable on an instance creation can be replaced
+ // with an input of the instance creation's HTypeInfoExpression (or a
+ // HTypeInfoExpression of an input). This would in effect store-forward the
+ // type parameters.
return node;
}
« no previous file with comments | « no previous file | tests/compiler/dart2js_extra/27198_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698