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 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 // 2^32−1, inclusive. | 722 // 2^32−1, inclusive. |
723 // ES#sec-touint32 | 723 // ES#sec-touint32 |
724 compiler::Node* ToUint32(compiler::Node* context, compiler::Node* input); | 724 compiler::Node* ToUint32(compiler::Node* context, compiler::Node* input); |
725 | 725 |
726 // Convert any object to a String. | 726 // Convert any object to a String. |
727 Node* ToString(Node* context, Node* input); | 727 Node* ToString(Node* context, Node* input); |
728 | 728 |
729 // Convert any object to a Primitive. | 729 // Convert any object to a Primitive. |
730 Node* JSReceiverToPrimitive(Node* context, Node* input); | 730 Node* JSReceiverToPrimitive(Node* context, Node* input); |
731 | 731 |
| 732 // Convert a String to a flat String. |
| 733 Node* FlattenString(Node* string); |
| 734 |
732 enum ToIntegerTruncationMode { | 735 enum ToIntegerTruncationMode { |
733 kNoTruncation, | 736 kNoTruncation, |
734 kTruncateMinusZero, | 737 kTruncateMinusZero, |
735 }; | 738 }; |
736 | 739 |
737 // Convert any object to an Integer. | 740 // Convert any object to an Integer. |
738 Node* ToInteger(Node* context, Node* input, | 741 Node* ToInteger(Node* context, Node* input, |
739 ToIntegerTruncationMode mode = kNoTruncation); | 742 ToIntegerTruncationMode mode = kNoTruncation); |
740 | 743 |
741 // Returns a node that contains a decoded (unsigned!) value of a bit | 744 // Returns a node that contains a decoded (unsigned!) value of a bit |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 void Increment(Variable& variable, int value = 1, | 828 void Increment(Variable& variable, int value = 1, |
826 ParameterMode mode = INTPTR_PARAMETERS); | 829 ParameterMode mode = INTPTR_PARAMETERS); |
827 | 830 |
828 // Generates "if (false) goto label" code. Useful for marking a label as | 831 // Generates "if (false) goto label" code. Useful for marking a label as |
829 // "live" to avoid assertion failures during graph building. In the resulting | 832 // "live" to avoid assertion failures during graph building. In the resulting |
830 // code this check will be eliminated. | 833 // code this check will be eliminated. |
831 void Use(Label* label); | 834 void Use(Label* label); |
832 | 835 |
833 // Various building blocks for stubs doing property lookups. | 836 // Various building blocks for stubs doing property lookups. |
834 void TryToName(Node* key, Label* if_keyisindex, Variable* var_index, | 837 void TryToName(Node* key, Label* if_keyisindex, Variable* var_index, |
835 Label* if_keyisunique, Variable* var_unique, | 838 Label* if_keyisunique, Label* if_bailout); |
836 Label* if_bailout); | |
837 | 839 |
838 // Calculates array index for given dictionary entry and entry field. | 840 // Calculates array index for given dictionary entry and entry field. |
839 // See Dictionary::EntryToIndex(). | 841 // See Dictionary::EntryToIndex(). |
840 template <typename Dictionary> | 842 template <typename Dictionary> |
841 Node* EntryToIndex(Node* entry, int field_index); | 843 Node* EntryToIndex(Node* entry, int field_index); |
842 template <typename Dictionary> | 844 template <typename Dictionary> |
843 Node* EntryToIndex(Node* entry) { | 845 Node* EntryToIndex(Node* entry) { |
844 return EntryToIndex<Dictionary>(entry, Dictionary::kEntryKeyIndex); | 846 return EntryToIndex<Dictionary>(entry, Dictionary::kEntryKeyIndex); |
845 } | 847 } |
846 // Calculate a valid size for the a hash table. | 848 // Calculate a valid size for the a hash table. |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 } | 1255 } |
1254 #else | 1256 #else |
1255 #define CSA_SLOW_ASSERT(csa, x) ((void)0) | 1257 #define CSA_SLOW_ASSERT(csa, x) ((void)0) |
1256 #endif | 1258 #endif |
1257 | 1259 |
1258 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); | 1260 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); |
1259 | 1261 |
1260 } // namespace internal | 1262 } // namespace internal |
1261 } // namespace v8 | 1263 } // namespace v8 |
1262 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 1264 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |