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 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 compiler::Node* GrowElementsCapacity( | 572 compiler::Node* GrowElementsCapacity( |
573 compiler::Node* object, compiler::Node* elements, ElementsKind from_kind, | 573 compiler::Node* object, compiler::Node* elements, ElementsKind from_kind, |
574 ElementsKind to_kind, compiler::Node* capacity, | 574 ElementsKind to_kind, compiler::Node* capacity, |
575 compiler::Node* new_capacity, ParameterMode mode, Label* bailout); | 575 compiler::Node* new_capacity, ParameterMode mode, Label* bailout); |
576 | 576 |
577 // Allocation site manipulation | 577 // Allocation site manipulation |
578 void InitializeAllocationMemento(compiler::Node* base_allocation, | 578 void InitializeAllocationMemento(compiler::Node* base_allocation, |
579 int base_allocation_size, | 579 int base_allocation_size, |
580 compiler::Node* allocation_site); | 580 compiler::Node* allocation_site); |
581 | 581 |
| 582 compiler::Node* TryTaggedToFloat64(compiler::Node* value, |
| 583 Label* if_valueisnotnumber); |
582 compiler::Node* TruncateTaggedToFloat64(compiler::Node* context, | 584 compiler::Node* TruncateTaggedToFloat64(compiler::Node* context, |
583 compiler::Node* value); | 585 compiler::Node* value); |
584 compiler::Node* TruncateTaggedToWord32(compiler::Node* context, | 586 compiler::Node* TruncateTaggedToWord32(compiler::Node* context, |
585 compiler::Node* value); | 587 compiler::Node* value); |
586 // Truncate the floating point value of a HeapNumber to an Int32. | 588 // Truncate the floating point value of a HeapNumber to an Int32. |
587 compiler::Node* TruncateHeapNumberValueToWord32(compiler::Node* object); | 589 compiler::Node* TruncateHeapNumberValueToWord32(compiler::Node* object); |
588 | 590 |
589 // Conversions. | 591 // Conversions. |
590 compiler::Node* ChangeFloat64ToTagged(compiler::Node* value); | 592 compiler::Node* ChangeFloat64ToTagged(compiler::Node* value); |
591 compiler::Node* ChangeInt32ToTagged(compiler::Node* value); | 593 compiler::Node* ChangeInt32ToTagged(compiler::Node* value); |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 Label* if_false); | 1095 Label* if_false); |
1094 | 1096 |
1095 enum ResultMode { kDontNegateResult, kNegateResult }; | 1097 enum ResultMode { kDontNegateResult, kNegateResult }; |
1096 | 1098 |
1097 compiler::Node* Equal(ResultMode mode, compiler::Node* lhs, | 1099 compiler::Node* Equal(ResultMode mode, compiler::Node* lhs, |
1098 compiler::Node* rhs, compiler::Node* context); | 1100 compiler::Node* rhs, compiler::Node* context); |
1099 | 1101 |
1100 compiler::Node* StrictEqual(ResultMode mode, compiler::Node* lhs, | 1102 compiler::Node* StrictEqual(ResultMode mode, compiler::Node* lhs, |
1101 compiler::Node* rhs, compiler::Node* context); | 1103 compiler::Node* rhs, compiler::Node* context); |
1102 | 1104 |
| 1105 // ECMA#sec-samevalue |
| 1106 // Similar to StrictEqual except that NaNs are treated as equal and minus zero |
| 1107 // differs from positive zero. |
| 1108 // Unlike Equal and StrictEqual, returns a value suitable for use in Branch |
| 1109 // instructions, e.g. Branch(SameValue(...), &label). |
| 1110 compiler::Node* SameValue(compiler::Node* lhs, compiler::Node* rhs, |
| 1111 compiler::Node* context); |
| 1112 |
1103 compiler::Node* HasProperty( | 1113 compiler::Node* HasProperty( |
1104 compiler::Node* object, compiler::Node* key, compiler::Node* context, | 1114 compiler::Node* object, compiler::Node* key, compiler::Node* context, |
1105 Runtime::FunctionId fallback_runtime_function_id = Runtime::kHasProperty); | 1115 Runtime::FunctionId fallback_runtime_function_id = Runtime::kHasProperty); |
1106 compiler::Node* ForInFilter(compiler::Node* key, compiler::Node* object, | 1116 compiler::Node* ForInFilter(compiler::Node* key, compiler::Node* object, |
1107 compiler::Node* context); | 1117 compiler::Node* context); |
1108 | 1118 |
1109 compiler::Node* Typeof(compiler::Node* value, compiler::Node* context); | 1119 compiler::Node* Typeof(compiler::Node* value, compiler::Node* context); |
1110 | 1120 |
1111 compiler::Node* InstanceOf(compiler::Node* object, compiler::Node* callable, | 1121 compiler::Node* InstanceOf(compiler::Node* object, compiler::Node* callable, |
1112 compiler::Node* context); | 1122 compiler::Node* context); |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 } | 1289 } |
1280 #else | 1290 #else |
1281 #define CSA_SLOW_ASSERT(csa, x) ((void)0) | 1291 #define CSA_SLOW_ASSERT(csa, x) ((void)0) |
1282 #endif | 1292 #endif |
1283 | 1293 |
1284 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); | 1294 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); |
1285 | 1295 |
1286 } // namespace internal | 1296 } // namespace internal |
1287 } // namespace v8 | 1297 } // namespace v8 |
1288 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 1298 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |