| 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_TYPES_H_ | 5 #ifndef V8_TYPES_H_ |
| 6 #define V8_TYPES_H_ | 6 #define V8_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 24 matching lines...) Expand all Loading... |
| 35 // Number = Signed32 \/ Unsigned32 \/ Double | 35 // Number = Signed32 \/ Unsigned32 \/ Double |
| 36 // Smi <= Signed32 | 36 // Smi <= Signed32 |
| 37 // Name = String \/ Symbol | 37 // Name = String \/ Symbol |
| 38 // UniqueName = InternalizedString \/ Symbol | 38 // UniqueName = InternalizedString \/ Symbol |
| 39 // InternalizedString < String | 39 // InternalizedString < String |
| 40 // | 40 // |
| 41 // Receiver = Object \/ Proxy | 41 // Receiver = Object \/ Proxy |
| 42 // Array < Object | 42 // Array < Object |
| 43 // Function < Object | 43 // Function < Object |
| 44 // RegExp < Object | 44 // RegExp < Object |
| 45 // Undetectable < Object | 45 // OtherUndetectable < Object |
| 46 // Detectable = Receiver \/ Number \/ Name - Undetectable | 46 // DetectableReceiver = Receiver - OtherUndetectable |
| 47 // | 47 // |
| 48 // Class(map) < T iff instance_type(map) < T | 48 // Class(map) < T iff instance_type(map) < T |
| 49 // Constant(x) < T iff instance_type(map(x)) < T | 49 // Constant(x) < T iff instance_type(map(x)) < T |
| 50 // Array(T) < Array | 50 // Array(T) < Array |
| 51 // Function(R, S, T0, T1, ...) < Function | 51 // Function(R, S, T0, T1, ...) < Function |
| 52 // Context(T) < Internal | 52 // Context(T) < Internal |
| 53 // | 53 // |
| 54 // Both structural Array and Function types are invariant in all parameters; | 54 // Both structural Array and Function types are invariant in all parameters; |
| 55 // relaxing this would make Union and Intersect operations more involved. | 55 // relaxing this would make Union and Intersect operations more involved. |
| 56 // There is no subtyping relation between Array, Function, or Context types | 56 // There is no subtyping relation between Array, Function, or Context types |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 V(Null, 1u << 6 | REPRESENTATION(kTaggedPointer)) \ | 188 V(Null, 1u << 6 | REPRESENTATION(kTaggedPointer)) \ |
| 189 V(Undefined, 1u << 7 | REPRESENTATION(kTaggedPointer)) \ | 189 V(Undefined, 1u << 7 | REPRESENTATION(kTaggedPointer)) \ |
| 190 V(Boolean, 1u << 8 | REPRESENTATION(kTaggedPointer)) \ | 190 V(Boolean, 1u << 8 | REPRESENTATION(kTaggedPointer)) \ |
| 191 V(Unsigned30, 1u << 9 | REPRESENTATION(kTagged | kUntaggedNumber)) \ | 191 V(Unsigned30, 1u << 9 | REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 192 V(MinusZero, 1u << 10 | REPRESENTATION(kTagged | kUntaggedNumber)) \ | 192 V(MinusZero, 1u << 10 | REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 193 V(NaN, 1u << 11 | REPRESENTATION(kTagged | kUntaggedNumber)) \ | 193 V(NaN, 1u << 11 | REPRESENTATION(kTagged | kUntaggedNumber)) \ |
| 194 V(Symbol, 1u << 12 | REPRESENTATION(kTaggedPointer)) \ | 194 V(Symbol, 1u << 12 | REPRESENTATION(kTaggedPointer)) \ |
| 195 V(InternalizedString, 1u << 13 | REPRESENTATION(kTaggedPointer)) \ | 195 V(InternalizedString, 1u << 13 | REPRESENTATION(kTaggedPointer)) \ |
| 196 V(OtherString, 1u << 14 | REPRESENTATION(kTaggedPointer)) \ | 196 V(OtherString, 1u << 14 | REPRESENTATION(kTaggedPointer)) \ |
| 197 V(Simd, 1u << 15 | REPRESENTATION(kTaggedPointer)) \ | 197 V(Simd, 1u << 15 | REPRESENTATION(kTaggedPointer)) \ |
| 198 V(Undetectable, 1u << 16 | REPRESENTATION(kTaggedPointer)) \ | |
| 199 V(OtherObject, 1u << 17 | REPRESENTATION(kTaggedPointer)) \ | 198 V(OtherObject, 1u << 17 | REPRESENTATION(kTaggedPointer)) \ |
| 199 V(OtherUndetectable, 1u << 16 | REPRESENTATION(kTaggedPointer)) \ |
| 200 V(Proxy, 1u << 18 | REPRESENTATION(kTaggedPointer)) \ | 200 V(Proxy, 1u << 18 | REPRESENTATION(kTaggedPointer)) \ |
| 201 V(Function, 1u << 19 | REPRESENTATION(kTaggedPointer)) \ | 201 V(Function, 1u << 19 | REPRESENTATION(kTaggedPointer)) \ |
| 202 V(Internal, 1u << 20 | REPRESENTATION(kTagged | kUntagged)) \ | 202 V(Internal, 1u << 20 | REPRESENTATION(kTagged | kUntagged)) \ |
| 203 \ | 203 \ |
| 204 V(Signed31, kUnsigned30 | kNegative31) \ | 204 V(Signed31, kUnsigned30 | kNegative31) \ |
| 205 V(Signed32, kSigned31 | kOtherUnsigned31 | kOtherSigned32) \ | 205 V(Signed32, kSigned31 | kOtherUnsigned31 | kOtherSigned32) \ |
| 206 V(Negative32, kNegative31 | kOtherSigned32) \ | 206 V(Negative32, kNegative31 | kOtherSigned32) \ |
| 207 V(Unsigned31, kUnsigned30 | kOtherUnsigned31) \ | 207 V(Unsigned31, kUnsigned30 | kOtherUnsigned31) \ |
| 208 V(Unsigned32, kUnsigned30 | kOtherUnsigned31 | \ | 208 V(Unsigned32, kUnsigned30 | kOtherUnsigned31 | \ |
| 209 kOtherUnsigned32) \ | 209 kOtherUnsigned32) \ |
| 210 V(Integral32, kSigned32 | kUnsigned32) \ | 210 V(Integral32, kSigned32 | kUnsigned32) \ |
| 211 V(PlainNumber, kIntegral32 | kOtherNumber) \ | 211 V(PlainNumber, kIntegral32 | kOtherNumber) \ |
| 212 V(OrderedNumber, kPlainNumber | kMinusZero) \ | 212 V(OrderedNumber, kPlainNumber | kMinusZero) \ |
| 213 V(MinusZeroOrNaN, kMinusZero | kNaN) \ | 213 V(MinusZeroOrNaN, kMinusZero | kNaN) \ |
| 214 V(Number, kOrderedNumber | kNaN) \ | 214 V(Number, kOrderedNumber | kNaN) \ |
| 215 V(String, kInternalizedString | kOtherString) \ | 215 V(String, kInternalizedString | kOtherString) \ |
| 216 V(UniqueName, kSymbol | kInternalizedString) \ | 216 V(UniqueName, kSymbol | kInternalizedString) \ |
| 217 V(Name, kSymbol | kString) \ | 217 V(Name, kSymbol | kString) \ |
| 218 V(BooleanOrNumber, kBoolean | kNumber) \ | 218 V(BooleanOrNumber, kBoolean | kNumber) \ |
| 219 V(BooleanOrNullOrUndefined, kBoolean | kNull | kUndefined) \ | 219 V(BooleanOrNullOrUndefined, kBoolean | kNull | kUndefined) \ |
| 220 V(NullOrUndefined, kNull | kUndefined) \ | 220 V(NullOrUndefined, kNull | kUndefined) \ |
| 221 V(Undetectable, kNullOrUndefined | kOtherUndetectable) \ |
| 221 V(NumberOrString, kNumber | kString) \ | 222 V(NumberOrString, kNumber | kString) \ |
| 222 V(NumberOrUndefined, kNumber | kUndefined) \ | 223 V(NumberOrUndefined, kNumber | kUndefined) \ |
| 223 V(PlainPrimitive, kNumberOrString | kBoolean | kNullOrUndefined) \ | 224 V(PlainPrimitive, kNumberOrString | kBoolean | kNullOrUndefined) \ |
| 224 V(Primitive, kSymbol | kSimd | kPlainPrimitive) \ | 225 V(Primitive, kSymbol | kSimd | kPlainPrimitive) \ |
| 225 V(DetectableReceiver, kFunction | kOtherObject | kProxy) \ | 226 V(DetectableReceiver, kFunction | kOtherObject | kProxy) \ |
| 226 V(Detectable, kDetectableReceiver | kNumber | kName) \ | 227 V(Object, kFunction | kOtherObject | kOtherUndetectable) \ |
| 227 V(Object, kFunction | kOtherObject | kUndetectable) \ | |
| 228 V(Receiver, kObject | kProxy) \ | 228 V(Receiver, kObject | kProxy) \ |
| 229 V(StringOrReceiver, kString | kReceiver) \ | 229 V(StringOrReceiver, kString | kReceiver) \ |
| 230 V(Unique, kBoolean | kUniqueName | kNull | kUndefined | \ | 230 V(Unique, kBoolean | kUniqueName | kNull | kUndefined | \ |
| 231 kReceiver) \ | 231 kReceiver) \ |
| 232 V(NonNumber, kUnique | kString | kInternal) \ | 232 V(NonNumber, kUnique | kString | kInternal) \ |
| 233 V(Any, 0xfffffffeu) | 233 V(Any, 0xfffffffeu) |
| 234 | 234 |
| 235 // clang-format on | 235 // clang-format on |
| 236 | 236 |
| 237 /* | 237 /* |
| (...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 | 962 |
| 963 bool Narrows(Bounds that) { | 963 bool Narrows(Bounds that) { |
| 964 return that.lower->Is(this->lower) && this->upper->Is(that.upper); | 964 return that.lower->Is(this->lower) && this->upper->Is(that.upper); |
| 965 } | 965 } |
| 966 }; | 966 }; |
| 967 | 967 |
| 968 } // namespace internal | 968 } // namespace internal |
| 969 } // namespace v8 | 969 } // namespace v8 |
| 970 | 970 |
| 971 #endif // V8_TYPES_H_ | 971 #endif // V8_TYPES_H_ |
| OLD | NEW |