| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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_ | 
| OLD | NEW | 
|---|