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 | 10 |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 | 407 |
408 // Code generator routines. | 408 // Code generator routines. |
409 static void GenerateMiss(MacroAssembler* masm); | 409 static void GenerateMiss(MacroAssembler* masm); |
410 static void GenerateRuntimeGetProperty(MacroAssembler* masm); | 410 static void GenerateRuntimeGetProperty(MacroAssembler* masm); |
411 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } | 411 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } |
412 static void GeneratePreMonomorphic(MacroAssembler* masm) { | 412 static void GeneratePreMonomorphic(MacroAssembler* masm) { |
413 GenerateMiss(masm); | 413 GenerateMiss(masm); |
414 } | 414 } |
415 static void GenerateGeneric(MacroAssembler* masm); | 415 static void GenerateGeneric(MacroAssembler* masm); |
416 static void GenerateString(MacroAssembler* masm); | 416 static void GenerateString(MacroAssembler* masm); |
417 static void GenerateSloppyArguments(MacroAssembler* masm); | |
418 | 417 |
419 // Bit mask to be tested against bit field for the cases when | 418 // Bit mask to be tested against bit field for the cases when |
420 // generic stub should go into slow case. | 419 // generic stub should go into slow case. |
421 // Access check is necessary explicitly since generic stub does not perform | 420 // Access check is necessary explicitly since generic stub does not perform |
422 // map checks. | 421 // map checks. |
423 static const int kSlowCaseBitFieldMask = | 422 static const int kSlowCaseBitFieldMask = |
424 (1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor); | 423 (1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor); |
425 | 424 |
426 static Handle<Code> generic_stub(Isolate* isolate); | 425 static Handle<Code> generic_stub(Isolate* isolate); |
427 static Handle<Code> pre_monomorphic_stub(Isolate* isolate); | 426 static Handle<Code> pre_monomorphic_stub(Isolate* isolate); |
428 | 427 |
429 protected: | 428 protected: |
430 Handle<Code> LoadElementStub(Handle<JSObject> receiver); | 429 Handle<Code> LoadElementStub(Handle<JSObject> receiver); |
431 virtual Handle<Code> pre_monomorphic_stub() const { | 430 virtual Handle<Code> pre_monomorphic_stub() const { |
432 return pre_monomorphic_stub(isolate()); | 431 return pre_monomorphic_stub(isolate()); |
433 } | 432 } |
434 | 433 |
435 private: | 434 private: |
436 Handle<Code> generic_stub() const { return generic_stub(isolate()); } | 435 Handle<Code> generic_stub() const { return generic_stub(isolate()); } |
437 Handle<Code> sloppy_arguments_stub() { | |
438 return isolate()->builtins()->KeyedLoadIC_SloppyArguments(); | |
439 } | |
440 Handle<Code> string_stub() { | 436 Handle<Code> string_stub() { |
441 return isolate()->builtins()->KeyedLoadIC_String(); | 437 return isolate()->builtins()->KeyedLoadIC_String(); |
442 } | 438 } |
443 | 439 |
444 static void Clear(Isolate* isolate, Address address, Code* target, | 440 static void Clear(Isolate* isolate, Address address, Code* target, |
445 ConstantPoolArray* constant_pool); | 441 ConstantPoolArray* constant_pool); |
446 | 442 |
447 friend class IC; | 443 friend class IC; |
448 }; | 444 }; |
449 | 445 |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 | 709 |
714 // Support functions for interceptor handlers. | 710 // Support functions for interceptor handlers. |
715 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); | 711 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); |
716 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); | 712 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); |
717 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); | 713 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); |
718 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); | 714 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); |
719 } | 715 } |
720 } // namespace v8::internal | 716 } // namespace v8::internal |
721 | 717 |
722 #endif // V8_IC_H_ | 718 #endif // V8_IC_H_ |
OLD | NEW |