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: src/compiler/simplified-lowering.cc

Issue 2171703002: [turbofan] Sanitize the Truncation query method names. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@TurboFan_SimplifiedLowering_TruncationNone
Patch Set: Created 4 years, 5 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 | « src/compiler/representation-change.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/simplified-lowering.cc
diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
index cd57dba2099478368dd0dde1c11cccbc295912c7..d920db83f508c708f0ba558b3f8fe7e2ecb4d628 100644
--- a/src/compiler/simplified-lowering.cc
+++ b/src/compiler/simplified-lowering.cc
@@ -865,13 +865,13 @@ class RepresentationSelector {
return MachineRepresentation::kNone;
} else if (type->Is(Type::Signed32()) || type->Is(Type::Unsigned32())) {
return MachineRepresentation::kWord32;
- } else if (use.TruncatesToWord32()) {
+ } else if (use.IsUsedAsWord32()) {
return MachineRepresentation::kWord32;
} else if (type->Is(Type::Boolean())) {
return MachineRepresentation::kBit;
} else if (type->Is(Type::Number())) {
return MachineRepresentation::kFloat64;
- } else if (use.TruncatesToFloat64()) {
+ } else if (use.IsUsedAsFloat64()) {
return MachineRepresentation::kFloat64;
} else if (type->Is(Type::Internal())) {
// We mark (u)int64 as Type::Internal.
@@ -1101,7 +1101,7 @@ class RepresentationSelector {
// If one of the inputs is positive and/or truncation is being applied,
// there is no need to return -0.
CheckForMinusZeroMode mz_mode =
- truncation.TruncatesToWord32() ||
+ truncation.IsUsedAsWord32() ||
(input0_type->Is(Type::OrderedNumber()) &&
input0_type->Min() > 0) ||
(input1_type->Is(Type::OrderedNumber()) &&
@@ -1133,7 +1133,7 @@ class RepresentationSelector {
// Use truncation if available.
if (BothInputsAre(node, type_cache_.kAdditiveSafeIntegerOrMinusZero) &&
- truncation.TruncatesToWord32()) {
+ truncation.IsUsedAsWord32()) {
// safe-int + safe-int = x (truncated to int32)
// => signed Int32Add/Sub (truncated)
VisitWord32TruncatingBinop(node);
@@ -1242,10 +1242,10 @@ class RepresentationSelector {
case IrOpcode::kJSToNumber: {
VisitInputs(node);
// TODO(bmeurer): Optimize somewhat based on input type?
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
SetOutput(node, MachineRepresentation::kWord32);
if (lower()) lowering->DoJSToNumberTruncatesToWord32(node, this);
- } else if (truncation.TruncatesToFloat64()) {
+ } else if (truncation.IsUsedAsFloat64()) {
SetOutput(node, MachineRepresentation::kFloat64);
if (lower()) lowering->DoJSToNumberTruncatesToFloat64(node, this);
} else {
@@ -1347,7 +1347,7 @@ class RepresentationSelector {
if (lower()) NodeProperties::ChangeOp(node, Int32Op(node));
} else if (BothInputsAre(node,
type_cache_.kAdditiveSafeIntegerOrMinusZero) &&
- truncation.TruncatesToWord32()) {
+ truncation.IsUsedAsWord32()) {
// safe-int + safe-int = x (truncated to int32)
// => signed Int32Add/Sub (truncated)
VisitWord32TruncatingBinop(node);
@@ -1364,7 +1364,7 @@ class RepresentationSelector {
if (BothInputsAre(node, Type::Integral32()) &&
(NodeProperties::GetType(node)->Is(Type::Signed32()) ||
NodeProperties::GetType(node)->Is(Type::Unsigned32()) ||
- (truncation.TruncatesToWord32() &&
+ (truncation.IsUsedAsWord32() &&
NodeProperties::GetType(node)->Is(
type_cache_.kSafeIntegerOrMinusZero)))) {
// Multiply reduces to Int32Mul if the inputs are integers, and
@@ -1417,7 +1417,7 @@ class RepresentationSelector {
if (BothInputsAre(node, Type::Integral32()) &&
(NodeProperties::GetType(node)->Is(Type::Signed32()) ||
NodeProperties::GetType(node)->Is(Type::Unsigned32()) ||
- (truncation.TruncatesToWord32() &&
+ (truncation.IsUsedAsWord32() &&
NodeProperties::GetType(node)->Is(
type_cache_.kSafeIntegerOrMinusZero)))) {
// Multiply reduces to Int32Mul if the inputs are integers, and
@@ -1436,7 +1436,7 @@ class RepresentationSelector {
}
case IrOpcode::kSpeculativeNumberDivide: {
if (truncation.IsUnused()) return VisitUnused(node);
- if (BothInputsAreUnsigned32(node) && truncation.TruncatesToWord32()) {
+ if (BothInputsAreUnsigned32(node) && truncation.IsUsedAsWord32()) {
// => unsigned Uint32Div
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Uint32Div(node));
@@ -1449,7 +1449,7 @@ class RepresentationSelector {
if (lower()) DeferReplacement(node, lowering->Int32Div(node));
return;
}
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
// => signed Int32Div
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Int32Div(node));
@@ -1488,7 +1488,7 @@ class RepresentationSelector {
if (hint == BinaryOperationHints::kSignedSmall ||
hint == BinaryOperationHints::kSigned32) {
// If the result is truncated, we only need to check the inputs.
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
VisitBinop(node, UseInfo::CheckedSigned32AsWord32(),
MachineRepresentation::kWord32);
if (lower()) DeferReplacement(node, lowering->Int32Div(node));
@@ -1507,7 +1507,7 @@ class RepresentationSelector {
return;
}
case IrOpcode::kNumberDivide: {
- if (BothInputsAreUnsigned32(node) && truncation.TruncatesToWord32()) {
+ if (BothInputsAreUnsigned32(node) && truncation.IsUsedAsWord32()) {
// => unsigned Uint32Div
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Uint32Div(node));
@@ -1520,7 +1520,7 @@ class RepresentationSelector {
if (lower()) DeferReplacement(node, lowering->Int32Div(node));
return;
}
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
// => signed Int32Div
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Int32Div(node));
@@ -1542,7 +1542,7 @@ class RepresentationSelector {
}
case IrOpcode::kSpeculativeNumberModulus: {
if (truncation.IsUnused()) return VisitUnused(node);
- if (BothInputsAreUnsigned32(node) && truncation.TruncatesToWord32()) {
+ if (BothInputsAreUnsigned32(node) && truncation.IsUsedAsWord32()) {
// => unsigned Uint32Mod
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Uint32Mod(node));
@@ -1555,7 +1555,7 @@ class RepresentationSelector {
if (lower()) DeferReplacement(node, lowering->Int32Mod(node));
return;
}
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
// => signed Int32Mod
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Int32Mod(node));
@@ -1594,7 +1594,7 @@ class RepresentationSelector {
if (hint == BinaryOperationHints::kSignedSmall ||
hint == BinaryOperationHints::kSigned32) {
// If the result is truncated, we only need to check the inputs.
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
VisitBinop(node, UseInfo::CheckedSigned32AsWord32(),
MachineRepresentation::kWord32);
if (lower()) DeferReplacement(node, lowering->Int32Mod(node));
@@ -1613,7 +1613,7 @@ class RepresentationSelector {
return;
}
case IrOpcode::kNumberModulus: {
- if (BothInputsAreUnsigned32(node) && truncation.TruncatesToWord32()) {
+ if (BothInputsAreUnsigned32(node) && truncation.IsUsedAsWord32()) {
// => unsigned Uint32Mod
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Uint32Mod(node));
@@ -1626,7 +1626,7 @@ class RepresentationSelector {
if (lower()) DeferReplacement(node, lowering->Int32Mod(node));
return;
}
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
// => signed Int32Mod
VisitWord32TruncatingBinop(node);
if (lower()) DeferReplacement(node, lowering->Int32Mod(node));
@@ -1670,7 +1670,7 @@ class RepresentationSelector {
if (hint == BinaryOperationHints::kSignedSmall ||
hint == BinaryOperationHints::kSigned32) {
Type* rhs_type = GetUpperBound(node->InputAt(1));
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
VisitBinop(node, UseInfo::CheckedSigned32AsWord32(),
MachineRepresentation::kWord32);
if (lower()) {
@@ -1922,7 +1922,7 @@ class RepresentationSelector {
}
case IrOpcode::kCheckNumber: {
if (InputIs(node, Type::Number())) {
- if (truncation.TruncatesToWord32()) {
+ if (truncation.IsUsedAsWord32()) {
VisitUnop(node, UseInfo::TruncatingWord32(),
MachineRepresentation::kWord32);
} else {
@@ -1949,7 +1949,7 @@ class RepresentationSelector {
return;
}
case IrOpcode::kCheckTaggedSigned: {
- if (SmiValuesAre32Bits() && truncation.TruncatesToWord32()) {
+ if (SmiValuesAre32Bits() && truncation.IsUsedAsWord32()) {
// TODO(jarin,bmeurer): Add CheckedSignedSmallAsWord32?
VisitUnop(node, UseInfo::CheckedSigned32AsWord32(),
MachineRepresentation::kWord32);
@@ -1976,7 +1976,7 @@ class RepresentationSelector {
// is exactly the Word32 we are looking for, and therefore avoid a nasty
// right shift afterwards.
// TODO(bmeurer): Introduce an appropriate tagged-signed machine rep.
- if (truncation.TruncatesToWord32() &&
+ if (truncation.IsUsedAsWord32() &&
representation == MachineRepresentation::kTagged &&
access.type->Is(Type::TaggedSigned()) && SmiValuesAre32Bits()) {
VisitUnop(node, UseInfoForBasePointer(access),
@@ -2024,8 +2024,8 @@ class RepresentationSelector {
ProcessRemainingInputs(node, 3);
MachineRepresentation output;
- if (truncation.TruncatesUndefinedToZeroOrNaN()) {
- if (truncation.TruncatesNaNToZero()) {
+ if (truncation.IdentifiesUndefinedAndNaNAndZero()) {
+ if (truncation.IdentifiesNaNAndZero()) {
// If undefined is truncated to a non-NaN number, we can use
// the load's representation.
output = access.machine_type().representation();
@@ -2066,8 +2066,8 @@ class RepresentationSelector {
if (truncation.IsUnused()) return VisitUnused(node);
ElementAccess access = ElementAccessOf(node->op());
VisitBinop(node, UseInfoForBasePointer(access),
- UseInfo::TruncatingWord32(),
- access.machine_type.representation());
+ UseInfo::TruncatingWord32(),
+ access.machine_type.representation());
return;
}
case IrOpcode::kStoreElement: {
@@ -2098,7 +2098,7 @@ class RepresentationSelector {
} else if (InputIs(node, Type::String())) {
VisitUnop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged);
if (lower()) lowering->DoStringToNumber(node);
- } else if (truncation.TruncatesToWord32()) {
+ } else if (truncation.IsUsedAsWord32()) {
if (InputIs(node, Type::NumberOrOddball())) {
VisitUnop(node, UseInfo::TruncatingWord32(),
MachineRepresentation::kWord32);
@@ -2111,7 +2111,7 @@ class RepresentationSelector {
simplified()->PlainPrimitiveToWord32());
}
}
- } else if (truncation.TruncatesToFloat64()) {
+ } else if (truncation.IsUsedAsFloat64()) {
if (InputIs(node, Type::NumberOrOddball())) {
VisitUnop(node, UseInfo::TruncatingFloat64(),
MachineRepresentation::kFloat64);
@@ -2145,7 +2145,7 @@ class RepresentationSelector {
ProcessInput(node, 0, UseInfo::TruncatingFloat64());
ProcessRemainingInputs(node, 1);
SetOutput(node, MachineRepresentation::kFloat64);
- if (truncation.TruncatesToFloat64() &&
+ if (truncation.IsUsedAsFloat64() &&
mode == CheckFloat64HoleMode::kAllowReturnHole) {
if (lower()) DeferReplacement(node, node->InputAt(0));
}
@@ -2153,7 +2153,7 @@ class RepresentationSelector {
}
case IrOpcode::kCheckTaggedHole: {
CheckTaggedHoleMode mode = CheckTaggedHoleModeOf(node->op());
- if (truncation.TruncatesToWord32() &&
+ if (truncation.IsUsedAsWord32() &&
mode == CheckTaggedHoleMode::kConvertHoleToUndefined) {
ProcessInput(node, 0, UseInfo::CheckedSigned32AsWord32());
ProcessRemainingInputs(node, 1);
« no previous file with comments | « src/compiler/representation-change.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698