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

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

Issue 80693002: Only use Type for compiling load handlers. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 Handle<JSObject> StubHolder(Handle<JSObject> receiver, 80 Handle<JSObject> StubHolder(Handle<JSObject> receiver,
81 Handle<JSObject> holder); 81 Handle<JSObject> holder);
82 82
83 Handle<Code> FindIC(Handle<Name> name, 83 Handle<Code> FindIC(Handle<Name> name,
84 Handle<Map> stub_holder_map, 84 Handle<Map> stub_holder_map,
85 Code::Kind kind, 85 Code::Kind kind,
86 Code::ExtraICState extra_state = Code::kNoExtraICState, 86 Code::ExtraICState extra_state = Code::kNoExtraICState,
87 InlineCacheHolderFlag cache_holder = OWN_MAP); 87 InlineCacheHolderFlag cache_holder = OWN_MAP);
88 88
89 Handle<Code> FindHandler(Handle<Name> name, 89 Handle<Code> FindHandler(Handle<Name> name,
90 Handle<HeapObject> stub_holder, 90 Handle<Map> map,
91 Code::Kind kind, 91 Code::Kind kind,
92 InlineCacheHolderFlag cache_holder = OWN_MAP, 92 InlineCacheHolderFlag cache_holder = OWN_MAP,
93 StrictModeFlag strict_mode = kNonStrictMode); 93 StrictModeFlag strict_mode = kNonStrictMode);
94 94
95 Handle<Code> ComputeMonomorphicIC(Handle<Name> name, 95 Handle<Code> ComputeMonomorphicIC(Handle<Name> name,
96 Handle<Type> type, 96 Handle<Type> type,
97 Handle<Code> handler, 97 Handle<Code> handler,
98 StrictModeFlag strict_mode); 98 StrictModeFlag strict_mode);
99 99
100 Handle<Code> ComputeLoadNonexistent(Handle<Name> name, Handle<Object> object); 100 Handle<Code> ComputeLoadNonexistent(Handle<Name> name, Handle<Type> type);
101 101
102 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map); 102 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map);
103 103
104 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map, 104 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map,
105 StrictModeFlag strict_mode, 105 StrictModeFlag strict_mode,
106 KeyedAccessStoreMode store_mode); 106 KeyedAccessStoreMode store_mode);
107 107
108 Handle<Code> ComputeCallField(int argc, 108 Handle<Code> ComputeCallField(int argc,
109 Code::Kind, 109 Code::Kind,
110 Code::ExtraICState extra_state, 110 Code::ExtraICState extra_state,
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 case Code::LOAD_IC: return Builtins::kLoadIC_Miss; 542 case Code::LOAD_IC: return Builtins::kLoadIC_Miss;
543 case Code::STORE_IC: return Builtins::kStoreIC_Miss; 543 case Code::STORE_IC: return Builtins::kStoreIC_Miss;
544 case Code::KEYED_LOAD_IC: return Builtins::kKeyedLoadIC_Miss; 544 case Code::KEYED_LOAD_IC: return Builtins::kKeyedLoadIC_Miss;
545 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Miss; 545 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Miss;
546 default: UNREACHABLE(); 546 default: UNREACHABLE();
547 } 547 }
548 return Builtins::kLoadIC_Miss; 548 return Builtins::kLoadIC_Miss;
549 } 549 }
550 550
551 protected: 551 protected:
552 virtual Register HandlerFrontendHeader(Handle<Object> object, 552 virtual Register HandlerFrontendHeader(Handle<Type> type,
553 Register object_reg, 553 Register object_reg,
554 Handle<JSObject> holder, 554 Handle<JSObject> holder,
555 Handle<Name> name, 555 Handle<Name> name,
556 Label* miss) = 0; 556 Label* miss) = 0;
557 557
558 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss) = 0; 558 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss) = 0;
559 559
560 Register HandlerFrontend(Handle<Object> object, 560 Register HandlerFrontend(Handle<Type> type,
561 Register object_reg, 561 Register object_reg,
562 Handle<JSObject> holder, 562 Handle<JSObject> holder,
563 Handle<Name> name); 563 Handle<Name> name);
564 564
565 Handle<Code> GetCode(Code::Kind kind, 565 Handle<Code> GetCode(Code::Kind kind,
566 Code::StubType type, 566 Code::StubType type,
567 Handle<Name> name); 567 Handle<Name> name);
568 568
569 Handle<Code> GetICCode(Code::Kind kind, 569 Handle<Code> GetICCode(Code::Kind kind,
570 Code::StubType type, 570 Code::StubType type,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 608
609 609
610 class LoadStubCompiler: public BaseLoadStoreStubCompiler { 610 class LoadStubCompiler: public BaseLoadStoreStubCompiler {
611 public: 611 public:
612 LoadStubCompiler(Isolate* isolate, 612 LoadStubCompiler(Isolate* isolate,
613 InlineCacheHolderFlag cache_holder = OWN_MAP, 613 InlineCacheHolderFlag cache_holder = OWN_MAP,
614 Code::Kind kind = Code::LOAD_IC) 614 Code::Kind kind = Code::LOAD_IC)
615 : BaseLoadStoreStubCompiler(isolate, kind, cache_holder) { } 615 : BaseLoadStoreStubCompiler(isolate, kind, cache_holder) { }
616 virtual ~LoadStubCompiler() { } 616 virtual ~LoadStubCompiler() { }
617 617
618 Handle<Code> CompileLoadField(Handle<Object> object, 618 Handle<Code> CompileLoadField(Handle<Type> type,
619 Handle<JSObject> holder, 619 Handle<JSObject> holder,
620 Handle<Name> name, 620 Handle<Name> name,
621 PropertyIndex index, 621 PropertyIndex index,
622 Representation representation); 622 Representation representation);
623 623
624 Handle<Code> CompileLoadCallback(Handle<Object> object, 624 Handle<Code> CompileLoadCallback(Handle<Type> type,
625 Handle<JSObject> holder, 625 Handle<JSObject> holder,
626 Handle<Name> name, 626 Handle<Name> name,
627 Handle<ExecutableAccessorInfo> callback); 627 Handle<ExecutableAccessorInfo> callback);
628 628
629 Handle<Code> CompileLoadCallback(Handle<Object> object, 629 Handle<Code> CompileLoadCallback(Handle<Type> type,
630 Handle<JSObject> holder, 630 Handle<JSObject> holder,
631 Handle<Name> name, 631 Handle<Name> name,
632 const CallOptimization& call_optimization); 632 const CallOptimization& call_optimization);
633 633
634 Handle<Code> CompileLoadConstant(Handle<Object> object, 634 Handle<Code> CompileLoadConstant(Handle<Type> type,
635 Handle<JSObject> holder, 635 Handle<JSObject> holder,
636 Handle<Name> name, 636 Handle<Name> name,
637 Handle<Object> value); 637 Handle<Object> value);
638 638
639 Handle<Code> CompileLoadInterceptor(Handle<Object> object, 639 Handle<Code> CompileLoadInterceptor(Handle<Type> type,
640 Handle<JSObject> holder, 640 Handle<JSObject> holder,
641 Handle<Name> name); 641 Handle<Name> name);
642 642
643 Handle<Code> CompileLoadViaGetter(Handle<Object> object, 643 Handle<Code> CompileLoadViaGetter(Handle<Type> type,
644 Handle<JSObject> holder, 644 Handle<JSObject> holder,
645 Handle<Name> name, 645 Handle<Name> name,
646 Handle<JSFunction> getter); 646 Handle<JSFunction> getter);
647 647
648 static void GenerateLoadViaGetter(MacroAssembler* masm, 648 static void GenerateLoadViaGetter(MacroAssembler* masm,
649 Register receiver, 649 Register receiver,
650 Handle<JSFunction> getter); 650 Handle<JSFunction> getter);
651 651
652 Handle<Code> CompileLoadNonexistent(Handle<Object> object, 652 Handle<Code> CompileLoadNonexistent(Handle<Type> type,
653 Handle<JSObject> last, 653 Handle<JSObject> last,
654 Handle<Name> name, 654 Handle<Name> name);
655 Handle<JSGlobalObject> global);
656 655
657 Handle<Code> CompileLoadGlobal(Handle<Object> object, 656 Handle<Code> CompileLoadGlobal(Handle<Type> type,
658 Handle<GlobalObject> holder, 657 Handle<GlobalObject> holder,
659 Handle<PropertyCell> cell, 658 Handle<PropertyCell> cell,
660 Handle<Name> name, 659 Handle<Name> name,
661 bool is_dont_delete); 660 bool is_dont_delete);
662 661
663 static Register* registers(); 662 static Register* registers();
664 663
665 protected: 664 protected:
666 virtual Register HandlerFrontendHeader(Handle<Object> object, 665 virtual Register HandlerFrontendHeader(Handle<Type> type,
667 Register object_reg, 666 Register object_reg,
668 Handle<JSObject> holder, 667 Handle<JSObject> holder,
669 Handle<Name> name, 668 Handle<Name> name,
670 Label* miss); 669 Label* miss);
671 670
672 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss); 671 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss);
673 672
674 Register CallbackHandlerFrontend(Handle<Object> object, 673 Register CallbackHandlerFrontend(Handle<Type> type,
675 Register object_reg, 674 Register object_reg,
676 Handle<JSObject> holder, 675 Handle<JSObject> holder,
677 Handle<Name> name, 676 Handle<Name> name,
678 Handle<Object> callback); 677 Handle<Object> callback);
679 void NonexistentHandlerFrontend(Handle<Object> object, 678 void NonexistentHandlerFrontend(Handle<Type> type,
680 Handle<JSObject> last, 679 Handle<JSObject> last,
681 Handle<Name> name, 680 Handle<Name> name);
682 Handle<JSGlobalObject> global);
683 681
684 void GenerateLoadField(Register reg, 682 void GenerateLoadField(Register reg,
685 Handle<JSObject> holder, 683 Handle<JSObject> holder,
686 PropertyIndex field, 684 PropertyIndex field,
687 Representation representation); 685 Representation representation);
688 void GenerateLoadConstant(Handle<Object> value); 686 void GenerateLoadConstant(Handle<Object> value);
689 void GenerateLoadCallback(Register reg, 687 void GenerateLoadCallback(Register reg,
690 Handle<ExecutableAccessorInfo> callback); 688 Handle<ExecutableAccessorInfo> callback);
691 void GenerateLoadCallback(const CallOptimization& call_optimization); 689 void GenerateLoadCallback(const CallOptimization& call_optimization);
692 void GenerateLoadInterceptor(Register holder_reg, 690 void GenerateLoadInterceptor(Register holder_reg,
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 static Builtins::Name SlowBuiltin(Code::Kind kind) { 803 static Builtins::Name SlowBuiltin(Code::Kind kind) {
806 switch (kind) { 804 switch (kind) {
807 case Code::STORE_IC: return Builtins::kStoreIC_Slow; 805 case Code::STORE_IC: return Builtins::kStoreIC_Slow;
808 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Slow; 806 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Slow;
809 default: UNREACHABLE(); 807 default: UNREACHABLE();
810 } 808 }
811 return Builtins::kStoreIC_Slow; 809 return Builtins::kStoreIC_Slow;
812 } 810 }
813 811
814 protected: 812 protected:
815 virtual Register HandlerFrontendHeader(Handle<Object> object, 813 virtual Register HandlerFrontendHeader(Handle<Type> type,
816 Register object_reg, 814 Register object_reg,
817 Handle<JSObject> holder, 815 Handle<JSObject> holder,
818 Handle<Name> name, 816 Handle<Name> name,
819 Label* miss); 817 Label* miss);
820 818
821 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss); 819 virtual void HandlerFrontendFooter(Handle<Name> name, Label* miss);
822 void GenerateRestoreName(MacroAssembler* masm, 820 void GenerateRestoreName(MacroAssembler* masm,
823 Label* label, 821 Label* label,
824 Handle<Name> name); 822 Handle<Name> name);
825 823
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 Handle<JSFunction> constant_function_; 1039 Handle<JSFunction> constant_function_;
1042 bool is_simple_api_call_; 1040 bool is_simple_api_call_;
1043 Handle<FunctionTemplateInfo> expected_receiver_type_; 1041 Handle<FunctionTemplateInfo> expected_receiver_type_;
1044 Handle<CallHandlerInfo> api_call_info_; 1042 Handle<CallHandlerInfo> api_call_info_;
1045 }; 1043 };
1046 1044
1047 1045
1048 } } // namespace v8::internal 1046 } } // namespace v8::internal
1049 1047
1050 #endif // V8_STUB_CACHE_H_ 1048 #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