Index: src/compiler/common-operator.h |
diff --git a/src/compiler/common-operator.h b/src/compiler/common-operator.h |
index 941fb17a14f5ccaaf10bba724c81e7d6e493d604..c5a8d7ee691a40e5f54c7b5960237521dfe169f0 100644 |
--- a/src/compiler/common-operator.h |
+++ b/src/compiler/common-operator.h |
@@ -27,27 +27,53 @@ class Operator; |
// the output of a node to obtain a framestate for lazy bailout. |
class OutputFrameStateCombine { |
public: |
- enum CombineKind { |
+ enum Kind { |
kPushOutput, // Push the output on the expression stack. |
kPokeAt // Poke at the given environment location, |
// counting from the top of the stack. |
}; |
- static OutputFrameStateCombine Ignore(); |
- static OutputFrameStateCombine Push(size_t count = 1); |
- static OutputFrameStateCombine PokeAt(size_t index); |
- |
- CombineKind kind(); |
- size_t GetPushCount(); |
- size_t GetOffsetToPokeAt(); |
- |
- bool IsOutputIgnored(); |
+ static OutputFrameStateCombine Ignore() { |
+ return OutputFrameStateCombine(kPushOutput, 0); |
+ } |
+ static OutputFrameStateCombine Push(size_t count = 1) { |
+ return OutputFrameStateCombine(kPushOutput, count); |
+ } |
+ static OutputFrameStateCombine PokeAt(size_t index) { |
+ return OutputFrameStateCombine(kPokeAt, index); |
+ } |
+ |
+ Kind kind() const { return kind_; } |
+ size_t GetPushCount() const { |
+ DCHECK_EQ(kPushOutput, kind()); |
+ return parameter_; |
+ } |
+ size_t GetOffsetToPokeAt() const { |
+ DCHECK_EQ(kPokeAt, kind()); |
+ return parameter_; |
+ } |
+ |
+ bool IsOutputIgnored() const { |
+ return kind_ == kPushOutput && parameter_ == 0; |
+ } |
+ |
+ bool operator==(OutputFrameStateCombine const& other) const { |
+ return kind_ == other.kind_ && parameter_ == other.parameter_; |
+ } |
+ bool operator!=(OutputFrameStateCombine const& other) const { |
+ return !(*this == other); |
+ } |
+ |
+ friend size_t hash_value(OutputFrameStateCombine const&); |
+ friend std::ostream& operator<<(std::ostream&, |
+ OutputFrameStateCombine const&); |
private: |
- OutputFrameStateCombine(CombineKind kind, size_t parameter); |
+ OutputFrameStateCombine(Kind kind, size_t parameter) |
+ : kind_(kind), parameter_(parameter) {} |
- CombineKind kind_; |
- size_t parameter_; |
+ Kind const kind_; |
+ size_t const parameter_; |
}; |
@@ -81,6 +107,13 @@ class FrameStateCallInfo FINAL { |
MaybeHandle<JSFunction> jsfunction_; |
}; |
+bool operator==(FrameStateCallInfo const&, FrameStateCallInfo const&); |
+bool operator!=(FrameStateCallInfo const&, FrameStateCallInfo const&); |
+ |
+size_t hash_value(FrameStateCallInfo const&); |
+ |
+std::ostream& operator<<(std::ostream&, FrameStateCallInfo const&); |
+ |
// Interface for building common operators that can be used at any level of IR, |
// including JavaScript, mid-level, and low-level. |
@@ -107,7 +140,7 @@ class CommonOperatorBuilder FINAL { |
const Operator* Float64Constant(volatile double); |
const Operator* ExternalConstant(const ExternalReference&); |
const Operator* NumberConstant(volatile double); |
- const Operator* HeapConstant(const Unique<Object>&); |
+ const Operator* HeapConstant(const Unique<HeapObject>&); |
const Operator* Phi(MachineType type, int arguments); |
const Operator* EffectPhi(int arguments); |