| 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_IC_H_ | 5 #ifndef V8_IC_H_ |
| 6 #define V8_IC_H_ | 6 #define V8_IC_H_ |
| 7 | 7 |
| 8 #include "src/ic/ic-state.h" | 8 #include "src/ic/ic-state.h" |
| 9 #include "src/macro-assembler.h" | 9 #include "src/macro-assembler.h" |
| 10 #include "src/messages.h" | 10 #include "src/messages.h" |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 DCHECK(IsStoreStub()); | 356 DCHECK(IsStoreStub()); |
| 357 } | 357 } |
| 358 | 358 |
| 359 LanguageMode language_mode() const { | 359 LanguageMode language_mode() const { |
| 360 return StoreICState::GetLanguageMode(extra_ic_state()); | 360 return StoreICState::GetLanguageMode(extra_ic_state()); |
| 361 } | 361 } |
| 362 | 362 |
| 363 // Code generators for stub routines. Only called once at startup. | 363 // Code generators for stub routines. Only called once at startup. |
| 364 static void GenerateSlow(MacroAssembler* masm); | 364 static void GenerateSlow(MacroAssembler* masm); |
| 365 static void GenerateMiss(MacroAssembler* masm); | 365 static void GenerateMiss(MacroAssembler* masm); |
| 366 static void GenerateMegamorphic(MacroAssembler* masm); | |
| 367 static void GenerateNormal(MacroAssembler* masm); | 366 static void GenerateNormal(MacroAssembler* masm); |
| 368 static void GenerateRuntimeSetProperty(MacroAssembler* masm, | |
| 369 LanguageMode language_mode); | |
| 370 | 367 |
| 371 static Handle<Code> initialize_stub_in_optimized_code( | 368 static Handle<Code> initialize_stub_in_optimized_code( |
| 372 Isolate* isolate, LanguageMode language_mode); | 369 Isolate* isolate, LanguageMode language_mode); |
| 373 | 370 |
| 374 MUST_USE_RESULT MaybeHandle<Object> Store( | 371 MUST_USE_RESULT MaybeHandle<Object> Store( |
| 375 Handle<Object> object, Handle<Name> name, Handle<Object> value, | 372 Handle<Object> object, Handle<Name> name, Handle<Object> value, |
| 376 JSReceiver::StoreFromKeyed store_mode = | 373 JSReceiver::StoreFromKeyed store_mode = |
| 377 JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED); | 374 JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED); |
| 378 | 375 |
| 379 bool LookupForWrite(LookupIterator* it, Handle<Object> value, | 376 bool LookupForWrite(LookupIterator* it, Handle<Object> value, |
| 380 JSReceiver::StoreFromKeyed store_mode); | 377 JSReceiver::StoreFromKeyed store_mode); |
| 381 | 378 |
| 382 static void Clear(Isolate* isolate, Code* host, StoreICNexus* nexus); | 379 static void Clear(Isolate* isolate, Code* host, StoreICNexus* nexus); |
| 383 | 380 |
| 384 protected: | 381 protected: |
| 385 // Stub accessors. | 382 // Stub accessors. |
| 386 Handle<Code> slow_stub() const; | 383 Handle<Code> slow_stub() const { |
| 384 return isolate()->builtins()->StoreIC_Slow(); |
| 385 } |
| 387 | 386 |
| 388 // Update the inline cache and the global stub cache based on the | 387 // Update the inline cache and the global stub cache based on the |
| 389 // lookup result. | 388 // lookup result. |
| 390 void UpdateCaches(LookupIterator* lookup, Handle<Object> value, | 389 void UpdateCaches(LookupIterator* lookup, Handle<Object> value, |
| 391 JSReceiver::StoreFromKeyed store_mode); | 390 JSReceiver::StoreFromKeyed store_mode); |
| 392 Handle<Code> GetMapIndependentHandler(LookupIterator* lookup) override; | 391 Handle<Code> GetMapIndependentHandler(LookupIterator* lookup) override; |
| 393 Handle<Code> CompileHandler(LookupIterator* lookup, Handle<Object> value, | 392 Handle<Code> CompileHandler(LookupIterator* lookup, Handle<Object> value, |
| 394 CacheHolderFlag cache_holder) override; | 393 CacheHolderFlag cache_holder) override; |
| 395 | 394 |
| 396 private: | 395 private: |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 | 494 |
| 496 // Helper for BinaryOpIC and CompareIC. | 495 // Helper for BinaryOpIC and CompareIC. |
| 497 enum InlinedSmiCheck { ENABLE_INLINED_SMI_CHECK, DISABLE_INLINED_SMI_CHECK }; | 496 enum InlinedSmiCheck { ENABLE_INLINED_SMI_CHECK, DISABLE_INLINED_SMI_CHECK }; |
| 498 void PatchInlinedSmiCode(Isolate* isolate, Address address, | 497 void PatchInlinedSmiCode(Isolate* isolate, Address address, |
| 499 InlinedSmiCheck check); | 498 InlinedSmiCheck check); |
| 500 | 499 |
| 501 } // namespace internal | 500 } // namespace internal |
| 502 } // namespace v8 | 501 } // namespace v8 |
| 503 | 502 |
| 504 #endif // V8_IC_H_ | 503 #endif // V8_IC_H_ |
| OLD | NEW |