| 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(FastCloneShallowArray) \ | 119 V(FastCloneShallowArray) \ |
| 120 V(FastCloneShallowObject) \ | 120 V(FastCloneShallowObject) \ |
| 121 V(FastNewClosure) \ | 121 V(FastNewClosure) \ |
| 122 V(FastNewFunctionContext) \ | 122 V(FastNewFunctionContext) \ |
| 123 V(KeyedLoadSloppyArguments) \ | 123 V(KeyedLoadSloppyArguments) \ |
| 124 V(KeyedStoreSloppyArguments) \ | 124 V(KeyedStoreSloppyArguments) \ |
| 125 V(LoadScriptContextField) \ | 125 V(LoadScriptContextField) \ |
| 126 V(StoreScriptContextField) \ | 126 V(StoreScriptContextField) \ |
| 127 V(NumberToString) \ | 127 V(NumberToString) \ |
| 128 V(GetProperty) \ | 128 V(GetProperty) \ |
| 129 V(LoadICTF) \ | 129 V(LoadIC) \ |
| 130 V(KeyedLoadICTF) \ | 130 V(KeyedLoadICTF) \ |
| 131 V(StoreFastElement) \ | 131 V(StoreFastElement) \ |
| 132 V(StoreField) \ | 132 V(StoreField) \ |
| 133 V(StoreGlobal) \ | 133 V(StoreGlobal) \ |
| 134 V(StoreICTF) \ | 134 V(StoreICTF) \ |
| 135 V(StoreInterceptor) \ | 135 V(StoreInterceptor) \ |
| 136 V(StoreMap) \ | 136 V(StoreMap) \ |
| 137 V(StoreTransition) \ | 137 V(StoreTransition) \ |
| 138 V(LoadApiGetter) \ | 138 V(LoadApiGetter) \ |
| 139 V(LoadIndexedInterceptor) \ | 139 V(LoadIndexedInterceptor) \ |
| 140 V(GrowArrayElements) \ | 140 V(GrowArrayElements) \ |
| 141 /* These are only called from FGC and */ \ | 141 /* These are only called from FGC and */ \ |
| 142 /* can be removed when we use ignition */ \ | 142 /* can be removed when we use ignition */ \ |
| 143 /* only */ \ | 143 /* only */ \ |
| 144 V(LoadICTrampolineTF) \ | 144 V(LoadICTrampoline) \ |
| 145 V(LoadGlobalICTrampoline) \ | 145 V(LoadGlobalICTrampoline) \ |
| 146 V(KeyedLoadICTrampolineTF) \ | 146 V(KeyedLoadICTrampolineTF) \ |
| 147 V(StoreICTrampolineTF) | 147 V(StoreICTrampolineTF) |
| 148 | 148 |
| 149 // List of code stubs only used on ARM 32 bits platforms. | 149 // List of code stubs only used on ARM 32 bits platforms. |
| 150 #if V8_TARGET_ARCH_ARM | 150 #if V8_TARGET_ARCH_ARM |
| 151 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) | 151 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) |
| 152 | 152 |
| 153 #else | 153 #else |
| 154 #define CODE_STUB_LIST_ARM(V) | 154 #define CODE_STUB_LIST_ARM(V) |
| (...skipping 1886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2041 class KeyedLoadGenericStub : public HydrogenCodeStub { | 2041 class KeyedLoadGenericStub : public HydrogenCodeStub { |
| 2042 public: | 2042 public: |
| 2043 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} | 2043 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} |
| 2044 | 2044 |
| 2045 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 2045 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
| 2046 | 2046 |
| 2047 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | 2047 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |
| 2048 DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); | 2048 DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); |
| 2049 }; | 2049 }; |
| 2050 | 2050 |
| 2051 | 2051 class LoadICTrampolineStub : public TurboFanCodeStub { |
| 2052 class LoadICTrampolineTFStub : public TurboFanCodeStub { | |
| 2053 public: | 2052 public: |
| 2054 explicit LoadICTrampolineTFStub(Isolate* isolate) | 2053 explicit LoadICTrampolineStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} |
| 2055 : TurboFanCodeStub(isolate) {} | |
| 2056 | 2054 |
| 2057 void GenerateAssembly(CodeStubAssembler* assembler) const override; | 2055 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2058 | 2056 |
| 2059 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } | 2057 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } |
| 2060 | 2058 |
| 2061 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); | 2059 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |
| 2062 DEFINE_CODE_STUB(LoadICTrampolineTF, TurboFanCodeStub); | 2060 DEFINE_CODE_STUB(LoadICTrampoline, TurboFanCodeStub); |
| 2063 }; | 2061 }; |
| 2064 | 2062 |
| 2065 class LoadGlobalICTrampolineStub : public TurboFanCodeStub { | 2063 class LoadGlobalICTrampolineStub : public TurboFanCodeStub { |
| 2066 public: | 2064 public: |
| 2067 explicit LoadGlobalICTrampolineStub(Isolate* isolate, | 2065 explicit LoadGlobalICTrampolineStub(Isolate* isolate, |
| 2068 const LoadGlobalICState& state) | 2066 const LoadGlobalICState& state) |
| 2069 : TurboFanCodeStub(isolate) { | 2067 : TurboFanCodeStub(isolate) { |
| 2070 minor_key_ = state.GetExtraICState(); | 2068 minor_key_ = state.GetExtraICState(); |
| 2071 } | 2069 } |
| 2072 | 2070 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2086 public: | 2084 public: |
| 2087 explicit KeyedLoadICTrampolineStub(Isolate* isolate) | 2085 explicit KeyedLoadICTrampolineStub(Isolate* isolate) |
| 2088 : PlatformCodeStub(isolate) {} | 2086 : PlatformCodeStub(isolate) {} |
| 2089 | 2087 |
| 2090 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 2088 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
| 2091 | 2089 |
| 2092 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); | 2090 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |
| 2093 DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, PlatformCodeStub); | 2091 DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, PlatformCodeStub); |
| 2094 }; | 2092 }; |
| 2095 | 2093 |
| 2096 class KeyedLoadICTrampolineTFStub : public LoadICTrampolineTFStub { | 2094 class KeyedLoadICTrampolineTFStub : public LoadICTrampolineStub { |
| 2097 public: | 2095 public: |
| 2098 explicit KeyedLoadICTrampolineTFStub(Isolate* isolate) | 2096 explicit KeyedLoadICTrampolineTFStub(Isolate* isolate) |
| 2099 : LoadICTrampolineTFStub(isolate) {} | 2097 : LoadICTrampolineStub(isolate) {} |
| 2100 | 2098 |
| 2101 void GenerateAssembly(CodeStubAssembler* assembler) const override; | 2099 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2102 | 2100 |
| 2103 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 2101 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
| 2104 | 2102 |
| 2105 DEFINE_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineTFStub); | 2103 DEFINE_CODE_STUB(KeyedLoadICTrampolineTF, LoadICTrampolineStub); |
| 2106 }; | 2104 }; |
| 2107 | 2105 |
| 2108 class StoreICTrampolineStub : public PlatformCodeStub { | 2106 class StoreICTrampolineStub : public PlatformCodeStub { |
| 2109 public: | 2107 public: |
| 2110 StoreICTrampolineStub(Isolate* isolate, const StoreICState& state) | 2108 StoreICTrampolineStub(Isolate* isolate, const StoreICState& state) |
| 2111 : PlatformCodeStub(isolate) { | 2109 : PlatformCodeStub(isolate) { |
| 2112 minor_key_ = state.GetExtraICState(); | 2110 minor_key_ = state.GetExtraICState(); |
| 2113 } | 2111 } |
| 2114 | 2112 |
| 2115 Code::Kind GetCodeKind() const override { return Code::STORE_IC; } | 2113 Code::Kind GetCodeKind() const override { return Code::STORE_IC; } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2173 | 2171 |
| 2174 protected: | 2172 protected: |
| 2175 CallICState state() const { | 2173 CallICState state() const { |
| 2176 return CallICState(static_cast<ExtraICState>(minor_key_)); | 2174 return CallICState(static_cast<ExtraICState>(minor_key_)); |
| 2177 } | 2175 } |
| 2178 | 2176 |
| 2179 DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback); | 2177 DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback); |
| 2180 DEFINE_PLATFORM_CODE_STUB(CallICTrampoline, PlatformCodeStub); | 2178 DEFINE_PLATFORM_CODE_STUB(CallICTrampoline, PlatformCodeStub); |
| 2181 }; | 2179 }; |
| 2182 | 2180 |
| 2183 class LoadICTFStub : public TurboFanCodeStub { | 2181 class LoadICStub : public TurboFanCodeStub { |
| 2184 public: | 2182 public: |
| 2185 explicit LoadICTFStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} | 2183 explicit LoadICStub(Isolate* isolate) : TurboFanCodeStub(isolate) {} |
| 2186 | 2184 |
| 2187 void GenerateAssembly(CodeStubAssembler* assembler) const override; | 2185 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2188 | 2186 |
| 2189 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } | 2187 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } |
| 2190 | 2188 |
| 2191 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | 2189 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |
| 2192 DEFINE_CODE_STUB(LoadICTF, TurboFanCodeStub); | 2190 DEFINE_CODE_STUB(LoadIC, TurboFanCodeStub); |
| 2193 }; | 2191 }; |
| 2194 | 2192 |
| 2195 class LoadGlobalICStub : public TurboFanCodeStub { | 2193 class LoadGlobalICStub : public TurboFanCodeStub { |
| 2196 public: | 2194 public: |
| 2197 explicit LoadGlobalICStub(Isolate* isolate, const LoadGlobalICState& state) | 2195 explicit LoadGlobalICStub(Isolate* isolate, const LoadGlobalICState& state) |
| 2198 : TurboFanCodeStub(isolate) { | 2196 : TurboFanCodeStub(isolate) { |
| 2199 minor_key_ = state.GetExtraICState(); | 2197 minor_key_ = state.GetExtraICState(); |
| 2200 } | 2198 } |
| 2201 | 2199 |
| 2202 void GenerateAssembly(CodeStubAssembler* assembler) const override; | 2200 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2219 | 2217 |
| 2220 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 2218 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
| 2221 | 2219 |
| 2222 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | 2220 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |
| 2223 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); | 2221 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); |
| 2224 | 2222 |
| 2225 protected: | 2223 protected: |
| 2226 void GenerateImpl(MacroAssembler* masm, bool in_frame); | 2224 void GenerateImpl(MacroAssembler* masm, bool in_frame); |
| 2227 }; | 2225 }; |
| 2228 | 2226 |
| 2229 class KeyedLoadICTFStub : public LoadICTFStub { | 2227 class KeyedLoadICTFStub : public LoadICStub { |
| 2230 public: | 2228 public: |
| 2231 explicit KeyedLoadICTFStub(Isolate* isolate) : LoadICTFStub(isolate) {} | 2229 explicit KeyedLoadICTFStub(Isolate* isolate) : LoadICStub(isolate) {} |
| 2232 | 2230 |
| 2233 void GenerateAssembly(CodeStubAssembler* assembler) const override; | 2231 void GenerateAssembly(CodeStubAssembler* assembler) const override; |
| 2234 | 2232 |
| 2235 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 2233 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |
| 2236 | 2234 |
| 2237 DEFINE_CODE_STUB(KeyedLoadICTF, LoadICTFStub); | 2235 DEFINE_CODE_STUB(KeyedLoadICTF, LoadICStub); |
| 2238 }; | 2236 }; |
| 2239 | 2237 |
| 2240 class StoreICStub : public PlatformCodeStub { | 2238 class StoreICStub : public PlatformCodeStub { |
| 2241 public: | 2239 public: |
| 2242 StoreICStub(Isolate* isolate, const StoreICState& state) | 2240 StoreICStub(Isolate* isolate, const StoreICState& state) |
| 2243 : PlatformCodeStub(isolate) { | 2241 : PlatformCodeStub(isolate) { |
| 2244 minor_key_ = state.GetExtraICState(); | 2242 minor_key_ = state.GetExtraICState(); |
| 2245 } | 2243 } |
| 2246 | 2244 |
| 2247 void GenerateForTrampoline(MacroAssembler* masm); | 2245 void GenerateForTrampoline(MacroAssembler* masm); |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2865 #undef DEFINE_HYDROGEN_CODE_STUB | 2863 #undef DEFINE_HYDROGEN_CODE_STUB |
| 2866 #undef DEFINE_CODE_STUB | 2864 #undef DEFINE_CODE_STUB |
| 2867 #undef DEFINE_CODE_STUB_BASE | 2865 #undef DEFINE_CODE_STUB_BASE |
| 2868 | 2866 |
| 2869 extern Representation RepresentationFromMachineType(MachineType type); | 2867 extern Representation RepresentationFromMachineType(MachineType type); |
| 2870 | 2868 |
| 2871 } // namespace internal | 2869 } // namespace internal |
| 2872 } // namespace v8 | 2870 } // namespace v8 |
| 2873 | 2871 |
| 2874 #endif // V8_CODE_STUBS_H_ | 2872 #endif // V8_CODE_STUBS_H_ |
| OLD | NEW |