Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Unified Diff: src/interface-descriptors.h

Issue 551043005: Added CallInterfaceDescriptors to all code stubs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ic/x64/handler-compiler-x64.cc ('k') | src/interface-descriptors.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interface-descriptors.h
diff --git a/src/interface-descriptors.h b/src/interface-descriptors.h
index 4475900e072141fbb44acc3b7243eaf321819c6e..b773c916ecbff19be72d97f42d792848d36bc653 100644
--- a/src/interface-descriptors.h
+++ b/src/interface-descriptors.h
@@ -18,6 +18,7 @@ class PlatformInterfaceDescriptor;
V(Store) \
V(ElementTransitionAndStore) \
V(Instanceof) \
+ V(VectorLoadICTrampoline) \
V(VectorLoadIC) \
V(FastNewClosure) \
V(FastNewContext) \
@@ -27,6 +28,7 @@ class PlatformInterfaceDescriptor;
V(FastCloneShallowObject) \
V(CreateAllocationSite) \
V(CallFunction) \
+ V(CallFunctionWithFeedback) \
V(CallConstruct) \
V(RegExpConstructResult) \
V(TransitionElementsKind) \
@@ -43,7 +45,13 @@ class PlatformInterfaceDescriptor;
V(Named) \
V(CallHandler) \
V(ArgumentAdaptor) \
- V(ApiFunction)
+ V(ApiGetter) \
+ V(ApiFunction) \
+ V(ArgumentsAccessRead) \
+ V(StoreArrayLiteralElement) \
+ V(MathPowTagged) \
+ V(MathPowInteger) \
+ V(ContextOnly)
class CallInterfaceDescriptorData {
@@ -164,18 +172,24 @@ class CallInterfaceDescriptor {
};
-#define DECLARE_DESCRIPTOR(name) \
- explicit name(Isolate* isolate) : CallInterfaceDescriptor(isolate, key()) { \
- if (!data()->IsInitialized()) \
- Initialize(isolate->call_descriptor_data(key())); \
- } \
- static inline CallDescriptors::Key key(); \
- void Initialize(CallInterfaceDescriptorData* data);
+#define DECLARE_DESCRIPTOR(name, base) \
+ explicit name(Isolate* isolate) : base(isolate, key()) { \
+ if (!data()->IsInitialized()) \
+ Initialize(isolate->call_descriptor_data(key())); \
+ } \
+ \
+ protected: \
+ void Initialize(CallInterfaceDescriptorData* data); \
+ name(Isolate* isolate, CallDescriptors::Key key) : base(isolate, key) {} \
+ \
+ public: \
+ static inline CallDescriptors::Key key();
+// LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs.
class LoadDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(LoadDescriptor)
+ DECLARE_DESCRIPTOR(LoadDescriptor, CallInterfaceDescriptor)
enum ParameterIndices { kReceiverIndex, kNameIndex };
static const Register ReceiverRegister();
@@ -185,7 +199,7 @@ class LoadDescriptor : public CallInterfaceDescriptor {
class StoreDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(StoreDescriptor)
+ DECLARE_DESCRIPTOR(StoreDescriptor, CallInterfaceDescriptor)
enum ParameterIndices {
kReceiverIndex,
@@ -199,20 +213,17 @@ class StoreDescriptor : public CallInterfaceDescriptor {
};
-class ElementTransitionAndStoreDescriptor : public CallInterfaceDescriptor {
+class ElementTransitionAndStoreDescriptor : public StoreDescriptor {
public:
- DECLARE_DESCRIPTOR(ElementTransitionAndStoreDescriptor)
+ DECLARE_DESCRIPTOR(ElementTransitionAndStoreDescriptor, StoreDescriptor)
- static const Register ReceiverRegister();
- static const Register NameRegister();
- static const Register ValueRegister();
static const Register MapRegister();
};
class InstanceofDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(InstanceofDescriptor)
+ DECLARE_DESCRIPTOR(InstanceofDescriptor, CallInterfaceDescriptor)
enum ParameterIndices { kLeftIndex, kRightIndex, kParameterCount };
static const Register left();
@@ -220,174 +231,237 @@ class InstanceofDescriptor : public CallInterfaceDescriptor {
};
-class VectorLoadICDescriptor : public CallInterfaceDescriptor {
+class VectorLoadICTrampolineDescriptor : public LoadDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(VectorLoadICTrampolineDescriptor, LoadDescriptor)
+
+ enum ParameterIndices { kReceiverIndex, kNameIndex, kSlotIndex };
+
+ static const Register SlotRegister();
+};
+
+
+class VectorLoadICDescriptor : public VectorLoadICTrampolineDescriptor {
public:
- DECLARE_DESCRIPTOR(VectorLoadICDescriptor)
+ DECLARE_DESCRIPTOR(VectorLoadICDescriptor, VectorLoadICTrampolineDescriptor)
enum ParameterIndices {
kReceiverIndex,
kNameIndex,
kSlotIndex,
- kVectorIndex,
- kParameterCount
+ kVectorIndex
};
- static const Register ReceiverRegister();
- static const Register NameRegister();
- static const Register SlotRegister();
static const Register VectorRegister();
};
class FastNewClosureDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(FastNewClosureDescriptor)
+ DECLARE_DESCRIPTOR(FastNewClosureDescriptor, CallInterfaceDescriptor)
};
class FastNewContextDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(FastNewContextDescriptor)
+ DECLARE_DESCRIPTOR(FastNewContextDescriptor, CallInterfaceDescriptor)
};
class ToNumberDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ToNumberDescriptor)
+ DECLARE_DESCRIPTOR(ToNumberDescriptor, CallInterfaceDescriptor)
};
class NumberToStringDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(NumberToStringDescriptor)
+ DECLARE_DESCRIPTOR(NumberToStringDescriptor, CallInterfaceDescriptor)
};
class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(FastCloneShallowArrayDescriptor)
+ DECLARE_DESCRIPTOR(FastCloneShallowArrayDescriptor, CallInterfaceDescriptor)
};
class FastCloneShallowObjectDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor)
+ DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor, CallInterfaceDescriptor)
};
class CreateAllocationSiteDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(CreateAllocationSiteDescriptor)
+ DECLARE_DESCRIPTOR(CreateAllocationSiteDescriptor, CallInterfaceDescriptor)
};
class CallFunctionDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(CallFunctionDescriptor)
+ DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor)
+};
+
+
+class CallFunctionWithFeedbackDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(CallFunctionWithFeedbackDescriptor,
+ CallInterfaceDescriptor)
};
class CallConstructDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(CallConstructDescriptor)
+ DECLARE_DESCRIPTOR(CallConstructDescriptor, CallInterfaceDescriptor)
};
class RegExpConstructResultDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(RegExpConstructResultDescriptor)
+ DECLARE_DESCRIPTOR(RegExpConstructResultDescriptor, CallInterfaceDescriptor)
};
class TransitionElementsKindDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(TransitionElementsKindDescriptor)
+ DECLARE_DESCRIPTOR(TransitionElementsKindDescriptor, CallInterfaceDescriptor)
};
class ArrayConstructorConstantArgCountDescriptor
: public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ArrayConstructorConstantArgCountDescriptor)
+ DECLARE_DESCRIPTOR(ArrayConstructorConstantArgCountDescriptor,
+ CallInterfaceDescriptor)
};
class ArrayConstructorDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ArrayConstructorDescriptor)
+ DECLARE_DESCRIPTOR(ArrayConstructorDescriptor, CallInterfaceDescriptor)
};
class InternalArrayConstructorConstantArgCountDescriptor
: public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(InternalArrayConstructorConstantArgCountDescriptor)
+ DECLARE_DESCRIPTOR(InternalArrayConstructorConstantArgCountDescriptor,
+ CallInterfaceDescriptor)
};
class InternalArrayConstructorDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(InternalArrayConstructorDescriptor)
+ DECLARE_DESCRIPTOR(InternalArrayConstructorDescriptor,
+ CallInterfaceDescriptor)
};
class CompareNilDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(CompareNilDescriptor)
+ DECLARE_DESCRIPTOR(CompareNilDescriptor, CallInterfaceDescriptor)
};
class ToBooleanDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ToBooleanDescriptor)
+ DECLARE_DESCRIPTOR(ToBooleanDescriptor, CallInterfaceDescriptor)
};
class BinaryOpDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(BinaryOpDescriptor)
+ DECLARE_DESCRIPTOR(BinaryOpDescriptor, CallInterfaceDescriptor)
};
class BinaryOpWithAllocationSiteDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(BinaryOpWithAllocationSiteDescriptor)
+ DECLARE_DESCRIPTOR(BinaryOpWithAllocationSiteDescriptor,
+ CallInterfaceDescriptor)
};
class StringAddDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(StringAddDescriptor)
+ DECLARE_DESCRIPTOR(StringAddDescriptor, CallInterfaceDescriptor)
};
class KeyedDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(KeyedDescriptor)
+ DECLARE_DESCRIPTOR(KeyedDescriptor, CallInterfaceDescriptor)
};
class NamedDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(NamedDescriptor)
+ DECLARE_DESCRIPTOR(NamedDescriptor, CallInterfaceDescriptor)
};
class CallHandlerDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(CallHandlerDescriptor)
+ DECLARE_DESCRIPTOR(CallHandlerDescriptor, CallInterfaceDescriptor)
};
class ArgumentAdaptorDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ArgumentAdaptorDescriptor)
+ DECLARE_DESCRIPTOR(ArgumentAdaptorDescriptor, CallInterfaceDescriptor)
};
class ApiFunctionDescriptor : public CallInterfaceDescriptor {
public:
- DECLARE_DESCRIPTOR(ApiFunctionDescriptor)
+ DECLARE_DESCRIPTOR(ApiFunctionDescriptor, CallInterfaceDescriptor)
+};
+
+
+class ApiGetterDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(ApiGetterDescriptor, CallInterfaceDescriptor)
+
+ static const Register function_address();
+};
+
+
+class ArgumentsAccessReadDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(ArgumentsAccessReadDescriptor, CallInterfaceDescriptor)
+
+ static const Register index();
+ static const Register parameter_count();
+};
+
+
+class StoreArrayLiteralElementDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(StoreArrayLiteralElementDescriptor,
+ CallInterfaceDescriptor)
+};
+
+
+class MathPowTaggedDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(MathPowTaggedDescriptor, CallInterfaceDescriptor)
+
+ static const Register exponent();
+};
+
+
+class MathPowIntegerDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor)
+
+ static const Register exponent();
+};
+
+
+class ContextOnlyDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor)
};
#undef DECLARE_DESCRIPTOR
« no previous file with comments | « src/ic/x64/handler-compiler-x64.cc ('k') | src/interface-descriptors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698