| 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);
|
|
|