| 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/codegen.h" |    10 #include "src/codegen.h" | 
| (...skipping 2096 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2107  private: |  2107  private: | 
|  2108   StringCharCodeAtGenerator char_code_at_generator_; |  2108   StringCharCodeAtGenerator char_code_at_generator_; | 
|  2109   StringCharFromCodeGenerator char_from_code_generator_; |  2109   StringCharFromCodeGenerator char_from_code_generator_; | 
|  2110  |  2110  | 
|  2111   DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator); |  2111   DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator); | 
|  2112 }; |  2112 }; | 
|  2113  |  2113  | 
|  2114  |  2114  | 
|  2115 class LoadDictionaryElementStub : public HydrogenCodeStub { |  2115 class LoadDictionaryElementStub : public HydrogenCodeStub { | 
|  2116  public: |  2116  public: | 
|  2117   explicit LoadDictionaryElementStub(Isolate* isolate) |  2117   explicit LoadDictionaryElementStub(Isolate* isolate, const LoadICState& state) | 
|  2118       : HydrogenCodeStub(isolate) {} |  2118       : HydrogenCodeStub(isolate) { | 
 |  2119     minor_key_ = state.GetExtraICState(); | 
 |  2120   } | 
|  2119  |  2121  | 
|  2120   CallInterfaceDescriptor GetCallInterfaceDescriptor() override { |  2122   CallInterfaceDescriptor GetCallInterfaceDescriptor() override { | 
|  2121     return LoadWithVectorDescriptor(isolate()); |  2123     return LoadWithVectorDescriptor(isolate()); | 
|  2122   } |  2124   } | 
|  2123  |  2125  | 
 |  2126   LanguageMode language_mode() const { | 
 |  2127     return LoadICState::GetLanguageMode(MinorKey()); | 
 |  2128   } | 
 |  2129  | 
|  2124   DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub); |  2130   DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub); | 
|  2125 }; |  2131 }; | 
|  2126  |  2132  | 
|  2127  |  2133  | 
|  2128 class KeyedLoadGenericStub : public HydrogenCodeStub { |  2134 class KeyedLoadGenericStub : public HydrogenCodeStub { | 
|  2129  public: |  2135  public: | 
|  2130   explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} |  2136   explicit KeyedLoadGenericStub(Isolate* isolate, const LoadICState& state) | 
 |  2137       : HydrogenCodeStub(isolate) { | 
 |  2138     minor_key_ = state.GetExtraICState(); | 
 |  2139   } | 
|  2131  |  2140  | 
|  2132   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |  2141   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 
|  2133   InlineCacheState GetICState() const override { return GENERIC; } |  2142   InlineCacheState GetICState() const override { return GENERIC; } | 
|  2134  |  2143  | 
 |  2144   LanguageMode language_mode() const { | 
 |  2145     return LoadICState::GetLanguageMode(MinorKey()); | 
 |  2146   } | 
 |  2147  | 
|  2135   DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |  2148   DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); | 
|  2136  |  2149  | 
|  2137   DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); |  2150   DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); | 
|  2138 }; |  2151 }; | 
|  2139  |  2152  | 
|  2140  |  2153  | 
|  2141 class LoadICTrampolineStub : public PlatformCodeStub { |  2154 class LoadICTrampolineStub : public PlatformCodeStub { | 
|  2142  public: |  2155  public: | 
|  2143   LoadICTrampolineStub(Isolate* isolate, const LoadICState& state) |  2156   LoadICTrampolineStub(Isolate* isolate, const LoadICState& state) | 
|  2144       : PlatformCodeStub(isolate) { |  2157       : PlatformCodeStub(isolate) { | 
|  2145     minor_key_ = state.GetExtraICState(); |  2158     minor_key_ = state.GetExtraICState(); | 
|  2146   } |  2159   } | 
|  2147  |  2160  | 
|  2148   Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } |  2161   Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } | 
|  2149  |  2162  | 
|  2150   InlineCacheState GetICState() const final { return DEFAULT; } |  2163   InlineCacheState GetICState() const final { return DEFAULT; } | 
|  2151  |  2164  | 
|  2152   ExtraICState GetExtraICState() const final { |  2165   ExtraICState GetExtraICState() const final { | 
|  2153     return static_cast<ExtraICState>(minor_key_); |  2166     return static_cast<ExtraICState>(minor_key_); | 
|  2154   } |  2167   } | 
|  2155  |  2168  | 
|  2156  private: |  2169  protected: | 
|  2157   LoadICState state() const { |  2170   LoadICState state() const { | 
|  2158     return LoadICState(static_cast<ExtraICState>(minor_key_)); |  2171     return LoadICState(static_cast<ExtraICState>(minor_key_)); | 
|  2159   } |  2172   } | 
|  2160  |  2173  | 
|  2161   DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); |  2174   DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); | 
|  2162   DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub); |  2175   DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub); | 
|  2163 }; |  2176 }; | 
|  2164  |  2177  | 
|  2165  |  2178  | 
|  2166 class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { |  2179 class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { | 
|  2167  public: |  2180  public: | 
|  2168   explicit KeyedLoadICTrampolineStub(Isolate* isolate) |  2181   explicit KeyedLoadICTrampolineStub(Isolate* isolate, const LoadICState& state) | 
|  2169       : LoadICTrampolineStub(isolate, LoadICState(0)) {} |  2182       : LoadICTrampolineStub(isolate, state) {} | 
|  2170  |  2183  | 
|  2171   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |  2184   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 
|  2172  |  2185  | 
|  2173   DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub); |  2186   DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub); | 
|  2174 }; |  2187 }; | 
|  2175  |  2188  | 
|  2176  |  2189  | 
|  2177 class VectorStoreICTrampolineStub : public PlatformCodeStub { |  2190 class VectorStoreICTrampolineStub : public PlatformCodeStub { | 
|  2178  public: |  2191  public: | 
|  2179   VectorStoreICTrampolineStub(Isolate* isolate, const StoreICState& state) |  2192   VectorStoreICTrampolineStub(Isolate* isolate, const StoreICState& state) | 
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2265   DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |  2278   DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | 
|  2266   DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub); |  2279   DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub); | 
|  2267  |  2280  | 
|  2268  protected: |  2281  protected: | 
|  2269   void GenerateImpl(MacroAssembler* masm, bool in_frame); |  2282   void GenerateImpl(MacroAssembler* masm, bool in_frame); | 
|  2270 }; |  2283 }; | 
|  2271  |  2284  | 
|  2272  |  2285  | 
|  2273 class KeyedLoadICStub : public PlatformCodeStub { |  2286 class KeyedLoadICStub : public PlatformCodeStub { | 
|  2274  public: |  2287  public: | 
|  2275   explicit KeyedLoadICStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |  2288   explicit KeyedLoadICStub(Isolate* isolate, const LoadICState& state) | 
 |  2289       : PlatformCodeStub(isolate) { | 
 |  2290     minor_key_ = state.GetExtraICState(); | 
 |  2291   } | 
|  2276  |  2292  | 
|  2277   void GenerateForTrampoline(MacroAssembler* masm); |  2293   void GenerateForTrampoline(MacroAssembler* masm); | 
|  2278  |  2294  | 
|  2279   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } |  2295   Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } | 
|  2280   InlineCacheState GetICState() const final { return DEFAULT; } |  2296   InlineCacheState GetICState() const final { return DEFAULT; } | 
 |  2297   ExtraICState GetExtraICState() const final { | 
 |  2298     return static_cast<ExtraICState>(minor_key_); | 
 |  2299   } | 
