Index: src/types.cc |
diff --git a/src/types.cc b/src/types.cc |
index f52346e4e37489dbe519d2cdd0a18606a7ba0c60..6205c4a8d810ddd76c8c3f6045a551f018ce81ef 100644 |
--- a/src/types.cc |
+++ b/src/types.cc |
@@ -248,12 +248,11 @@ bool TypeImpl<Config>::SlowIs(TypeImpl* that) { |
// Fast path for bitsets. |
if (this->IsNone()) return true; |
if (that->IsBitset()) { |
- return (BitsetType::Lub(this) | that->AsBitset()) == that->AsBitset(); |
+ return BitsetType::Is(BitsetType::Lub(this), that->AsBitset()); |
} |
if (this->IsBitset() && SEMANTIC(this->AsBitset()) == BitsetType::kNone) { |
// Bitsets only have non-bitset supertypes along the representation axis. |
- int that_bitset = that->BitsetGlb(); |
- return (BitsetType::Is(this->AsBitset(), that_bitset)); |
+ return BitsetType::Is(this->AsBitset(), that->BitsetGlb()); |
} |
if (that->IsClass()) { |
@@ -486,7 +485,7 @@ int TypeImpl<Config>::IndexInUnion( |
for (int i = 0; i < current_size; ++i) { |
TypeHandle that = unioned->Get(i); |
if (that->IsBitset()) { |
- if ((bound | that->AsBitset()) == that->AsBitset()) return i; |
+ if (BitsetType::Is(bound, that->AsBitset())) return i; |
} else if (that->IsClass() && this->IsClass()) { |
if (*this->AsClass()->Map() == *that->AsClass()->Map()) return i; |
} else if (that->IsConstant() && this->IsConstant()) { |
@@ -510,7 +509,6 @@ template<class Config> |
int TypeImpl<Config>::ExtendUnion( |
UnionHandle result, int size, TypeHandle type, |
TypeHandle other, bool is_intersect, Region* region) { |
- int old_size = size; |
if (type->IsUnion()) { |
UnionHandle unioned = handle(type->AsUnion()); |
for (int i = 0; i < unioned->Length(); ++i) { |
@@ -529,7 +527,7 @@ int TypeImpl<Config>::ExtendUnion( |
int new_bound = |
is_intersect ? (old_bound & other_bound) : (old_bound | other_bound); |
if (new_bound != BitsetType::kNone) { |
- int i = type->IndexInUnion(new_bound, result, old_size); |
+ int i = type->IndexInUnion(new_bound, result, size); |
if (i == -1) { |
i = size++; |
} else if (result->Get(i)->IsBitset()) { |
@@ -888,7 +886,7 @@ void TypeImpl<Config>::PrintTo(OStream& os, PrintDimension dim) { // NOLINT |
BitsetType::Print(os, SEMANTIC(this->AsBitset())); |
} else if (this->IsClass()) { |
os << "Class(" << static_cast<void*>(*this->AsClass()->Map()) << " < "; |
- return BitsetType::New(BitsetType::Lub(this))->PrintTo(os, dim); |
+ BitsetType::New(BitsetType::Lub(this))->PrintTo(os, dim); |
os << ")"; |
} else if (this->IsConstant()) { |
os << "Constant(" << static_cast<void*>(*this->AsConstant()->Value()) |