Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Unified Diff: test/cctest/test-types.cc

Issue 1074133002: Remove Type::Array bit and replace with Type::GlobalObject (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/typing.cc ('k') | test/cctest/types-fuzz.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-types.cc
diff --git a/test/cctest/test-types.cc b/test/cctest/test-types.cc
index 4b6980fab829e5d91cfe16f7687f127a84a40cc0..023d775d5186f3a22b1b4b598e75b5030909e48b 100644
--- a/test/cctest/test-types.cc
+++ b/test/cctest/test-types.cc
@@ -1018,16 +1018,23 @@ struct Tests : Rep {
CheckUnordered(T.InternalizedString, T.Symbol);
CheckSub(T.Object, T.Receiver);
- CheckSub(T.Array, T.Object);
CheckSub(T.Proxy, T.Receiver);
- CheckUnordered(T.Object, T.Proxy);
+ CheckSub(T.OtherObject, T.Object);
+ CheckSub(T.Undetectable, T.Object);
+ CheckSub(T.DetectableObject, T.Object);
+ CheckSub(T.GlobalObject, T.DetectableObject);
+ CheckSub(T.OtherObject, T.DetectableObject);
+ CheckSub(T.GlobalObject, T.Object);
+ CheckSub(T.GlobalObject, T.Receiver);
+ CheckUnordered(T.Object, T.Proxy);
+ CheckUnordered(T.GlobalObject, T.OtherObject);
+ CheckUnordered(T.DetectableObject, T.Undetectable);
// Subtyping between concrete structural types
CheckSub(T.ObjectClass, T.Object);
- CheckSub(T.ArrayClass, T.Object);
- CheckSub(T.ArrayClass, T.Array);
+ CheckSub(T.ArrayClass, T.OtherObject);
CheckSub(T.UninitializedClass, T.Internal);
CheckUnordered(T.ObjectClass, T.ArrayClass);
CheckUnordered(T.UninitializedClass, T.Null);
@@ -1039,7 +1046,8 @@ struct Tests : Rep {
CheckSub(T.ObjectConstant1, T.Object);
CheckSub(T.ObjectConstant2, T.Object);
CheckSub(T.ArrayConstant, T.Object);
- CheckSub(T.ArrayConstant, T.Array);
+ CheckSub(T.ArrayConstant, T.OtherObject);
+ CheckSub(T.ArrayConstant, T.Receiver);
CheckSub(T.UninitializedConstant, T.Internal);
CheckUnordered(T.ObjectConstant1, T.ObjectConstant2);
CheckUnordered(T.ObjectConstant1, T.ArrayConstant);
@@ -1052,7 +1060,8 @@ struct Tests : Rep {
CheckUnordered(T.ObjectConstant2, T.ArrayClass);
CheckUnordered(T.ArrayConstant, T.ObjectClass);
- CheckSub(T.NumberArray, T.Array);
+ CheckSub(T.NumberArray, T.OtherObject);
+ CheckSub(T.NumberArray, T.Receiver);
CheckSub(T.NumberArray, T.Object);
CheckUnordered(T.StringArray, T.AnyArray);
@@ -1341,7 +1350,8 @@ struct Tests : Rep {
CheckDisjoint(T.String, T.Symbol);
CheckDisjoint(T.InternalizedString, T.Symbol);
CheckOverlap(T.Object, T.Receiver);
- CheckOverlap(T.Array, T.Object);
+ CheckOverlap(T.OtherObject, T.Object);
+ CheckOverlap(T.GlobalObject, T.Object);
CheckOverlap(T.Proxy, T.Receiver);
CheckDisjoint(T.Object, T.Proxy);
@@ -1357,14 +1367,14 @@ struct Tests : Rep {
CheckOverlap(T.ObjectConstant1, T.Object);
CheckOverlap(T.ObjectConstant2, T.Object);
CheckOverlap(T.ArrayConstant, T.Object);
- CheckOverlap(T.ArrayConstant, T.Array);
+ CheckOverlap(T.ArrayConstant, T.Receiver);
CheckOverlap(T.ObjectConstant1, T.ObjectConstant1);
CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2);
CheckDisjoint(T.ObjectConstant1, T.ArrayConstant);
- CheckDisjoint(T.ObjectConstant1, T.ArrayClass);
- CheckDisjoint(T.ObjectConstant2, T.ArrayClass);
- CheckDisjoint(T.ArrayConstant, T.ObjectClass);
- CheckOverlap(T.NumberArray, T.Array);
+ CheckOverlap(T.ObjectConstant1, T.ArrayClass);
+ CheckOverlap(T.ObjectConstant2, T.ArrayClass);
+ CheckOverlap(T.ArrayConstant, T.ObjectClass);
+ CheckOverlap(T.NumberArray, T.Receiver);
CheckDisjoint(T.NumberArray, T.AnyArray);
CheckDisjoint(T.NumberArray, T.StringArray);
CheckOverlap(T.MethodFunction, T.Object);
@@ -1511,28 +1521,28 @@ struct Tests : Rep {
void Union4() {
// Class-class
CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Object);
- CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.Array);
- CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Array);
+ CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.OtherObject);
+ CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Receiver);
CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number);
// Constant-constant
CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Object);
- CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayConstant), T.Array);
+ CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant), T.OtherObject);
CheckUnordered(
T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass);
- CheckOverlap(
- T.Union(T.ObjectConstant1, T.ArrayConstant), T.Array);
+ CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant), T.OtherObject);
CheckDisjoint(
T.Union(T.ObjectConstant1, T.ArrayConstant), T.Number);
CheckOverlap(
T.Union(T.ObjectConstant1, T.ArrayConstant), T.ObjectClass); // !!!
// Bitset-array
- CHECK(this->IsBitset(T.Union(T.AnyArray, T.Array)));
+ CHECK(this->IsBitset(T.Union(T.AnyArray, T.Receiver)));
CHECK(this->IsUnion(T.Union(T.NumberArray, T.Number)));
- CheckEqual(T.Union(T.AnyArray, T.Array), T.Array);
- CheckUnordered(T.Union(T.AnyArray, T.String), T.Array);
+ CheckEqual(T.Union(T.AnyArray, T.Receiver), T.Receiver);
+ CheckEqual(T.Union(T.AnyArray, T.OtherObject), T.OtherObject);
+ CheckUnordered(T.Union(T.AnyArray, T.String), T.Receiver);
CheckOverlap(T.Union(T.NumberArray, T.String), T.Object);
CheckDisjoint(T.Union(T.NumberArray, T.String), T.Number);
@@ -1548,27 +1558,26 @@ struct Tests : Rep {
// Bitset-class
CheckSub(T.Union(T.ObjectClass, T.SignedSmall),
T.Union(T.Object, T.Number));
- CheckSub(T.Union(T.ObjectClass, T.Array), T.Object);
- CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array);
+ CheckSub(T.Union(T.ObjectClass, T.OtherObject), T.Object);
+ CheckUnordered(T.Union(T.ObjectClass, T.String), T.OtherObject);
CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object);
CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number);
// Bitset-constant
CheckSub(
T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number));
- CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object);
- CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array);
+ CheckSub(T.Union(T.ObjectConstant1, T.OtherObject), T.Object);
+ CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.OtherObject);
CheckOverlap(T.Union(T.ObjectConstant1, T.String), T.Object);
CheckDisjoint(T.Union(T.ObjectConstant1, T.String), T.Number);
// Class-constant
CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Object);
CheckUnordered(T.ObjectClass, T.Union(T.ObjectConstant1, T.ArrayClass));
- CheckSub(
- T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object));
+ CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass),
+ T.Union(T.Receiver, T.Object));
CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant);
- CheckDisjoint(
- T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2);
+ CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2);
CheckOverlap(
T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass); // !!!
@@ -1603,7 +1612,7 @@ struct Tests : Rep {
CheckEqual(
T.Union(T.AnyArray, T.Union(T.NumberArray, T.AnyArray)),
T.Union(T.AnyArray, T.NumberArray));
- CheckSub(T.Union(T.AnyArray, T.NumberArray), T.Array);
+ CheckSub(T.Union(T.AnyArray, T.NumberArray), T.OtherObject);
// Function-union
CheckEqual(
@@ -1618,8 +1627,8 @@ struct Tests : Rep {
T.Union(T.ObjectConstant1, T.ObjectConstant2)),
T.Union(T.ObjectConstant2, T.ObjectConstant1));
CheckEqual(T.Union(T.Union(T.Number, T.ArrayClass),
- T.Union(T.SignedSmall, T.Array)),
- T.Union(T.Number, T.Array));
+ T.Union(T.SignedSmall, T.Receiver)),
+ T.Union(T.Number, T.Receiver));
}
void Intersect() {
@@ -1763,7 +1772,6 @@ struct Tests : Rep {
// Bitset-class
CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass);
- CheckEqual(T.Semantic(T.Intersect(T.ObjectClass, T.Array)), T.None);
CheckEqual(T.Semantic(T.Intersect(T.ObjectClass, T.Number)), T.None);
// Bitset-array
@@ -1784,7 +1792,7 @@ struct Tests : Rep {
// Class-constant
CHECK(T.Intersect(T.ObjectConstant1, T.ObjectClass)->IsInhabited()); // !!!
- CHECK(!T.Intersect(T.ArrayClass, T.ObjectConstant2)->IsInhabited());
+ CHECK(T.Intersect(T.ArrayClass, T.ObjectConstant2)->IsInhabited());
// Array-union
CheckEqual(
@@ -1834,13 +1842,11 @@ struct Tests : Rep {
// Union-union
CheckEqual(T.Intersect(T.Union(T.Number, T.ArrayClass),
- T.Union(T.SignedSmall, T.Array)),
+ T.Union(T.SignedSmall, T.Receiver)),
T.Union(T.SignedSmall, T.ArrayClass));
- CheckEqual(
- T.Intersect(
- T.Union(T.Number, T.ObjectClass),
- T.Union(T.Signed32, T.Array)),
- T.Signed32);
+ CheckEqual(T.Intersect(T.Union(T.Number, T.ObjectClass),
+ T.Union(T.Signed32, T.OtherObject)),
+ T.Union(T.Signed32, T.ObjectClass));
CheckEqual(
T.Intersect(
T.Union(T.ObjectConstant2, T.ObjectConstant1),
@@ -1958,6 +1964,66 @@ struct Tests : Rep {
}
}
}
+
+ void GlobalObjectType() {
+ i::Handle<i::Context> context1 = v8::Utils::OpenHandle(
+ *v8::Context::New(reinterpret_cast<v8::Isolate*>(isolate)));
+ Handle<i::GlobalObject> global_object1(context1->global_object());
+ TypeHandle GlobalObjectConstant1 =
+ Type::Constant(global_object1, Rep::ToRegion(&zone, isolate));
+
+ i::Handle<i::Context> context2 = v8::Utils::OpenHandle(
+ *v8::Context::New(reinterpret_cast<v8::Isolate*>(isolate)));
+ Handle<i::GlobalObject> global_object2(context2->global_object());
+ TypeHandle GlobalObjectConstant2 =
+ Type::Constant(global_object2, Rep::ToRegion(&zone, isolate));
+
+ CheckSub(GlobalObjectConstant1, T.DetectableObject);
+ CheckSub(GlobalObjectConstant2, T.DetectableObject);
+ CheckSub(GlobalObjectConstant1, T.GlobalObject);
+ CheckSub(GlobalObjectConstant2, T.GlobalObject);
+ CheckSub(GlobalObjectConstant1, T.Object);
+ CheckSub(GlobalObjectConstant2, T.Object);
+
+ CheckUnordered(T.GlobalObject, T.OtherObject);
+ CheckUnordered(GlobalObjectConstant1, T.OtherObject);
+ CheckUnordered(GlobalObjectConstant2, T.OtherObject);
+ CheckUnordered(GlobalObjectConstant1, GlobalObjectConstant2);
+
+ CheckDisjoint(T.GlobalObject, T.ObjectClass);
+ CheckDisjoint(GlobalObjectConstant1, T.ObjectClass);
+ CheckDisjoint(GlobalObjectConstant2, T.ArrayClass);
+
+ CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.GlobalObject);
+ CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), GlobalObjectConstant1);
+ CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), GlobalObjectConstant2);
+
+ CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.GlobalObject);
+ CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass),
+ GlobalObjectConstant1);
+ CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass),
+ GlobalObjectConstant2);
+
+ CheckUnordered(T.Union(T.ObjectClass, T.String), T.GlobalObject);
+
+ CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass),
+ T.Union(T.GlobalObject, T.Object));
+
+ CheckDisjoint(T.Union(GlobalObjectConstant1, T.ArrayClass),
+ GlobalObjectConstant2);
+
+ CheckEqual(T.Union(T.Union(T.Number, GlobalObjectConstant1),
+ T.Union(T.SignedSmall, T.GlobalObject)),
+ T.Union(T.Number, T.GlobalObject));
+
+ CheckEqual(T.Semantic(T.Intersect(T.ObjectClass, T.GlobalObject)), T.None);
+
+ CHECK(!T.Intersect(T.ArrayClass, GlobalObjectConstant2)->IsInhabited());
+
+ CheckEqual(T.Intersect(T.Union(T.Number, T.OtherObject),
+ T.Union(T.Signed32, T.GlobalObject)),
+ T.Signed32);
+ }
};
typedef Tests<Type, Type*, Zone, ZoneRep> ZoneTests;
@@ -2132,3 +2198,9 @@ TEST(HTypeFromType_zone) { ZoneTests().HTypeFromType(); }
TEST(HTypeFromType_heap) { HeapTests().HTypeFromType(); }
+
+
+TEST(GlobalObjectType_zone) { ZoneTests().GlobalObjectType(); }
+
+
+TEST(GlobalObjectType_heap) { HeapTests().GlobalObjectType(); }
« no previous file with comments | « src/typing.cc ('k') | test/cctest/types-fuzz.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698