Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index f16a8db82598446ad057d0825cd4850c65a7e3eb..9074793ffdd8786af73dac571afe0b25115e0ed5 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -66,6 +66,10 @@ namespace internal { |
V(NumberToString) \ |
V(CEntry) \ |
V(JSEntry) \ |
+ V(KeyedLoadFastElement) \ |
+ V(KeyedStoreFastElement) \ |
+ V(KeyedLoadExternalArray) \ |
+ V(KeyedStoreExternalArray) \ |
V(DebuggerStatement) \ |
V(StringDictionaryNegativeLookup) |
@@ -922,6 +926,86 @@ class AllowStubCallsScope { |
DISALLOW_COPY_AND_ASSIGN(AllowStubCallsScope); |
}; |
+#ifdef DEBUG |
+#define DECLARE_ARRAY_STUB_PRINT(name) void Print() { PrintF(#name); } |
+#else |
+#define DECLARE_ARRAY_STUB_PRINT(name) |
+#endif |
+ |
+ |
+class KeyedLoadFastElementStub : public CodeStub { |
+ public: |
+ explicit KeyedLoadFastElementStub() { |
+ } |
+ |
+ Major MajorKey() { return KeyedLoadFastElement; } |
+ int MinorKey() { return 0; } |
+ |
+ void Generate(MacroAssembler* masm); |
+ |
+ const char* GetName() { return "KeyedLoadFastElementStub"; } |
+ |
+ DECLARE_ARRAY_STUB_PRINT(KeyedLoadFastElementStub) |
+}; |
+ |
+ |
+class KeyedStoreFastElementStub : public CodeStub { |
+ public: |
+ explicit KeyedStoreFastElementStub(bool is_js_array) |
+ : is_js_array_(is_js_array) { } |
+ |
+ Major MajorKey() { return KeyedStoreFastElement; } |
+ int MinorKey() { return is_js_array_ ? 1 : 0; } |
+ |
+ void Generate(MacroAssembler* masm); |
+ |
+ const char* GetName() { return "KeyedStoreFastElementStub"; } |
+ |
+ DECLARE_ARRAY_STUB_PRINT(KeyedStoreFastElementStub) |
+ |
+ private: |
+ bool is_js_array_; |
+}; |
+ |
+ |
+class KeyedLoadExternalArrayStub : public CodeStub { |
+ public: |
+ explicit KeyedLoadExternalArrayStub(ExternalArrayType array_type) |
+ : array_type_(array_type) { } |
+ |
+ Major MajorKey() { return KeyedLoadExternalArray; } |
+ int MinorKey() { return array_type_; } |
+ |
+ void Generate(MacroAssembler* masm); |
+ |
+ const char* GetName() { return "KeyedLoadExternalArrayStub"; } |
+ |
+ DECLARE_ARRAY_STUB_PRINT(KeyedLoadExternalArrayStub) |
+ |
+ protected: |
+ ExternalArrayType array_type_; |
+}; |
+ |
+ |
+class KeyedStoreExternalArrayStub : public CodeStub { |
+ public: |
+ explicit KeyedStoreExternalArrayStub(ExternalArrayType array_type) |
+ : array_type_(array_type) { } |
+ |
+ Major MajorKey() { return KeyedStoreExternalArray; } |
+ int MinorKey() { return array_type_; } |
+ |
+ void Generate(MacroAssembler* masm); |
+ |
+ const char* GetName() { return "KeyedStoreExternalArrayStub"; } |
+ |
+ DECLARE_ARRAY_STUB_PRINT(KeyedStoreExternalArrayStub) |
+ |
+ protected: |
+ ExternalArrayType array_type_; |
+}; |
+ |
+ |
} } // namespace v8::internal |
#endif // V8_CODE_STUBS_H_ |