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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
155 | 155 |
156 Handle<Code> ComputeKeyedLoadInterceptor(Handle<Name> name, | 156 Handle<Code> ComputeKeyedLoadInterceptor(Handle<Name> name, |
157 Handle<JSObject> object, | 157 Handle<JSObject> object, |
158 Handle<JSObject> holder); | 158 Handle<JSObject> holder); |
159 | 159 |
160 // --- | 160 // --- |
161 | 161 |
162 Handle<Code> ComputeStoreField(Handle<Name> name, | 162 Handle<Code> ComputeStoreField(Handle<Name> name, |
163 Handle<JSObject> object, | 163 Handle<JSObject> object, |
164 LookupResult* lookup, | 164 LookupResult* lookup, |
165 Handle<Map> transition, | |
166 StrictModeFlag strict_mode); | 165 StrictModeFlag strict_mode); |
166 Handle<Code> ComputeStoreTransition(Handle<Name> name, | |
ulan
2013/04/11 09:34:04
Nit: space between function declarations here and
Toon Verwaest
2013/04/11 09:47:33
Done.
| |
167 Handle<JSObject> object, | |
168 LookupResult* lookup, | |
169 Handle<Map> transition, | |
170 StrictModeFlag strict_mode); | |
167 | 171 |
168 Handle<Code> ComputeStoreNormal(StrictModeFlag strict_mode); | 172 Handle<Code> ComputeStoreNormal(StrictModeFlag strict_mode); |
169 | 173 |
170 Handle<Code> ComputeStoreGlobal(Handle<Name> name, | 174 Handle<Code> ComputeStoreGlobal(Handle<Name> name, |
171 Handle<GlobalObject> object, | 175 Handle<GlobalObject> object, |
172 Handle<JSGlobalPropertyCell> cell, | 176 Handle<JSGlobalPropertyCell> cell, |
173 StrictModeFlag strict_mode); | 177 StrictModeFlag strict_mode); |
174 | 178 |
175 Handle<Code> ComputeStoreCallback(Handle<Name> name, | 179 Handle<Code> ComputeStoreCallback(Handle<Name> name, |
176 Handle<JSObject> object, | 180 Handle<JSObject> object, |
177 Handle<JSObject> holder, | 181 Handle<JSObject> holder, |
178 Handle<ExecutableAccessorInfo> callback, | 182 Handle<ExecutableAccessorInfo> callback, |
179 StrictModeFlag strict_mode); | 183 StrictModeFlag strict_mode); |
180 | 184 |
181 Handle<Code> ComputeStoreViaSetter(Handle<Name> name, | 185 Handle<Code> ComputeStoreViaSetter(Handle<Name> name, |
182 Handle<JSObject> object, | 186 Handle<JSObject> object, |
183 Handle<JSObject> holder, | 187 Handle<JSObject> holder, |
184 Handle<JSFunction> setter, | 188 Handle<JSFunction> setter, |
185 StrictModeFlag strict_mode); | 189 StrictModeFlag strict_mode); |
186 | 190 |
187 Handle<Code> ComputeStoreInterceptor(Handle<Name> name, | 191 Handle<Code> ComputeStoreInterceptor(Handle<Name> name, |
188 Handle<JSObject> object, | 192 Handle<JSObject> object, |
189 StrictModeFlag strict_mode); | 193 StrictModeFlag strict_mode); |
190 | 194 |
191 // --- | 195 // --- |
192 | 196 |
193 Handle<Code> ComputeKeyedStoreField(Handle<Name> name, | 197 Handle<Code> ComputeKeyedStoreField(Handle<Name> name, |
194 Handle<JSObject> object, | 198 Handle<JSObject> object, |
195 LookupResult* lookup, | 199 LookupResult* lookup, |
196 Handle<Map> transition, | |
197 StrictModeFlag strict_mode); | 200 StrictModeFlag strict_mode); |
201 Handle<Code> ComputeKeyedStoreTransition(Handle<Name> name, | |
202 Handle<JSObject> object, | |
203 LookupResult* lookup, | |
204 Handle<Map> transition, | |
205 StrictModeFlag strict_mode); | |
198 | 206 |
199 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map); | 207 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map); |
200 | 208 |
201 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map, | 209 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map, |
202 StrictModeFlag strict_mode, | 210 StrictModeFlag strict_mode, |
203 KeyedAccessStoreMode store_mode); | 211 KeyedAccessStoreMode store_mode); |
204 | 212 |
205 // --- | 213 // --- |
206 | 214 |
207 Handle<Code> ComputeCallField(int argc, | 215 Handle<Code> ComputeCallField(int argc, |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
502 Register scratch2, | 510 Register scratch2, |
503 Label* miss_label, | 511 Label* miss_label, |
504 bool support_wrappers); | 512 bool support_wrappers); |
505 | 513 |
506 static void GenerateLoadFunctionPrototype(MacroAssembler* masm, | 514 static void GenerateLoadFunctionPrototype(MacroAssembler* masm, |
507 Register receiver, | 515 Register receiver, |
508 Register scratch1, | 516 Register scratch1, |
509 Register scratch2, | 517 Register scratch2, |
510 Label* miss_label); | 518 Label* miss_label); |
511 | 519 |
520 void GenerateStoreTransition(MacroAssembler* masm, | |
521 Handle<JSObject> object, | |
522 LookupResult* lookup, | |
523 Handle<Map> transition, | |
524 Handle<Name> name, | |
525 Register receiver_reg, | |
526 Register name_reg, | |
527 Register value_reg, | |
528 Register scratch1, | |
529 Register scratch2, | |
530 Label* miss_label, | |
531 Label* miss_restore_name); | |
512 void GenerateStoreField(MacroAssembler* masm, | 532 void GenerateStoreField(MacroAssembler* masm, |
513 Handle<JSObject> object, | 533 Handle<JSObject> object, |
514 LookupResult* lookup, | 534 LookupResult* lookup, |
515 Handle<Map> transition, | |
516 Handle<Name> name, | |
517 Register receiver_reg, | 535 Register receiver_reg, |
518 Register name_reg, | 536 Register name_reg, |
519 Register value_reg, | 537 Register value_reg, |
520 Register scratch1, | 538 Register scratch1, |
521 Register scratch2, | 539 Register scratch2, |
522 Label* miss_label, | 540 Label* miss_label); |
523 Label* miss_restore_name); | |
524 | 541 |
525 static Builtins::Name MissBuiltin(Code::Kind kind) { | 542 static Builtins::Name MissBuiltin(Code::Kind kind) { |
526 switch (kind) { | 543 switch (kind) { |
527 case Code::LOAD_IC: return Builtins::kLoadIC_Miss; | 544 case Code::LOAD_IC: return Builtins::kLoadIC_Miss; |
528 case Code::STORE_IC: return Builtins::kStoreIC_Miss; | 545 case Code::STORE_IC: return Builtins::kStoreIC_Miss; |
529 case Code::KEYED_LOAD_IC: return Builtins::kKeyedLoadIC_Miss; | 546 case Code::KEYED_LOAD_IC: return Builtins::kKeyedLoadIC_Miss; |
530 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Miss; | 547 case Code::KEYED_STORE_IC: return Builtins::kKeyedStoreIC_Miss; |
531 default: UNREACHABLE(); | 548 default: UNREACHABLE(); |
532 } | 549 } |
533 return Builtins::kLoadIC_Miss; | 550 return Builtins::kLoadIC_Miss; |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
774 public: | 791 public: |
775 BaseStoreStubCompiler(Isolate* isolate, | 792 BaseStoreStubCompiler(Isolate* isolate, |
776 StrictModeFlag strict_mode, | 793 StrictModeFlag strict_mode, |
777 Register* registers) | 794 Register* registers) |
778 : StubCompiler(isolate), | 795 : StubCompiler(isolate), |
779 strict_mode_(strict_mode), | 796 strict_mode_(strict_mode), |
780 registers_(registers) { } | 797 registers_(registers) { } |
781 | 798 |
782 virtual ~BaseStoreStubCompiler() { } | 799 virtual ~BaseStoreStubCompiler() { } |
783 | 800 |
801 Handle<Code> CompileStoreTransition(Handle<JSObject> object, | |
802 LookupResult* lookup, | |
803 Handle<Map> transition, | |
804 Handle<Name> name); | |
784 Handle<Code> CompileStoreField(Handle<JSObject> object, | 805 Handle<Code> CompileStoreField(Handle<JSObject> object, |
785 LookupResult* lookup, | 806 LookupResult* lookup, |
786 Handle<Map> transition, | |
787 Handle<Name> name); | 807 Handle<Name> name); |
788 | 808 |
789 protected: | 809 protected: |
790 Handle<Code> GetICCode(Code::Kind kind, | 810 Handle<Code> GetICCode(Code::Kind kind, |
791 Code::StubType type, | 811 Code::StubType type, |
792 Handle<Name> name, | 812 Handle<Name> name, |
793 InlineCacheState state = MONOMORPHIC); | 813 InlineCacheState state = MONOMORPHIC); |
794 | 814 |
795 Handle<Code> GetCode(Code::Kind kind, | 815 Handle<Code> GetCode(Code::Kind kind, |
796 Code::StubType type, | 816 Code::StubType type, |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1077 Handle<JSFunction> constant_function_; | 1097 Handle<JSFunction> constant_function_; |
1078 bool is_simple_api_call_; | 1098 bool is_simple_api_call_; |
1079 Handle<FunctionTemplateInfo> expected_receiver_type_; | 1099 Handle<FunctionTemplateInfo> expected_receiver_type_; |
1080 Handle<CallHandlerInfo> api_call_info_; | 1100 Handle<CallHandlerInfo> api_call_info_; |
1081 }; | 1101 }; |
1082 | 1102 |
1083 | 1103 |
1084 } } // namespace v8::internal | 1104 } } // namespace v8::internal |
1085 | 1105 |
1086 #endif // V8_STUB_CACHE_H_ | 1106 #endif // V8_STUB_CACHE_H_ |
OLD | NEW |