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