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

Side by Side Diff: test/cctest/test-types.cc

Issue 795713003: Steps towards unification of number bitset and range types. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix BitsetType::Max for OtherNumber with missing representation Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "src/hydrogen-types.h" 7 #include "src/hydrogen-types.h"
8 #include "src/isolate-inl.h" 8 #include "src/isolate-inl.h"
9 #include "src/types.h" 9 #include "src/types.h"
10 #include "test/cctest/cctest.h" 10 #include "test/cctest/cctest.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 Handle<i::Object> value1 = *vt1; 284 Handle<i::Object> value1 = *vt1;
285 Handle<i::Object> value2 = *vt2; 285 Handle<i::Object> value2 = *vt2;
286 TypeHandle type1 = T.Constant(value1); 286 TypeHandle type1 = T.Constant(value1);
287 TypeHandle type2 = T.Constant(value2); 287 TypeHandle type2 = T.Constant(value2);
288 CHECK(Equal(type1, type2) == (*value1 == *value2)); 288 CHECK(Equal(type1, type2) == (*value1 == *value2));
289 } 289 }
290 } 290 }
291 291
292 // Typing of numbers 292 // Typing of numbers
293 Factory* fac = isolate->factory(); 293 Factory* fac = isolate->factory();
294 CHECK(T.Constant(fac->NewNumber(0))->Is(T.UnsignedSmall)); 294 CHECK(T.Constant(fac->NewNumber(0))->Is(T.Unsigned30));
295 CHECK(T.Constant(fac->NewNumber(1))->Is(T.UnsignedSmall)); 295 CHECK(T.Constant(fac->NewNumber(1))->Is(T.Unsigned30));
296 CHECK(T.Constant(fac->NewNumber(0x3fffffff))->Is(T.UnsignedSmall)); 296 CHECK(T.Constant(fac->NewNumber(0x3fffffff))->Is(T.Unsigned30));
297 CHECK(T.Constant(fac->NewNumber(-1))->Is(T.NegativeSignedSmall)); 297 CHECK(T.Constant(fac->NewNumber(-1))->Is(T.Negative31));
298 CHECK(T.Constant(fac->NewNumber(-0x3fffffff))->Is(T.NegativeSignedSmall)); 298 CHECK(T.Constant(fac->NewNumber(-0x3fffffff))->Is(T.Negative31));
299 CHECK(T.Constant(fac->NewNumber(-0x40000000))->Is(T.NegativeSignedSmall)); 299 CHECK(T.Constant(fac->NewNumber(-0x40000000))->Is(T.Negative31));
300 if (SmiValuesAre31Bits()) { 300 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.Unsigned31));
rossberg 2014/12/12 13:57:51 I think we should keep this platform-dependent tes
Jarin 2015/01/08 14:30:28 Note that all the T.*Small variants do not exist a
rossberg 2015/01/15 15:15:12 Well, of course you could (should) just add them.
Jarin 2015/01/16 16:28:39 Done.
301 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.NonNegativeSigned32)); 301 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.Unsigned30));
302 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall)); 302 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.Unsigned31));
303 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.NonNegativeSigned32)); 303 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.Unsigned30));
304 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall)); 304 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.Negative32));
305 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSigned32)); 305 CHECK(!T.Constant(fac->NewNumber(-0x40000001))->Is(T.Negative31));
306 CHECK( 306 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.Negative32));
307 !T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSignedSmall)); 307 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 1))->Is(T.Negative31));
308 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.NegativeSigned32));
309 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 1))
310 ->Is(T.NegativeSignedSmall));
311 } else {
312 CHECK(SmiValuesAre32Bits());
313 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall));
314 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall));
315 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.NonNegativeSigned32));
316 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.NonNegativeSigned32));
317 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSignedSmall));
318 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.NegativeSignedSmall));
319 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 1))
320 ->Is(T.NegativeSignedSmall));
321 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSigned32));
322 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.NegativeSigned32));
323 CHECK(
324 T.Constant(fac->NewNumber(-0x7fffffff - 1))->Is(T.NegativeSigned32));
325 }
326 CHECK(T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned32)); 308 CHECK(T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned32));
327 CHECK(!T.Constant(fac->NewNumber(0x80000000u))->Is(T.NonNegativeSigned32)); 309 CHECK(!T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned31));
328 CHECK(T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned32)); 310 CHECK(T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned32));
329 CHECK(!T.Constant(fac->NewNumber(0xffffffffu))->Is(T.NonNegativeSigned32)); 311 CHECK(!T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned31));
330 CHECK(T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.PlainNumber)); 312 CHECK(T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.PlainNumber));
331 CHECK(!T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.Integral32)); 313 CHECK(!T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.Integral32));
332 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.PlainNumber)); 314 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.PlainNumber));
333 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.Integral32)); 315 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.Integral32));
334 CHECK(T.Constant(fac->NewNumber(0.1))->Is(T.PlainNumber)); 316 CHECK(T.Constant(fac->NewNumber(0.1))->Is(T.PlainNumber));
335 CHECK(!T.Constant(fac->NewNumber(0.1))->Is(T.Integral32)); 317 CHECK(!T.Constant(fac->NewNumber(0.1))->Is(T.Integral32));
336 CHECK(T.Constant(fac->NewNumber(-10.1))->Is(T.PlainNumber)); 318 CHECK(T.Constant(fac->NewNumber(-10.1))->Is(T.PlainNumber));
337 CHECK(!T.Constant(fac->NewNumber(-10.1))->Is(T.Integral32)); 319 CHECK(!T.Constant(fac->NewNumber(-10.1))->Is(T.Integral32));
338 CHECK(T.Constant(fac->NewNumber(10e60))->Is(T.PlainNumber)); 320 CHECK(T.Constant(fac->NewNumber(10e60))->Is(T.PlainNumber));
339 CHECK(!T.Constant(fac->NewNumber(10e60))->Is(T.Integral32)); 321 CHECK(!T.Constant(fac->NewNumber(10e60))->Is(T.Integral32));
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 // (In-)Compatibilities. 770 // (In-)Compatibilities.
789 for (TypeIterator i = T.types.begin(); i != T.types.end(); ++i) { 771 for (TypeIterator i = T.types.begin(); i != T.types.end(); ++i) {
790 for (TypeIterator j = T.types.begin(); j != T.types.end(); ++j) { 772 for (TypeIterator j = T.types.begin(); j != T.types.end(); ++j) {
791 TypeHandle type1 = *i; 773 TypeHandle type1 = *i;
792 TypeHandle type2 = *j; 774 TypeHandle type2 = *j;
793 CHECK(!type1->Is(type2) || this->IsBitset(type2) || 775 CHECK(!type1->Is(type2) || this->IsBitset(type2) ||
794 this->IsUnion(type2) || this->IsUnion(type1) || 776 this->IsUnion(type2) || this->IsUnion(type1) ||
795 (type1->IsClass() && type2->IsClass()) || 777 (type1->IsClass() && type2->IsClass()) ||
796 (type1->IsConstant() && type2->IsConstant()) || 778 (type1->IsConstant() && type2->IsConstant()) ||
797 (type1->IsConstant() && type2->IsRange()) || 779 (type1->IsConstant() && type2->IsRange()) ||
780 (this->IsBitset(type1) && type2->IsRange()) ||
798 (type1->IsRange() && type2->IsRange()) || 781 (type1->IsRange() && type2->IsRange()) ||
799 (type1->IsContext() && type2->IsContext()) || 782 (type1->IsContext() && type2->IsContext()) ||
800 (type1->IsArray() && type2->IsArray()) || 783 (type1->IsArray() && type2->IsArray()) ||
801 (type1->IsFunction() && type2->IsFunction()) || 784 (type1->IsFunction() && type2->IsFunction()) ||
802 type1->Equals(T.None)); 785 type1->Equals(T.None));
803 } 786 }
804 } 787 }
805 } 788 }
806 789
807 void Is2() { 790 void Is2() {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 } 907 }
925 } 908 }
926 909
927 910
928 // Subtyping between concrete basic types 911 // Subtyping between concrete basic types
929 912
930 CheckUnordered(T.Boolean, T.Null); 913 CheckUnordered(T.Boolean, T.Null);
931 CheckUnordered(T.Undefined, T.Null); 914 CheckUnordered(T.Undefined, T.Null);
932 CheckUnordered(T.Boolean, T.Undefined); 915 CheckUnordered(T.Boolean, T.Undefined);
933 916
934 CheckSub(T.SignedSmall, T.Number); 917 CheckSub(T.Signed31, T.Number);
935 CheckSub(T.Signed32, T.Number); 918 CheckSub(T.Signed32, T.Number);
936 CheckSub(T.SignedSmall, T.Signed32); 919 CheckSub(T.Signed31, T.Signed32);
937 CheckUnordered(T.SignedSmall, T.MinusZero); 920 CheckUnordered(T.Signed31, T.MinusZero);
938 CheckUnordered(T.Signed32, T.Unsigned32); 921 CheckUnordered(T.Signed32, T.Unsigned32);
939 922
940 CheckSub(T.UniqueName, T.Name); 923 CheckSub(T.UniqueName, T.Name);
941 CheckSub(T.String, T.Name); 924 CheckSub(T.String, T.Name);
942 CheckSub(T.InternalizedString, T.String); 925 CheckSub(T.InternalizedString, T.String);
943 CheckSub(T.InternalizedString, T.UniqueName); 926 CheckSub(T.InternalizedString, T.UniqueName);
944 CheckSub(T.InternalizedString, T.Name); 927 CheckSub(T.InternalizedString, T.Name);
945 CheckSub(T.Symbol, T.UniqueName); 928 CheckSub(T.Symbol, T.UniqueName);
946 CheckSub(T.Symbol, T.Name); 929 CheckSub(T.Symbol, T.Name);
947 CheckUnordered(T.String, T.UniqueName); 930 CheckUnordered(T.String, T.UniqueName);
948 CheckUnordered(T.String, T.Symbol); 931 CheckUnordered(T.String, T.Symbol);
949 CheckUnordered(T.InternalizedString, T.Symbol); 932 CheckUnordered(T.InternalizedString, T.Symbol);
950 933
951 CheckSub(T.Object, T.Receiver); 934 CheckSub(T.Object, T.Receiver);
952 CheckSub(T.Array, T.Object); 935 CheckSub(T.Array, T.Object);
953 CheckSub(T.Proxy, T.Receiver); 936 CheckSub(T.Proxy, T.Receiver);
954 CheckUnordered(T.Object, T.Proxy); 937 CheckUnordered(T.Object, T.Proxy);
955 938
956 939
957 // Subtyping between concrete structural types 940 // Subtyping between concrete structural types
958 941
959 CheckSub(T.ObjectClass, T.Object); 942 CheckSub(T.ObjectClass, T.Object);
960 CheckSub(T.ArrayClass, T.Object); 943 CheckSub(T.ArrayClass, T.Object);
961 CheckSub(T.ArrayClass, T.Array); 944 CheckSub(T.ArrayClass, T.Array);
962 CheckSub(T.UninitializedClass, T.Internal); 945 CheckSub(T.UninitializedClass, T.Internal);
963 CheckUnordered(T.ObjectClass, T.ArrayClass); 946 CheckUnordered(T.ObjectClass, T.ArrayClass);
964 CheckUnordered(T.UninitializedClass, T.Null); 947 CheckUnordered(T.UninitializedClass, T.Null);
965 CheckUnordered(T.UninitializedClass, T.Undefined); 948 CheckUnordered(T.UninitializedClass, T.Undefined);
966 949
967 CheckSub(T.SmiConstant, T.SignedSmall); 950 CheckSub(T.SmiConstant, T.Signed31);
968 CheckSub(T.SmiConstant, T.Signed32); 951 CheckSub(T.SmiConstant, T.Signed32);
969 CheckSub(T.SmiConstant, T.Number); 952 CheckSub(T.SmiConstant, T.Number);
970 CheckSub(T.ObjectConstant1, T.Object); 953 CheckSub(T.ObjectConstant1, T.Object);
971 CheckSub(T.ObjectConstant2, T.Object); 954 CheckSub(T.ObjectConstant2, T.Object);
972 CheckSub(T.ArrayConstant, T.Object); 955 CheckSub(T.ArrayConstant, T.Object);
973 CheckSub(T.ArrayConstant, T.Array); 956 CheckSub(T.ArrayConstant, T.Array);
974 CheckSub(T.UninitializedConstant, T.Internal); 957 CheckSub(T.UninitializedConstant, T.Internal);
975 CheckUnordered(T.ObjectConstant1, T.ObjectConstant2); 958 CheckUnordered(T.ObjectConstant1, T.ObjectConstant2);
976 CheckUnordered(T.ObjectConstant1, T.ArrayConstant); 959 CheckUnordered(T.ObjectConstant1, T.ArrayConstant);
977 CheckUnordered(T.UninitializedConstant, T.Null); 960 CheckUnordered(T.UninitializedConstant, T.Null);
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 TypeHandle class_type = T.Class(map); 1234 TypeHandle class_type = T.Class(map);
1252 CHECK(!class_type->Maybe(const_type)); 1235 CHECK(!class_type->Maybe(const_type));
1253 } 1236 }
1254 } 1237 }
1255 */ 1238 */
1256 1239
1257 // Basic types 1240 // Basic types
1258 CheckDisjoint(T.Boolean, T.Null); 1241 CheckDisjoint(T.Boolean, T.Null);
1259 CheckDisjoint(T.Undefined, T.Null); 1242 CheckDisjoint(T.Undefined, T.Null);
1260 CheckDisjoint(T.Boolean, T.Undefined); 1243 CheckDisjoint(T.Boolean, T.Undefined);
1261 CheckOverlap(T.SignedSmall, T.Number); 1244 CheckOverlap(T.Signed31, T.Number);
1262 CheckOverlap(T.NaN, T.Number); 1245 CheckOverlap(T.NaN, T.Number);
1263 CheckDisjoint(T.Signed32, T.NaN); 1246 CheckDisjoint(T.Signed32, T.NaN);
1264 CheckOverlap(T.UniqueName, T.Name); 1247 CheckOverlap(T.UniqueName, T.Name);
1265 CheckOverlap(T.String, T.Name); 1248 CheckOverlap(T.String, T.Name);
1266 CheckOverlap(T.InternalizedString, T.String); 1249 CheckOverlap(T.InternalizedString, T.String);
1267 CheckOverlap(T.InternalizedString, T.UniqueName); 1250 CheckOverlap(T.InternalizedString, T.UniqueName);
1268 CheckOverlap(T.InternalizedString, T.Name); 1251 CheckOverlap(T.InternalizedString, T.Name);
1269 CheckOverlap(T.Symbol, T.UniqueName); 1252 CheckOverlap(T.Symbol, T.UniqueName);
1270 CheckOverlap(T.Symbol, T.Name); 1253 CheckOverlap(T.Symbol, T.Name);
1271 CheckOverlap(T.String, T.UniqueName); 1254 CheckOverlap(T.String, T.UniqueName);
1272 CheckDisjoint(T.String, T.Symbol); 1255 CheckDisjoint(T.String, T.Symbol);
1273 CheckDisjoint(T.InternalizedString, T.Symbol); 1256 CheckDisjoint(T.InternalizedString, T.Symbol);
1274 CheckOverlap(T.Object, T.Receiver); 1257 CheckOverlap(T.Object, T.Receiver);
1275 CheckOverlap(T.Array, T.Object); 1258 CheckOverlap(T.Array, T.Object);
1276 CheckOverlap(T.Proxy, T.Receiver); 1259 CheckOverlap(T.Proxy, T.Receiver);
1277 CheckDisjoint(T.Object, T.Proxy); 1260 CheckDisjoint(T.Object, T.Proxy);
1278 1261
1279 // Structural types 1262 // Structural types
1280 CheckOverlap(T.ObjectClass, T.Object); 1263 CheckOverlap(T.ObjectClass, T.Object);
1281 CheckOverlap(T.ArrayClass, T.Object); 1264 CheckOverlap(T.ArrayClass, T.Object);
1282 CheckOverlap(T.ObjectClass, T.ObjectClass); 1265 CheckOverlap(T.ObjectClass, T.ObjectClass);
1283 CheckOverlap(T.ArrayClass, T.ArrayClass); 1266 CheckOverlap(T.ArrayClass, T.ArrayClass);
1284 CheckDisjoint(T.ObjectClass, T.ArrayClass); 1267 CheckDisjoint(T.ObjectClass, T.ArrayClass);
1285 CheckOverlap(T.SmiConstant, T.SignedSmall); 1268 CheckOverlap(T.SmiConstant, T.Signed31);
1286 CheckOverlap(T.SmiConstant, T.Signed32); 1269 CheckOverlap(T.SmiConstant, T.Signed32);
1287 CheckOverlap(T.SmiConstant, T.Number); 1270 CheckOverlap(T.SmiConstant, T.Number);
1288 CheckOverlap(T.ObjectConstant1, T.Object); 1271 CheckOverlap(T.ObjectConstant1, T.Object);
1289 CheckOverlap(T.ObjectConstant2, T.Object); 1272 CheckOverlap(T.ObjectConstant2, T.Object);
1290 CheckOverlap(T.ArrayConstant, T.Object); 1273 CheckOverlap(T.ArrayConstant, T.Object);
1291 CheckOverlap(T.ArrayConstant, T.Array); 1274 CheckOverlap(T.ArrayConstant, T.Array);
1292 CheckOverlap(T.ObjectConstant1, T.ObjectConstant1); 1275 CheckOverlap(T.ObjectConstant1, T.ObjectConstant1);
1293 CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2); 1276 CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2);
1294 CheckDisjoint(T.ObjectConstant1, T.ArrayConstant); 1277 CheckDisjoint(T.ObjectConstant1, T.ArrayConstant);
1295 CheckDisjoint(T.ObjectConstant1, T.ArrayClass); 1278 CheckDisjoint(T.ObjectConstant1, T.ArrayClass);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 // Bitset-function 1453 // Bitset-function
1471 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Object))); 1454 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Object)));
1472 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number))); 1455 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number)));
1473 1456
1474 CheckEqual(T.Union(T.MethodFunction, T.Object), T.Object); 1457 CheckEqual(T.Union(T.MethodFunction, T.Object), T.Object);
1475 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Object); 1458 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Object);
1476 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object); 1459 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object);
1477 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number); 1460 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number);
1478 1461
1479 // Bitset-class 1462 // Bitset-class
1480 CheckSub( 1463 CheckSub(T.Union(T.ObjectClass, T.Signed31), T.Union(T.Object, T.Number));
1481 T.Union(T.ObjectClass, T.SignedSmall), T.Union(T.Object, T.Number));
1482 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); 1464 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object);
1483 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); 1465 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array);
1484 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); 1466 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object);
1485 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); 1467 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number);
1486 1468
1487 // Bitset-constant 1469 // Bitset-constant
1488 CheckSub( 1470 CheckSub(
1489 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); 1471 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number));
1490 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); 1472 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object);
1491 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); 1473 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 T.Union(T.NumberFunction2, T.NumberFunction1)); 1524 T.Union(T.NumberFunction2, T.NumberFunction1));
1543 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Object); 1525 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Object);
1544 1526
1545 // Union-union 1527 // Union-union
1546 CheckEqual( 1528 CheckEqual(
1547 T.Union( 1529 T.Union(
1548 T.Union(T.ObjectConstant2, T.ObjectConstant1), 1530 T.Union(T.ObjectConstant2, T.ObjectConstant1),
1549 T.Union(T.ObjectConstant1, T.ObjectConstant2)), 1531 T.Union(T.ObjectConstant1, T.ObjectConstant2)),
1550 T.Union(T.ObjectConstant2, T.ObjectConstant1)); 1532 T.Union(T.ObjectConstant2, T.ObjectConstant1));
1551 CheckEqual( 1533 CheckEqual(
1552 T.Union( 1534 T.Union(T.Union(T.Number, T.ArrayClass), T.Union(T.Signed31, T.Array)),
1553 T.Union(T.Number, T.ArrayClass),
1554 T.Union(T.SignedSmall, T.Array)),
1555 T.Union(T.Number, T.Array)); 1535 T.Union(T.Number, T.Array));
1556 } 1536 }
1557 1537
1558 void Intersect() { 1538 void Intersect() {
1559 // Identity: Intersect(T, Any) = T 1539 // Identity: Intersect(T, Any) = T
1560 for (TypeIterator it = T.types.begin(); it != T.types.end(); ++it) { 1540 for (TypeIterator it = T.types.begin(); it != T.types.end(); ++it) {
1561 TypeHandle type = *it; 1541 TypeHandle type = *it;
1562 TypeHandle intersect_type = T.Intersect(type, T.Any); 1542 TypeHandle intersect_type = T.Intersect(type, T.Any);
1563 CheckEqual(intersect_type, type); 1543 CheckEqual(intersect_type, type);
1564 } 1544 }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1759 T.ObjectConstant1); 1739 T.ObjectConstant1);
1760 CheckEqual( 1740 CheckEqual(
1761 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)), 1741 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)),
1762 T.SmiConstant); 1742 T.SmiConstant);
1763 CHECK( 1743 CHECK(
1764 T.Intersect( 1744 T.Intersect(
1765 T.Union(T.ArrayConstant, T.ObjectClass), T.ObjectConstant1) 1745 T.Union(T.ArrayConstant, T.ObjectClass), T.ObjectConstant1)
1766 ->IsInhabited()); // !!! 1746 ->IsInhabited()); // !!!
1767 1747
1768 // Union-union 1748 // Union-union
1769 CheckEqual( 1749 CheckEqual(T.Intersect(T.Union(T.Number, T.ArrayClass),
1770 T.Intersect( 1750 T.Union(T.Signed31, T.Array)),
1771 T.Union(T.Number, T.ArrayClass), 1751 T.Union(T.Signed31, T.ArrayClass));
1772 T.Union(T.SignedSmall, T.Array)),
1773 T.Union(T.SignedSmall, T.ArrayClass));
1774 CheckEqual( 1752 CheckEqual(
1775 T.Intersect( 1753 T.Intersect(
1776 T.Union(T.Number, T.ObjectClass), 1754 T.Union(T.Number, T.ObjectClass),
1777 T.Union(T.Signed32, T.Array)), 1755 T.Union(T.Signed32, T.Array)),
1778 T.Signed32); 1756 T.Signed32);
1779 CheckEqual( 1757 CheckEqual(
1780 T.Intersect( 1758 T.Intersect(
1781 T.Union(T.ObjectConstant2, T.ObjectConstant1), 1759 T.Union(T.ObjectConstant2, T.ObjectConstant1),
1782 T.Union(T.ObjectConstant1, T.ObjectConstant2)), 1760 T.Union(T.ObjectConstant1, T.ObjectConstant2)),
1783 T.Union(T.ObjectConstant2, T.ObjectConstant1)); 1761 T.Union(T.ObjectConstant2, T.ObjectConstant1));
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); 2058 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>();
2081 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); 2059 HeapTests().Convert<Type, Type*, Zone, ZoneRep>();
2082 } 2060 }
2083 2061
2084 2062
2085 TEST(HTypeFromType) { 2063 TEST(HTypeFromType) {
2086 CcTest::InitializeVM(); 2064 CcTest::InitializeVM();
2087 ZoneTests().HTypeFromType(); 2065 ZoneTests().HTypeFromType();
2088 HeapTests().HTypeFromType(); 2066 HeapTests().HTypeFromType();
2089 } 2067 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698