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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 StrictModeFlag strict_mode); | 165 StrictModeFlag strict_mode); |
166 | 166 |
167 // --- | 167 // --- |
168 | 168 |
169 Handle<Code> ComputeKeyedStoreField(Handle<String> name, | 169 Handle<Code> ComputeKeyedStoreField(Handle<String> name, |
170 Handle<JSObject> receiver, | 170 Handle<JSObject> receiver, |
171 int field_index, | 171 int field_index, |
172 Handle<Map> transition, | 172 Handle<Map> transition, |
173 StrictModeFlag strict_mode); | 173 StrictModeFlag strict_mode); |
174 | 174 |
175 Handle<Code> ComputeKeyedLoadOrStoreElement(Handle<Map> receiver_map, | 175 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map); |
176 KeyedIC::StubKind stub_kind, | 176 |
177 StrictModeFlag strict_mode); | 177 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map, |
| 178 KeyedStoreIC::StubKind stub_kind, |
| 179 StrictModeFlag strict_mode, |
| 180 KeyedAccessGrowMode grow_mode); |
178 | 181 |
179 // --- | 182 // --- |
180 | 183 |
181 Handle<Code> ComputeCallField(int argc, | 184 Handle<Code> ComputeCallField(int argc, |
182 Code::Kind, | 185 Code::Kind, |
183 Code::ExtraICState extra_state, | 186 Code::ExtraICState extra_state, |
184 Handle<String> name, | 187 Handle<String> name, |
185 Handle<Object> object, | 188 Handle<Object> object, |
186 Handle<JSObject> holder, | 189 Handle<JSObject> holder, |
187 PropertyIndex index); | 190 PropertyIndex index); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 Handle<Code> ComputeCallArguments(int argc, Code::Kind kind); | 230 Handle<Code> ComputeCallArguments(int argc, Code::Kind kind); |
228 | 231 |
229 Handle<Code> ComputeCallMegamorphic(int argc, | 232 Handle<Code> ComputeCallMegamorphic(int argc, |
230 Code::Kind kind, | 233 Code::Kind kind, |
231 Code::ExtraICState state); | 234 Code::ExtraICState state); |
232 | 235 |
233 Handle<Code> ComputeCallMiss(int argc, | 236 Handle<Code> ComputeCallMiss(int argc, |
234 Code::Kind kind, | 237 Code::Kind kind, |
235 Code::ExtraICState state); | 238 Code::ExtraICState state); |
236 | 239 |
| 240 // --- |
| 241 |
| 242 Handle<Code> ComputeLoadElementPolymorphic(MapHandleList* receiver_maps); |
| 243 Handle<Code> ComputeStoreElementPolymorphic(MapHandleList* receiver_maps, |
| 244 KeyedAccessGrowMode grow_mode, |
| 245 StrictModeFlag strict_mode); |
| 246 |
237 // Finds the Code object stored in the Heap::non_monomorphic_cache(). | 247 // Finds the Code object stored in the Heap::non_monomorphic_cache(). |
238 Code* FindCallInitialize(int argc, RelocInfo::Mode mode, Code::Kind kind); | 248 Code* FindCallInitialize(int argc, RelocInfo::Mode mode, Code::Kind kind); |
239 | 249 |
240 #ifdef ENABLE_DEBUGGER_SUPPORT | 250 #ifdef ENABLE_DEBUGGER_SUPPORT |
241 Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind); | 251 Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind); |
242 | 252 |
243 Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind); | 253 Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind); |
244 #endif | 254 #endif |
245 | 255 |
246 // Update cache for entry hash(name, map). | 256 // Update cache for entry hash(name, map). |
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 | 669 |
660 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, | 670 Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, |
661 Handle<JSObject> holder, | 671 Handle<JSObject> holder, |
662 Handle<String> name); | 672 Handle<String> name); |
663 | 673 |
664 Handle<Code> CompileLoadElement(Handle<Map> receiver_map); | 674 Handle<Code> CompileLoadElement(Handle<Map> receiver_map); |
665 | 675 |
666 Handle<Code> CompileLoadPolymorphic(MapHandleList* receiver_maps, | 676 Handle<Code> CompileLoadPolymorphic(MapHandleList* receiver_maps, |
667 CodeHandleList* handler_ics); | 677 CodeHandleList* handler_ics); |
668 | 678 |
| 679 Handle<Code> CompileLoadElementPolymorphic(MapHandleList* receiver_maps); |
| 680 |
669 static void GenerateLoadDictionaryElement(MacroAssembler* masm); | 681 static void GenerateLoadDictionaryElement(MacroAssembler* masm); |
670 | 682 |
671 private: | 683 private: |
672 Handle<Code> GetCode(Code::StubType type, | 684 Handle<Code> GetCode(Code::StubType type, |
673 Handle<String> name, | 685 Handle<String> name, |
674 InlineCacheState state = MONOMORPHIC); | 686 InlineCacheState state = MONOMORPHIC); |
675 }; | 687 }; |
676 | 688 |
677 | 689 |
678 class StoreStubCompiler: public StubCompiler { | 690 class StoreStubCompiler: public StubCompiler { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
726 int index, | 738 int index, |
727 Handle<Map> transition, | 739 Handle<Map> transition, |
728 Handle<String> name); | 740 Handle<String> name); |
729 | 741 |
730 Handle<Code> CompileStoreElement(Handle<Map> receiver_map); | 742 Handle<Code> CompileStoreElement(Handle<Map> receiver_map); |
731 | 743 |
732 Handle<Code> CompileStorePolymorphic(MapHandleList* receiver_maps, | 744 Handle<Code> CompileStorePolymorphic(MapHandleList* receiver_maps, |
733 CodeHandleList* handler_stubs, | 745 CodeHandleList* handler_stubs, |
734 MapHandleList* transitioned_maps); | 746 MapHandleList* transitioned_maps); |
735 | 747 |
| 748 Handle<Code> CompileStoreElementPolymorphic(MapHandleList* receiver_maps); |
| 749 |
736 static void GenerateStoreFastElement(MacroAssembler* masm, | 750 static void GenerateStoreFastElement(MacroAssembler* masm, |
737 bool is_js_array, | 751 bool is_js_array, |
738 ElementsKind element_kind, | 752 ElementsKind element_kind, |
739 KeyedAccessGrowMode grow_mode); | 753 KeyedAccessGrowMode grow_mode); |
740 | 754 |
741 static void GenerateStoreFastDoubleElement(MacroAssembler* masm, | 755 static void GenerateStoreFastDoubleElement(MacroAssembler* masm, |
742 bool is_js_array, | 756 bool is_js_array, |
743 KeyedAccessGrowMode grow_mode); | 757 KeyedAccessGrowMode grow_mode); |
744 | 758 |
745 static void GenerateStoreExternalArray(MacroAssembler* masm, | 759 static void GenerateStoreExternalArray(MacroAssembler* masm, |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
912 Handle<JSFunction> constant_function_; | 926 Handle<JSFunction> constant_function_; |
913 bool is_simple_api_call_; | 927 bool is_simple_api_call_; |
914 Handle<FunctionTemplateInfo> expected_receiver_type_; | 928 Handle<FunctionTemplateInfo> expected_receiver_type_; |
915 Handle<CallHandlerInfo> api_call_info_; | 929 Handle<CallHandlerInfo> api_call_info_; |
916 }; | 930 }; |
917 | 931 |
918 | 932 |
919 } } // namespace v8::internal | 933 } } // namespace v8::internal |
920 | 934 |
921 #endif // V8_STUB_CACHE_H_ | 935 #endif // V8_STUB_CACHE_H_ |
OLD | NEW |