Index: src/compiler/frame-states.cc |
diff --git a/src/compiler/frame-states.cc b/src/compiler/frame-states.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d0dbfbb2be93cd60fc965aba5d8905e2e6a357aa |
--- /dev/null |
+++ b/src/compiler/frame-states.cc |
@@ -0,0 +1,53 @@ |
+// Copyright 2015 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "src/base/functional.h" |
+#include "src/compiler/frame-states.h" |
+ |
+namespace v8 { |
+namespace internal { |
+namespace compiler { |
+ |
+size_t hash_value(OutputFrameStateCombine const& sc) { |
+ return base::hash_combine(sc.kind_, sc.parameter_); |
+} |
+ |
+ |
+std::ostream& operator<<(std::ostream& os, OutputFrameStateCombine const& sc) { |
+ switch (sc.kind_) { |
+ case OutputFrameStateCombine::kPushOutput: |
+ if (sc.parameter_ == 0) return os << "Ignore"; |
+ return os << "Push(" << sc.parameter_ << ")"; |
+ case OutputFrameStateCombine::kPokeAt: |
+ return os << "PokeAt(" << sc.parameter_ << ")"; |
+ } |
+ UNREACHABLE(); |
+ return os; |
+} |
+ |
+ |
+bool operator==(FrameStateCallInfo const& lhs, FrameStateCallInfo const& rhs) { |
+ return lhs.type() == rhs.type() && lhs.bailout_id() == rhs.bailout_id() && |
+ lhs.state_combine() == rhs.state_combine(); |
+} |
+ |
+ |
+bool operator!=(FrameStateCallInfo const& lhs, FrameStateCallInfo const& rhs) { |
+ return !(lhs == rhs); |
+} |
+ |
+ |
+size_t hash_value(FrameStateCallInfo const& info) { |
+ return base::hash_combine(info.type(), info.bailout_id(), |
+ info.state_combine()); |
+} |
+ |
+ |
+std::ostream& operator<<(std::ostream& os, FrameStateCallInfo const& info) { |
+ return os << info.type() << ", " << info.bailout_id() << ", " |
+ << info.state_combine(); |
+} |
+} |
+} |
+} |