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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 } | 129 } |
130 | 130 |
131 void CheckSub(TypeHandle type1, TypeHandle type2) { | 131 void CheckSub(TypeHandle type1, TypeHandle type2) { |
132 CHECK(type1->Is(type2)); | 132 CHECK(type1->Is(type2)); |
133 CHECK(!type2->Is(type1)); | 133 CHECK(!type2->Is(type1)); |
134 if (this->IsBitset(type1) && this->IsBitset(type2)) { | 134 if (this->IsBitset(type1) && this->IsBitset(type2)) { |
135 CHECK(this->AsBitset(type1) != this->AsBitset(type2)); | 135 CHECK(this->AsBitset(type1) != this->AsBitset(type2)); |
136 } | 136 } |
137 } | 137 } |
138 | 138 |
139 void CheckSubOrEqual(TypeHandle type1, TypeHandle type2) { | |
140 CHECK(type1->Is(type2)); | |
141 if (this->IsBitset(type1) && this->IsBitset(type2)) { | |
142 CHECK((this->AsBitset(type1) | this->AsBitset(type2)) | |
143 == this->AsBitset(type2)); | |
144 } | |
145 } | |
146 | |
147 void CheckUnordered(TypeHandle type1, TypeHandle type2) { | 139 void CheckUnordered(TypeHandle type1, TypeHandle type2) { |
148 CHECK(!type1->Is(type2)); | 140 CHECK(!type1->Is(type2)); |
149 CHECK(!type2->Is(type1)); | 141 CHECK(!type2->Is(type1)); |
150 if (this->IsBitset(type1) && this->IsBitset(type2)) { | 142 if (this->IsBitset(type1) && this->IsBitset(type2)) { |
151 CHECK(this->AsBitset(type1) != this->AsBitset(type2)); | 143 CHECK(this->AsBitset(type1) != this->AsBitset(type2)); |
152 } | 144 } |
153 } | 145 } |
154 | 146 |
155 void CheckOverlap(TypeHandle type1, TypeHandle type2) { | 147 void CheckOverlap(TypeHandle type1, TypeHandle type2) { |
156 CHECK(type1->Maybe(type2)); | 148 CHECK(type1->Maybe(type2)); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 TypeHandle type2 = T.Constant(value2); | 287 TypeHandle type2 = T.Constant(value2); |
296 CHECK(Equal(type1, type2) == (*value1 == *value2)); | 288 CHECK(Equal(type1, type2) == (*value1 == *value2)); |
297 } | 289 } |
298 } | 290 } |
299 | 291 |
300 // Typing of numbers | 292 // Typing of numbers |
301 Factory* fac = isolate->factory(); | 293 Factory* fac = isolate->factory(); |
302 CHECK(T.Constant(fac->NewNumber(0))->Is(T.UnsignedSmall)); | 294 CHECK(T.Constant(fac->NewNumber(0))->Is(T.UnsignedSmall)); |
303 CHECK(T.Constant(fac->NewNumber(1))->Is(T.UnsignedSmall)); | 295 CHECK(T.Constant(fac->NewNumber(1))->Is(T.UnsignedSmall)); |
304 CHECK(T.Constant(fac->NewNumber(0x3fffffff))->Is(T.UnsignedSmall)); | 296 CHECK(T.Constant(fac->NewNumber(0x3fffffff))->Is(T.UnsignedSmall)); |
305 CHECK(T.Constant(fac->NewNumber(-1))->Is(T.Negative31)); | 297 CHECK(T.Constant(fac->NewNumber(-1))->Is(T.NegativeSignedSmall)); |
306 CHECK(T.Constant(fac->NewNumber(-0x3fffffff))->Is(T.Negative31)); | 298 CHECK(T.Constant(fac->NewNumber(-0x3fffffff))->Is(T.NegativeSignedSmall)); |
307 CHECK(T.Constant(fac->NewNumber(-0x40000000))->Is(T.Negative31)); | 299 CHECK(T.Constant(fac->NewNumber(-0x40000000))->Is(T.NegativeSignedSmall)); |
308 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.Unsigned31)); | |
309 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.Unsigned30)); | |
310 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.Unsigned31)); | |
311 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.Unsigned30)); | |
312 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.Negative32)); | |
313 CHECK(!T.Constant(fac->NewNumber(-0x40000001))->Is(T.Negative31)); | |
314 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.Negative32)); | |
315 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 1))->Is(T.Negative31)); | |
316 if (SmiValuesAre31Bits()) { | 300 if (SmiValuesAre31Bits()) { |
| 301 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.NonNegativeSigned32)); |
317 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall)); | 302 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall)); |
| 303 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.NonNegativeSigned32)); |
318 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall)); | 304 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall)); |
319 CHECK(!T.Constant(fac->NewNumber(-0x40000001))->Is(T.SignedSmall)); | 305 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSigned32)); |
320 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 1))->Is(T.SignedSmall)); | 306 CHECK( |
| 307 !T.Constant(fac->NewNumber(-0x40000001))->Is(T.NegativeSignedSmall)); |
| 308 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.NegativeSigned32)); |
| 309 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 1)) |
| 310 ->Is(T.NegativeSignedSmall)); |
321 } else { | 311 } else { |
322 CHECK(SmiValuesAre32Bits()); | 312 CHECK(SmiValuesAre32Bits()); |
323 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall)); | 313 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall)); |
324 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall)); | 314 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall)); |
325 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.SignedSmall)); | 315 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.NonNegativeSigned32)); |
326 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 1))->Is(T.SignedSmall)); | 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)); |
327 } | 325 } |
328 CHECK(T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned32)); | 326 CHECK(T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned32)); |
329 CHECK(!T.Constant(fac->NewNumber(0x80000000u))->Is(T.Unsigned31)); | 327 CHECK(!T.Constant(fac->NewNumber(0x80000000u))->Is(T.NonNegativeSigned32)); |
330 CHECK(T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned32)); | 328 CHECK(T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned32)); |
331 CHECK(!T.Constant(fac->NewNumber(0xffffffffu))->Is(T.Unsigned31)); | 329 CHECK(!T.Constant(fac->NewNumber(0xffffffffu))->Is(T.NonNegativeSigned32)); |
332 CHECK(T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.PlainNumber)); | 330 CHECK(T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.PlainNumber)); |
333 CHECK(!T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.Integral32)); | 331 CHECK(!T.Constant(fac->NewNumber(0xffffffffu + 1.0))->Is(T.Integral32)); |
334 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.PlainNumber)); | 332 CHECK(T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.PlainNumber)); |
335 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.Integral32)); | 333 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff - 2.0))->Is(T.Integral32)); |
336 CHECK(T.Constant(fac->NewNumber(0.1))->Is(T.PlainNumber)); | 334 CHECK(T.Constant(fac->NewNumber(0.1))->Is(T.PlainNumber)); |
337 CHECK(!T.Constant(fac->NewNumber(0.1))->Is(T.Integral32)); | 335 CHECK(!T.Constant(fac->NewNumber(0.1))->Is(T.Integral32)); |
338 CHECK(T.Constant(fac->NewNumber(-10.1))->Is(T.PlainNumber)); | 336 CHECK(T.Constant(fac->NewNumber(-10.1))->Is(T.PlainNumber)); |
339 CHECK(!T.Constant(fac->NewNumber(-10.1))->Is(T.Integral32)); | 337 CHECK(!T.Constant(fac->NewNumber(-10.1))->Is(T.Integral32)); |
340 CHECK(T.Constant(fac->NewNumber(10e60))->Is(T.PlainNumber)); | 338 CHECK(T.Constant(fac->NewNumber(10e60))->Is(T.PlainNumber)); |
341 CHECK(!T.Constant(fac->NewNumber(10e60))->Is(T.Integral32)); | 339 CHECK(!T.Constant(fac->NewNumber(10e60))->Is(T.Integral32)); |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 // (In-)Compatibilities. | 788 // (In-)Compatibilities. |
791 for (TypeIterator i = T.types.begin(); i != T.types.end(); ++i) { | 789 for (TypeIterator i = T.types.begin(); i != T.types.end(); ++i) { |
792 for (TypeIterator j = T.types.begin(); j != T.types.end(); ++j) { | 790 for (TypeIterator j = T.types.begin(); j != T.types.end(); ++j) { |
793 TypeHandle type1 = *i; | 791 TypeHandle type1 = *i; |
794 TypeHandle type2 = *j; | 792 TypeHandle type2 = *j; |
795 CHECK(!type1->Is(type2) || this->IsBitset(type2) || | 793 CHECK(!type1->Is(type2) || this->IsBitset(type2) || |
796 this->IsUnion(type2) || this->IsUnion(type1) || | 794 this->IsUnion(type2) || this->IsUnion(type1) || |
797 (type1->IsClass() && type2->IsClass()) || | 795 (type1->IsClass() && type2->IsClass()) || |
798 (type1->IsConstant() && type2->IsConstant()) || | 796 (type1->IsConstant() && type2->IsConstant()) || |
799 (type1->IsConstant() && type2->IsRange()) || | 797 (type1->IsConstant() && type2->IsRange()) || |
800 (this->IsBitset(type1) && type2->IsRange()) || | |
801 (type1->IsRange() && type2->IsRange()) || | 798 (type1->IsRange() && type2->IsRange()) || |
802 (type1->IsContext() && type2->IsContext()) || | 799 (type1->IsContext() && type2->IsContext()) || |
803 (type1->IsArray() && type2->IsArray()) || | 800 (type1->IsArray() && type2->IsArray()) || |
804 (type1->IsFunction() && type2->IsFunction()) || | 801 (type1->IsFunction() && type2->IsFunction()) || |
805 type1->Equals(T.None)); | 802 type1->Equals(T.None)); |
806 } | 803 } |
807 } | 804 } |
808 } | 805 } |
809 | 806 |
810 void Is2() { | 807 void Is2() { |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 | 926 |
930 | 927 |
931 // Subtyping between concrete basic types | 928 // Subtyping between concrete basic types |
932 | 929 |
933 CheckUnordered(T.Boolean, T.Null); | 930 CheckUnordered(T.Boolean, T.Null); |
934 CheckUnordered(T.Undefined, T.Null); | 931 CheckUnordered(T.Undefined, T.Null); |
935 CheckUnordered(T.Boolean, T.Undefined); | 932 CheckUnordered(T.Boolean, T.Undefined); |
936 | 933 |
937 CheckSub(T.SignedSmall, T.Number); | 934 CheckSub(T.SignedSmall, T.Number); |
938 CheckSub(T.Signed32, T.Number); | 935 CheckSub(T.Signed32, T.Number); |
939 CheckSubOrEqual(T.SignedSmall, T.Signed32); | 936 CheckSub(T.SignedSmall, T.Signed32); |
940 CheckUnordered(T.SignedSmall, T.MinusZero); | 937 CheckUnordered(T.SignedSmall, T.MinusZero); |
941 CheckUnordered(T.Signed32, T.Unsigned32); | 938 CheckUnordered(T.Signed32, T.Unsigned32); |
942 | 939 |
943 CheckSub(T.UniqueName, T.Name); | 940 CheckSub(T.UniqueName, T.Name); |
944 CheckSub(T.String, T.Name); | 941 CheckSub(T.String, T.Name); |
945 CheckSub(T.InternalizedString, T.String); | 942 CheckSub(T.InternalizedString, T.String); |
946 CheckSub(T.InternalizedString, T.UniqueName); | 943 CheckSub(T.InternalizedString, T.UniqueName); |
947 CheckSub(T.InternalizedString, T.Name); | 944 CheckSub(T.InternalizedString, T.Name); |
948 CheckSub(T.Symbol, T.UniqueName); | 945 CheckSub(T.Symbol, T.UniqueName); |
949 CheckSub(T.Symbol, T.Name); | 946 CheckSub(T.Symbol, T.Name); |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 // Bitset-function | 1470 // Bitset-function |
1474 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Object))); | 1471 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Object))); |
1475 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number))); | 1472 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number))); |
1476 | 1473 |
1477 CheckEqual(T.Union(T.MethodFunction, T.Object), T.Object); | 1474 CheckEqual(T.Union(T.MethodFunction, T.Object), T.Object); |
1478 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Object); | 1475 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Object); |
1479 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object); | 1476 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object); |
1480 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number); | 1477 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number); |
1481 | 1478 |
1482 // Bitset-class | 1479 // Bitset-class |
1483 CheckSub(T.Union(T.ObjectClass, T.SignedSmall), | 1480 CheckSub( |
1484 T.Union(T.Object, T.Number)); | 1481 T.Union(T.ObjectClass, T.SignedSmall), T.Union(T.Object, T.Number)); |
1485 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); | 1482 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); |
1486 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); | 1483 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); |
1487 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); | 1484 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); |
1488 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); | 1485 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); |
1489 | 1486 |
1490 // Bitset-constant | 1487 // Bitset-constant |
1491 CheckSub( | 1488 CheckSub( |
1492 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); | 1489 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); |
1493 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); | 1490 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); |
1494 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); | 1491 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1544 T.Union(T.NumberFunction1, T.NumberFunction2), | 1541 T.Union(T.NumberFunction1, T.NumberFunction2), |
1545 T.Union(T.NumberFunction2, T.NumberFunction1)); | 1542 T.Union(T.NumberFunction2, T.NumberFunction1)); |
1546 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Object); | 1543 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Object); |
1547 | 1544 |
1548 // Union-union | 1545 // Union-union |
1549 CheckEqual( | 1546 CheckEqual( |
1550 T.Union( | 1547 T.Union( |
1551 T.Union(T.ObjectConstant2, T.ObjectConstant1), | 1548 T.Union(T.ObjectConstant2, T.ObjectConstant1), |
1552 T.Union(T.ObjectConstant1, T.ObjectConstant2)), | 1549 T.Union(T.ObjectConstant1, T.ObjectConstant2)), |
1553 T.Union(T.ObjectConstant2, T.ObjectConstant1)); | 1550 T.Union(T.ObjectConstant2, T.ObjectConstant1)); |
1554 CheckEqual(T.Union(T.Union(T.Number, T.ArrayClass), | 1551 CheckEqual( |
1555 T.Union(T.SignedSmall, T.Array)), | 1552 T.Union( |
1556 T.Union(T.Number, T.Array)); | 1553 T.Union(T.Number, T.ArrayClass), |
| 1554 T.Union(T.SignedSmall, T.Array)), |
| 1555 T.Union(T.Number, T.Array)); |
1557 } | 1556 } |
1558 | 1557 |
1559 void Intersect() { | 1558 void Intersect() { |
1560 // Identity: Intersect(T, Any) = T | 1559 // Identity: Intersect(T, Any) = T |
1561 for (TypeIterator it = T.types.begin(); it != T.types.end(); ++it) { | 1560 for (TypeIterator it = T.types.begin(); it != T.types.end(); ++it) { |
1562 TypeHandle type = *it; | 1561 TypeHandle type = *it; |
1563 TypeHandle intersect_type = T.Intersect(type, T.Any); | 1562 TypeHandle intersect_type = T.Intersect(type, T.Any); |
1564 CheckEqual(intersect_type, type); | 1563 CheckEqual(intersect_type, type); |
1565 } | 1564 } |
1566 | 1565 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1760 T.ObjectConstant1); | 1759 T.ObjectConstant1); |
1761 CheckEqual( | 1760 CheckEqual( |
1762 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)), | 1761 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)), |
1763 T.SmiConstant); | 1762 T.SmiConstant); |
1764 CHECK( | 1763 CHECK( |
1765 T.Intersect( | 1764 T.Intersect( |
1766 T.Union(T.ArrayConstant, T.ObjectClass), T.ObjectConstant1) | 1765 T.Union(T.ArrayConstant, T.ObjectClass), T.ObjectConstant1) |
1767 ->IsInhabited()); // !!! | 1766 ->IsInhabited()); // !!! |
1768 | 1767 |
1769 // Union-union | 1768 // Union-union |
1770 CheckEqual(T.Intersect(T.Union(T.Number, T.ArrayClass), | 1769 CheckEqual( |
1771 T.Union(T.SignedSmall, T.Array)), | 1770 T.Intersect( |
1772 T.Union(T.SignedSmall, T.ArrayClass)); | 1771 T.Union(T.Number, T.ArrayClass), |
| 1772 T.Union(T.SignedSmall, T.Array)), |
| 1773 T.Union(T.SignedSmall, T.ArrayClass)); |
1773 CheckEqual( | 1774 CheckEqual( |
1774 T.Intersect( | 1775 T.Intersect( |
1775 T.Union(T.Number, T.ObjectClass), | 1776 T.Union(T.Number, T.ObjectClass), |
1776 T.Union(T.Signed32, T.Array)), | 1777 T.Union(T.Signed32, T.Array)), |
1777 T.Signed32); | 1778 T.Signed32); |
1778 CheckEqual( | 1779 CheckEqual( |
1779 T.Intersect( | 1780 T.Intersect( |
1780 T.Union(T.ObjectConstant2, T.ObjectConstant1), | 1781 T.Union(T.ObjectConstant2, T.ObjectConstant1), |
1781 T.Union(T.ObjectConstant1, T.ObjectConstant2)), | 1782 T.Union(T.ObjectConstant1, T.ObjectConstant2)), |
1782 T.Union(T.ObjectConstant2, T.ObjectConstant1)); | 1783 T.Union(T.ObjectConstant2, T.ObjectConstant1)); |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2079 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); | 2080 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); |
2080 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); | 2081 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); |
2081 } | 2082 } |
2082 | 2083 |
2083 | 2084 |
2084 TEST(HTypeFromType) { | 2085 TEST(HTypeFromType) { |
2085 CcTest::InitializeVM(); | 2086 CcTest::InitializeVM(); |
2086 ZoneTests().HTypeFromType(); | 2087 ZoneTests().HTypeFromType(); |
2087 HeapTests().HTypeFromType(); | 2088 HeapTests().HTypeFromType(); |
2088 } | 2089 } |
OLD | NEW |