| Index: test/cctest/test-types.cc
|
| diff --git a/test/cctest/test-types.cc b/test/cctest/test-types.cc
|
| index adcc156940734cd3ece867c762d4dc0fe343aaa4..264d2ed881b3781c0d31e809b2b25475248c4edd 100644
|
| --- a/test/cctest/test-types.cc
|
| +++ b/test/cctest/test-types.cc
|
| @@ -31,32 +31,32 @@
|
| using namespace v8::internal;
|
|
|
| // Testing auxiliaries (breaking the Type abstraction).
|
| -static bool IsBitset(Handle<Type> t) { return t->IsSmi(); }
|
| -static bool IsClass(Handle<Type> t) { return t->IsMap(); }
|
| -static bool IsConstant(Handle<Type> t) { return t->IsBox(); }
|
| -static bool IsUnion(Handle<Type> t) { return t->IsFixedArray(); }
|
| +static bool IsBitset(Type* type) { return type->IsSmi(); }
|
| +static bool IsClass(Type* type) { return type->IsMap(); }
|
| +static bool IsConstant(Type* type) { return type->IsBox(); }
|
| +static bool IsUnion(Type* type) { return type->IsFixedArray(); }
|
|
|
| -static int AsBitset(Handle<Type> t) { return Smi::cast(*t)->value(); }
|
| -static Map* AsClass(Handle<Type> t) { return Map::cast(*t); }
|
| -static Object* AsConstant(Handle<Type> t) { return Box::cast(*t)->value(); }
|
| -static FixedArray* AsUnion(Handle<Type> t) { return FixedArray::cast(*t); }
|
| +static int AsBitset(Type* type) { return Smi::cast(type)->value(); }
|
| +static Map* AsClass(Type* type) { return Map::cast(type); }
|
| +static Object* AsConstant(Type* type) { return Box::cast(type)->value(); }
|
| +static FixedArray* AsUnion(Type* type) { return FixedArray::cast(type); }
|
|
|
|
|
| static void CheckEqual(Handle<Type> type1, Handle<Type> type2) {
|
| - CHECK_EQ(IsBitset(type1), IsBitset(type2));
|
| - CHECK_EQ(IsClass(type1), IsClass(type2));
|
| - CHECK_EQ(IsConstant(type1), IsConstant(type2));
|
| - CHECK_EQ(IsUnion(type1), IsUnion(type2));
|
| + CHECK_EQ(IsBitset(*type1), IsBitset(*type2));
|
| + CHECK_EQ(IsClass(*type1), IsClass(*type2));
|
| + CHECK_EQ(IsConstant(*type1), IsConstant(*type2));
|
| + CHECK_EQ(IsUnion(*type1), IsUnion(*type2));
|
| CHECK_EQ(type1->NumClasses(), type2->NumClasses());
|
| CHECK_EQ(type1->NumConstants(), type2->NumConstants());
|
| - if (IsBitset(type1)) {
|
| - CHECK_EQ(AsBitset(type1), AsBitset(type2));
|
| - } else if (IsClass(type1)) {
|
| - CHECK_EQ(AsClass(type1), AsClass(type2));
|
| - } else if (IsConstant(type1)) {
|
| - CHECK_EQ(AsConstant(type1), AsConstant(type2));
|
| - } else if (IsUnion(type1)) {
|
| - CHECK_EQ(AsUnion(type1)->length(), AsUnion(type2)->length());
|
| + if (IsBitset(*type1)) {
|
| + CHECK_EQ(AsBitset(*type1), AsBitset(*type2));
|
| + } else if (IsClass(*type1)) {
|
| + CHECK_EQ(AsClass(*type1), AsClass(*type2));
|
| + } else if (IsConstant(*type1)) {
|
| + CHECK_EQ(AsConstant(*type1), AsConstant(*type2));
|
| + } else if (IsUnion(*type1)) {
|
| + CHECK_EQ(AsUnion(*type1)->length(), AsUnion(*type2)->length());
|
| }
|
| CHECK(type1->Is(type2));
|
| CHECK(type2->Is(type1));
|
| @@ -66,8 +66,8 @@ static void CheckEqual(Handle<Type> type1, Handle<Type> type2) {
|
| static void CheckSub(Handle<Type> type1, Handle<Type> type2) {
|
| CHECK(type1->Is(type2));
|
| CHECK(!type2->Is(type1));
|
| - if (IsBitset(type1) && IsBitset(type2)) {
|
| - CHECK_NE(AsBitset(type1), AsBitset(type2));
|
| + if (IsBitset(*type1) && IsBitset(*type2)) {
|
| + CHECK_NE(AsBitset(*type1), AsBitset(*type2));
|
| }
|
| }
|
|
|
| @@ -75,8 +75,8 @@ static void CheckSub(Handle<Type> type1, Handle<Type> type2) {
|
| static void CheckUnordered(Handle<Type> type1, Handle<Type> type2) {
|
| CHECK(!type1->Is(type2));
|
| CHECK(!type2->Is(type1));
|
| - if (IsBitset(type1) && IsBitset(type2)) {
|
| - CHECK_NE(AsBitset(type1), AsBitset(type2));
|
| + if (IsBitset(*type1) && IsBitset(*type2)) {
|
| + CHECK_NE(AsBitset(*type1), AsBitset(*type2));
|
| }
|
| }
|
|
|
| @@ -84,8 +84,8 @@ static void CheckUnordered(Handle<Type> type1, Handle<Type> type2) {
|
| static void CheckOverlap(Handle<Type> type1, Handle<Type> type2) {
|
| CHECK(type1->Maybe(type2));
|
| CHECK(type2->Maybe(type1));
|
| - if (IsBitset(type1) && IsBitset(type2)) {
|
| - CHECK_NE(0, AsBitset(type1) & AsBitset(type2));
|
| + if (IsBitset(*type1) && IsBitset(*type2)) {
|
| + CHECK_NE(0, AsBitset(*type1) & AsBitset(*type2));
|
| }
|
| }
|
|
|
| @@ -95,8 +95,8 @@ static void CheckDisjoint(Handle<Type> type1, Handle<Type> type2) {
|
| CHECK(!type2->Is(type1));
|
| CHECK(!type1->Maybe(type2));
|
| CHECK(!type2->Maybe(type1));
|
| - if (IsBitset(type1) && IsBitset(type2)) {
|
| - CHECK_EQ(0, AsBitset(type1) & AsBitset(type2));
|
| + if (IsBitset(*type1) && IsBitset(*type2)) {
|
| + CHECK_EQ(0, AsBitset(*type1) & AsBitset(*type2));
|
| }
|
| }
|
|
|
| @@ -104,26 +104,26 @@ static void CheckDisjoint(Handle<Type> type1, Handle<Type> type2) {
|
| class HandlifiedTypes {
|
| public:
|
| explicit HandlifiedTypes(Isolate* isolate) :
|
| - None(Type::None(isolate)),
|
| - Any(Type::Any(isolate)),
|
| - Oddball(Type::Oddball(isolate)),
|
| - Boolean(Type::Boolean(isolate)),
|
| - Null(Type::Null(isolate)),
|
| - Undefined(Type::Undefined(isolate)),
|
| - Number(Type::Number(isolate)),
|
| - Smi(Type::Smi(isolate)),
|
| - Signed32(Type::Signed32(isolate)),
|
| - Double(Type::Double(isolate)),
|
| - Name(Type::Name(isolate)),
|
| - UniqueName(Type::UniqueName(isolate)),
|
| - String(Type::String(isolate)),
|
| - InternalizedString(Type::InternalizedString(isolate)),
|
| - Symbol(Type::Symbol(isolate)),
|
| - Receiver(Type::Receiver(isolate)),
|
| - Object(Type::Object(isolate)),
|
| - Array(Type::Array(isolate)),
|
| - Function(Type::Function(isolate)),
|
| - Proxy(Type::Proxy(isolate)),
|
| + None(Type::None(), isolate),
|
| + Any(Type::Any(), isolate),
|
| + Oddball(Type::Oddball(), isolate),
|
| + Boolean(Type::Boolean(), isolate),
|
| + Null(Type::Null(), isolate),
|
| + Undefined(Type::Undefined(), isolate),
|
| + Number(Type::Number(), isolate),
|
| + Smi(Type::Smi(), isolate),
|
| + Signed32(Type::Signed32(), isolate),
|
| + Double(Type::Double(), isolate),
|
| + Name(Type::Name(), isolate),
|
| + UniqueName(Type::UniqueName(), isolate),
|
| + String(Type::String(), isolate),
|
| + InternalizedString(Type::InternalizedString(), isolate),
|
| + Symbol(Type::Symbol(), isolate),
|
| + Receiver(Type::Receiver(), isolate),
|
| + Object(Type::Object(), isolate),
|
| + Array(Type::Array(), isolate),
|
| + Function(Type::Function(), isolate),
|
| + Proxy(Type::Proxy(), isolate),
|
| object_map(isolate->factory()->NewMap(JS_OBJECT_TYPE, 3 * kPointerSize)),
|
| array_map(isolate->factory()->NewMap(JS_ARRAY_TYPE, 4 * kPointerSize)),
|
| isolate_(isolate) {
|
| @@ -132,14 +132,14 @@ class HandlifiedTypes {
|
| object1 = isolate->factory()->NewJSObjectFromMap(object_map);
|
| object2 = isolate->factory()->NewJSObjectFromMap(object_map);
|
| array = isolate->factory()->NewJSArray(20);
|
| - ObjectClass = Type::Class(object_map, isolate);
|
| - ArrayClass = Type::Class(array_map, isolate);
|
| - SmiConstant = Type::Constant(smi, isolate);
|
| - Signed32Constant = Type::Constant(signed32, isolate);
|
| - ObjectConstant1 = Type::Constant(object1, isolate);
|
| - ObjectConstant2 = Type::Constant(object2, isolate);
|
| - ArrayConstant1 = Type::Constant(array, isolate);
|
| - ArrayConstant2 = Type::Constant(array, isolate);
|
| + ObjectClass = Class(object_map);
|
| + ArrayClass = Class(array_map);
|
| + SmiConstant = Constant(smi);
|
| + Signed32Constant = Constant(signed32);
|
| + ObjectConstant1 = Constant(object1);
|
| + ObjectConstant2 = Constant(object2);
|
| + ArrayConstant1 = Constant(array);
|
| + ArrayConstant2 = Constant(array);
|
| }
|
|
|
| Handle<Type> None;
|
| @@ -182,11 +182,17 @@ class HandlifiedTypes {
|
| Handle<JSObject> object2;
|
| Handle<JSArray> array;
|
|
|
| - Handle<Type> Union(Handle<Type> t1, Handle<Type> t2) {
|
| - return Type::Union(t1, t2, isolate_);
|
| + Handle<Type> Class(Handle<Map> map) {
|
| + return handle(Type::Class(map), isolate_);
|
| }
|
| - Handle<Type> Intersect(Handle<Type> t1, Handle<Type> t2) {
|
| - return Type::Intersect(t1, t2, isolate_);
|
| + Handle<Type> Constant(Handle<i::Object> value) {
|
| + return handle(Type::Constant(value, isolate_), isolate_);
|
| + }
|
| + Handle<Type> Union(Handle<Type> type1, Handle<Type> type2) {
|
| + return handle(Type::Union(type1, type2), isolate_);
|
| + }
|
| + Handle<Type> Intersect(Handle<Type> type1, Handle<Type> type2) {
|
| + return handle(Type::Intersect(type1, type2), isolate_);
|
| }
|
|
|
| private:
|
| @@ -200,19 +206,22 @@ TEST(Bitset) {
|
| HandleScope scope(isolate);
|
| HandlifiedTypes T(isolate);
|
|
|
| - CHECK(IsBitset(T.None));
|
| - CHECK(IsBitset(T.Any));
|
| - CHECK(IsBitset(T.String));
|
| - CHECK(IsBitset(T.Object));
|
| -
|
| - CHECK(IsBitset(T.Union(T.String, T.Number)));
|
| - CHECK(IsBitset(T.Union(T.String, T.Receiver)));
|
| -
|
| - CHECK_EQ(0, AsBitset(T.None));
|
| - CHECK_EQ(AsBitset(T.Number) | AsBitset(T.String),
|
| - AsBitset(T.Union(T.String, T.Number)));
|
| - CHECK_EQ(AsBitset(T.Receiver),
|
| - AsBitset(T.Union(T.Receiver, T.Object)));
|
| + CHECK(IsBitset(*T.None));
|
| + CHECK(IsBitset(*T.Any));
|
| + CHECK(IsBitset(*T.String));
|
| + CHECK(IsBitset(*T.Object));
|
| +
|
| + CHECK(IsBitset(Type::Union(T.String, T.Number)));
|
| + CHECK(IsBitset(Type::Union(T.String, T.Receiver)));
|
| + CHECK(IsBitset(Type::Optional(T.Object)));
|
| +
|
| + CHECK_EQ(0, AsBitset(*T.None));
|
| + CHECK_EQ(AsBitset(*T.Number) | AsBitset(*T.String),
|
| + AsBitset(Type::Union(T.String, T.Number)));
|
| + CHECK_EQ(AsBitset(*T.Receiver),
|
| + AsBitset(Type::Union(T.Receiver, T.Object)));
|
| + CHECK_EQ(AsBitset(*T.String) | AsBitset(*T.Undefined),
|
| + AsBitset(Type::Optional(T.String)));
|
| }
|
|
|
|
|
| @@ -222,11 +231,11 @@ TEST(Class) {
|
| HandleScope scope(isolate);
|
| HandlifiedTypes T(isolate);
|
|
|
| - CHECK(IsClass(T.ObjectClass));
|
| - CHECK(IsClass(T.ArrayClass));
|
| + CHECK(IsClass(*T.ObjectClass));
|
| + CHECK(IsClass(*T.ArrayClass));
|
|
|
| - CHECK(*T.object_map == AsClass(T.ObjectClass));
|
| - CHECK(*T.array_map == AsClass(T.ArrayClass));
|
| + CHECK(*T.object_map == AsClass(*T.ObjectClass));
|
| + CHECK(*T.array_map == AsClass(*T.ArrayClass));
|
| }
|
|
|
|
|
| @@ -236,18 +245,18 @@ TEST(Constant) {
|
| HandleScope scope(isolate);
|
| HandlifiedTypes T(isolate);
|
|
|
| - CHECK(IsConstant(T.SmiConstant));
|
| - CHECK(IsConstant(T.ObjectConstant1));
|
| - CHECK(IsConstant(T.ObjectConstant2));
|
| - CHECK(IsConstant(T.ArrayConstant1));
|
| - CHECK(IsConstant(T.ArrayConstant2));
|
| -
|
| - CHECK(*T.smi == AsConstant(T.SmiConstant));
|
| - CHECK(*T.object1 == AsConstant(T.ObjectConstant1));
|
| - CHECK(*T.object2 == AsConstant(T.ObjectConstant2));
|
| - CHECK(*T.object1 != AsConstant(T.ObjectConstant2));
|
| - CHECK(*T.array == AsConstant(T.ArrayConstant1));
|
| - CHECK(*T.array == AsConstant(T.ArrayConstant2));
|
| + CHECK(IsConstant(*T.SmiConstant));
|
| + CHECK(IsConstant(*T.ObjectConstant1));
|
| + CHECK(IsConstant(*T.ObjectConstant2));
|
| + CHECK(IsConstant(*T.ArrayConstant1));
|
| + CHECK(IsConstant(*T.ArrayConstant2));
|
| +
|
| + CHECK(*T.smi == AsConstant(*T.SmiConstant));
|
| + CHECK(*T.object1 == AsConstant(*T.ObjectConstant1));
|
| + CHECK(*T.object2 == AsConstant(*T.ObjectConstant2));
|
| + CHECK(*T.object1 != AsConstant(*T.ObjectConstant2));
|
| + CHECK(*T.array == AsConstant(*T.ArrayConstant1));
|
| + CHECK(*T.array == AsConstant(*T.ArrayConstant2));
|
| }
|
|
|
|
|
| @@ -417,9 +426,9 @@ TEST(Union) {
|
| HandlifiedTypes T(isolate);
|
|
|
| // Bitset-bitset
|
| - CHECK(IsBitset(T.Union(T.Object, T.Number)));
|
| - CHECK(IsBitset(T.Union(T.Object, T.Object)));
|
| - CHECK(IsBitset(T.Union(T.Any, T.None)));
|
| + CHECK(IsBitset(Type::Union(T.Object, T.Number)));
|
| + CHECK(IsBitset(Type::Union(T.Object, T.Object)));
|
| + CHECK(IsBitset(Type::Union(T.Any, T.None)));
|
|
|
| CheckEqual(T.Union(T.None, T.Number), T.Number);
|
| CheckEqual(T.Union(T.Object, T.Proxy), T.Receiver);
|
| @@ -427,8 +436,8 @@ TEST(Union) {
|
| CheckSub(T.Union(T.Number, T.String), T.Any);
|
|
|
| // Class-class
|
| - CHECK(IsClass(T.Union(T.ObjectClass, T.ObjectClass)));
|
| - CHECK(IsUnion(T.Union(T.ObjectClass, T.ArrayClass)));
|
| + CHECK(IsClass(Type::Union(T.ObjectClass, T.ObjectClass)));
|
| + CHECK(IsUnion(Type::Union(T.ObjectClass, T.ArrayClass)));
|
|
|
| CheckEqual(T.Union(T.ObjectClass, T.ObjectClass), T.ObjectClass);
|
| CheckSub(T.None, T.Union(T.ObjectClass, T.ArrayClass));
|
| @@ -441,9 +450,9 @@ TEST(Union) {
|
| CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number);
|
|
|
| // Constant-constant
|
| - CHECK(IsConstant(T.Union(T.ObjectConstant1, T.ObjectConstant1)));
|
| - CHECK(IsConstant(T.Union(T.ArrayConstant1, T.ArrayConstant1)));
|
| - CHECK(IsUnion(T.Union(T.ObjectConstant1, T.ObjectConstant2)));
|
| + CHECK(IsConstant(Type::Union(T.ObjectConstant1, T.ObjectConstant1)));
|
| + CHECK(IsConstant(Type::Union(T.ArrayConstant1, T.ArrayConstant1)));
|
| + CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectConstant2)));
|
|
|
| CheckEqual(T.Union(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1);
|
| CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant1);
|
| @@ -462,8 +471,8 @@ TEST(Union) {
|
| CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ObjectClass);
|
|
|
| // Bitset-class
|
| - CHECK(IsBitset(T.Union(T.ObjectClass, T.Object)));
|
| - CHECK(IsUnion(T.Union(T.ObjectClass, T.Number)));
|
| + CHECK(IsBitset(Type::Union(T.ObjectClass, T.Object)));
|
| + CHECK(IsUnion(Type::Union(T.ObjectClass, T.Number)));
|
|
|
| CheckEqual(T.Union(T.ObjectClass, T.Object), T.Object);
|
| CheckSub(T.None, T.Union(T.ObjectClass, T.Number));
|
| @@ -475,9 +484,9 @@ TEST(Union) {
|
| CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number);
|
|
|
| // Bitset-constant
|
| - CHECK(IsBitset(T.Union(T.SmiConstant, T.Number)));
|
| - CHECK(IsBitset(T.Union(T.ObjectConstant1, T.Object)));
|
| - CHECK(IsUnion(T.Union(T.ObjectConstant2, T.Number)));
|
| + CHECK(IsBitset(Type::Union(T.SmiConstant, T.Number)));
|
| + CHECK(IsBitset(Type::Union(T.ObjectConstant1, T.Object)));
|
| + CHECK(IsUnion(Type::Union(T.ObjectConstant2, T.Number)));
|
|
|
| CheckEqual(T.Union(T.SmiConstant, T.Number), T.Number);
|
| CheckEqual(T.Union(T.ObjectConstant1, T.Object), T.Object);
|
| @@ -491,8 +500,8 @@ TEST(Union) {
|
| CheckEqual(T.Union(T.Signed32, T.Signed32Constant), T.Signed32);
|
|
|
| // Class-constant
|
| - CHECK(IsUnion(T.Union(T.ObjectConstant1, T.ObjectClass)));
|
| - CHECK(IsUnion(T.Union(T.ArrayClass, T.ObjectConstant2)));
|
| + CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectClass)));
|
| + CHECK(IsUnion(Type::Union(T.ArrayClass, T.ObjectConstant2)));
|
|
|
| CheckSub(T.None, T.Union(T.ObjectConstant1, T.ArrayClass));
|
| CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Any);
|
| @@ -507,8 +516,10 @@ TEST(Union) {
|
| CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass);
|
|
|
| // Bitset-union
|
| - CHECK(IsBitset(T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass))));
|
| - CHECK(IsUnion(T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number)));
|
| + CHECK(IsBitset(
|
| + Type::Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass))));
|
| + CHECK(IsUnion(
|
| + Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number)));
|
|
|
| CheckEqual(
|
| T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)),
|
| @@ -534,9 +545,9 @@ TEST(Union) {
|
|
|
| // Class-union
|
| CHECK(IsUnion(
|
| - T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass)));
|
| + Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass)));
|
| CHECK(IsUnion(
|
| - T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass)));
|
| + Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass)));
|
|
|
| CheckEqual(
|
| T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)),
|
| @@ -555,11 +566,11 @@ TEST(Union) {
|
| T.Union(T.ArrayClass, T.ObjectConstant2));
|
|
|
| // Constant-union
|
| - CHECK(IsUnion(T.Union(
|
| + CHECK(IsUnion(Type::Union(
|
| T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2))));
|
| - CHECK(IsUnion(T.Union(
|
| + CHECK(IsUnion(Type::Union(
|
| T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1)));
|
| - CHECK(IsUnion(T.Union(
|
| + CHECK(IsUnion(Type::Union(
|
| T.Union(T.ArrayConstant1, T.ObjectConstant2), T.ObjectConstant1)));
|
|
|
| CheckEqual(
|
| @@ -570,9 +581,9 @@ TEST(Union) {
|
| T.Union(T.ObjectConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant1)));
|
|
|
| // Union-union
|
| - CHECK(IsBitset(T.Union(
|
| + CHECK(IsBitset(Type::Union(
|
| T.Union(T.Number, T.ArrayClass), T.Union(T.Signed32, T.Array))));
|
| - CHECK(IsUnion(T.Union(
|
| + CHECK(IsUnion(Type::Union(
|
| T.Union(T.Number, T.ArrayClass), T.Union(T.ObjectClass, T.ArrayClass))));
|
|
|
| CheckEqual(
|
| @@ -598,9 +609,9 @@ TEST(Intersect) {
|
| HandlifiedTypes T(isolate);
|
|
|
| // Bitset-bitset
|
| - CHECK(IsBitset(T.Intersect(T.Object, T.Number)));
|
| - CHECK(IsBitset(T.Intersect(T.Object, T.Object)));
|
| - CHECK(IsBitset(T.Intersect(T.Any, T.None)));
|
| + CHECK(IsBitset(Type::Intersect(T.Object, T.Number)));
|
| + CHECK(IsBitset(Type::Intersect(T.Object, T.Object)));
|
| + CHECK(IsBitset(Type::Intersect(T.Any, T.None)));
|
|
|
| CheckEqual(T.Intersect(T.None, T.Number), T.None);
|
| CheckEqual(T.Intersect(T.Object, T.Proxy), T.None);
|
| @@ -608,16 +619,16 @@ TEST(Intersect) {
|
| CheckEqual(T.Intersect(T.UniqueName, T.String), T.InternalizedString);
|
|
|
| // Class-class
|
| - CHECK(IsClass(T.Intersect(T.ObjectClass, T.ObjectClass)));
|
| - CHECK(IsBitset(T.Intersect(T.ObjectClass, T.ArrayClass)));
|
| + CHECK(IsClass(Type::Intersect(T.ObjectClass, T.ObjectClass)));
|
| + CHECK(IsBitset(Type::Intersect(T.ObjectClass, T.ArrayClass)));
|
|
|
| CheckEqual(T.Intersect(T.ObjectClass, T.ObjectClass), T.ObjectClass);
|
| CheckEqual(T.Intersect(T.ObjectClass, T.ArrayClass), T.None);
|
|
|
| // Constant-constant
|
| - CHECK(IsConstant(T.Intersect(T.ObjectConstant1, T.ObjectConstant1)));
|
| - CHECK(IsConstant(T.Intersect(T.ArrayConstant1, T.ArrayConstant2)));
|
| - CHECK(IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectConstant2)));
|
| + CHECK(IsConstant(Type::Intersect(T.ObjectConstant1, T.ObjectConstant1)));
|
| + CHECK(IsConstant(Type::Intersect(T.ArrayConstant1, T.ArrayConstant2)));
|
| + CHECK(IsBitset(Type::Intersect(T.ObjectConstant1, T.ObjectConstant2)));
|
|
|
| CheckEqual(
|
| T.Intersect(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1);
|
| @@ -626,34 +637,34 @@ TEST(Intersect) {
|
| CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectConstant2), T.None);
|
|
|
| // Bitset-class
|
| - CHECK(IsClass(T.Intersect(T.ObjectClass, T.Object)));
|
| - CHECK(IsBitset(T.Intersect(T.ObjectClass, T.Number)));
|
| + CHECK(IsClass(Type::Intersect(T.ObjectClass, T.Object)));
|
| + CHECK(IsBitset(Type::Intersect(T.ObjectClass, T.Number)));
|
|
|
| CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass);
|
| CheckEqual(T.Intersect(T.ObjectClass, T.Array), T.None);
|
| CheckEqual(T.Intersect(T.ObjectClass, T.Number), T.None);
|
|
|
| // Bitset-constant
|
| - CHECK(IsBitset(T.Intersect(T.Smi, T.Number)));
|
| - CHECK(IsConstant(T.Intersect(T.SmiConstant, T.Number)));
|
| - CHECK(IsConstant(T.Intersect(T.ObjectConstant1, T.Object)));
|
| + CHECK(IsBitset(Type::Intersect(T.Smi, T.Number)));
|
| + CHECK(IsConstant(Type::Intersect(T.SmiConstant, T.Number)));
|
| + CHECK(IsConstant(Type::Intersect(T.ObjectConstant1, T.Object)));
|
|
|
| CheckEqual(T.Intersect(T.Smi, T.Number), T.Smi);
|
| CheckEqual(T.Intersect(T.SmiConstant, T.Number), T.SmiConstant);
|
| CheckEqual(T.Intersect(T.ObjectConstant1, T.Object), T.ObjectConstant1);
|
|
|
| // Class-constant
|
| - CHECK(IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectClass)));
|
| - CHECK(IsBitset(T.Intersect(T.ArrayClass, T.ObjectConstant2)));
|
| + CHECK(IsBitset(Type::Intersect(T.ObjectConstant1, T.ObjectClass)));
|
| + CHECK(IsBitset(Type::Intersect(T.ArrayClass, T.ObjectConstant2)));
|
|
|
| CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectClass), T.None);
|
| CheckEqual(T.Intersect(T.ArrayClass, T.ObjectConstant2), T.None);
|
|
|
| // Bitset-union
|
| CHECK(IsUnion(
|
| - T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass))));
|
| + Type::Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass))));
|
| CHECK(IsBitset(
|
| - T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number)));
|
| + Type::Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number)));
|
|
|
| CheckEqual(
|
| T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)),
|
| @@ -664,11 +675,11 @@ TEST(Intersect) {
|
|
|
| // Class-union
|
| CHECK(IsClass(
|
| - T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass)));
|
| + Type::Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass)));
|
| CHECK(IsClass(
|
| - T.Intersect(T.Union(T.Object, T.SmiConstant), T.ArrayClass)));
|
| + Type::Intersect(T.Union(T.Object, T.SmiConstant), T.ArrayClass)));
|
| CHECK(IsBitset(
|
| - T.Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass)));
|
| + Type::Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass)));
|
|
|
| CheckEqual(
|
| T.Intersect(T.ArrayClass, T.Union(T.ObjectConstant2, T.ArrayClass)),
|
| @@ -681,11 +692,11 @@ TEST(Intersect) {
|
| T.None);
|
|
|
| // Constant-union
|
| - CHECK(IsConstant(T.Intersect(
|
| + CHECK(IsConstant(Type::Intersect(
|
| T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2))));
|
| - CHECK(IsConstant(T.Intersect(
|
| + CHECK(IsConstant(Type::Intersect(
|
| T.Union(T.Number, T.ObjectClass), T.SmiConstant)));
|
| - CHECK(IsBitset(T.Intersect(
|
| + CHECK(IsBitset(Type::Intersect(
|
| T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1)));
|
|
|
| CheckEqual(
|
| @@ -700,9 +711,9 @@ TEST(Intersect) {
|
| T.None);
|
|
|
| // Union-union
|
| - CHECK(IsUnion(T.Intersect(
|
| + CHECK(IsUnion(Type::Intersect(
|
| T.Union(T.Number, T.ArrayClass), T.Union(T.Signed32, T.Array))));
|
| - CHECK(IsBitset(T.Intersect(
|
| + CHECK(IsBitset(Type::Intersect(
|
| T.Union(T.Number, T.ObjectClass), T.Union(T.Signed32, T.Array))));
|
|
|
| CheckEqual(
|
|
|