Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: src/stub-cache.h

Issue 11953025: Move polymorphic stub computation and compilation to stub cache (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address comments Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ic.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/ic.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698