| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_AST_AST_TYPES_H_ | 5 #ifndef V8_AST_AST_TYPES_H_ |
| 6 #define V8_AST_AST_TYPES_H_ | 6 #define V8_AST_AST_TYPES_H_ |
| 7 | 7 |
| 8 #include "src/conversions.h" | 8 #include "src/conversions.h" |
| 9 #include "src/handles.h" | 9 #include "src/handles.h" |
| 10 #include "src/objects.h" | 10 #include "src/objects.h" |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 149 |
| 150 // clang-format off | 150 // clang-format off |
| 151 | 151 |
| 152 #define AST_MASK_BITSET_TYPE_LIST(V) \ | 152 #define AST_MASK_BITSET_TYPE_LIST(V) \ |
| 153 V(Representation, 0xffc00000u) \ | 153 V(Representation, 0xffc00000u) \ |
| 154 V(Semantic, 0x003ffffeu) | 154 V(Semantic, 0x003ffffeu) |
| 155 | 155 |
| 156 #define AST_REPRESENTATION(k) ((k) & AstBitsetType::kRepresentation) | 156 #define AST_REPRESENTATION(k) ((k) & AstBitsetType::kRepresentation) |
| 157 #define AST_SEMANTIC(k) ((k) & AstBitsetType::kSemantic) | 157 #define AST_SEMANTIC(k) ((k) & AstBitsetType::kSemantic) |
| 158 | 158 |
| 159 // Bits 21-22 are available. | |
| 160 #define AST_REPRESENTATION_BITSET_TYPE_LIST(V) \ | 159 #define AST_REPRESENTATION_BITSET_TYPE_LIST(V) \ |
| 161 V(None, 0) \ | 160 V(None, 0) \ |
| 162 V(UntaggedBit, 1u << 23 | kSemantic) \ | 161 V(UntaggedBit, 1u << 22 | kSemantic) \ |
| 163 V(UntaggedIntegral8, 1u << 24 | kSemantic) \ | 162 V(UntaggedIntegral8, 1u << 23 | kSemantic) \ |
| 164 V(UntaggedIntegral16, 1u << 25 | kSemantic) \ | 163 V(UntaggedIntegral16, 1u << 24 | kSemantic) \ |
| 165 V(UntaggedIntegral32, 1u << 26 | kSemantic) \ | 164 V(UntaggedIntegral32, 1u << 25 | kSemantic) \ |
| 166 V(UntaggedFloat32, 1u << 27 | kSemantic) \ | 165 V(UntaggedFloat32, 1u << 26 | kSemantic) \ |
| 167 V(UntaggedFloat64, 1u << 28 | kSemantic) \ | 166 V(UntaggedFloat64, 1u << 27 | kSemantic) \ |
| 167 V(UntaggedSimd128, 1u << 28 | kSemantic) \ |
| 168 V(UntaggedPointer, 1u << 29 | kSemantic) \ | 168 V(UntaggedPointer, 1u << 29 | kSemantic) \ |
| 169 V(TaggedSigned, 1u << 30 | kSemantic) \ | 169 V(TaggedSigned, 1u << 30 | kSemantic) \ |
| 170 V(TaggedPointer, 1u << 31 | kSemantic) \ | 170 V(TaggedPointer, 1u << 31 | kSemantic) \ |
| 171 \ | 171 \ |
| 172 V(UntaggedIntegral, kUntaggedBit | kUntaggedIntegral8 | \ | 172 V(UntaggedIntegral, kUntaggedBit | kUntaggedIntegral8 | \ |
| 173 kUntaggedIntegral16 | kUntaggedIntegral32) \ | 173 kUntaggedIntegral16 | kUntaggedIntegral32) \ |
| 174 V(UntaggedFloat, kUntaggedFloat32 | kUntaggedFloat64) \ | 174 V(UntaggedFloat, kUntaggedFloat32 | kUntaggedFloat64) \ |
| 175 V(UntaggedNumber, kUntaggedIntegral | kUntaggedFloat) \ | 175 V(UntaggedNumber, kUntaggedIntegral | kUntaggedFloat) \ |
| 176 V(Untagged, kUntaggedNumber | kUntaggedPointer) \ | 176 V(Untagged, kUntaggedNumber | kUntaggedPointer) \ |
| 177 V(Tagged, kTaggedSigned | kTaggedPointer) | 177 V(Tagged, kTaggedSigned | kTaggedPointer) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 190 V(Boolean, 1u << 8 | AST_REPRESENTATION(kTaggedPointer)) \ | 190 V(Boolean, 1u << 8 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 191 V(Unsigned30, 1u << 9 | \ | 191 V(Unsigned30, 1u << 9 | \ |
| 192 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ | 192 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 193 V(MinusZero, 1u << 10 | \ | 193 V(MinusZero, 1u << 10 | \ |
| 194 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ | 194 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 195 V(NaN, 1u << 11 | \ | 195 V(NaN, 1u << 11 | \ |
| 196 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ | 196 AST_REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 197 V(Symbol, 1u << 12 | AST_REPRESENTATION(kTaggedPointer)) \ | 197 V(Symbol, 1u << 12 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 198 V(InternalizedString, 1u << 13 | AST_REPRESENTATION(kTaggedPointer)) \ | 198 V(InternalizedString, 1u << 13 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 199 V(OtherString, 1u << 14 | AST_REPRESENTATION(kTaggedPointer)) \ | 199 V(OtherString, 1u << 14 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 200 V(OtherObject, 1u << 15 | AST_REPRESENTATION(kTaggedPointer)) \ | 200 V(Simd, 1u << 15 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 201 V(OtherObject, 1u << 17 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 201 V(OtherUndetectable, 1u << 16 | AST_REPRESENTATION(kTaggedPointer)) \ | 202 V(OtherUndetectable, 1u << 16 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 202 V(Proxy, 1u << 17 | AST_REPRESENTATION(kTaggedPointer)) \ | 203 V(Proxy, 1u << 18 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 203 V(Function, 1u << 18 | AST_REPRESENTATION(kTaggedPointer)) \ | 204 V(Function, 1u << 19 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 204 V(Hole, 1u << 19 | AST_REPRESENTATION(kTaggedPointer)) \ | 205 V(Hole, 1u << 20 | AST_REPRESENTATION(kTaggedPointer)) \ |
| 205 V(OtherInternal, 1u << 20 | \ | 206 V(OtherInternal, 1u << 21 | \ |
| 206 AST_REPRESENTATION(kTagged | kUntagged)) \ | 207 AST_REPRESENTATION(kTagged | kUntagged)) \ |
| 207 \ | 208 \ |
| 208 V(Signed31, kUnsigned30 | kNegative31) \ | 209 V(Signed31, kUnsigned30 | kNegative31) \ |
| 209 V(Signed32, kSigned31 | kOtherUnsigned31 | \ | 210 V(Signed32, kSigned31 | kOtherUnsigned31 | \ |
| 210 kOtherSigned32) \ | 211 kOtherSigned32) \ |
| 211 V(Signed32OrMinusZero, kSigned32 | kMinusZero) \ | 212 V(Signed32OrMinusZero, kSigned32 | kMinusZero) \ |
| 212 V(Signed32OrMinusZeroOrNaN, kSigned32 | kMinusZero | kNaN) \ | 213 V(Signed32OrMinusZeroOrNaN, kSigned32 | kMinusZero | kNaN) \ |
| 213 V(Negative32, kNegative31 | kOtherSigned32) \ | 214 V(Negative32, kNegative31 | kOtherSigned32) \ |
| 214 V(Unsigned31, kUnsigned30 | kOtherUnsigned31) \ | 215 V(Unsigned31, kUnsigned30 | kOtherUnsigned31) \ |
| 215 V(Unsigned32, kUnsigned30 | kOtherUnsigned31 | \ | 216 V(Unsigned32, kUnsigned30 | kOtherUnsigned31 | \ |
| 216 kOtherUnsigned32) \ | 217 kOtherUnsigned32) \ |
| 217 V(Unsigned32OrMinusZero, kUnsigned32 | kMinusZero) \ | 218 V(Unsigned32OrMinusZero, kUnsigned32 | kMinusZero) \ |
| 218 V(Unsigned32OrMinusZeroOrNaN, kUnsigned32 | kMinusZero | kNaN) \ | 219 V(Unsigned32OrMinusZeroOrNaN, kUnsigned32 | kMinusZero | kNaN) \ |
| 219 V(Integral32, kSigned32 | kUnsigned32) \ | 220 V(Integral32, kSigned32 | kUnsigned32) \ |
| 220 V(PlainNumber, kIntegral32 | kOtherNumber) \ | 221 V(PlainNumber, kIntegral32 | kOtherNumber) \ |
| 221 V(OrderedNumber, kPlainNumber | kMinusZero) \ | 222 V(OrderedNumber, kPlainNumber | kMinusZero) \ |
| 222 V(MinusZeroOrNaN, kMinusZero | kNaN) \ | 223 V(MinusZeroOrNaN, kMinusZero | kNaN) \ |
| 223 V(Number, kOrderedNumber | kNaN) \ | 224 V(Number, kOrderedNumber | kNaN) \ |
| 224 V(String, kInternalizedString | kOtherString) \ | 225 V(String, kInternalizedString | kOtherString) \ |
| 225 V(UniqueName, kSymbol | kInternalizedString) \ | 226 V(UniqueName, kSymbol | kInternalizedString) \ |
| 226 V(Name, kSymbol | kString) \ | 227 V(Name, kSymbol | kString) \ |
| 227 V(BooleanOrNumber, kBoolean | kNumber) \ | 228 V(BooleanOrNumber, kBoolean | kNumber) \ |
| 228 V(BooleanOrNullOrNumber, kBooleanOrNumber | kNull) \ | 229 V(BooleanOrNullOrNumber, kBooleanOrNumber | kNull) \ |
| 229 V(BooleanOrNullOrUndefined, kBoolean | kNull | kUndefined) \ | 230 V(BooleanOrNullOrUndefined, kBoolean | kNull | kUndefined) \ |
| 230 V(NullOrNumber, kNull | kNumber) \ | 231 V(NullOrNumber, kNull | kNumber) \ |
| 231 V(NullOrUndefined, kNull | kUndefined) \ | 232 V(NullOrUndefined, kNull | kUndefined) \ |
| 232 V(Undetectable, kNullOrUndefined | kOtherUndetectable) \ | 233 V(Undetectable, kNullOrUndefined | kOtherUndetectable) \ |
| 233 V(NumberOrOddball, kNumber | kNullOrUndefined | kBoolean | kHole) \ | 234 V(NumberOrOddball, kNumber | kNullOrUndefined | kBoolean | kHole) \ |
| 235 V(NumberOrSimdOrString, kNumber | kSimd | kString) \ |
| 234 V(NumberOrString, kNumber | kString) \ | 236 V(NumberOrString, kNumber | kString) \ |
| 235 V(NumberOrUndefined, kNumber | kUndefined) \ | 237 V(NumberOrUndefined, kNumber | kUndefined) \ |
| 236 V(PlainPrimitive, kNumberOrString | kBoolean | kNullOrUndefined) \ | 238 V(PlainPrimitive, kNumberOrString | kBoolean | kNullOrUndefined) \ |
| 237 V(Primitive, kSymbol | kPlainPrimitive) \ | 239 V(Primitive, kSymbol | kSimd | kPlainPrimitive) \ |
| 238 V(DetectableReceiver, kFunction | kOtherObject | kProxy) \ | 240 V(DetectableReceiver, kFunction | kOtherObject | kProxy) \ |
| 239 V(Object, kFunction | kOtherObject | kOtherUndetectable) \ | 241 V(Object, kFunction | kOtherObject | kOtherUndetectable) \ |
| 240 V(Receiver, kObject | kProxy) \ | 242 V(Receiver, kObject | kProxy) \ |
| 241 V(StringOrReceiver, kString | kReceiver) \ | 243 V(StringOrReceiver, kString | kReceiver) \ |
| 242 V(Unique, kBoolean | kUniqueName | kNull | kUndefined | \ | 244 V(Unique, kBoolean | kUniqueName | kNull | kUndefined | \ |
| 243 kReceiver) \ | 245 kReceiver) \ |
| 244 V(Internal, kHole | kOtherInternal) \ | 246 V(Internal, kHole | kOtherInternal) \ |
| 245 V(NonInternal, kPrimitive | kReceiver) \ | 247 V(NonInternal, kPrimitive | kReceiver) \ |
| 246 V(NonNumber, kUnique | kString | kInternal) \ | 248 V(NonNumber, kUnique | kString | kInternal) \ |
| 247 V(Any, 0xfffffffeu) | 249 V(Any, 0xfffffffeu) |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 } | 763 } |
| 762 static AstType* Tuple(AstType* first, AstType* second, AstType* third, | 764 static AstType* Tuple(AstType* first, AstType* second, AstType* third, |
| 763 Zone* zone) { | 765 Zone* zone) { |
| 764 AstType* tuple = AstTupleType::New(3, zone); | 766 AstType* tuple = AstTupleType::New(3, zone); |
| 765 tuple->AsTuple()->InitElement(0, first); | 767 tuple->AsTuple()->InitElement(0, first); |
| 766 tuple->AsTuple()->InitElement(1, second); | 768 tuple->AsTuple()->InitElement(1, second); |
| 767 tuple->AsTuple()->InitElement(2, third); | 769 tuple->AsTuple()->InitElement(2, third); |
| 768 return tuple; | 770 return tuple; |
| 769 } | 771 } |
| 770 | 772 |
| 773 #define CONSTRUCT_SIMD_TYPE(NAME, Name, name, lane_count, lane_type) \ |
| 774 static AstType* Name(Isolate* isolate, Zone* zone); |
| 775 SIMD128_TYPES(CONSTRUCT_SIMD_TYPE) |
| 776 #undef CONSTRUCT_SIMD_TYPE |
| 777 |
| 771 static AstType* Union(AstType* type1, AstType* type2, Zone* zone); | 778 static AstType* Union(AstType* type1, AstType* type2, Zone* zone); |
| 772 static AstType* Intersect(AstType* type1, AstType* type2, Zone* zone); | 779 static AstType* Intersect(AstType* type1, AstType* type2, Zone* zone); |
| 773 | 780 |
| 774 static AstType* Of(double value, Zone* zone) { | 781 static AstType* Of(double value, Zone* zone) { |
| 775 return AstBitsetType::New( | 782 return AstBitsetType::New( |
| 776 AstBitsetType::ExpandInternals(AstBitsetType::Lub(value))); | 783 AstBitsetType::ExpandInternals(AstBitsetType::Lub(value))); |
| 777 } | 784 } |
| 778 static AstType* Of(i::Object* value, Zone* zone) { | 785 static AstType* Of(i::Object* value, Zone* zone) { |
| 779 return AstBitsetType::New( | 786 return AstBitsetType::New( |
| 780 AstBitsetType::ExpandInternals(AstBitsetType::Lub(value))); | 787 AstBitsetType::ExpandInternals(AstBitsetType::Lub(value))); |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 | 1015 |
| 1009 bool Narrows(AstBounds that) { | 1016 bool Narrows(AstBounds that) { |
| 1010 return that.lower->Is(this->lower) && this->upper->Is(that.upper); | 1017 return that.lower->Is(this->lower) && this->upper->Is(that.upper); |
| 1011 } | 1018 } |
| 1012 }; | 1019 }; |
| 1013 | 1020 |
| 1014 } // namespace internal | 1021 } // namespace internal |
| 1015 } // namespace v8 | 1022 } // namespace v8 |
| 1016 | 1023 |
| 1017 #endif // V8_AST_AST_TYPES_H_ | 1024 #endif // V8_AST_AST_TYPES_H_ |
| OLD | NEW |