| Index: src/types.cc
|
| diff --git a/src/types.cc b/src/types.cc
|
| index fae460757c73ee60d3e3af9db7ebbdb0a0e23406..634d22277e5cffb743c556bf4eba6e5bd500793f 100644
|
| --- a/src/types.cc
|
| +++ b/src/types.cc
|
| @@ -144,7 +144,6 @@ Type::bitset BitsetType::Lub(Type* type) {
|
| }
|
| return bitset;
|
| }
|
| - if (type->IsClass()) return type->AsClass()->Lub();
|
| if (type->IsConstant()) return type->AsConstant()->Lub();
|
| if (type->IsRange()) return type->AsRange()->Lub();
|
| if (type->IsContext()) return kOtherInternal & kTaggedPointer;
|
| @@ -409,10 +408,6 @@ double BitsetType::Max(bitset bits) {
|
|
|
| bool Type::SimplyEquals(Type* that) {
|
| DisallowHeapAllocation no_allocation;
|
| - if (this->IsClass()) {
|
| - return that->IsClass()
|
| - && *this->AsClass()->Map() == *that->AsClass()->Map();
|
| - }
|
| if (this->IsConstant()) {
|
| return that->IsConstant()
|
| && *this->AsConstant()->Value() == *that->AsConstant()->Value();
|
| @@ -524,52 +519,6 @@ bool Type::SemanticIs(Type* that) {
|
| return this->SimplyEquals(that);
|
| }
|
|
|
| -// Most precise _current_ type of a value (usually its class).
|
| -Type* Type::NowOf(i::Object* value, Zone* zone) {
|
| - if (value->IsSmi() ||
|
| - i::HeapObject::cast(value)->map()->instance_type() == HEAP_NUMBER_TYPE) {
|
| - return Of(value, zone);
|
| - }
|
| - return Class(i::handle(i::HeapObject::cast(value)->map()), zone);
|
| -}
|
| -
|
| -bool Type::NowContains(i::Object* value) {
|
| - DisallowHeapAllocation no_allocation;
|
| - if (this->IsAny()) return true;
|
| - if (value->IsHeapObject()) {
|
| - i::Map* map = i::HeapObject::cast(value)->map();
|
| - for (Iterator<i::Map> it = this->Classes(); !it.Done(); it.Advance()) {
|
| - if (*it.Current() == map) return true;
|
| - }
|
| - }
|
| - return this->Contains(value);
|
| -}
|
| -
|
| -bool Type::NowIs(Type* that) {
|
| - DisallowHeapAllocation no_allocation;
|
| -
|
| - // TODO(rossberg): this is incorrect for
|
| - // Union(Constant(V), T)->NowIs(Class(M))
|
| - // but fuzzing does not cover that!
|
| - if (this->IsConstant()) {
|
| - i::Object* object = *this->AsConstant()->Value();
|
| - if (object->IsHeapObject()) {
|
| - i::Map* map = i::HeapObject::cast(object)->map();
|
| - for (Iterator<i::Map> it = that->Classes(); !it.Done(); it.Advance()) {
|
| - if (*it.Current() == map) return true;
|
| - }
|
| - }
|
| - }
|
| - return this->Is(that);
|
| -}
|
| -
|
| -
|
| -// Check if [this] contains only (currently) stable classes.
|
| -bool Type::NowStable() {
|
| - DisallowHeapAllocation no_allocation;
|
| - return !this->IsClass() || this->AsClass()->Map()->is_stable();
|
| -}
|
| -
|
|
|
| // Check if [this] and [that] overlap.
|
| bool Type::Maybe(Type* that) {
|
| @@ -607,8 +556,6 @@ bool Type::SemanticMaybe(Type* that) {
|
|
|
| if (this->IsBitset() && that->IsBitset()) return true;
|
|
|
| - if (this->IsClass() != that->IsClass()) return true;
|
| -
|
| if (this->IsRange()) {
|
| if (that->IsConstant()) {
|
| return Contains(this->AsRange(), that->AsConstant());
|
| @@ -830,10 +777,6 @@ int Type::IntersectAux(Type* lhs, Type* rhs, UnionType* result, int size,
|
| }
|
| return size;
|
| }
|
| - if (rhs->IsClass()) {
|
| - *lims =
|
| - RangeType::Limits::Union(RangeType::Limits(lhs->AsRange()), *lims);
|
| - }
|
| if (rhs->IsConstant() && Contains(lhs->AsRange(), rhs->AsConstant())) {
|
| return AddToUnion(rhs, result, size, zone);
|
| }
|
| @@ -853,9 +796,6 @@ int Type::IntersectAux(Type* lhs, Type* rhs, UnionType* result, int size,
|
| if (lhs->IsBitset() || rhs->IsBitset()) {
|
| return AddToUnion(lhs->IsBitset() ? rhs : lhs, result, size, zone);
|
| }
|
| - if (lhs->IsClass() != rhs->IsClass()) {
|
| - return AddToUnion(lhs->IsClass() ? rhs : lhs, result, size, zone);
|
| - }
|
| if (lhs->SimplyEquals(rhs)) {
|
| return AddToUnion(lhs, result, size, zone);
|
| }
|
| @@ -1031,21 +971,6 @@ Type* Type::Semantic(Type* t, Zone* zone) {
|
| // -----------------------------------------------------------------------------
|
| // Iteration.
|
|
|
| -int Type::NumClasses() {
|
| - DisallowHeapAllocation no_allocation;
|
| - if (this->IsClass()) {
|
| - return 1;
|
| - } else if (this->IsUnion()) {
|
| - int result = 0;
|
| - for (int i = 0, n = this->AsUnion()->Length(); i < n; ++i) {
|
| - if (this->AsUnion()->Get(i)->IsClass()) ++result;
|
| - }
|
| - return result;
|
| - } else {
|
| - return 0;
|
| - }
|
| -}
|
| -
|
| int Type::NumConstants() {
|
| DisallowHeapAllocation no_allocation;
|
| if (this->IsConstant()) {
|
| @@ -1077,14 +1002,6 @@ struct TypeImplIteratorAux {
|
| };
|
|
|
| template <>
|
| -struct TypeImplIteratorAux<i::Map> {
|
| - static bool matches(Type* type) { return type->IsClass(); }
|
| - static i::Handle<i::Map> current(Type* type) {
|
| - return type->AsClass()->Map();
|
| - }
|
| -};
|
| -
|
| -template <>
|
| struct TypeImplIteratorAux<i::Object> {
|
| static bool matches(Type* type) { return type->IsConstant(); }
|
| static i::Handle<i::Object> current(Type* type) {
|
| @@ -1181,10 +1098,6 @@ void Type::PrintTo(std::ostream& os, PrintDimension dim) {
|
| if (dim != REPRESENTATION_DIM) {
|
| if (this->IsBitset()) {
|
| BitsetType::Print(os, SEMANTIC(this->AsBitset()));
|
| - } else if (this->IsClass()) {
|
| - os << "Class(" << static_cast<void*>(*this->AsClass()->Map()) << " < ";
|
| - BitsetType::New(BitsetType::Lub(this))->PrintTo(os, dim);
|
| - os << ")";
|
| } else if (this->IsConstant()) {
|
| os << "Constant(" << Brief(*this->AsConstant()->Value()) << ")";
|
| } else if (this->IsRange()) {
|
| @@ -1262,17 +1175,9 @@ BitsetType::bitset BitsetType::UnsignedSmall() {
|
| return i::SmiValuesAre31Bits() ? kUnsigned30 : kUnsigned31;
|
| }
|
|
|
| -#define CONSTRUCT_SIMD_TYPE(NAME, Name, name, lane_count, lane_type) \
|
| - Type* Type::Name(Isolate* isolate, Zone* zone) { \
|
| - return Class(i::handle(isolate->heap()->name##_map()), zone); \
|
| - }
|
| -SIMD128_TYPES(CONSTRUCT_SIMD_TYPE)
|
| -#undef CONSTRUCT_SIMD_TYPE
|
| -
|
| // -----------------------------------------------------------------------------
|
| // Instantiations.
|
|
|
| -template class Type::Iterator<i::Map>;
|
| template class Type::Iterator<i::Object>;
|
|
|
| } // namespace internal
|
|
|