OLD | NEW |
---|---|
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 Loading... | |
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)); |
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 Loading... | |
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 Loading... | |
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); |
rossberg
2015/01/15 15:15:12
Again, I don't see why this should be changed.
Jarin
2015/01/16 16:28:39
Because types-fuzz.h does not define SignedSmall.
| |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |