OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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_STUB_ASSEMBLER_H_ | 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ |
6 #define V8_CODE_STUB_ASSEMBLER_H_ | 6 #define V8_CODE_STUB_ASSEMBLER_H_ |
7 | 7 |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "src/compiler/code-assembler.h" | 10 #include "src/compiler/code-assembler.h" |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 // prototype info object or not. | 377 // prototype info object or not. |
378 Node* LoadMapPrototypeInfo(Node* map, Label* if_has_no_proto_info); | 378 Node* LoadMapPrototypeInfo(Node* map, Label* if_has_no_proto_info); |
379 // Load the instance size of a Map. | 379 // Load the instance size of a Map. |
380 Node* LoadMapInstanceSize(Node* map); | 380 Node* LoadMapInstanceSize(Node* map); |
381 // Load the inobject properties count of a Map (valid only for JSObjects). | 381 // Load the inobject properties count of a Map (valid only for JSObjects). |
382 Node* LoadMapInobjectProperties(Node* map); | 382 Node* LoadMapInobjectProperties(Node* map); |
383 // Load the constructor function index of a Map (only for primitive maps). | 383 // Load the constructor function index of a Map (only for primitive maps). |
384 Node* LoadMapConstructorFunctionIndex(Node* map); | 384 Node* LoadMapConstructorFunctionIndex(Node* map); |
385 // Load the constructor of a Map (equivalent to Map::GetConstructor()). | 385 // Load the constructor of a Map (equivalent to Map::GetConstructor()). |
386 Node* LoadMapConstructor(Node* map); | 386 Node* LoadMapConstructor(Node* map); |
| 387 // Loads a value from the specially encoded integer fields in the |
| 388 // SharedFunctionInfo object. |
| 389 // TODO(danno): This currently only works for the integer fields that are |
| 390 // mapped to the upper part of 64-bit words. We should customize |
| 391 // SFI::BodyDescriptor and store int32 values directly. |
| 392 Node* LoadSharedFunctionInfoSpecialField(Node* shared, int offset, |
| 393 ParameterMode param_mode); |
| 394 |
387 // Check if the map is set for slow properties. | 395 // Check if the map is set for slow properties. |
388 Node* IsDictionaryMap(Node* map); | 396 Node* IsDictionaryMap(Node* map); |
389 | 397 |
390 // Load the hash field of a name as an uint32 value. | 398 // Load the hash field of a name as an uint32 value. |
391 Node* LoadNameHashField(Node* name); | 399 Node* LoadNameHashField(Node* name); |
392 // Load the hash value of a name as an uint32 value. | 400 // Load the hash value of a name as an uint32 value. |
393 // If {if_hash_not_computed} label is specified then it also checks if | 401 // If {if_hash_not_computed} label is specified then it also checks if |
394 // hash is actually computed. | 402 // hash is actually computed. |
395 Node* LoadNameHash(Node* name, Label* if_hash_not_computed = nullptr); | 403 Node* LoadNameHash(Node* name, Label* if_hash_not_computed = nullptr); |
396 | 404 |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 ParameterMode mode, int header_size) { | 1121 ParameterMode mode, int header_size) { |
1114 return ElementOffsetFromIndex(element_count, kind, mode, header_size); | 1122 return ElementOffsetFromIndex(element_count, kind, mode, header_size); |
1115 } | 1123 } |
1116 | 1124 |
1117 Node* GetFixedArrayAllocationSize(Node* element_count, ElementsKind kind, | 1125 Node* GetFixedArrayAllocationSize(Node* element_count, ElementsKind kind, |
1118 ParameterMode mode) { | 1126 ParameterMode mode) { |
1119 return GetArrayAllocationSize(element_count, kind, mode, | 1127 return GetArrayAllocationSize(element_count, kind, mode, |
1120 FixedArray::kHeaderSize); | 1128 FixedArray::kHeaderSize); |
1121 } | 1129 } |
1122 | 1130 |
| 1131 void GotoIfFixedArraySizeDoesntFitInNewSpace(Node* element_count, |
| 1132 Label* doesnt_fit, int base_size, |
| 1133 ParameterMode mode); |
| 1134 |
1123 void InitializeFieldsWithRoot(Node* object, Node* start_offset, | 1135 void InitializeFieldsWithRoot(Node* object, Node* start_offset, |
1124 Node* end_offset, Heap::RootListIndex root); | 1136 Node* end_offset, Heap::RootListIndex root); |
1125 | 1137 |
1126 enum RelationalComparisonMode { | 1138 enum RelationalComparisonMode { |
1127 kLessThan, | 1139 kLessThan, |
1128 kLessThanOrEqual, | 1140 kLessThanOrEqual, |
1129 kGreaterThan, | 1141 kGreaterThan, |
1130 kGreaterThanOrEqual | 1142 kGreaterThanOrEqual |
1131 }; | 1143 }; |
1132 | 1144 |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1317 } | 1329 } |
1318 #else | 1330 #else |
1319 #define CSA_SLOW_ASSERT(csa, x) ((void)0) | 1331 #define CSA_SLOW_ASSERT(csa, x) ((void)0) |
1320 #endif | 1332 #endif |
1321 | 1333 |
1322 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); | 1334 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); |
1323 | 1335 |
1324 } // namespace internal | 1336 } // namespace internal |
1325 } // namespace v8 | 1337 } // namespace v8 |
1326 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 1338 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |