| 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_COMPILER_TYPES_H_ | 5 #ifndef V8_COMPILER_TYPES_H_ | 
| 6 #define V8_COMPILER_TYPES_H_ | 6 #define V8_COMPILER_TYPES_H_ | 
| 7 | 7 | 
|  | 8 #include "src/base/compiler-specific.h" | 
| 8 #include "src/conversions.h" | 9 #include "src/conversions.h" | 
|  | 10 #include "src/globals.h" | 
| 9 #include "src/handles.h" | 11 #include "src/handles.h" | 
| 10 #include "src/objects.h" | 12 #include "src/objects.h" | 
| 11 #include "src/ostreams.h" | 13 #include "src/ostreams.h" | 
| 12 | 14 | 
| 13 namespace v8 { | 15 namespace v8 { | 
| 14 namespace internal { | 16 namespace internal { | 
| 15 namespace compiler { | 17 namespace compiler { | 
| 16 | 18 | 
| 17 // SUMMARY | 19 // SUMMARY | 
| 18 // | 20 // | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 183 | 185 | 
| 184 #define BITSET_TYPE_LIST(V)    \ | 186 #define BITSET_TYPE_LIST(V)    \ | 
| 185   INTERNAL_BITSET_TYPE_LIST(V) \ | 187   INTERNAL_BITSET_TYPE_LIST(V) \ | 
| 186   PROPER_BITSET_TYPE_LIST(V) | 188   PROPER_BITSET_TYPE_LIST(V) | 
| 187 | 189 | 
| 188 class Type; | 190 class Type; | 
| 189 | 191 | 
| 190 // ----------------------------------------------------------------------------- | 192 // ----------------------------------------------------------------------------- | 
| 191 // Bitset types (internal). | 193 // Bitset types (internal). | 
| 192 | 194 | 
| 193 class BitsetType { | 195 class V8_EXPORT_PRIVATE BitsetType { | 
| 194  public: | 196  public: | 
| 195   typedef uint32_t bitset;  // Internal | 197   typedef uint32_t bitset;  // Internal | 
| 196 | 198 | 
| 197   enum : uint32_t { | 199   enum : uint32_t { | 
| 198 #define DECLARE_TYPE(type, value) k##type = (value), | 200 #define DECLARE_TYPE(type, value) k##type = (value), | 
| 199     BITSET_TYPE_LIST(DECLARE_TYPE) | 201     BITSET_TYPE_LIST(DECLARE_TYPE) | 
| 200 #undef DECLARE_TYPE | 202 #undef DECLARE_TYPE | 
| 201         kUnusedEOL = 0 | 203         kUnusedEOL = 0 | 
| 202   }; | 204   }; | 
| 203 | 205 | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 311   explicit OtherNumberConstantType(double value) | 313   explicit OtherNumberConstantType(double value) | 
| 312       : TypeBase(kOtherNumberConstant), value_(value) { | 314       : TypeBase(kOtherNumberConstant), value_(value) { | 
| 313     CHECK(IsOtherNumberConstant(value)); | 315     CHECK(IsOtherNumberConstant(value)); | 
| 314   } | 316   } | 
| 315 | 317 | 
| 316   BitsetType::bitset Lub() { return BitsetType::kOtherNumber; } | 318   BitsetType::bitset Lub() { return BitsetType::kOtherNumber; } | 
| 317 | 319 | 
| 318   double value_; | 320   double value_; | 
| 319 }; | 321 }; | 
| 320 | 322 | 
| 321 class HeapConstantType : public TypeBase { | 323 class V8_EXPORT_PRIVATE HeapConstantType : public NON_EXPORTED_BASE(TypeBase) { | 
| 322  public: | 324  public: | 
| 323   i::Handle<i::HeapObject> Value() { return object_; } | 325   i::Handle<i::HeapObject> Value() { return object_; } | 
| 324 | 326 | 
| 325  private: | 327  private: | 
| 326   friend class Type; | 328   friend class Type; | 
| 327   friend class BitsetType; | 329   friend class BitsetType; | 
| 328 | 330 | 
| 329   static Type* New(i::Handle<i::HeapObject> value, Zone* zone) { | 331   static Type* New(i::Handle<i::HeapObject> value, Zone* zone) { | 
| 330     BitsetType::bitset bitset = BitsetType::Lub(*value); | 332     BitsetType::bitset bitset = BitsetType::Lub(*value); | 
| 331     return AsType(new (zone->New(sizeof(HeapConstantType))) | 333     return AsType(new (zone->New(sizeof(HeapConstantType))) | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 479   } | 481   } | 
| 480 | 482 | 
| 481   static UnionType* cast(Type* type) { | 483   static UnionType* cast(Type* type) { | 
| 482     DCHECK(IsKind(type, kUnion)); | 484     DCHECK(IsKind(type, kUnion)); | 
| 483     return static_cast<UnionType*>(FromType(type)); | 485     return static_cast<UnionType*>(FromType(type)); | 
| 484   } | 486   } | 
| 485 | 487 | 
| 486   bool Wellformed(); | 488   bool Wellformed(); | 
| 487 }; | 489 }; | 
| 488 | 490 | 
| 489 class Type { | 491 class V8_EXPORT_PRIVATE Type { | 
| 490  public: | 492  public: | 
| 491   typedef BitsetType::bitset bitset;  // Internal | 493   typedef BitsetType::bitset bitset;  // Internal | 
| 492 | 494 | 
| 493 // Constructors. | 495 // Constructors. | 
| 494 #define DEFINE_TYPE_CONSTRUCTOR(type, value) \ | 496 #define DEFINE_TYPE_CONSTRUCTOR(type, value) \ | 
| 495   static Type* type() { return BitsetType::New(BitsetType::k##type); } | 497   static Type* type() { return BitsetType::New(BitsetType::k##type); } | 
| 496   PROPER_BITSET_TYPE_LIST(DEFINE_TYPE_CONSTRUCTOR) | 498   PROPER_BITSET_TYPE_LIST(DEFINE_TYPE_CONSTRUCTOR) | 
| 497 #undef DEFINE_TYPE_CONSTRUCTOR | 499 #undef DEFINE_TYPE_CONSTRUCTOR | 
| 498 | 500 | 
| 499   static Type* SignedSmall() { | 501   static Type* SignedSmall() { | 
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 639                           RangeType::Limits* limits, Zone* zone); | 641                           RangeType::Limits* limits, Zone* zone); | 
| 640   static Type* NormalizeUnion(Type* unioned, int size, Zone* zone); | 642   static Type* NormalizeUnion(Type* unioned, int size, Zone* zone); | 
| 641   static Type* NormalizeRangeAndBitset(Type* range, bitset* bits, Zone* zone); | 643   static Type* NormalizeRangeAndBitset(Type* range, bitset* bits, Zone* zone); | 
| 642 }; | 644 }; | 
| 643 | 645 | 
| 644 }  // namespace compiler | 646 }  // namespace compiler | 
| 645 }  // namespace internal | 647 }  // namespace internal | 
| 646 }  // namespace v8 | 648 }  // namespace v8 | 
| 647 | 649 | 
| 648 #endif  // V8_COMPILER_TYPES_H_ | 650 #endif  // V8_COMPILER_TYPES_H_ | 
| OLD | NEW | 
|---|