| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_CODE_STUBS_H_ | 5 #ifndef V8_CODE_STUBS_H_ |
| 6 #define V8_CODE_STUBS_H_ | 6 #define V8_CODE_STUBS_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
| 10 #include "src/code-stub-assembler.h" | 10 #include "src/code-stub-assembler.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 V(StoreScriptContextField) \ | 119 V(StoreScriptContextField) \ |
| 120 V(NumberToString) \ | 120 V(NumberToString) \ |
| 121 V(StringAdd) \ | 121 V(StringAdd) \ |
| 122 V(GetProperty) \ | 122 V(GetProperty) \ |
| 123 V(LoadIC) \ | 123 V(LoadIC) \ |
| 124 V(KeyedLoadICTF) \ | 124 V(KeyedLoadICTF) \ |
| 125 V(StoreFastElement) \ | 125 V(StoreFastElement) \ |
| 126 V(StoreField) \ | 126 V(StoreField) \ |
| 127 V(StoreGlobal) \ | 127 V(StoreGlobal) \ |
| 128 V(StoreIC) \ | 128 V(StoreIC) \ |
| 129 V(KeyedStoreICTF) \ |
| 129 V(StoreInterceptor) \ | 130 V(StoreInterceptor) \ |
| 130 V(StoreMap) \ | 131 V(StoreMap) \ |
| 131 V(StoreTransition) \ | 132 V(StoreTransition) \ |
| 132 V(LoadApiGetter) \ | 133 V(LoadApiGetter) \ |
| 133 V(LoadIndexedInterceptor) \ | 134 V(LoadIndexedInterceptor) \ |
| 134 V(GrowArrayElements) \ | 135 V(GrowArrayElements) \ |
| 135 /* These are only called from FGC and */ \ | 136 /* These are only called from FGC and */ \ |
| 136 /* can be removed when we use ignition */ \ | 137 /* can be removed when we use ignition */ \ |
| 137 /* only */ \ | 138 /* only */ \ |
| 138 V(LoadICTrampoline) \ | 139 V(LoadICTrampoline) \ |
| 139 V(LoadGlobalICTrampoline) \ | 140 V(LoadGlobalICTrampoline) \ |
| 140 V(KeyedLoadICTrampolineTF) \ | 141 V(KeyedLoadICTrampolineTF) \ |
| 141 V(StoreICTrampoline) | 142 V(StoreICTrampoline) \ |
| 143 V(KeyedStoreICTrampolineTF) |
| 142 | 144 |
| 143 // List of code stubs only used on ARM 32 bits platforms. | 145 // List of code stubs only used on ARM 32 bits platforms. |
| 144 #if V8_TARGET_ARCH_ARM | 146 #if V8_TARGET_ARCH_ARM |
| 145 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) | 147 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) |
| 146 | 148 |
| 147 #else | 149 #else |
| 148 #define CODE_STUB_LIST_ARM(V) | 150 #define CODE_STUB_LIST_ARM(V) |
| 149 #endif | 151 #endif |
| 150 | 152 |
| 151 // List of code stubs only used on ARM 64 bits platforms. | 153 // List of code stubs only used on ARM 64 bits platforms. |
| (...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2070 } | 2072 } |
| 2071 | 2073 |
| 2072 protected: | 2074 protected: |
| 2073 StoreICState state() const { return StoreICState(GetExtraICState()); } | 2075 StoreICState state() const { return StoreICState(GetExtraICState()); } |
| 2074 | 2076 |
| 2075 private: | 2077 private: |
| 2076 DEFINE_CALL_INTERFACE_DESCRIPTOR(Store); | 2078 DEFINE_CALL_INTERFACE_DESCRIPTOR(Store); |
| 2077 DEFINE_PLATFORM_CODE_STUB(KeyedStoreICTrampoline, PlatformCodeStub); | 2079 DEFINE_PLATFORM_CODE_STUB(KeyedStoreICTrampoline, PlatformCodeStub); |
| 2078 }; | 2080 }; |
| 2079 | 2081 |
| 2082 class KeyedStoreICTrampolineTFStub : public StoreICTrampolineStub { |
| 2083 public: |
| 2084 KeyedStoreICTrampolineTFStub(Isolate* isolate, const StoreICState& state) |
| 2085 : StoreICTrampolineStub(isolate, state) {} |
| 2086 |
| 2087 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2088 |
| 2089 Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; } |
| 2090 |
| 2091 DEFINE_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub); |
| 2092 }; |
| 2080 | 2093 |
| 2081 class CallICTrampolineStub : public PlatformCodeStub { | 2094 class CallICTrampolineStub : public PlatformCodeStub { |
| 2082 public: | 2095 public: |
| 2083 CallICTrampolineStub(Isolate* isolate, const CallICState& state) | 2096 CallICTrampolineStub(Isolate* isolate, const CallICState& state) |
| 2084 : PlatformCodeStub(isolate) { | 2097 : PlatformCodeStub(isolate) { |
| 2085 minor_key_ = state.GetExtraICState(); | 2098 minor_key_ = state.GetExtraICState(); |
| 2086 } | 2099 } |
| 2087 | 2100 |
| 2088 Code::Kind GetCodeKind() const override { return Code::CALL_IC; } | 2101 Code::Kind GetCodeKind() const override { return Code::CALL_IC; } |
| 2089 | 2102 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2175 return static_cast<ExtraICState>(minor_key_); | 2188 return static_cast<ExtraICState>(minor_key_); |
| 2176 } | 2189 } |
| 2177 | 2190 |
| 2178 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); | 2191 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); |
| 2179 DEFINE_PLATFORM_CODE_STUB(KeyedStoreIC, PlatformCodeStub); | 2192 DEFINE_PLATFORM_CODE_STUB(KeyedStoreIC, PlatformCodeStub); |
| 2180 | 2193 |
| 2181 protected: | 2194 protected: |
| 2182 void GenerateImpl(MacroAssembler* masm, bool in_frame); | 2195 void GenerateImpl(MacroAssembler* masm, bool in_frame); |
| 2183 }; | 2196 }; |
| 2184 | 2197 |
| 2198 class KeyedStoreICTFStub : public StoreICStub { |
| 2199 public: |
| 2200 KeyedStoreICTFStub(Isolate* isolate, const StoreICState& state) |
| 2201 : StoreICStub(isolate, state) {} |
| 2202 |
| 2203 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2204 |
| 2205 Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; } |
| 2206 |
| 2207 DEFINE_CODE_STUB(KeyedStoreICTF, StoreICStub); |
| 2208 }; |
| 2185 | 2209 |
| 2186 class DoubleToIStub : public PlatformCodeStub { | 2210 class DoubleToIStub : public PlatformCodeStub { |
| 2187 public: | 2211 public: |
| 2188 DoubleToIStub(Isolate* isolate, Register source, Register destination, | 2212 DoubleToIStub(Isolate* isolate, Register source, Register destination, |
| 2189 int offset, bool is_truncating, bool skip_fastpath = false) | 2213 int offset, bool is_truncating, bool skip_fastpath = false) |
| 2190 : PlatformCodeStub(isolate) { | 2214 : PlatformCodeStub(isolate) { |
| 2191 minor_key_ = SourceRegisterBits::encode(source.code()) | | 2215 minor_key_ = SourceRegisterBits::encode(source.code()) | |
| 2192 DestinationRegisterBits::encode(destination.code()) | | 2216 DestinationRegisterBits::encode(destination.code()) | |
| 2193 OffsetBits::encode(offset) | | 2217 OffsetBits::encode(offset) | |
| 2194 IsTruncatingBits::encode(is_truncating) | | 2218 IsTruncatingBits::encode(is_truncating) | |
| (...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2748 #undef DEFINE_HYDROGEN_CODE_STUB | 2772 #undef DEFINE_HYDROGEN_CODE_STUB |
| 2749 #undef DEFINE_CODE_STUB | 2773 #undef DEFINE_CODE_STUB |
| 2750 #undef DEFINE_CODE_STUB_BASE | 2774 #undef DEFINE_CODE_STUB_BASE |
| 2751 | 2775 |
| 2752 extern Representation RepresentationFromMachineType(MachineType type); | 2776 extern Representation RepresentationFromMachineType(MachineType type); |
| 2753 | 2777 |
| 2754 } // namespace internal | 2778 } // namespace internal |
| 2755 } // namespace v8 | 2779 } // namespace v8 |
| 2756 | 2780 |
| 2757 #endif // V8_CODE_STUBS_H_ | 2781 #endif // V8_CODE_STUBS_H_ |
| OLD | NEW |