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

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

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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 | « pkg/compiler/lib/src/ssa/types.dart ('k') | pkg/compiler/lib/src/ssa/validate.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/ssa/types_propagation.dart
diff --git a/pkg/compiler/lib/src/ssa/types_propagation.dart b/pkg/compiler/lib/src/ssa/types_propagation.dart
index 49373dc08e30f4fc12ad64210f3cc5f49584c33c..e5ad51361666fd50fbaef0d92041761be01c8628 100644
--- a/pkg/compiler/lib/src/ssa/types_propagation.dart
+++ b/pkg/compiler/lib/src/ssa/types_propagation.dart
@@ -98,7 +98,6 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
} while (!worklist.isEmpty);
}
-
void addToWorkList(HInstruction instruction) {
final int id = instruction.id;
@@ -175,12 +174,12 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
// We must make sure a type conversion for receiver or argument check
// does not try to do an int check, because an int check is not enough.
// We only do an int check if the input is integer or null.
- if (checkedType.containsOnlyNum(classWorld)
- && !checkedType.containsOnlyDouble(classWorld)
- && input.isIntegerOrNull(compiler)) {
+ if (checkedType.containsOnlyNum(classWorld) &&
+ !checkedType.containsOnlyDouble(classWorld) &&
+ input.isIntegerOrNull(compiler)) {
instruction.checkedType = backend.intType;
- } else if (checkedType.containsOnlyInt(classWorld)
- && !input.isIntegerOrNull(compiler)) {
+ } else if (checkedType.containsOnlyInt(classWorld) &&
+ !input.isIntegerOrNull(compiler)) {
instruction.checkedType = backend.numType;
}
}
@@ -192,8 +191,8 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
// can be a literal double '8.0' that is marked as an integer (because 'is
// int' will return 'true'). What we really need to do is make the
// overlap between int and double values explicit in the TypeMask system.
- if (inputType.containsOnlyInt(classWorld)
- && checkedType.containsOnlyDouble(classWorld)) {
+ if (inputType.containsOnlyInt(classWorld) &&
+ checkedType.containsOnlyDouble(classWorld)) {
if (inputType.isNullable && checkedType.isNullable) {
outputType = backend.doubleType.nullable();
} else {
@@ -218,22 +217,19 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
return outputType;
}
- void convertInput(HInvokeDynamic instruction,
- HInstruction input,
- TypeMask type,
- int kind) {
+ void convertInput(
+ HInvokeDynamic instruction, HInstruction input, TypeMask type, int kind) {
Selector selector = (kind == HTypeConversion.RECEIVER_TYPE_CHECK)
? instruction.selector
: null;
- HTypeConversion converted = new HTypeConversion(
- null, kind, type, input, selector)
- ..sourceInformation = instruction.sourceInformation;
+ HTypeConversion converted =
+ new HTypeConversion(null, kind, type, input, selector)
+ ..sourceInformation = instruction.sourceInformation;
instruction.block.addBefore(instruction, converted);
input.replaceAllUsersDominatedBy(instruction, converted);
}
- bool isCheckEnoughForNsmOrAe(HInstruction instruction,
- TypeMask type) {
+ bool isCheckEnoughForNsmOrAe(HInstruction instruction, TypeMask type) {
// In some cases, we want the receiver to be an integer,
// but that does not mean we will get a NoSuchMethodError
// if it's not: the receiver could be a double.
@@ -254,20 +250,20 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
HInstruction receiver = instruction.inputs[1];
if (receiver.isNumber(compiler)) return false;
if (receiver.isNumberOrNull(compiler)) {
- convertInput(instruction,
- receiver,
- receiver.instructionType.nonNullable(),
- HTypeConversion.RECEIVER_TYPE_CHECK);
+ convertInput(
+ instruction,
+ receiver,
+ receiver.instructionType.nonNullable(),
+ HTypeConversion.RECEIVER_TYPE_CHECK);
return true;
} else if (instruction.element == null) {
- Iterable<Element> targets =
- compiler.world.allFunctions.filter(
- instruction.selector, instruction.mask);
+ Iterable<Element> targets = compiler.world.allFunctions
+ .filter(instruction.selector, instruction.mask);
if (targets.length == 1) {
Element target = targets.first;
ClassElement cls = target.enclosingClass;
- TypeMask type = new TypeMask.nonNullSubclass(
- cls.declaration, classWorld);
+ TypeMask type =
+ new TypeMask.nonNullSubclass(cls.declaration, classWorld);
// TODO(ngeoffray): We currently only optimize on primitive
// types.
if (!type.satisfies(backend.helpers.jsIndexableClass, classWorld) &&
@@ -277,10 +273,8 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
}
if (!isCheckEnoughForNsmOrAe(receiver, type)) return false;
instruction.element = target;
- convertInput(instruction,
- receiver,
- type,
- HTypeConversion.RECEIVER_TYPE_CHECK);
+ convertInput(
+ instruction, receiver, type, HTypeConversion.RECEIVER_TYPE_CHECK);
return true;
}
}
@@ -306,10 +300,8 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
// variant and will do the check in their method anyway. We
// still add a check because it allows to GVN these operations,
// but we should find a better way.
- convertInput(instruction,
- right,
- type,
- HTypeConversion.ARGUMENT_TYPE_CHECK);
+ convertInput(
+ instruction, right, type, HTypeConversion.ARGUMENT_TYPE_CHECK);
return true;
}
return false;
@@ -339,18 +331,19 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
// We cannot do the following optimization now, because we have
// to wait for the type propagation to be stable. The receiver
// of [instruction] might move from number to dynamic.
- pendingOptimizations.putIfAbsent(instruction, () => () {
- Selector selector = instruction.selector;
- if (selector.isOperator && selector.name != '==') {
- if (checkReceiver(instruction)) {
- addAllUsersBut(instruction, instruction.inputs[1]);
- }
- if (!selector.isUnaryOperator &&
- checkArgument(instruction)) {
- addAllUsersBut(instruction, instruction.inputs[2]);
- }
- }
- });
+ pendingOptimizations.putIfAbsent(
+ instruction,
+ () => () {
+ Selector selector = instruction.selector;
+ if (selector.isOperator && selector.name != '==') {
+ if (checkReceiver(instruction)) {
+ addAllUsersBut(instruction, instruction.inputs[1]);
+ }
+ if (!selector.isUnaryOperator && checkArgument(instruction)) {
+ addAllUsersBut(instruction, instruction.inputs[2]);
+ }
+ }
+ });
}
HInstruction receiver = instruction.getDartReceiver(compiler);
@@ -358,10 +351,10 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
instruction.mask = receiverType;
// Try to specialize the receiver after this call.
- if (receiver.dominatedUsers(instruction).length != 1
- && !instruction.selector.isClosureCall) {
- TypeMask newType = compiler.world.allFunctions.receiverType(
- instruction.selector, instruction.mask);
+ if (receiver.dominatedUsers(instruction).length != 1 &&
+ !instruction.selector.isClosureCall) {
+ TypeMask newType = compiler.world.allFunctions
+ .receiverType(instruction.selector, instruction.mask);
newType = newType.intersection(receiverType, classWorld);
var next = instruction.next;
if (next is HTypeKnown && next.checkedInput == receiver) {
@@ -385,7 +378,7 @@ class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
}
}
- return instruction.specializer.computeTypeFromInputTypes(
- instruction, compiler);
+ return instruction.specializer
+ .computeTypeFromInputTypes(instruction, compiler);
}
}
« no previous file with comments | « pkg/compiler/lib/src/ssa/types.dart ('k') | pkg/compiler/lib/src/ssa/validate.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698