Index: src/compiler/common-operator.h |
diff --git a/src/compiler/common-operator.h b/src/compiler/common-operator.h |
index f5d85b4d492d3f9d4d105c402c59399b7913396a..eea93717b006fd6acea96ac72799d3933c4e5732 100644 |
--- a/src/compiler/common-operator.h |
+++ b/src/compiler/common-operator.h |
@@ -1,10 +1,11 @@ |
-// Copyright 2013 the V8 project authors. All rights reserved. |
+// Copyright 2014 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. |
#ifndef V8_COMPILER_COMMON_OPERATOR_H_ |
#define V8_COMPILER_COMMON_OPERATOR_H_ |
+#include "src/compiler/frame-states.h" |
#include "src/compiler/machine-type.h" |
#include "src/unique.h" |
@@ -57,102 +58,6 @@ std::ostream& operator<<(std::ostream&, SelectParameters const& p); |
SelectParameters const& SelectParametersOf(const Operator* const); |
-// Flag that describes how to combine the current environment with |
-// the output of a node to obtain a framestate for lazy bailout. |
-class OutputFrameStateCombine { |
- public: |
- 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() { |
- 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; |
- } |
- |
- size_t ConsumedOutputCount() const { |
- return kind_ == kPushOutput ? GetPushCount() : 1; |
- } |
- |
- 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(Kind kind, size_t parameter) |
- : kind_(kind), parameter_(parameter) {} |
- |
- Kind const kind_; |
- size_t const parameter_; |
-}; |
- |
- |
-// The type of stack frame that a FrameState node represents. |
-enum FrameStateType { |
- JS_FRAME, // Represents an unoptimized JavaScriptFrame. |
- ARGUMENTS_ADAPTOR // Represents an ArgumentsAdaptorFrame. |
-}; |
- |
- |
-class FrameStateCallInfo final { |
- public: |
- FrameStateCallInfo( |
- FrameStateType type, BailoutId bailout_id, |
- OutputFrameStateCombine state_combine, |
- MaybeHandle<JSFunction> jsfunction = MaybeHandle<JSFunction>()) |
- : type_(type), |
- bailout_id_(bailout_id), |
- frame_state_combine_(state_combine), |
- jsfunction_(jsfunction) {} |
- |
- FrameStateType type() const { return type_; } |
- BailoutId bailout_id() const { return bailout_id_; } |
- OutputFrameStateCombine state_combine() const { return frame_state_combine_; } |
- MaybeHandle<JSFunction> jsfunction() const { return jsfunction_; } |
- |
- private: |
- FrameStateType type_; |
- BailoutId bailout_id_; |
- OutputFrameStateCombine frame_state_combine_; |
- 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&); |
- |
- |
size_t ProjectionIndexOf(const Operator* const); |