Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 81751e81bf75d1db2741f0985982f1742df329ab..2f77ed6ebb50be528e8273bd434b76ba4b95996d 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -35,6 +35,7 @@ namespace internal { |
V(FunctionPrototype) \ |
V(Instanceof) \ |
V(InternalArrayConstructor) \ |
+ V(JSConstructEntry) \ |
V(JSEntry) \ |
V(KeyedLoadICTrampoline) \ |
V(LoadICTrampoline) \ |
@@ -198,7 +199,8 @@ class CodeStub BASE_EMBEDDED { |
Isolate* isolate() const { return isolate_; } |
protected: |
- explicit CodeStub(uint32_t key) : minor_key_(MinorKeyFromKey(key)) {} |
+ CodeStub(uint32_t key, Isolate* isolate) |
+ : minor_key_(MinorKeyFromKey(key)), isolate_(isolate) {} |
// Generates the assembler code for the stub. |
virtual Handle<Code> GenerateCode() = 0; |
@@ -258,23 +260,36 @@ class CodeStub BASE_EMBEDDED { |
}; |
+#define DEFINE_CODE_STUB_BASE(NAME, SUPER) \ |
+ public: \ |
+ NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \ |
+ \ |
+ private: \ |
+ DISALLOW_COPY_AND_ASSIGN(NAME) |
+ |
+ |
+#define DEFINE_CODE_STUB(NAME, SUPER) \ |
+ protected: \ |
+ virtual inline Major MajorKey() const OVERRIDE { \ |
+ return NAME; \ |
+ }; \ |
+ DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER) |
+ |
+ |
class PlatformCodeStub : public CodeStub { |
public: |
- explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) { } |
- |
// Retrieve the code for the stub. Generate the code if needed. |
virtual Handle<Code> GenerateCode() OVERRIDE; |
virtual Code::Kind GetCodeKind() const { return Code::STUB; } |
protected: |
+ explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) {} |
+ |
// Generates the assembler code for the stub. |
virtual void Generate(MacroAssembler* masm) = 0; |
- explicit PlatformCodeStub(uint32_t key) : CodeStub(key) {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(PlatformCodeStub); |
+ DEFINE_CODE_STUB_BASE(PlatformCodeStub, CodeStub); |
}; |
@@ -391,12 +406,6 @@ class HydrogenCodeStub : public CodeStub { |
INITIALIZED |
}; |
- explicit HydrogenCodeStub(Isolate* isolate, |
- InitializationState state = INITIALIZED) |
- : CodeStub(isolate) { |
- minor_key_ = IsMissBits::encode(state == UNINITIALIZED); |
- } |
- |
virtual Code::Kind GetCodeKind() const { return Code::STUB; } |
CodeStubInterfaceDescriptor* GetInterfaceDescriptor() { |
@@ -423,6 +432,12 @@ class HydrogenCodeStub : public CodeStub { |
void TraceTransition(StateType from, StateType to); |
protected: |
+ explicit HydrogenCodeStub(Isolate* isolate, |
+ InitializationState state = INITIALIZED) |
+ : CodeStub(isolate) { |
+ minor_key_ = IsMissBits::encode(state == UNINITIALIZED); |
+ } |
+ |
void set_sub_minor_key(uint32_t key) { |
minor_key_ = SubMinorKeyBits::update(minor_key_, key); |
} |
@@ -437,7 +452,7 @@ class HydrogenCodeStub : public CodeStub { |
void GenerateLightweightMiss(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(HydrogenCodeStub); |
+ DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub); |
}; |
@@ -520,10 +535,7 @@ class ToNumberStub: public HydrogenCodeStub { |
isolate->code_stub_interface_descriptor(CodeStub::ToNumber)); |
} |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(ToNumberStub); |
+ DEFINE_CODE_STUB(ToNumber, HydrogenCodeStub); |
}; |
@@ -541,10 +553,7 @@ class NumberToStringStub FINAL : public HydrogenCodeStub { |
// Parameters accessed via CodeStubGraphBuilder::GetParameter() |
static const int kNumber = 0; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(NumberToStringStub); |
+ DEFINE_CODE_STUB(NumberToString, HydrogenCodeStub); |
}; |
@@ -571,12 +580,10 @@ class FastNewClosureStub : public HydrogenCodeStub { |
bool is_generator() const { return IsGeneratorBits::decode(sub_minor_key()); } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class StrictModeBits : public BitField<StrictMode, 0, 1> {}; |
class IsGeneratorBits : public BitField<bool, 1, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(FastNewClosureStub); |
+ DEFINE_CODE_STUB(FastNewClosure, HydrogenCodeStub); |
}; |
@@ -602,11 +609,9 @@ class FastNewContextStub FINAL : public HydrogenCodeStub { |
static const int kFunction = 0; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class SlotsBits : public BitField<int, 0, 8> {}; |
- DISALLOW_COPY_AND_ASSIGN(FastNewContextStub); |
+ DEFINE_CODE_STUB(FastNewContext, HydrogenCodeStub); |
}; |
@@ -630,11 +635,9 @@ class FastCloneShallowArrayStub : public HydrogenCodeStub { |
static void InstallDescriptors(Isolate* isolate); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class AllocationSiteModeBits: public BitField<AllocationSiteMode, 0, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(FastCloneShallowArrayStub); |
+ DEFINE_CODE_STUB(FastCloneShallowArray, HydrogenCodeStub); |
}; |
@@ -658,11 +661,9 @@ class FastCloneShallowObjectStub : public HydrogenCodeStub { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class LengthBits : public BitField<int, 0, 4> {}; |
- DISALLOW_COPY_AND_ASSIGN(FastCloneShallowObjectStub); |
+ DEFINE_CODE_STUB(FastCloneShallowObject, HydrogenCodeStub); |
}; |
@@ -678,10 +679,7 @@ class CreateAllocationSiteStub : public HydrogenCodeStub { |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(CreateAllocationSiteStub); |
+ DEFINE_CODE_STUB(CreateAllocationSite, HydrogenCodeStub); |
}; |
@@ -707,8 +705,6 @@ class InstanceofStub: public PlatformCodeStub { |
CodeStubInterfaceDescriptor* descriptor); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
Flags flags() const { return FlagBits::decode(minor_key_); } |
bool HasArgsInRegisters() const { return (flags() & kArgsInRegisters) != 0; } |
@@ -725,7 +721,7 @@ class InstanceofStub: public PlatformCodeStub { |
class FlagBits : public BitField<Flags, 0, 3> {}; |
- DISALLOW_COPY_AND_ASSIGN(InstanceofStub); |
+ DEFINE_CODE_STUB(Instanceof, PlatformCodeStub); |
}; |
@@ -739,6 +735,7 @@ enum AllocationSiteOverrideMode { |
class ArrayConstructorStub: public PlatformCodeStub { |
public: |
enum ArgumentCountKey { ANY, NONE, ONE, MORE_THAN_ONE }; |
+ |
ArrayConstructorStub(Isolate* isolate, int argument_count); |
explicit ArrayConstructorStub(Isolate* isolate); |
@@ -746,8 +743,6 @@ class ArrayConstructorStub: public PlatformCodeStub { |
void Generate(MacroAssembler* masm); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
ArgumentCountKey argument_count() const { |
return ArgumentCountBits::decode(minor_key_); |
} |
@@ -759,7 +754,7 @@ class ArrayConstructorStub: public PlatformCodeStub { |
class ArgumentCountBits : public BitField<ArgumentCountKey, 0, 2> {}; |
- DISALLOW_COPY_AND_ASSIGN(ArrayConstructorStub); |
+ DEFINE_CODE_STUB(ArrayConstructor, PlatformCodeStub); |
}; |
@@ -770,11 +765,9 @@ class InternalArrayConstructorStub: public PlatformCodeStub { |
void Generate(MacroAssembler* masm); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
void GenerateCase(MacroAssembler* masm, ElementsKind kind); |
- DISALLOW_COPY_AND_ASSIGN(InternalArrayConstructorStub); |
+ DEFINE_CODE_STUB(InternalArrayConstructor, PlatformCodeStub); |
}; |
@@ -790,15 +783,13 @@ class MathPowStub: public PlatformCodeStub { |
virtual void Generate(MacroAssembler* masm); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
ExponentType exponent_type() const { |
return ExponentTypeBits::decode(minor_key_); |
} |
class ExponentTypeBits : public BitField<ExponentType, 0, 2> {}; |
- DISALLOW_COPY_AND_ASSIGN(MathPowStub); |
+ DEFINE_CODE_STUB(MathPow, PlatformCodeStub); |
}; |
@@ -837,11 +828,9 @@ class CallICStub: public PlatformCodeStub { |
void GenerateMiss(MacroAssembler* masm, IC::UtilityId id); |
private: |
- virtual inline Major MajorKey() const OVERRIDE; |
- |
virtual void PrintState(OStream& os) const OVERRIDE; // NOLINT |
- DISALLOW_COPY_AND_ASSIGN(CallICStub); |
+ DEFINE_CODE_STUB(CallIC, PlatformCodeStub); |
}; |
@@ -857,11 +846,9 @@ class CallIC_ArrayStub: public CallICStub { |
} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void PrintState(OStream& os) const OVERRIDE; // NOLINT |
- DISALLOW_COPY_AND_ASSIGN(CallIC_ArrayStub); |
+ DEFINE_CODE_STUB(CallIC_Array, CallICStub); |
}; |
@@ -870,13 +857,12 @@ class FunctionPrototypeStub : public PlatformCodeStub { |
public: |
explicit FunctionPrototypeStub(Isolate* isolate) |
: PlatformCodeStub(isolate) {} |
+ |
virtual void Generate(MacroAssembler* masm); |
- virtual Code::Kind GetCodeKind() const { return Code::HANDLER; } |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
+ virtual Code::Kind GetCodeKind() const { return Code::HANDLER; } |
- DISALLOW_COPY_AND_ASSIGN(FunctionPrototypeStub); |
+ DEFINE_CODE_STUB(FunctionPrototype, PlatformCodeStub); |
}; |
@@ -891,10 +877,10 @@ class HandlerStub : public HydrogenCodeStub { |
protected: |
explicit HandlerStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} |
+ |
virtual Code::Kind kind() const = 0; |
- private: |
- DISALLOW_COPY_AND_ASSIGN(HandlerStub); |
+ DEFINE_CODE_STUB_BASE(HandlerStub, HydrogenCodeStub); |
}; |
@@ -913,16 +899,13 @@ class LoadFieldStub: public HandlerStub { |
} |
protected: |
- explicit LoadFieldStub(Isolate* isolate); |
virtual Code::Kind kind() const { return Code::LOAD_IC; } |
virtual Code::StubType GetStubType() { return Code::FAST; } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class LoadFieldByIndexBits : public BitField<int, 0, 13> {}; |
- DISALLOW_COPY_AND_ASSIGN(LoadFieldStub); |
+ DEFINE_CODE_STUB(LoadField, HandlerStub); |
}; |
@@ -940,32 +923,27 @@ class LoadConstantStub : public HandlerStub { |
} |
protected: |
- explicit LoadConstantStub(Isolate* isolate); |
virtual Code::Kind kind() const { return Code::LOAD_IC; } |
virtual Code::StubType GetStubType() { return Code::FAST; } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class ConstantIndexBits : public BitField<int, 0, kSubMinorKeyBits> {}; |
- DISALLOW_COPY_AND_ASSIGN(LoadConstantStub); |
+ DEFINE_CODE_STUB(LoadConstant, HandlerStub); |
}; |
class StringLengthStub: public HandlerStub { |
public: |
explicit StringLengthStub(Isolate* isolate) : HandlerStub(isolate) {} |
+ |
virtual Handle<Code> GenerateCode() OVERRIDE; |
protected: |
virtual Code::Kind kind() const { return Code::LOAD_IC; } |
virtual Code::StubType GetStubType() { return Code::FAST; } |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(StringLengthStub); |
+ DEFINE_CODE_STUB(StringLength, HandlerStub); |
}; |
@@ -995,17 +973,14 @@ class StoreFieldStub : public HandlerStub { |
static void InstallDescriptors(Isolate* isolate); |
protected: |
- explicit StoreFieldStub(Isolate* isolate); |
virtual Code::Kind kind() const { return Code::STORE_IC; } |
virtual Code::StubType GetStubType() { return Code::FAST; } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class StoreFieldByIndexBits : public BitField<int, 0, 13> {}; |
class RepresentationBits : public BitField<uint8_t, 13, 4> {}; |
- DISALLOW_COPY_AND_ASSIGN(StoreFieldStub); |
+ DEFINE_CODE_STUB(StoreField, HandlerStub); |
}; |
@@ -1058,13 +1033,11 @@ class StoreGlobalStub : public HandlerStub { |
} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class IsConstantBits: public BitField<bool, 0, 1> {}; |
class RepresentationBits: public BitField<Representation::Kind, 1, 8> {}; |
class CheckGlobalBits: public BitField<bool, 9, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(StoreGlobalStub); |
+ DEFINE_CODE_STUB(StoreGlobal, HandlerStub); |
}; |
@@ -1081,8 +1054,6 @@ class CallApiFunctionStub : public PlatformCodeStub { |
} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void Generate(MacroAssembler* masm) OVERRIDE; |
bool is_store() const { return IsStoreBits::decode(minor_key_); } |
@@ -1096,7 +1067,7 @@ class CallApiFunctionStub : public PlatformCodeStub { |
class ArgumentBits: public BitField<int, 2, Code::kArgumentsBits> {}; |
STATIC_ASSERT(Code::kArgumentsBits + 2 <= kStubMinorKeyBits); |
- DISALLOW_COPY_AND_ASSIGN(CallApiFunctionStub); |
+ DEFINE_CODE_STUB(CallApiFunction, PlatformCodeStub); |
}; |
@@ -1106,9 +1077,8 @@ class CallApiGetterStub : public PlatformCodeStub { |
private: |
virtual void Generate(MacroAssembler* masm) OVERRIDE; |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- DISALLOW_COPY_AND_ASSIGN(CallApiGetterStub); |
+ DEFINE_CODE_STUB(CallApiGetter, PlatformCodeStub); |
}; |
@@ -1121,7 +1091,7 @@ class BinaryOpICStub : public HydrogenCodeStub { |
set_sub_minor_key(state.GetExtraICState()); |
} |
- explicit BinaryOpICStub(Isolate* isolate, const BinaryOpIC::State& state) |
+ BinaryOpICStub(Isolate* isolate, const BinaryOpIC::State& state) |
: HydrogenCodeStub(isolate) { |
set_sub_minor_key(state.GetExtraICState()); |
} |
@@ -1158,12 +1128,10 @@ class BinaryOpICStub : public HydrogenCodeStub { |
static const int kRight = 1; |
private: |
- virtual inline Major MajorKey() const OVERRIDE; |
- |
static void GenerateAheadOfTime(Isolate* isolate, |
const BinaryOpIC::State& state); |
- DISALLOW_COPY_AND_ASSIGN(BinaryOpICStub); |
+ DEFINE_CODE_STUB(BinaryOpIC, HydrogenCodeStub); |
}; |
@@ -1202,8 +1170,6 @@ class BinaryOpICWithAllocationSiteStub FINAL : public PlatformCodeStub { |
virtual void PrintState(OStream& os) const OVERRIDE; // NOLINT |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
BinaryOpIC::State state() const { |
return BinaryOpIC::State(isolate(), static_cast<ExtraICState>(minor_key_)); |
} |
@@ -1211,7 +1177,7 @@ class BinaryOpICWithAllocationSiteStub FINAL : public PlatformCodeStub { |
static void GenerateAheadOfTime(Isolate* isolate, |
const BinaryOpIC::State& state); |
- DISALLOW_COPY_AND_ASSIGN(BinaryOpICWithAllocationSiteStub); |
+ DEFINE_CODE_STUB(BinaryOpICWithAllocationSite, PlatformCodeStub); |
}; |
@@ -1237,12 +1203,12 @@ class BinaryOpWithAllocationSiteStub FINAL : public BinaryOpICStub { |
virtual Handle<Code> GenerateCode() OVERRIDE; |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
// Parameters accessed via CodeStubGraphBuilder::GetParameter() |
static const int kAllocationSite = 0; |
static const int kLeft = 1; |
static const int kRight = 2; |
+ |
+ DEFINE_CODE_STUB(BinaryOpWithAllocationSite, BinaryOpICStub); |
}; |
@@ -1287,14 +1253,12 @@ class StringAddStub FINAL : public HydrogenCodeStub { |
static const int kRight = 1; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class StringAddFlagsBits: public BitField<StringAddFlags, 0, 2> {}; |
class PretenureFlagBits: public BitField<PretenureFlag, 2, 1> {}; |
virtual void PrintBaseName(OStream& os) const OVERRIDE; // NOLINT |
- DISALLOW_COPY_AND_ASSIGN(StringAddStub); |
+ DEFINE_CODE_STUB(StringAdd, HydrogenCodeStub); |
}; |
@@ -1312,10 +1276,6 @@ class CompareICStub : public PlatformCodeStub { |
void set_known_map(Handle<Map> map) { known_map_ = map; } |
- explicit CompareICStub(uint32_t stub_key) : PlatformCodeStub(stub_key) { |
- DCHECK_EQ(MajorKeyFromKey(stub_key), MajorKey()); |
- } |
- |
virtual InlineCacheState GetICState() const; |
Token::Value op() const { |
@@ -1327,8 +1287,6 @@ class CompareICStub : public PlatformCodeStub { |
CompareIC::State state() const { return StateBits::decode(minor_key_); } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual Code::Kind GetCodeKind() const { return Code::COMPARE_IC; } |
void GenerateSmis(MacroAssembler* masm); |
@@ -1355,7 +1313,7 @@ class CompareICStub : public PlatformCodeStub { |
Handle<Map> known_map_; |
- DISALLOW_COPY_AND_ASSIGN(CompareICStub); |
+ DEFINE_CODE_STUB(CompareIC, PlatformCodeStub); |
}; |
@@ -1425,8 +1383,6 @@ class CompareNilICStub : public HydrogenCodeStub { |
set_sub_minor_key(NilValueBits::encode(nil)); |
} |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
enum CompareNilType { |
UNDEFINED, |
NULL_TYPE, |
@@ -1454,7 +1410,7 @@ class CompareNilICStub : public HydrogenCodeStub { |
friend class CompareNilIC; |
- DISALLOW_COPY_AND_ASSIGN(CompareNilICStub); |
+ DEFINE_CODE_STUB(CompareNilIC, HydrogenCodeStub); |
}; |
@@ -1482,8 +1438,6 @@ class CEntryStub : public PlatformCodeStub { |
static void GenerateAheadOfTime(Isolate* isolate); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
bool save_doubles() const { return SaveDoublesBits::decode(minor_key_); } |
#ifdef _WIN64 |
int result_size() const { return ResultSizeBits::decode(minor_key_); } |
@@ -1494,7 +1448,7 @@ class CEntryStub : public PlatformCodeStub { |
class SaveDoublesBits : public BitField<bool, 0, 1> {}; |
class ResultSizeBits : public BitField<int, 1, 3> {}; |
- DISALLOW_COPY_AND_ASSIGN(CEntryStub); |
+ DEFINE_CODE_STUB(CEntry, PlatformCodeStub); |
}; |
@@ -1508,21 +1462,17 @@ class JSEntryStub : public PlatformCodeStub { |
void GenerateBody(MacroAssembler* masm, bool is_construct); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void FinishCode(Handle<Code> code); |
int handler_offset_; |
- DISALLOW_COPY_AND_ASSIGN(JSEntryStub); |
+ DEFINE_CODE_STUB(JSEntry, PlatformCodeStub); |
}; |
class JSConstructEntryStub : public JSEntryStub { |
public: |
- explicit JSConstructEntryStub(Isolate* isolate) : JSEntryStub(isolate) { |
- minor_key_ = 1; |
- } |
+ explicit JSConstructEntryStub(Isolate* isolate) : JSEntryStub(isolate) {} |
void Generate(MacroAssembler* masm) { GenerateBody(masm, true); } |
@@ -1531,7 +1481,7 @@ class JSConstructEntryStub : public JSEntryStub { |
os << "JSConstructEntryStub"; |
} |
- DISALLOW_COPY_AND_ASSIGN(JSConstructEntryStub); |
+ DEFINE_CODE_STUB(JSConstructEntry, JSEntryStub); |
}; |
@@ -1549,8 +1499,6 @@ class ArgumentsAccessStub: public PlatformCodeStub { |
} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
Type type() const { return TypeBits::decode(minor_key_); } |
void Generate(MacroAssembler* masm); |
@@ -1563,7 +1511,7 @@ class ArgumentsAccessStub: public PlatformCodeStub { |
class TypeBits : public BitField<Type, 0, 2> {}; |
- DISALLOW_COPY_AND_ASSIGN(ArgumentsAccessStub); |
+ DEFINE_CODE_STUB(ArgumentsAccess, PlatformCodeStub); |
}; |
@@ -1572,11 +1520,9 @@ class RegExpExecStub: public PlatformCodeStub { |
explicit RegExpExecStub(Isolate* isolate) : PlatformCodeStub(isolate) { } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(RegExpExecStub); |
+ DEFINE_CODE_STUB(RegExpExec, PlatformCodeStub); |
}; |
@@ -1590,8 +1536,6 @@ class RegExpConstructResultStub FINAL : public HydrogenCodeStub { |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
static void InstallDescriptors(Isolate* isolate); |
// Parameters accessed via CodeStubGraphBuilder::GetParameter() |
@@ -1599,8 +1543,7 @@ class RegExpConstructResultStub FINAL : public HydrogenCodeStub { |
static const int kIndex = 1; |
static const int kInput = 2; |
- private: |
- DISALLOW_COPY_AND_ASSIGN(RegExpConstructResultStub); |
+ DEFINE_CODE_STUB(RegExpConstructResult, HydrogenCodeStub); |
}; |
@@ -1622,8 +1565,6 @@ class CallFunctionStub: public PlatformCodeStub { |
CodeStubInterfaceDescriptor* descriptor); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
int argc() const { return ArgcBits::decode(minor_key_); } |
int flags() const { return FlagBits::decode(minor_key_); } |
@@ -1640,7 +1581,7 @@ class CallFunctionStub: public PlatformCodeStub { |
class ArgcBits : public BitField<unsigned, 2, Code::kArgumentsBits> {}; |
STATIC_ASSERT(Code::kArgumentsBits + 2 <= kStubMinorKeyBits); |
- DISALLOW_COPY_AND_ASSIGN(CallFunctionStub); |
+ DEFINE_CODE_STUB(CallFunction, PlatformCodeStub); |
}; |
@@ -1661,8 +1602,6 @@ class CallConstructStub: public PlatformCodeStub { |
CodeStubInterfaceDescriptor* descriptor); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
CallConstructorFlags flags() const { return FlagBits::decode(minor_key_); } |
bool RecordCallTarget() const { |
@@ -1673,7 +1612,7 @@ class CallConstructStub: public PlatformCodeStub { |
class FlagBits : public BitField<CallConstructorFlags, 0, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(CallConstructStub); |
+ DEFINE_CODE_STUB(CallConstruct, PlatformCodeStub); |
}; |
@@ -1861,10 +1800,7 @@ class LoadDictionaryElementStub : public HydrogenCodeStub { |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(LoadDictionaryElementStub); |
+ DEFINE_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub); |
}; |
@@ -1882,10 +1818,7 @@ class KeyedLoadGenericStub : public HydrogenCodeStub { |
virtual Code::Kind GetCodeKind() const { return Code::KEYED_LOAD_IC; } |
virtual InlineCacheState GetICState() const { return GENERIC; } |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(KeyedLoadGenericStub); |
+ DEFINE_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); |
}; |
@@ -1906,8 +1839,6 @@ class LoadICTrampolineStub : public PlatformCodeStub { |
return static_cast<ExtraICState>(minor_key_); |
} |
- virtual inline Major MajorKey() const OVERRIDE; |
- |
private: |
LoadIC::State state() const { |
return LoadIC::State(static_cast<ExtraICState>(minor_key_)); |
@@ -1915,7 +1846,7 @@ class LoadICTrampolineStub : public PlatformCodeStub { |
virtual void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(LoadICTrampolineStub); |
+ DEFINE_CODE_STUB(LoadICTrampoline, PlatformCodeStub); |
}; |
@@ -1928,12 +1859,10 @@ class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { |
return Code::KEYED_LOAD_IC; |
} |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
private: |
virtual void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(KeyedLoadICTrampolineStub); |
+ DEFINE_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub); |
}; |
@@ -1962,11 +1891,9 @@ class VectorLoadStub : public HydrogenCodeStub { |
} |
private: |
- virtual inline Major MajorKey() const OVERRIDE; |
- |
LoadIC::State state() const { return LoadIC::State(GetExtraICState()); } |
- DISALLOW_COPY_AND_ASSIGN(VectorLoadStub); |
+ DEFINE_CODE_STUB(VectorLoad, HydrogenCodeStub); |
}; |
@@ -1986,10 +1913,7 @@ class VectorKeyedLoadStub : public VectorLoadStub { |
return Code::KEYED_LOAD_IC; |
} |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(VectorKeyedLoadStub); |
+ DEFINE_CODE_STUB(VectorKeyedLoad, VectorLoadStub); |
}; |
@@ -2011,8 +1935,6 @@ class DoubleToIStub : public PlatformCodeStub { |
virtual bool SometimesSetsUpAFrame() { return false; } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
Register source() const { |
return Register::from_code(SourceRegisterBits::decode(minor_key_)); |
} |
@@ -2039,7 +1961,7 @@ class DoubleToIStub : public PlatformCodeStub { |
class SSE3Bits: |
public BitField<int, 2 * kBitsPerRegisterNumber + 5, 1> {}; // NOLINT |
- DISALLOW_COPY_AND_ASSIGN(DoubleToIStub); |
+ DEFINE_CODE_STUB(DoubleToI, PlatformCodeStub); |
}; |
@@ -2066,12 +1988,10 @@ class LoadFastElementStub : public HydrogenCodeStub { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class ElementsKindBits: public BitField<ElementsKind, 0, 8> {}; |
class IsJSArrayBits: public BitField<bool, 8, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(LoadFastElementStub); |
+ DEFINE_CODE_STUB(LoadFastElement, HydrogenCodeStub); |
}; |
@@ -2101,13 +2021,11 @@ class StoreFastElementStub : public HydrogenCodeStub { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class ElementsKindBits: public BitField<ElementsKind, 0, 8> {}; |
class StoreModeBits: public BitField<KeyedAccessStoreMode, 8, 4> {}; |
class IsJSArrayBits: public BitField<bool, 12, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(StoreFastElementStub); |
+ DEFINE_CODE_STUB(StoreFastElement, HydrogenCodeStub); |
}; |
@@ -2136,13 +2054,11 @@ class TransitionElementsKindStub : public HydrogenCodeStub { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class FromKindBits: public BitField<ElementsKind, 8, 8> {}; |
class ToKindBits: public BitField<ElementsKind, 0, 8> {}; |
class IsJSArrayBits: public BitField<bool, 16, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(TransitionElementsKindStub); |
+ DEFINE_CODE_STUB(TransitionElementsKind, HydrogenCodeStub); |
}; |
@@ -2187,7 +2103,7 @@ class ArrayConstructorStubBase : public HydrogenCodeStub { |
class AllocationSiteOverrideModeBits: public |
BitField<AllocationSiteOverrideMode, 8, 1> {}; // NOLINT |
- DISALLOW_COPY_AND_ASSIGN(ArrayConstructorStubBase); |
+ DEFINE_CODE_STUB_BASE(ArrayConstructorStubBase, HydrogenCodeStub); |
}; |
@@ -2206,13 +2122,11 @@ class ArrayNoArgumentConstructorStub : public ArrayConstructorStubBase { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void PrintName(OStream& os) const OVERRIDE { // NOLINT |
BasePrintName(os, "ArrayNoArgumentConstructorStub"); |
} |
- DISALLOW_COPY_AND_ASSIGN(ArrayNoArgumentConstructorStub); |
+ DEFINE_CODE_STUB(ArrayNoArgumentConstructor, ArrayConstructorStubBase); |
}; |
@@ -2231,13 +2145,11 @@ class ArraySingleArgumentConstructorStub : public ArrayConstructorStubBase { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void PrintName(OStream& os) const { // NOLINT |
BasePrintName(os, "ArraySingleArgumentConstructorStub"); |
} |
- DISALLOW_COPY_AND_ASSIGN(ArraySingleArgumentConstructorStub); |
+ DEFINE_CODE_STUB(ArraySingleArgumentConstructor, ArrayConstructorStubBase); |
}; |
@@ -2256,13 +2168,11 @@ class ArrayNArgumentsConstructorStub : public ArrayConstructorStubBase { |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void PrintName(OStream& os) const { // NOLINT |
BasePrintName(os, "ArrayNArgumentsConstructorStub"); |
} |
- DISALLOW_COPY_AND_ASSIGN(ArrayNArgumentsConstructorStub); |
+ DEFINE_CODE_STUB(ArrayNArgumentsConstructor, ArrayConstructorStubBase); |
}; |
@@ -2286,7 +2196,7 @@ class InternalArrayConstructorStubBase : public HydrogenCodeStub { |
private: |
class ElementsKindBits : public BitField<ElementsKind, 0, 8> {}; |
- DISALLOW_COPY_AND_ASSIGN(InternalArrayConstructorStubBase); |
+ DEFINE_CODE_STUB_BASE(InternalArrayConstructorStubBase, HydrogenCodeStub); |
}; |
@@ -2302,10 +2212,8 @@ class InternalArrayNoArgumentConstructorStub : public |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(InternalArrayNoArgumentConstructorStub); |
+ DEFINE_CODE_STUB(InternalArrayNoArgumentConstructor, |
+ InternalArrayConstructorStubBase); |
}; |
@@ -2321,10 +2229,8 @@ class InternalArraySingleArgumentConstructorStub : public |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(InternalArraySingleArgumentConstructorStub); |
+ DEFINE_CODE_STUB(InternalArraySingleArgumentConstructor, |
+ InternalArrayConstructorStubBase); |
}; |
@@ -2339,10 +2245,8 @@ class InternalArrayNArgumentsConstructorStub : public |
virtual void InitializeInterfaceDescriptor( |
CodeStubInterfaceDescriptor* descriptor) OVERRIDE; |
- private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(InternalArrayNArgumentsConstructorStub); |
+ DEFINE_CODE_STUB(InternalArrayNArgumentsConstructor, |
+ InternalArrayConstructorStubBase); |
}; |
@@ -2356,15 +2260,13 @@ class StoreElementStub : public PlatformCodeStub { |
void Generate(MacroAssembler* masm); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
ElementsKind elements_kind() const { |
return ElementsKindBits::decode(minor_key_); |
} |
class ElementsKindBits : public BitField<ElementsKind, 0, 8> {}; |
- DISALLOW_COPY_AND_ASSIGN(StoreElementStub); |
+ DEFINE_CODE_STUB(StoreElement, PlatformCodeStub); |
}; |
@@ -2457,12 +2359,10 @@ class ToBooleanStub: public HydrogenCodeStub { |
set_sub_minor_key(ResultModeBits::encode(RESULT_AS_SMI)); |
} |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class TypesBits : public BitField<byte, 0, NUMBER_OF_TYPES> {}; |
class ResultModeBits : public BitField<ResultMode, NUMBER_OF_TYPES, 2> {}; |
- DISALLOW_COPY_AND_ASSIGN(ToBooleanStub); |
+ DEFINE_CODE_STUB(ToBoolean, HydrogenCodeStub); |
}; |
@@ -2515,14 +2415,12 @@ class ElementsTransitionAndStoreStub : public HydrogenCodeStub { |
} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
class FromBits : public BitField<ElementsKind, 0, 8> {}; |
class ToBits : public BitField<ElementsKind, 8, 8> {}; |
class IsJSArrayBits : public BitField<bool, 16, 1> {}; |
class StoreModeBits : public BitField<KeyedAccessStoreMode, 17, 4> {}; |
- DISALLOW_COPY_AND_ASSIGN(ElementsTransitionAndStoreStub); |
+ DEFINE_CODE_STUB(ElementsTransitionAndStore, HydrogenCodeStub); |
}; |
@@ -2532,11 +2430,9 @@ class StoreArrayLiteralElementStub : public PlatformCodeStub { |
: PlatformCodeStub(isolate) { } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(StoreArrayLiteralElementStub); |
+ DEFINE_CODE_STUB(StoreArrayLiteralElement, PlatformCodeStub); |
}; |
@@ -2550,8 +2446,6 @@ class StubFailureTrampolineStub : public PlatformCodeStub { |
static void GenerateAheadOfTime(Isolate* isolate); |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
StubFunctionMode function_mode() const { |
return FunctionModeField::decode(minor_key_); |
} |
@@ -2560,7 +2454,7 @@ class StubFailureTrampolineStub : public PlatformCodeStub { |
class FunctionModeField : public BitField<StubFunctionMode, 0, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(StubFailureTrampolineStub); |
+ DEFINE_CODE_STUB(StubFailureTrampoline, PlatformCodeStub); |
}; |
@@ -2579,11 +2473,9 @@ class ProfileEntryHookStub : public PlatformCodeStub { |
intptr_t stack_pointer, |
Isolate* isolate); |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); |
+ DEFINE_CODE_STUB(ProfileEntryHook, PlatformCodeStub); |
}; |
@@ -2600,13 +2492,11 @@ class StoreBufferOverflowStub : public PlatformCodeStub { |
virtual bool SometimesSetsUpAFrame() { return false; } |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
bool save_doubles() const { return SaveDoublesBits::decode(minor_key_); } |
class SaveDoublesBits : public BitField<bool, 0, 1> {}; |
- DISALLOW_COPY_AND_ASSIGN(StoreBufferOverflowStub); |
+ DEFINE_CODE_STUB(StoreBufferOverflow, PlatformCodeStub); |
}; |
@@ -2615,11 +2505,9 @@ class SubStringStub : public PlatformCodeStub { |
explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(SubStringStub); |
+ DEFINE_CODE_STUB(SubString, PlatformCodeStub); |
}; |
@@ -2628,20 +2516,14 @@ class StringCompareStub : public PlatformCodeStub { |
explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
private: |
- virtual inline Major MajorKey() const FINAL OVERRIDE; |
- |
virtual void Generate(MacroAssembler* masm); |
- DISALLOW_COPY_AND_ASSIGN(StringCompareStub); |
+ DEFINE_CODE_STUB(StringCompare, PlatformCodeStub); |
}; |
-#define DEFINE_MAJOR_KEY(NAME) \ |
- CodeStub::Major NAME##Stub::MajorKey() const { return NAME; } |
- |
-CODE_STUB_LIST(DEFINE_MAJOR_KEY) |
- |
-#undef DEFINE_MAJOR_KEY |
+#undef DEFINE_CODE_STUB |
+#undef DEFINE_CODE_STUB_BASE |
} } // namespace v8::internal |
#endif // V8_CODE_STUBS_H_ |