Index: src/types.h |
diff --git a/src/types.h b/src/types.h |
index 7a6d545db5141e6e5e3f0105438932d7f64f83e5..d316fa19aa4322d782ac298924a2ba96dabd7398 100644 |
--- a/src/types.h |
+++ b/src/types.h |
@@ -68,12 +68,11 @@ namespace internal { |
// None <= R |
// R <= Any |
// |
-// UntaggedInt = UntaggedInt1 \/ UntaggedInt8 \/ |
-// UntaggedInt16 \/ UntaggedInt32 |
-// UntaggedFloat = UntaggedFloat32 \/ UntaggedFloat64 |
-// UntaggedNumber = UntaggedInt \/ UntaggedFloat |
-// Untagged = UntaggedNumber \/ UntaggedPtr |
-// Tagged = TaggedInt \/ TaggedPtr |
+// UntaggedInt <= UntaggedInt8 \/ UntaggedInt16 \/ UntaggedInt32) |
+// UntaggedFloat <= UntaggedFloat32 \/ UntaggedFloat64 |
+// UntaggedNumber <= UntaggedInt \/ UntaggedFloat |
+// Untagged <= UntaggedNumber \/ UntaggedPtr |
+// Tagged <= TaggedInt \/ TaggedPtr |
// |
// Subtyping relates the two dimensions, for example: |
// |
@@ -503,10 +502,6 @@ class TypeImpl<Config>::BitsetType : public TypeImpl<Config> { |
return (bitset & kRepresentation) && (bitset & kSemantic); |
} |
- static bool Is(int bitset1, int bitset2) { |
- return (bitset1 | bitset2) == bitset2; |
- } |
- |
static int Glb(TypeImpl* type); // greatest lower bound that's a bitset |
static int Lub(TypeImpl* type); // least upper bound that's a bitset |
static int Lub(i::Object* value); |
@@ -617,7 +612,6 @@ class TypeImpl<Config>::ClassType : public StructuralType { |
static ClassHandle New( |
i::Handle<i::Map> map, TypeHandle bound, Region* region) { |
- ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*map))); |
ClassHandle type = Config::template cast<ClassType>( |
StructuralType::New(StructuralType::kClassTag, 2, region)); |
type->Set(0, bound); |
@@ -654,7 +648,6 @@ class TypeImpl<Config>::ConstantType : public StructuralType { |
static ConstantHandle New( |
i::Handle<i::Object> value, TypeHandle bound, Region* region) { |
- ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*value))); |
ConstantHandle type = Config::template cast<ConstantType>( |
StructuralType::New(StructuralType::kConstantTag, 2, region)); |
type->Set(0, bound); |
@@ -686,7 +679,8 @@ class TypeImpl<Config>::RangeType : public StructuralType { |
static RangeHandle New( |
double min, double max, TypeHandle bound, Region* region) { |
- ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kNumber)); |
+ ASSERT(SEMANTIC(bound->AsBitset() | BitsetType::kNumber) |
+ == SEMANTIC(BitsetType::kNumber)); |
ASSERT(!std::isnan(min) && !std::isnan(max) && min <= max); |
RangeHandle type = Config::template cast<RangeType>( |
StructuralType::New(StructuralType::kRangeTag, 3, region)); |
@@ -721,8 +715,6 @@ class TypeImpl<Config>::ContextType : public StructuralType { |
TypeHandle Outer() { return this->Get(1); } |
static ContextHandle New(TypeHandle outer, TypeHandle bound, Region* region) { |
- ASSERT(BitsetType::Is( |
- bound->AsBitset(), BitsetType::kInternal & BitsetType::kTaggedPtr)); |
ContextHandle type = Config::template cast<ContextType>( |
StructuralType::New(StructuralType::kContextTag, 2, region)); |
type->Set(0, bound); |
@@ -753,7 +745,7 @@ class TypeImpl<Config>::ArrayType : public StructuralType { |
TypeHandle Element() { return this->Get(1); } |
static ArrayHandle New(TypeHandle element, TypeHandle bound, Region* region) { |
- ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kArray)); |
+ ASSERT(SEMANTIC(bound->AsBitset()) == SEMANTIC(BitsetType::kArray)); |
ArrayHandle type = Config::template cast<ArrayType>( |
StructuralType::New(StructuralType::kArrayTag, 2, region)); |
type->Set(0, bound); |
@@ -790,7 +782,7 @@ class TypeImpl<Config>::FunctionType : public StructuralType { |
static FunctionHandle New( |
TypeHandle result, TypeHandle receiver, TypeHandle bound, |
int arity, Region* region) { |
- ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kFunction)); |
+ ASSERT(SEMANTIC(bound->AsBitset()) == SEMANTIC(BitsetType::kFunction)); |
FunctionHandle type = Config::template cast<FunctionType>( |
StructuralType::New(StructuralType::kFunctionTag, 3 + arity, region)); |
type->Set(0, bound); |