|  2281  |  2300  | 
|  2282   DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); |  2301   DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); | 
|  2283   DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); |  2302   DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); | 
|  2284  |  2303  | 
|  2285  protected: |  2304  protected: | 
|  2286   void GenerateImpl(MacroAssembler* masm, bool in_frame); |  2305   void GenerateImpl(MacroAssembler* masm, bool in_frame); | 
|  2287 }; |  2306 }; | 
|  2288  |  2307  | 
|  2289  |  2308  | 
|  2290 class VectorStoreICStub : public PlatformCodeStub { |  2309 class VectorStoreICStub : public PlatformCodeStub { | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
|  2314  public: |  2333  public: | 
|  2315   VectorKeyedStoreICStub(Isolate* isolate, const StoreICState& state) |  2334   VectorKeyedStoreICStub(Isolate* isolate, const StoreICState& state) | 
|  2316       : PlatformCodeStub(isolate) { |  2335       : PlatformCodeStub(isolate) { | 
|  2317     minor_key_ = state.GetExtraICState(); |  2336     minor_key_ = state.GetExtraICState(); | 
|  2318   } |  2337   } | 
|  2319  |  2338  | 
|  2320   void GenerateForTrampoline(MacroAssembler* masm); |  2339   void GenerateForTrampoline(MacroAssembler* masm); | 
|  2321  |  2340  | 
|  2322   Code::Kind GetCodeKind() const final { return Code::KEYED_STORE_IC; } |  2341   Code::Kind GetCodeKind() const final { return Code::KEYED_STORE_IC; } | 
|  2323   InlineCacheState GetICState() const final { return DEFAULT; } |  2342   InlineCacheState GetICState() const final { return DEFAULT; } | 
 |  2343   virtual ExtraICState GetExtraICState() const final { | 
 |  2344     return static_cast<ExtraICState>(minor_key_); | 
 |  2345   } | 
|  2324  |  2346  | 
|  2325   DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC); |  2347   DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC); | 
|  2326   DEFINE_PLATFORM_CODE_STUB(VectorKeyedStoreIC, PlatformCodeStub); |  2348   DEFINE_PLATFORM_CODE_STUB(VectorKeyedStoreIC, PlatformCodeStub); | 
|  2327  |  2349  | 
|  2328  protected: |  2350  protected: | 
|  2329   void GenerateImpl(MacroAssembler* masm, bool in_frame); |  2351   void GenerateImpl(MacroAssembler* masm, bool in_frame); | 
|  2330 }; |  2352 }; | 
|  2331  |  2353  | 
|  2332  |  2354  | 
|  2333 class DoubleToIStub : public PlatformCodeStub { |  2355 class DoubleToIStub : public PlatformCodeStub { | 
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2969  |  2991  | 
|  2970 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR |  2992 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR | 
|  2971 #undef DEFINE_PLATFORM_CODE_STUB |  2993 #undef DEFINE_PLATFORM_CODE_STUB | 
|  2972 #undef DEFINE_HANDLER_CODE_STUB |  2994 #undef DEFINE_HANDLER_CODE_STUB | 
|  2973 #undef DEFINE_HYDROGEN_CODE_STUB |  2995 #undef DEFINE_HYDROGEN_CODE_STUB | 
|  2974 #undef DEFINE_CODE_STUB |  2996 #undef DEFINE_CODE_STUB | 
|  2975 #undef DEFINE_CODE_STUB_BASE |  2997 #undef DEFINE_CODE_STUB_BASE | 
|  2976 } }  // namespace v8::internal |  2998 } }  // namespace v8::internal | 
|  2977  |  2999  | 
|  2978 #endif  // V8_CODE_STUBS_H_ |  3000 #endif  // V8_CODE_STUBS_H_ | 
| OLD | NEW |