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 |