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

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

Issue 11365221: Allow property indexes to refer to slots inside the object header. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month 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
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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 77
78 // Computes the right stub matching. Inserts the result in the 78 // Computes the right stub matching. Inserts the result in the
79 // cache before returning. This might compile a stub if needed. 79 // cache before returning. This might compile a stub if needed.
80 Handle<Code> ComputeLoadNonexistent(Handle<String> name, 80 Handle<Code> ComputeLoadNonexistent(Handle<String> name,
81 Handle<JSObject> receiver); 81 Handle<JSObject> receiver);
82 82
83 Handle<Code> ComputeLoadField(Handle<String> name, 83 Handle<Code> ComputeLoadField(Handle<String> name,
84 Handle<JSObject> receiver, 84 Handle<JSObject> receiver,
85 Handle<JSObject> holder, 85 Handle<JSObject> holder,
86 int field_index); 86 PropertyIndex field_index);
87 87
88 Handle<Code> ComputeLoadCallback(Handle<String> name, 88 Handle<Code> ComputeLoadCallback(Handle<String> name,
89 Handle<JSObject> receiver, 89 Handle<JSObject> receiver,
90 Handle<JSObject> holder, 90 Handle<JSObject> holder,
91 Handle<AccessorInfo> callback); 91 Handle<AccessorInfo> callback);
92 92
93 Handle<Code> ComputeLoadViaGetter(Handle<String> name, 93 Handle<Code> ComputeLoadViaGetter(Handle<String> name,
94 Handle<JSObject> receiver, 94 Handle<JSObject> receiver,
95 Handle<JSObject> holder, 95 Handle<JSObject> holder,
96 Handle<JSFunction> getter); 96 Handle<JSFunction> getter);
(...skipping 13 matching lines...) Expand all
110 Handle<JSObject> receiver, 110 Handle<JSObject> receiver,
111 Handle<GlobalObject> holder, 111 Handle<GlobalObject> holder,
112 Handle<JSGlobalPropertyCell> cell, 112 Handle<JSGlobalPropertyCell> cell,
113 bool is_dont_delete); 113 bool is_dont_delete);
114 114
115 // --- 115 // ---
116 116
117 Handle<Code> ComputeKeyedLoadField(Handle<String> name, 117 Handle<Code> ComputeKeyedLoadField(Handle<String> name,
118 Handle<JSObject> receiver, 118 Handle<JSObject> receiver,
119 Handle<JSObject> holder, 119 Handle<JSObject> holder,
120 int field_index); 120 PropertyIndex field_index);
121 121
122 Handle<Code> ComputeKeyedLoadCallback(Handle<String> name, 122 Handle<Code> ComputeKeyedLoadCallback(Handle<String> name,
123 Handle<JSObject> receiver, 123 Handle<JSObject> receiver,
124 Handle<JSObject> holder, 124 Handle<JSObject> holder,
125 Handle<AccessorInfo> callback); 125 Handle<AccessorInfo> callback);
126 126
127 Handle<Code> ComputeKeyedLoadConstant(Handle<String> name, 127 Handle<Code> ComputeKeyedLoadConstant(Handle<String> name,
128 Handle<JSObject> receiver, 128 Handle<JSObject> receiver,
129 Handle<JSObject> holder, 129 Handle<JSObject> holder,
130 Handle<JSFunction> value); 130 Handle<JSFunction> value);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 StrictModeFlag strict_mode); 186 StrictModeFlag strict_mode);
187 187
188 // --- 188 // ---
189 189
190 Handle<Code> ComputeCallField(int argc, 190 Handle<Code> ComputeCallField(int argc,
191 Code::Kind, 191 Code::Kind,
192 Code::ExtraICState extra_state, 192 Code::ExtraICState extra_state,
193 Handle<String> name, 193 Handle<String> name,
194 Handle<Object> object, 194 Handle<Object> object,
195 Handle<JSObject> holder, 195 Handle<JSObject> holder,
196 int index); 196 PropertyIndex index);
197 197
198 Handle<Code> ComputeCallConstant(int argc, 198 Handle<Code> ComputeCallConstant(int argc,
199 Code::Kind, 199 Code::Kind,
200 Code::ExtraICState extra_state, 200 Code::ExtraICState extra_state,
201 Handle<String> name, 201 Handle<String> name,
202 Handle<Object> object, 202 Handle<Object> object,
203 Handle<JSObject> holder, 203 Handle<JSObject> holder,
204 Handle<JSFunction> function); 204 Handle<JSFunction> function);
205 205
206 Handle<Code> ComputeCallInterceptor(int argc, 206 Handle<Code> ComputeCallInterceptor(int argc,
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 // objects from a context. 446 // objects from a context.
447 static void GenerateDirectLoadGlobalFunctionPrototype(MacroAssembler* masm, 447 static void GenerateDirectLoadGlobalFunctionPrototype(MacroAssembler* masm,
448 int index, 448 int index,
449 Register prototype, 449 Register prototype,
450 Label* miss); 450 Label* miss);
451 451
452 static void GenerateFastPropertyLoad(MacroAssembler* masm, 452 static void GenerateFastPropertyLoad(MacroAssembler* masm,
453 Register dst, 453 Register dst,
454 Register src, 454 Register src,
455 Handle<JSObject> holder, 455 Handle<JSObject> holder,
456 int index); 456 PropertyIndex index);
457 457
458 static void GenerateLoadArrayLength(MacroAssembler* masm, 458 static void GenerateLoadArrayLength(MacroAssembler* masm,
459 Register receiver, 459 Register receiver,
460 Register scratch, 460 Register scratch,
461 Label* miss_label); 461 Label* miss_label);
462 462
463 static void GenerateLoadStringLength(MacroAssembler* masm, 463 static void GenerateLoadStringLength(MacroAssembler* masm,
464 Register receiver, 464 Register receiver,
465 Register scratch1, 465 Register scratch1,
466 Register scratch2, 466 Register scratch2,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 533
534 MacroAssembler* masm() { return &masm_; } 534 MacroAssembler* masm() { return &masm_; }
535 void set_failure(Failure* failure) { failure_ = failure; } 535 void set_failure(Failure* failure) { failure_ = failure; }
536 536
537 void GenerateLoadField(Handle<JSObject> object, 537 void GenerateLoadField(Handle<JSObject> object,
538 Handle<JSObject> holder, 538 Handle<JSObject> holder,
539 Register receiver, 539 Register receiver,
540 Register scratch1, 540 Register scratch1,
541 Register scratch2, 541 Register scratch2,
542 Register scratch3, 542 Register scratch3,
543 int index, 543 PropertyIndex index,
544 Handle<String> name, 544 Handle<String> name,
545 Label* miss); 545 Label* miss);
546 546
547 void GenerateLoadCallback(Handle<JSObject> object, 547 void GenerateLoadCallback(Handle<JSObject> object,
548 Handle<JSObject> holder, 548 Handle<JSObject> holder,
549 Register receiver, 549 Register receiver,
550 Register name_reg, 550 Register name_reg,
551 Register scratch1, 551 Register scratch1,
552 Register scratch2, 552 Register scratch2,
553 Register scratch3, 553 Register scratch3,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 class LoadStubCompiler: public StubCompiler { 604 class LoadStubCompiler: public StubCompiler {
605 public: 605 public:
606 explicit LoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } 606 explicit LoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { }
607 607
608 Handle<Code> CompileLoadNonexistent(Handle<String> name, 608 Handle<Code> CompileLoadNonexistent(Handle<String> name,
609 Handle<JSObject> object, 609 Handle<JSObject> object,
610 Handle<JSObject> last); 610 Handle<JSObject> last);
611 611
612 Handle<Code> CompileLoadField(Handle<JSObject> object, 612 Handle<Code> CompileLoadField(Handle<JSObject> object,
613 Handle<JSObject> holder, 613 Handle<JSObject> holder,
614 int index, 614 PropertyIndex index,
615 Handle<String> name); 615 Handle<String> name);
616 616
617 Handle<Code> CompileLoadCallback(Handle<String> name, 617 Handle<Code> CompileLoadCallback(Handle<String> name,
618 Handle<JSObject> object, 618 Handle<JSObject> object,
619 Handle<JSObject> holder, 619 Handle<JSObject> holder,
620 Handle<AccessorInfo> callback); 620 Handle<AccessorInfo> callback);
621 621
622 static void GenerateLoadViaGetter(MacroAssembler* masm, 622 static void GenerateLoadViaGetter(MacroAssembler* masm,
623 Handle<JSFunction> getter); 623 Handle<JSFunction> getter);
624 624
(...skipping 22 matching lines...) Expand all
647 }; 647 };
648 648
649 649
650 class KeyedLoadStubCompiler: public StubCompiler { 650 class KeyedLoadStubCompiler: public StubCompiler {
651 public: 651 public:
652 explicit KeyedLoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { } 652 explicit KeyedLoadStubCompiler(Isolate* isolate) : StubCompiler(isolate) { }
653 653
654 Handle<Code> CompileLoadField(Handle<String> name, 654 Handle<Code> CompileLoadField(Handle<String> name,
655 Handle<JSObject> object, 655 Handle<JSObject> object,
656 Handle<JSObject> holder, 656 Handle<JSObject> holder,
657 int index); 657 PropertyIndex index);
658 658
659 Handle<Code> CompileLoadCallback(Handle<String> name, 659 Handle<Code> CompileLoadCallback(Handle<String> name,
660 Handle<JSObject> object, 660 Handle<JSObject> object,
661 Handle<JSObject> holder, 661 Handle<JSObject> holder,
662 Handle<AccessorInfo> callback); 662 Handle<AccessorInfo> callback);
663 663
664 Handle<Code> CompileLoadConstant(Handle<String> name, 664 Handle<Code> CompileLoadConstant(Handle<String> name,
665 Handle<JSObject> object, 665 Handle<JSObject> object,
666 Handle<JSObject> holder, 666 Handle<JSObject> holder,
667 Handle<JSFunction> value); 667 Handle<JSFunction> value);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 class CallStubCompiler: public StubCompiler { 796 class CallStubCompiler: public StubCompiler {
797 public: 797 public:
798 CallStubCompiler(Isolate* isolate, 798 CallStubCompiler(Isolate* isolate,
799 int argc, 799 int argc,
800 Code::Kind kind, 800 Code::Kind kind,
801 Code::ExtraICState extra_state, 801 Code::ExtraICState extra_state,
802 InlineCacheHolderFlag cache_holder); 802 InlineCacheHolderFlag cache_holder);
803 803
804 Handle<Code> CompileCallField(Handle<JSObject> object, 804 Handle<Code> CompileCallField(Handle<JSObject> object,
805 Handle<JSObject> holder, 805 Handle<JSObject> holder,
806 int index, 806 PropertyIndex index,
807 Handle<String> name); 807 Handle<String> name);
808 808
809 Handle<Code> CompileCallConstant(Handle<Object> object, 809 Handle<Code> CompileCallConstant(Handle<Object> object,
810 Handle<JSObject> holder, 810 Handle<JSObject> holder,
811 Handle<JSFunction> function, 811 Handle<JSFunction> function,
812 Handle<String> name, 812 Handle<String> name,
813 CheckType check); 813 CheckType check);
814 814
815 Handle<Code> CompileCallInterceptor(Handle<JSObject> object, 815 Handle<Code> CompileCallInterceptor(Handle<JSObject> object,
816 Handle<JSObject> holder, 816 Handle<JSObject> holder,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 Handle<JSFunction> constant_function_; 934 Handle<JSFunction> constant_function_;
935 bool is_simple_api_call_; 935 bool is_simple_api_call_;
936 Handle<FunctionTemplateInfo> expected_receiver_type_; 936 Handle<FunctionTemplateInfo> expected_receiver_type_;
937 Handle<CallHandlerInfo> api_call_info_; 937 Handle<CallHandlerInfo> api_call_info_;
938 }; 938 };
939 939
940 940
941 } } // namespace v8::internal 941 } } // namespace v8::internal
942 942
943 #endif // V8_STUB_CACHE_H_ 943 #endif // V8_STUB_CACHE_H_
OLDNEW
« src/property.h ('K') | « src/runtime.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698