| Index: src/types.h
|
| diff --git a/src/types.h b/src/types.h
|
| index 8b9476515cc701112c0b2f83acf2d4eab69e3424..cd8b937e4b1e51c0d70848b2748496af6a9e31ee 100644
|
| --- a/src/types.h
|
| +++ b/src/types.h
|
| @@ -39,21 +39,11 @@ namespace internal {
|
| // InternalizedString < String
|
| //
|
| // Receiver = Object \/ Proxy
|
| -// Array < Object
|
| -// Function < Object
|
| // RegExp < Object
|
| // OtherUndetectable < Object
|
| // DetectableReceiver = Receiver - OtherUndetectable
|
| //
|
| // Constant(x) < T iff instance_type(map(x)) < T
|
| -// Array(T) < Array
|
| -// Function(R, S, T0, T1, ...) < Function
|
| -//
|
| -// Both structural Array and Function types are invariant in all parameters;
|
| -// relaxing this would make Union and Intersect operations more involved.
|
| -// There is no subtyping relation between Array or Function types and
|
| -// respective Constant types, since these types cannot be reconstructed
|
| -// for arbitrary heap values.
|
| //
|
| //
|
| // REPRESENTATIONAL DIMENSION
|
| @@ -348,8 +338,6 @@ class TypeBase {
|
|
|
| enum Kind {
|
| kConstant,
|
| - kArray,
|
| - kFunction,
|
| kTuple,
|
| kUnion,
|
| kRange
|
| @@ -465,30 +453,6 @@ class RangeType : public TypeBase {
|
| };
|
|
|
| // -----------------------------------------------------------------------------
|
| -// Array types.
|
| -
|
| -class ArrayType : public TypeBase {
|
| - public:
|
| - Type* Element() { return element_; }
|
| -
|
| - private:
|
| - friend class Type;
|
| -
|
| - explicit ArrayType(Type* element) : TypeBase(kArray), element_(element) {}
|
| -
|
| - static Type* New(Type* element, Zone* zone) {
|
| - return AsType(new (zone->New(sizeof(ArrayType))) ArrayType(element));
|
| - }
|
| -
|
| - static ArrayType* cast(Type* type) {
|
| - DCHECK(IsKind(type, kArray));
|
| - return static_cast<ArrayType*>(FromType(type));
|
| - }
|
| -
|
| - Type* element_;
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| // Superclass for types with variable number of type fields.
|
| class StructuralType : public TypeBase {
|
| public:
|
| @@ -525,38 +489,6 @@ class StructuralType : public TypeBase {
|
| };
|
|
|
| // -----------------------------------------------------------------------------
|
| -// Function types.
|
| -
|
| -class FunctionType : public StructuralType {
|
| - public:
|
| - int Arity() { return this->Length() - 2; }
|
| - Type* Result() { return this->Get(0); }
|
| - Type* Receiver() { return this->Get(1); }
|
| - Type* Parameter(int i) { return this->Get(2 + i); }
|
| -
|
| - void InitParameter(int i, Type* type) { this->Set(2 + i, type); }
|
| -
|
| - private:
|
| - friend class Type;
|
| -
|
| - FunctionType(Type* result, Type* receiver, int arity, Zone* zone)
|
| - : StructuralType(kFunction, 2 + arity, zone) {
|
| - Set(0, result);
|
| - Set(1, receiver);
|
| - }
|
| -
|
| - static Type* New(Type* result, Type* receiver, int arity, Zone* zone) {
|
| - return AsType(new (zone->New(sizeof(FunctionType)))
|
| - FunctionType(result, receiver, arity, zone));
|
| - }
|
| -
|
| - static FunctionType* cast(Type* type) {
|
| - DCHECK(IsKind(type, kFunction));
|
| - return static_cast<FunctionType*>(FromType(type));
|
| - }
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| // Tuple types.
|
|
|
| class TupleType : public StructuralType {
|
| @@ -632,41 +564,6 @@ class Type {
|
| BitsetType::kUntaggedNumber),
|
| zone);
|
| }
|
| - static Type* Array(Type* element, Zone* zone) {
|
| - return ArrayType::New(element, zone);
|
| - }
|
| - static Type* Function(Type* result, Type* receiver, int arity, Zone* zone) {
|
| - return FunctionType::New(result, receiver, arity, zone);
|
| - }
|
| - static Type* Function(Type* result, Zone* zone) {
|
| - return Function(result, Any(), 0, zone);
|
| - }
|
| - static Type* Function(Type* result, Type* param0, Zone* zone) {
|
| - Type* function = Function(result, Any(), 1, zone);
|
| - function->AsFunction()->InitParameter(0, param0);
|
| - return function;
|
| - }
|
| - static Type* Function(Type* result, Type* param0, Type* param1, Zone* zone) {
|
| - Type* function = Function(result, Any(), 2, zone);
|
| - function->AsFunction()->InitParameter(0, param0);
|
| - function->AsFunction()->InitParameter(1, param1);
|
| - return function;
|
| - }
|
| - static Type* Function(Type* result, Type* param0, Type* param1, Type* param2,
|
| - Zone* zone) {
|
| - Type* function = Function(result, Any(), 3, zone);
|
| - function->AsFunction()->InitParameter(0, param0);
|
| - function->AsFunction()->InitParameter(1, param1);
|
| - function->AsFunction()->InitParameter(2, param2);
|
| - return function;
|
| - }
|
| - static Type* Function(Type* result, int arity, Type** params, Zone* zone) {
|
| - Type* function = Function(result, Any(), arity, zone);
|
| - for (int i = 0; i < arity; ++i) {
|
| - function->AsFunction()->InitParameter(i, params[i]);
|
| - }
|
| - return function;
|
| - }
|
| static Type* Tuple(Type* first, Type* second, Type* third, Zone* zone) {
|
| Type* tuple = TupleType::New(3, zone);
|
| tuple->AsTuple()->InitElement(0, first);
|
| @@ -711,14 +608,10 @@ class Type {
|
| // Inspection.
|
| bool IsRange() { return IsKind(TypeBase::kRange); }
|
| bool IsConstant() { return IsKind(TypeBase::kConstant); }
|
| - bool IsArray() { return IsKind(TypeBase::kArray); }
|
| - bool IsFunction() { return IsKind(TypeBase::kFunction); }
|
| bool IsTuple() { return IsKind(TypeBase::kTuple); }
|
|
|
| ConstantType* AsConstant() { return ConstantType::cast(this); }
|
| RangeType* AsRange() { return RangeType::cast(this); }
|
| - ArrayType* AsArray() { return ArrayType::cast(this); }
|
| - FunctionType* AsFunction() { return FunctionType::cast(this); }
|
| TupleType* AsTuple() { return TupleType::cast(this); }
|
|
|
| // Minimum and maximum of a numeric type.
|
|
|