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

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

Issue 405343002: X87: Introduce FLAG_vector_ics. (Closed) Base URL: https://chromium.googlesource.com/external/v8.git@bleeding_edge
Patch Set: Created 6 years, 5 months 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/x87/lithium-x87.h ('k') | no next file » | 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_X87 7 #if V8_TARGET_ARCH_X87
8 8
9 #include "src/hydrogen-osr.h" 9 #include "src/hydrogen-osr.h"
10 #include "src/lithium-allocator-inl.h" 10 #include "src/lithium-allocator-inl.h"
(...skipping 2055 matching lines...) Expand 10 before | Expand all | Expand 10 after
2066 return instr->RequiresHoleCheck() 2066 return instr->RequiresHoleCheck()
2067 ? AssignEnvironment(DefineAsRegister(result)) 2067 ? AssignEnvironment(DefineAsRegister(result))
2068 : DefineAsRegister(result); 2068 : DefineAsRegister(result);
2069 } 2069 }
2070 2070
2071 2071
2072 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { 2072 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) {
2073 LOperand* context = UseFixed(instr->context(), esi); 2073 LOperand* context = UseFixed(instr->context(), esi);
2074 LOperand* global_object = UseFixed(instr->global_object(), 2074 LOperand* global_object = UseFixed(instr->global_object(),
2075 LoadIC::ReceiverRegister()); 2075 LoadIC::ReceiverRegister());
2076 LOperand* vector = NULL;
2077 if (FLAG_vector_ics) {
2078 vector = FixedTemp(LoadIC::VectorRegister());
2079 }
2080
2076 LLoadGlobalGeneric* result = 2081 LLoadGlobalGeneric* result =
2077 new(zone()) LLoadGlobalGeneric(context, global_object); 2082 new(zone()) LLoadGlobalGeneric(context, global_object, vector);
2078 return MarkAsCall(DefineFixed(result, eax), instr); 2083 return MarkAsCall(DefineFixed(result, eax), instr);
2079 } 2084 }
2080 2085
2081 2086
2082 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { 2087 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) {
2083 LStoreGlobalCell* result = 2088 LStoreGlobalCell* result =
2084 new(zone()) LStoreGlobalCell(UseRegister(instr->value())); 2089 new(zone()) LStoreGlobalCell(UseRegister(instr->value()));
2085 return instr->RequiresHoleCheck() ? AssignEnvironment(result) : result; 2090 return instr->RequiresHoleCheck() ? AssignEnvironment(result) : result;
2086 } 2091 }
2087 2092
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2121 instr->access().offset() == 0) 2126 instr->access().offset() == 0)
2122 ? UseRegisterOrConstantAtStart(instr->object()) 2127 ? UseRegisterOrConstantAtStart(instr->object())
2123 : UseRegisterAtStart(instr->object()); 2128 : UseRegisterAtStart(instr->object());
2124 return DefineAsRegister(new(zone()) LLoadNamedField(obj)); 2129 return DefineAsRegister(new(zone()) LLoadNamedField(obj));
2125 } 2130 }
2126 2131
2127 2132
2128 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 2133 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
2129 LOperand* context = UseFixed(instr->context(), esi); 2134 LOperand* context = UseFixed(instr->context(), esi);
2130 LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister()); 2135 LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister());
2131 LLoadNamedGeneric* result = new(zone()) LLoadNamedGeneric(context, object); 2136 LOperand* vector = NULL;
2137 if (FLAG_vector_ics) {
2138 vector = FixedTemp(LoadIC::VectorRegister());
2139 }
2140 LLoadNamedGeneric* result = new(zone()) LLoadNamedGeneric(
2141 context, object, vector);
2132 return MarkAsCall(DefineFixed(result, eax), instr); 2142 return MarkAsCall(DefineFixed(result, eax), instr);
2133 } 2143 }
2134 2144
2135 2145
2136 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( 2146 LInstruction* LChunkBuilder::DoLoadFunctionPrototype(
2137 HLoadFunctionPrototype* instr) { 2147 HLoadFunctionPrototype* instr) {
2138 return AssignEnvironment(DefineAsRegister( 2148 return AssignEnvironment(DefineAsRegister(
2139 new(zone()) LLoadFunctionPrototype(UseRegister(instr->function()), 2149 new(zone()) LLoadFunctionPrototype(UseRegister(instr->function()),
2140 TempRegister()))); 2150 TempRegister())));
2141 } 2151 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2180 result = AssignEnvironment(result); 2190 result = AssignEnvironment(result);
2181 } 2191 }
2182 return result; 2192 return result;
2183 } 2193 }
2184 2194
2185 2195
2186 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { 2196 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
2187 LOperand* context = UseFixed(instr->context(), esi); 2197 LOperand* context = UseFixed(instr->context(), esi);
2188 LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister()); 2198 LOperand* object = UseFixed(instr->object(), LoadIC::ReceiverRegister());
2189 LOperand* key = UseFixed(instr->key(), LoadIC::NameRegister()); 2199 LOperand* key = UseFixed(instr->key(), LoadIC::NameRegister());
2190 2200 LOperand* vector = NULL;
2201 if (FLAG_vector_ics) {
2202 vector = FixedTemp(LoadIC::VectorRegister());
2203 }
2191 LLoadKeyedGeneric* result = 2204 LLoadKeyedGeneric* result =
2192 new(zone()) LLoadKeyedGeneric(context, object, key); 2205 new(zone()) LLoadKeyedGeneric(context, object, key, vector);
2193 return MarkAsCall(DefineFixed(result, eax), instr); 2206 return MarkAsCall(DefineFixed(result, eax), instr);
2194 } 2207 }
2195 2208
2196 2209
2197 LOperand* LChunkBuilder::GetStoreKeyedValueOperand(HStoreKeyed* instr) { 2210 LOperand* LChunkBuilder::GetStoreKeyedValueOperand(HStoreKeyed* instr) {
2198 ElementsKind elements_kind = instr->elements_kind(); 2211 ElementsKind elements_kind = instr->elements_kind();
2199 2212
2200 // Determine if we need a byte register in this case for the value. 2213 // Determine if we need a byte register in this case for the value.
2201 bool val_is_fixed_register = 2214 bool val_is_fixed_register =
2202 elements_kind == EXTERNAL_INT8_ELEMENTS || 2215 elements_kind == EXTERNAL_INT8_ELEMENTS ||
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
2653 LOperand* function = UseRegisterAtStart(instr->function()); 2666 LOperand* function = UseRegisterAtStart(instr->function());
2654 LAllocateBlockContext* result = 2667 LAllocateBlockContext* result =
2655 new(zone()) LAllocateBlockContext(context, function); 2668 new(zone()) LAllocateBlockContext(context, function);
2656 return MarkAsCall(DefineFixed(result, esi), instr); 2669 return MarkAsCall(DefineFixed(result, esi), instr);
2657 } 2670 }
2658 2671
2659 2672
2660 } } // namespace v8::internal 2673 } } // namespace v8::internal
2661 2674
2662 #endif // V8_TARGET_ARCH_X87 2675 #endif // V8_TARGET_ARCH_X87
OLDNEW
« no previous file with comments | « src/x87/lithium-x87.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698