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

Side by Side Diff: src/code-stubs.h

Issue 1376933006: Vector ICs: Get rid of stack arguments on ia32 transitioning stores. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Code comments. Created 5 years, 2 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/assembler.cc ('k') | src/ia32/code-stubs-ia32.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 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 DCHECK(FLAG_vector_stores); 1237 DCHECK(FLAG_vector_stores);
1238 return VectorStoreTransitionDescriptor::SlotRegister(); 1238 return VectorStoreTransitionDescriptor::SlotRegister();
1239 } 1239 }
1240 1240
1241 static Register VectorRegister() { 1241 static Register VectorRegister() {
1242 DCHECK(FLAG_vector_stores); 1242 DCHECK(FLAG_vector_stores);
1243 return VectorStoreTransitionDescriptor::VectorRegister(); 1243 return VectorStoreTransitionDescriptor::VectorRegister();
1244 } 1244 }
1245 1245
1246 static Register MapRegister() { 1246 static Register MapRegister() {
1247 return FLAG_vector_stores ? VectorStoreTransitionDescriptor::MapRegister() 1247 if (FLAG_vector_stores) {
1248 : StoreTransitionDescriptor::MapRegister(); 1248 return VectorStoreTransitionDescriptor::MapRegister();
1249 }
1250 return StoreTransitionDescriptor::MapRegister();
1249 } 1251 }
1250 1252
1251 static int ReceiverIndex() { 1253 static int ReceiverIndex() {
1252 return StoreTransitionDescriptor::kReceiverIndex; 1254 return StoreTransitionDescriptor::kReceiverIndex;
1253 } 1255 }
1254 1256
1255 static int NameIndex() { return StoreTransitionDescriptor::kReceiverIndex; } 1257 static int NameIndex() { return StoreTransitionDescriptor::kReceiverIndex; }
1256 1258
1257 static int ValueIndex() { return StoreTransitionDescriptor::kValueIndex; } 1259 static int ValueIndex() { return StoreTransitionDescriptor::kValueIndex; }
1258 1260
1259 static int SlotIndex() { 1261 static int MapIndex() {
1260 DCHECK(FLAG_vector_stores); 1262 DCHECK(static_cast<int>(VectorStoreTransitionDescriptor::kMapIndex) ==
1261 return VectorStoreTransitionDescriptor::kSlotIndex; 1263 static_cast<int>(StoreTransitionDescriptor::kMapIndex));
1264 return StoreTransitionDescriptor::kMapIndex;
1262 } 1265 }
1263 1266
1264 static int VectorIndex() { 1267 static int VectorIndex() {
1265 DCHECK(FLAG_vector_stores); 1268 DCHECK(FLAG_vector_stores);
1269 if (HasVirtualSlotArg()) {
1270 return VectorStoreTransitionDescriptor::kVirtualSlotVectorIndex;
1271 }
1266 return VectorStoreTransitionDescriptor::kVectorIndex; 1272 return VectorStoreTransitionDescriptor::kVectorIndex;
1267 } 1273 }
1268 1274
1269 static int MapIndex() { 1275 // Some platforms don't have a slot arg.
1270 if (FLAG_vector_stores) { 1276 static bool HasVirtualSlotArg() {
1271 return VectorStoreTransitionDescriptor::kMapIndex; 1277 if (!FLAG_vector_stores) return false;
1272 } 1278 return SlotRegister().is(no_reg);
1273 return StoreTransitionDescriptor::kMapIndex;
1274 } 1279 }
1275
1276 // Some platforms push Slot, Vector, Map on the stack instead of in
1277 // registers.
1278 static bool UsesStackArgs() { return MapRegister().is(no_reg); }
1279 }; 1280 };
1280 1281
1281 1282
1282 class StoreTransitionStub : public HandlerStub { 1283 class StoreTransitionStub : public HandlerStub {
1283 public: 1284 public:
1284 enum StoreMode { 1285 enum StoreMode {
1285 StoreMapOnly, 1286 StoreMapOnly,
1286 StoreMapAndValue, 1287 StoreMapAndValue,
1287 ExtendStorageAndStoreMapAndValue 1288 ExtendStorageAndStoreMapAndValue
1288 }; 1289 };
(...skipping 1807 matching lines...) Expand 10 before | Expand all | Expand 10 after
3096 #undef DEFINE_HYDROGEN_CODE_STUB 3097 #undef DEFINE_HYDROGEN_CODE_STUB
3097 #undef DEFINE_CODE_STUB 3098 #undef DEFINE_CODE_STUB
3098 #undef DEFINE_CODE_STUB_BASE 3099 #undef DEFINE_CODE_STUB_BASE
3099 3100
3100 extern Representation RepresentationFromType(Type* type); 3101 extern Representation RepresentationFromType(Type* type);
3101 3102
3102 } // namespace internal 3103 } // namespace internal
3103 } // namespace v8 3104 } // namespace v8
3104 3105
3105 #endif // V8_CODE_STUBS_H_ 3106 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/assembler.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698