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

Side by Side Diff: src/mips/lithium-mips.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/mips/lithium-mips.h ('k') | src/mips64/code-stubs-mips64.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 // 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_MIPS 9 #if V8_TARGET_ARCH_MIPS
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 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 ? AssignEnvironment(DefineAsRegister(result)) 2067 ? AssignEnvironment(DefineAsRegister(result))
2060 : DefineAsRegister(result); 2068 : DefineAsRegister(result);
2061 } 2069 }
2062 2070
2063 2071
2064 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { 2072 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) {
2065 LOperand* context = UseFixed(instr->context(), cp); 2073 LOperand* context = UseFixed(instr->context(), cp);
2066 LOperand* global_object = 2074 LOperand* global_object =
2067 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister()); 2075 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister());
2068 LOperand* vector = NULL; 2076 LOperand* vector = NULL;
2069 if (FLAG_vector_ics) { 2077 if (instr->HasVectorAndSlot()) {
2070 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2078 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2071 } 2079 }
2072 LLoadGlobalGeneric* result = 2080 LLoadGlobalGeneric* result =
2073 new(zone()) LLoadGlobalGeneric(context, global_object, vector); 2081 new(zone()) LLoadGlobalGeneric(context, global_object, vector);
2074 return MarkAsCall(DefineFixed(result, v0), instr); 2082 return MarkAsCall(DefineFixed(result, v0), instr);
2075 } 2083 }
2076 2084
2077 2085
2078 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { 2086 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) {
2079 LOperand* value = UseRegister(instr->value()); 2087 LOperand* value = UseRegister(instr->value());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2118 LOperand* obj = UseRegisterAtStart(instr->object()); 2126 LOperand* obj = UseRegisterAtStart(instr->object());
2119 return DefineAsRegister(new(zone()) LLoadNamedField(obj)); 2127 return DefineAsRegister(new(zone()) LLoadNamedField(obj));
2120 } 2128 }
2121 2129
2122 2130
2123 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 2131 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
2124 LOperand* context = UseFixed(instr->context(), cp); 2132 LOperand* context = UseFixed(instr->context(), cp);
2125 LOperand* object = 2133 LOperand* object =
2126 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 2134 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
2127 LOperand* vector = NULL; 2135 LOperand* vector = NULL;
2128 if (FLAG_vector_ics) { 2136 if (instr->HasVectorAndSlot()) {
2129 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2137 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2130 } 2138 }
2131 2139
2132 LInstruction* result = 2140 LInstruction* result =
2133 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), v0); 2141 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), v0);
2134 return MarkAsCall(result, instr); 2142 return MarkAsCall(result, instr);
2135 } 2143 }
2136 2144
2137 2145
2138 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( 2146 LInstruction* LChunkBuilder::DoLoadFunctionPrototype(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2185 return result; 2193 return result;
2186 } 2194 }
2187 2195
2188 2196
2189 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { 2197 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
2190 LOperand* context = UseFixed(instr->context(), cp); 2198 LOperand* context = UseFixed(instr->context(), cp);
2191 LOperand* object = 2199 LOperand* object =
2192 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 2200 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
2193 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister()); 2201 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister());
2194 LOperand* vector = NULL; 2202 LOperand* vector = NULL;
2195 if (FLAG_vector_ics) { 2203 if (instr->HasVectorAndSlot()) {
2196 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister()); 2204 vector = FixedTemp(VectorLoadICDescriptor::VectorRegister());
2197 } 2205 }
2198 2206
2199 LInstruction* result = 2207 LInstruction* result =
2200 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector), 2208 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector),
2201 v0); 2209 v0);
2202 return MarkAsCall(result, instr); 2210 return MarkAsCall(result, instr);
2203 } 2211 }
2204 2212
2205 2213
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
2589 LOperand* context = UseFixed(instr->context(), cp); 2597 LOperand* context = UseFixed(instr->context(), cp);
2590 LOperand* function = UseRegisterAtStart(instr->function()); 2598 LOperand* function = UseRegisterAtStart(instr->function());
2591 LAllocateBlockContext* result = 2599 LAllocateBlockContext* result =
2592 new(zone()) LAllocateBlockContext(context, function); 2600 new(zone()) LAllocateBlockContext(context, function);
2593 return MarkAsCall(DefineFixed(result, cp), instr); 2601 return MarkAsCall(DefineFixed(result, cp), instr);
2594 } 2602 }
2595 2603
2596 } } // namespace v8::internal 2604 } } // namespace v8::internal
2597 2605
2598 #endif // V8_TARGET_ARCH_MIPS 2606 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/lithium-mips.h ('k') | src/mips64/code-stubs-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698