Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index eb858b0096569d4b1527a18ec51155193d93781c..08b434e374955299fa93440619808ffe6faca0dc 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -9,7 +9,7 @@ |
#include "src/assembler.h" |
#include "src/codegen.h" |
#include "src/globals.h" |
-#include "src/ic/ic.h" |
+#include "src/ic/ic-state.h" |
#include "src/interface-descriptors.h" |
#include "src/macro-assembler.h" |
#include "src/ostreams.h" |
@@ -781,13 +781,13 @@ class MathPowStub: public PlatformCodeStub { |
class CallICStub: public PlatformCodeStub { |
public: |
- CallICStub(Isolate* isolate, const CallIC::State& state) |
+ CallICStub(Isolate* isolate, const CallICState& state) |
: PlatformCodeStub(isolate) { |
minor_key_ = state.GetExtraICState(); |
} |
static int ExtractArgcFromMinorKey(int minor_key) { |
- CallIC::State state(static_cast<ExtraICState>(minor_key)); |
+ CallICState state(static_cast<ExtraICState>(minor_key)); |
return state.arg_count(); |
} |
@@ -800,16 +800,18 @@ class CallICStub: public PlatformCodeStub { |
} |
protected: |
- bool CallAsMethod() const { return state().call_type() == CallIC::METHOD; } |
+ bool CallAsMethod() const { |
+ return state().call_type() == CallICState::METHOD; |
+ } |
int arg_count() const { return state().arg_count(); } |
- CallIC::State state() const { |
- return CallIC::State(static_cast<ExtraICState>(minor_key_)); |
+ CallICState state() const { |
+ return CallICState(static_cast<ExtraICState>(minor_key_)); |
} |
// Code generation helpers. |
- void GenerateMiss(MacroAssembler* masm, IC::UtilityId id); |
+ void GenerateMiss(MacroAssembler* masm); |
private: |
virtual void PrintState(OStream& os) const OVERRIDE; // NOLINT |
@@ -821,7 +823,7 @@ class CallICStub: public PlatformCodeStub { |
class CallIC_ArrayStub: public CallICStub { |
public: |
- CallIC_ArrayStub(Isolate* isolate, const CallIC::State& state_in) |
+ CallIC_ArrayStub(Isolate* isolate, const CallICState& state_in) |
: CallICStub(isolate, state_in) {} |
virtual InlineCacheState GetICState() const FINAL OVERRIDE { |
@@ -1058,11 +1060,11 @@ class BinaryOpICStub : public HydrogenCodeStub { |
BinaryOpICStub(Isolate* isolate, Token::Value op, |
OverwriteMode mode = NO_OVERWRITE) |
: HydrogenCodeStub(isolate, UNINITIALIZED) { |
- BinaryOpIC::State state(isolate, op, mode); |
+ BinaryOpICState state(isolate, op, mode); |
set_sub_minor_key(state.GetExtraICState()); |
} |
- BinaryOpICStub(Isolate* isolate, const BinaryOpIC::State& state) |
+ BinaryOpICStub(Isolate* isolate, const BinaryOpICState& state) |
: HydrogenCodeStub(isolate) { |
set_sub_minor_key(state.GetExtraICState()); |
} |
@@ -1081,8 +1083,8 @@ class BinaryOpICStub : public HydrogenCodeStub { |
return static_cast<ExtraICState>(sub_minor_key()); |
} |
- BinaryOpIC::State state() const { |
- return BinaryOpIC::State(isolate(), GetExtraICState()); |
+ BinaryOpICState state() const { |
+ return BinaryOpICState(isolate(), GetExtraICState()); |
} |
virtual void PrintState(OStream& os) const FINAL OVERRIDE; // NOLINT |
@@ -1093,7 +1095,7 @@ class BinaryOpICStub : public HydrogenCodeStub { |
private: |
static void GenerateAheadOfTime(Isolate* isolate, |
- const BinaryOpIC::State& state); |
+ const BinaryOpICState& state); |
DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp); |
DEFINE_HYDROGEN_CODE_STUB(BinaryOpIC, HydrogenCodeStub); |
@@ -1105,7 +1107,7 @@ class BinaryOpICStub : public HydrogenCodeStub { |
class BinaryOpICWithAllocationSiteStub FINAL : public PlatformCodeStub { |
public: |
BinaryOpICWithAllocationSiteStub(Isolate* isolate, |
- const BinaryOpIC::State& state) |
+ const BinaryOpICState& state) |
: PlatformCodeStub(isolate) { |
minor_key_ = state.GetExtraICState(); |
} |
@@ -1133,12 +1135,12 @@ class BinaryOpICWithAllocationSiteStub FINAL : public PlatformCodeStub { |
virtual void PrintState(OStream& os) const OVERRIDE; // NOLINT |
private: |
- BinaryOpIC::State state() const { |
- return BinaryOpIC::State(isolate(), static_cast<ExtraICState>(minor_key_)); |
+ BinaryOpICState state() const { |
+ return BinaryOpICState(isolate(), static_cast<ExtraICState>(minor_key_)); |
} |
static void GenerateAheadOfTime(Isolate* isolate, |
- const BinaryOpIC::State& state); |
+ const BinaryOpICState& state); |
DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOpWithAllocationSite); |
DEFINE_PLATFORM_CODE_STUB(BinaryOpICWithAllocationSite, PlatformCodeStub); |
@@ -1152,8 +1154,7 @@ class BinaryOpWithAllocationSiteStub FINAL : public BinaryOpICStub { |
OverwriteMode mode) |
: BinaryOpICStub(isolate, op, mode) {} |
- BinaryOpWithAllocationSiteStub(Isolate* isolate, |
- const BinaryOpIC::State& state) |
+ BinaryOpWithAllocationSiteStub(Isolate* isolate, const BinaryOpICState& state) |
: BinaryOpICStub(isolate, state) {} |
virtual Code::Kind GetCodeKind() const FINAL OVERRIDE { |
@@ -1216,8 +1217,8 @@ class StringAddStub FINAL : public HydrogenCodeStub { |
class CompareICStub : public PlatformCodeStub { |
public: |
- CompareICStub(Isolate* isolate, Token::Value op, CompareIC::State left, |
- CompareIC::State right, CompareIC::State state) |
+ CompareICStub(Isolate* isolate, Token::Value op, CompareICState::State left, |
+ CompareICState::State right, CompareICState::State state) |
: PlatformCodeStub(isolate) { |
DCHECK(Token::IsCompareOp(op)); |
minor_key_ = OpBits::encode(op - Token::EQ) | LeftStateBits::encode(left) | |
@@ -1232,9 +1233,13 @@ class CompareICStub : public PlatformCodeStub { |
return static_cast<Token::Value>(Token::EQ + OpBits::decode(minor_key_)); |
} |
- CompareIC::State left() const { return LeftStateBits::decode(minor_key_); } |
- CompareIC::State right() const { return RightStateBits::decode(minor_key_); } |
- CompareIC::State state() const { return StateBits::decode(minor_key_); } |
+ CompareICState::State left() const { |
+ return LeftStateBits::decode(minor_key_); |
+ } |
+ CompareICState::State right() const { |
+ return RightStateBits::decode(minor_key_); |
+ } |
+ CompareICState::State state() const { return StateBits::decode(minor_key_); } |
private: |
virtual Code::Kind GetCodeKind() const { return Code::COMPARE_IC; } |
@@ -1250,16 +1255,18 @@ class CompareICStub : public PlatformCodeStub { |
void GenerateGeneric(MacroAssembler* masm); |
bool strict() const { return op() == Token::EQ_STRICT; } |
- Condition GetCondition() const { return CompareIC::ComputeCondition(op()); } |
+ Condition GetCondition() const; |
virtual void AddToSpecialCache(Handle<Code> new_object); |
virtual bool FindCodeInSpecialCache(Code** code_out); |
- virtual bool UseSpecialCache() { return state() == CompareIC::KNOWN_OBJECT; } |
+ virtual bool UseSpecialCache() { |
+ return state() == CompareICState::KNOWN_OBJECT; |
+ } |
class OpBits : public BitField<int, 0, 3> {}; |
- class LeftStateBits : public BitField<CompareIC::State, 3, 4> {}; |
- class RightStateBits : public BitField<CompareIC::State, 7, 4> {}; |
- class StateBits : public BitField<CompareIC::State, 11, 4> {}; |
+ class LeftStateBits : public BitField<CompareICState::State, 3, 4> {}; |
+ class RightStateBits : public BitField<CompareICState::State, 7, 4> {}; |
+ class StateBits : public BitField<CompareICState::State, 11, 4> {}; |
Handle<Map> known_map_; |
@@ -1740,7 +1747,7 @@ class KeyedLoadGenericStub : public HydrogenCodeStub { |
class LoadICTrampolineStub : public PlatformCodeStub { |
public: |
- LoadICTrampolineStub(Isolate* isolate, const LoadIC::State& state) |
+ LoadICTrampolineStub(Isolate* isolate, const LoadICState& state) |
: PlatformCodeStub(isolate) { |
minor_key_ = state.GetExtraICState(); |
} |
@@ -1756,8 +1763,8 @@ class LoadICTrampolineStub : public PlatformCodeStub { |
} |
private: |
- LoadIC::State state() const { |
- return LoadIC::State(static_cast<ExtraICState>(minor_key_)); |
+ LoadICState state() const { |
+ return LoadICState(static_cast<ExtraICState>(minor_key_)); |
} |
DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadICTrampoline); |
@@ -1768,7 +1775,7 @@ class LoadICTrampolineStub : public PlatformCodeStub { |
class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { |
public: |
explicit KeyedLoadICTrampolineStub(Isolate* isolate) |
- : LoadICTrampolineStub(isolate, LoadIC::State(0)) {} |
+ : LoadICTrampolineStub(isolate, LoadICState(0)) {} |
virtual Code::Kind GetCodeKind() const OVERRIDE { |
return Code::KEYED_LOAD_IC; |
@@ -1780,7 +1787,7 @@ class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { |
class MegamorphicLoadStub : public HydrogenCodeStub { |
public: |
- MegamorphicLoadStub(Isolate* isolate, const LoadIC::State& state) |
+ MegamorphicLoadStub(Isolate* isolate, const LoadICState& state) |
: HydrogenCodeStub(isolate) { |
set_sub_minor_key(state.GetExtraICState()); |
} |
@@ -1802,7 +1809,7 @@ class MegamorphicLoadStub : public HydrogenCodeStub { |
class VectorLoadStub : public HydrogenCodeStub { |
public: |
- explicit VectorLoadStub(Isolate* isolate, const LoadIC::State& state) |
+ explicit VectorLoadStub(Isolate* isolate, const LoadICState& state) |
: HydrogenCodeStub(isolate) { |
set_sub_minor_key(state.GetExtraICState()); |
} |
@@ -1818,7 +1825,7 @@ class VectorLoadStub : public HydrogenCodeStub { |
} |
private: |
- LoadIC::State state() const { return LoadIC::State(GetExtraICState()); } |
+ LoadICState state() const { return LoadICState(GetExtraICState()); } |
DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadIC); |
DEFINE_HYDROGEN_CODE_STUB(VectorLoad, HydrogenCodeStub); |
@@ -1828,7 +1835,7 @@ class VectorLoadStub : public HydrogenCodeStub { |
class VectorKeyedLoadStub : public VectorLoadStub { |
public: |
explicit VectorKeyedLoadStub(Isolate* isolate) |
- : VectorLoadStub(isolate, LoadIC::State(0)) {} |
+ : VectorLoadStub(isolate, LoadICState(0)) {} |
virtual Code::Kind GetCodeKind() const OVERRIDE { |
return Code::KEYED_LOAD_IC; |