OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 27 matching lines...) Loading... |
38 // IC_UTIL_LIST defines all utility functions called from generated | 38 // IC_UTIL_LIST defines all utility functions called from generated |
39 // inline caching code. The argument for the macro, ICU, is the function name. | 39 // inline caching code. The argument for the macro, ICU, is the function name. |
40 #define IC_UTIL_LIST(ICU) \ | 40 #define IC_UTIL_LIST(ICU) \ |
41 ICU(LoadIC_Miss) \ | 41 ICU(LoadIC_Miss) \ |
42 ICU(KeyedLoadIC_Miss) \ | 42 ICU(KeyedLoadIC_Miss) \ |
43 ICU(KeyedLoadIC_MissForceGeneric) \ | 43 ICU(KeyedLoadIC_MissForceGeneric) \ |
44 ICU(CallIC_Miss) \ | 44 ICU(CallIC_Miss) \ |
45 ICU(KeyedCallIC_Miss) \ | 45 ICU(KeyedCallIC_Miss) \ |
46 ICU(StoreIC_Miss) \ | 46 ICU(StoreIC_Miss) \ |
47 ICU(StoreIC_ArrayLength) \ | 47 ICU(StoreIC_ArrayLength) \ |
| 48 ICU(StoreIC_Slow) \ |
48 ICU(SharedStoreIC_ExtendStorage) \ | 49 ICU(SharedStoreIC_ExtendStorage) \ |
49 ICU(KeyedStoreIC_Miss) \ | 50 ICU(KeyedStoreIC_Miss) \ |
50 ICU(KeyedStoreIC_MissForceGeneric) \ | 51 ICU(KeyedStoreIC_MissForceGeneric) \ |
51 ICU(KeyedStoreIC_Slow) \ | 52 ICU(KeyedStoreIC_Slow) \ |
52 /* Utilities for IC stubs. */ \ | 53 /* Utilities for IC stubs. */ \ |
53 ICU(StoreCallbackProperty) \ | 54 ICU(StoreCallbackProperty) \ |
54 ICU(LoadPropertyWithInterceptorOnly) \ | 55 ICU(LoadPropertyWithInterceptorOnly) \ |
55 ICU(LoadPropertyWithInterceptorForLoad) \ | 56 ICU(LoadPropertyWithInterceptorForLoad) \ |
56 ICU(LoadPropertyWithInterceptorForCall) \ | 57 ICU(LoadPropertyWithInterceptorForCall) \ |
57 ICU(KeyedLoadPropertyWithInterceptor) \ | 58 ICU(KeyedLoadPropertyWithInterceptor) \ |
(...skipping 439 matching lines...) Loading... |
497 }; | 498 }; |
498 | 499 |
499 | 500 |
500 class StoreIC: public IC { | 501 class StoreIC: public IC { |
501 public: | 502 public: |
502 StoreIC(FrameDepth depth, Isolate* isolate) : IC(depth, isolate) { | 503 StoreIC(FrameDepth depth, Isolate* isolate) : IC(depth, isolate) { |
503 ASSERT(target()->is_store_stub() || target()->is_keyed_store_stub()); | 504 ASSERT(target()->is_store_stub() || target()->is_keyed_store_stub()); |
504 } | 505 } |
505 | 506 |
506 // Code generators for stub routines. Only called once at startup. | 507 // Code generators for stub routines. Only called once at startup. |
| 508 static void GenerateSlow(MacroAssembler* masm); |
507 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } | 509 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } |
508 static void GenerateMiss(MacroAssembler* masm); | 510 static void GenerateMiss(MacroAssembler* masm); |
509 static void GenerateMegamorphic(MacroAssembler* masm, | 511 static void GenerateMegamorphic(MacroAssembler* masm, |
510 StrictModeFlag strict_mode); | 512 StrictModeFlag strict_mode); |
511 static void GenerateNormal(MacroAssembler* masm); | 513 static void GenerateNormal(MacroAssembler* masm); |
512 static void GenerateGlobalProxy(MacroAssembler* masm, | 514 static void GenerateGlobalProxy(MacroAssembler* masm, |
513 StrictModeFlag strict_mode); | 515 StrictModeFlag strict_mode); |
514 | 516 |
515 MUST_USE_RESULT MaybeObject* Store( | 517 MUST_USE_RESULT MaybeObject* Store( |
516 State state, | 518 State state, |
(...skipping 293 matching lines...) Loading... |
810 void PatchInlinedSmiCode(Address address, InlinedSmiCheck check); | 812 void PatchInlinedSmiCode(Address address, InlinedSmiCheck check); |
811 | 813 |
812 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure); | 814 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure); |
813 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissFromStubFailure); | 815 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissFromStubFailure); |
814 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss); | 816 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss); |
815 | 817 |
816 | 818 |
817 } } // namespace v8::internal | 819 } } // namespace v8::internal |
818 | 820 |
819 #endif // V8_IC_H_ | 821 #endif // V8_IC_H_ |
OLD | NEW |