| Index: src/compiler/type-hints.cc
|
| diff --git a/src/compiler/type-hints.cc b/src/compiler/type-hints.cc
|
| index 2cf8f4d6c0ac2174c2aa872bbb6cc325306dd20e..06abad6380ef77f15981b41454c716311d89ce59 100644
|
| --- a/src/compiler/type-hints.cc
|
| +++ b/src/compiler/type-hints.cc
|
| @@ -32,6 +32,52 @@ std::ostream& operator<<(std::ostream& os, BinaryOperationHints hints) {
|
| return os << hints.left() << "*" << hints.right() << "->" << hints.result();
|
| }
|
|
|
| +
|
| +std::ostream& operator<<(std::ostream& os, ToBooleanHint hint) {
|
| + switch (hint) {
|
| + case ToBooleanHint::kNone:
|
| + return os << "None";
|
| + case ToBooleanHint::kUndefined:
|
| + return os << "Undefined";
|
| + case ToBooleanHint::kBoolean:
|
| + return os << "Boolean";
|
| + case ToBooleanHint::kNull:
|
| + return os << "Null";
|
| + case ToBooleanHint::kSmallInteger:
|
| + return os << "SmallInteger";
|
| + case ToBooleanHint::kReceiver:
|
| + return os << "Receiver";
|
| + case ToBooleanHint::kString:
|
| + return os << "String";
|
| + case ToBooleanHint::kSymbol:
|
| + return os << "Symbol";
|
| + case ToBooleanHint::kHeapNumber:
|
| + return os << "HeapNumber";
|
| + case ToBooleanHint::kSimdValue:
|
| + return os << "SimdValue";
|
| + case ToBooleanHint::kAny:
|
| + return os << "Any";
|
| + }
|
| + UNREACHABLE();
|
| + return os;
|
| +}
|
| +
|
| +
|
| +std::ostream& operator<<(std::ostream& os, ToBooleanHints hints) {
|
| + if (hints == ToBooleanHint::kAny) return os << "Any";
|
| + if (hints == ToBooleanHint::kNone) return os << "None";
|
| + bool first = true;
|
| + for (ToBooleanHints::mask_type i = 0; i < sizeof(i) * CHAR_BIT; ++i) {
|
| + ToBooleanHint const hint = static_cast<ToBooleanHint>(1u << i);
|
| + if (hints & hint) {
|
| + if (!first) os << "|";
|
| + first = false;
|
| + os << hint;
|
| + }
|
| + }
|
| + return os;
|
| +}
|
| +
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|