| 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 "handles.h" | 8 #include "handles.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 V(UniqueName, kSymbol | kInternalizedString) \ | 147 V(UniqueName, kSymbol | kInternalizedString) \ |
| 148 V(Name, kSymbol | kString) \ | 148 V(Name, kSymbol | kString) \ |
| 149 V(NumberOrString, kNumber | kString) \ | 149 V(NumberOrString, kNumber | kString) \ |
| 150 V(DetectableObject, kArray | kFunction | kRegExp | kOtherObject) \ | 150 V(DetectableObject, kArray | kFunction | kRegExp | kOtherObject) \ |
| 151 V(DetectableReceiver, kDetectableObject | kProxy) \ | 151 V(DetectableReceiver, kDetectableObject | kProxy) \ |
| 152 V(Detectable, kDetectableReceiver | kNumber | kName) \ | 152 V(Detectable, kDetectableReceiver | kNumber | kName) \ |
| 153 V(Object, kDetectableObject | kUndetectable) \ | 153 V(Object, kDetectableObject | kUndetectable) \ |
| 154 V(Receiver, kObject | kProxy) \ | 154 V(Receiver, kObject | kProxy) \ |
| 155 V(NonNumber, kBoolean | kName | kNull | kReceiver | \ | 155 V(NonNumber, kBoolean | kName | kNull | kReceiver | \ |
| 156 kUndefined | kInternal) \ | 156 kUndefined | kInternal) \ |
| 157 V(Any, kNumber | kNonNumber) | 157 V(Any, -1) |
| 158 | 158 |
| 159 #define BITSET_TYPE_LIST(V) \ | 159 #define BITSET_TYPE_LIST(V) \ |
| 160 MASK_BITSET_TYPE_LIST(V) \ | 160 MASK_BITSET_TYPE_LIST(V) \ |
| 161 REPRESENTATION_BITSET_TYPE_LIST(V) \ | 161 REPRESENTATION_BITSET_TYPE_LIST(V) \ |
| 162 SEMANTIC_BITSET_TYPE_LIST(V) | 162 SEMANTIC_BITSET_TYPE_LIST(V) |
| 163 | 163 |
| 164 | 164 |
| 165 // struct Config { | 165 // struct Config { |
| 166 // typedef Base; | 166 // typedef Base; |
| 167 // typedef Struct; | 167 // typedef Struct; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 static TypeHandle Union(TypeHandle type1, TypeHandle type2, Region* reg); | 213 static TypeHandle Union(TypeHandle type1, TypeHandle type2, Region* reg); |
| 214 static TypeHandle Intersect(TypeHandle type1, TypeHandle type2, Region* reg); | 214 static TypeHandle Intersect(TypeHandle type1, TypeHandle type2, Region* reg); |
| 215 | 215 |
| 216 static TypeHandle Of(i::Object* value, Region* region) { | 216 static TypeHandle Of(i::Object* value, Region* region) { |
| 217 return Config::from_bitset(LubBitset(value), region); | 217 return Config::from_bitset(LubBitset(value), region); |
| 218 } | 218 } |
| 219 static TypeHandle Of(i::Handle<i::Object> value, Region* region) { | 219 static TypeHandle Of(i::Handle<i::Object> value, Region* region) { |
| 220 return Of(*value, region); | 220 return Of(*value, region); |
| 221 } | 221 } |
| 222 | 222 |
| 223 bool IsInhabited() { |
| 224 return !this->IsBitset() || IsInhabited(this->AsBitset()); |
| 225 } |
| 226 |
| 223 bool Is(TypeImpl* that) { return this == that || this->SlowIs(that); } | 227 bool Is(TypeImpl* that) { return this == that || this->SlowIs(that); } |
| 224 template<class TypeHandle> | 228 template<class TypeHandle> |
| 225 bool Is(TypeHandle that) { return this->Is(*that); } | 229 bool Is(TypeHandle that) { return this->Is(*that); } |
| 226 | 230 |
| 227 bool Maybe(TypeImpl* that); | 231 bool Maybe(TypeImpl* that); |
| 228 template<class TypeHandle> | 232 template<class TypeHandle> |
| 229 bool Maybe(TypeHandle that) { return this->Maybe(*that); } | 233 bool Maybe(TypeHandle that) { return this->Maybe(*that); } |
| 230 | 234 |
| 231 // Equivalent to Constant(value)->Is(this), but avoiding allocation. | 235 // Equivalent to Constant(value)->Is(this), but avoiding allocation. |
| 232 bool Contains(i::Object* val); | 236 bool Contains(i::Object* val); |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 bool Narrows(BoundsImpl that) { | 501 bool Narrows(BoundsImpl that) { |
| 498 return that.lower->Is(this->lower) && this->upper->Is(that.upper); | 502 return that.lower->Is(this->lower) && this->upper->Is(that.upper); |
| 499 } | 503 } |
| 500 }; | 504 }; |
| 501 | 505 |
| 502 typedef BoundsImpl<ZoneTypeConfig> Bounds; | 506 typedef BoundsImpl<ZoneTypeConfig> Bounds; |
| 503 | 507 |
| 504 } } // namespace v8::internal | 508 } } // namespace v8::internal |
| 505 | 509 |
| 506 #endif // V8_TYPES_H_ | 510 #endif // V8_TYPES_H_ |
| OLD | NEW |