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

Side by Side Diff: src/mips64/lithium-mips64.cc

Issue 767743002: Hydrogen code stubs for vector-based ICs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase. Created 6 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
« no previous file with comments | « src/mips64/lithium-mips64.h ('k') | src/type-feedback-vector.h » ('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 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <sstream> 5 #include <sstream>
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #if V8_TARGET_ARCH_MIPS64 9 #if V8_TARGET_ARCH_MIPS64
10 10
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 } 1096 }
1097 1097
1098 1098
1099 LInstruction* LChunkBuilder::DoTailCallThroughMegamorphicCache( 1099 LInstruction* LChunkBuilder::DoTailCallThroughMegamorphicCache(
1100 HTailCallThroughMegamorphicCache* instr) { 1100 HTailCallThroughMegamorphicCache* instr) {
1101 LOperand* context = UseFixed(instr->context(), cp); 1101 LOperand* context = UseFixed(instr->context(), cp);
1102 LOperand* receiver_register = 1102 LOperand* receiver_register =
1103 UseFixed(instr->receiver(), LoadDescriptor::ReceiverRegister()); 1103 UseFixed(instr->receiver(), LoadDescriptor::ReceiverRegister());
1104 LOperand* name_register = 1104 LOperand* name_register =
1105 UseFixed(instr->name(), LoadDescriptor::NameRegister()); 1105 UseFixed(instr->name(), LoadDescriptor::NameRegister());
1106 LOperand* slot = NULL;
1107 LOperand* vector = NULL;
1108 if (FLAG_vector_ics) {
1109 slot = UseFixed(instr->slot(), VectorLoadICDescriptor::SlotRegister());
1110 vector =
1111 UseFixed(instr->vector(), VectorLoadICDescriptor::VectorRegister());
1112 }
1113
1106 // Not marked as call. It can't deoptimize, and it never returns. 1114 // Not marked as call. It can't deoptimize, and it never returns.
1107 return new (zone()) LTailCallThroughMegamorphicCache( 1115 return new (zone()) LTailCallThroughMegamorphicCache(
1108 context, receiver_register, name_register); 1116 context, receiver_register, name_register, slot, vector);
1109 } 1117 }
1110 1118
1111 1119
1112 LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { 1120 LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) {
1113 LOperand* context = UseFixed(instr->context(), cp); 1121 LOperand* context = UseFixed(instr->context(), cp);
1114 LOperand* function = UseFixed(instr->function(), a1); 1122 LOperand* function = UseFixed(instr->function(), a1);
1115 LInvokeFunction* result = new(zone()) LInvokeFunction(context, function); 1123 LInvokeFunction* result = new(zone()) LInvokeFunction(context, function);
1116 return MarkAsCall(DefineFixed(result, v0), instr, CANNOT_DEOPTIMIZE_EAGERLY); 1124 return MarkAsCall(DefineFixed(result, v0), instr, CANNOT_DEOPTIMIZE_EAGERLY);
1117 } 1125 }
1118 1126
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 ? AssignEnvironment(DefineAsRegister(result)) 2065 ? AssignEnvironment(DefineAsRegister(result))
2058 : DefineAsRegister(result); 2066 : DefineAsRegister(result);
2059 } 2067 }
2060 2068
2061 2069
2062 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { 2070 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) {
2063 LOperand* context = UseFixed(instr->context(), cp); 2071 LOperand* context = UseFixed(instr->context(), cp);
2064 LOperand* global_object = 2072 LOperand* global_object =
2065 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister()); 2073 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister());
2066 LOperand* vector = NULL; 2074 LOperand* vector = NULL;
2067 if (FLAG_vector_ics) { 2075 if (instr->HasVectorAndSlot()) {
2068 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2076 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2069 } 2077 }
2070 LLoadGlobalGeneric* result = 2078 LLoadGlobalGeneric* result =
2071 new(zone()) LLoadGlobalGeneric(context, global_object, vector); 2079 new(zone()) LLoadGlobalGeneric(context, global_object, vector);
2072 return MarkAsCall(DefineFixed(result, v0), instr); 2080 return MarkAsCall(DefineFixed(result, v0), instr);
2073 } 2081 }
2074 2082
2075 2083
2076 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { 2084 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) {
2077 LOperand* value = UseRegister(instr->value()); 2085 LOperand* value = UseRegister(instr->value());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 LOperand* obj = UseRegisterAtStart(instr->object()); 2124 LOperand* obj = UseRegisterAtStart(instr->object());
2117 return DefineAsRegister(new(zone()) LLoadNamedField(obj)); 2125 return DefineAsRegister(new(zone()) LLoadNamedField(obj));
2118 } 2126 }
2119 2127
2120 2128
2121 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 2129 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
2122 LOperand* context = UseFixed(instr->context(), cp); 2130 LOperand* context = UseFixed(instr->context(), cp);
2123 LOperand* object = 2131 LOperand* object =
2124 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 2132 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
2125 LOperand* vector = NULL; 2133 LOperand* vector = NULL;
2126 if (FLAG_vector_ics) { 2134 if (instr->HasVectorAndSlot()) {
2127 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2135 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2128 } 2136 }
2129 2137
2130 LInstruction* result = 2138 LInstruction* result =
2131 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), v0); 2139 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), v0);
2132 return MarkAsCall(result, instr); 2140 return MarkAsCall(result, instr);
2133 } 2141 }
2134 2142
2135 2143
2136 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( 2144 LInstruction* LChunkBuilder::DoLoadFunctionPrototype(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2184 return result; 2192 return result;
2185 } 2193 }
2186 2194
2187 2195
2188 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { 2196 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
2189 LOperand* context = UseFixed(instr->context(), cp); 2197 LOperand* context = UseFixed(instr->context(), cp);
2190 LOperand* object = 2198 LOperand* object =
2191 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 2199 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
2192 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister()); 2200 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister());
2193 LOperand* vector = NULL; 2201 LOperand* vector = NULL;
2194 if (FLAG_vector_ics) { 2202 if (instr->HasVectorAndSlot()) {
2195 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2203 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2196 } 2204 }
2197 2205
2198 LInstruction* result = 2206 LInstruction* result =
2199 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector), 2207 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector),
2200 v0); 2208 v0);
2201 return MarkAsCall(result, instr); 2209 return MarkAsCall(result, instr);
2202 } 2210 }
2203 2211
2204 2212
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
2589 LOperand* function = UseRegisterAtStart(instr->function()); 2597 LOperand* function = UseRegisterAtStart(instr->function());
2590 LAllocateBlockContext* result = 2598 LAllocateBlockContext* result =
2591 new(zone()) LAllocateBlockContext(context, function); 2599 new(zone()) LAllocateBlockContext(context, function);
2592 return MarkAsCall(DefineFixed(result, cp), instr); 2600 return MarkAsCall(DefineFixed(result, cp), instr);
2593 } 2601 }
2594 2602
2595 2603
2596 } } // namespace v8::internal 2604 } } // namespace v8::internal
2597 2605
2598 #endif // V8_TARGET_ARCH_MIPS64 2606 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips64/lithium-mips64.h ('k') | src/type-feedback-vector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698